diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cc0ded1..42d1b6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,11 @@ -image: ubuntu:noble +image: debian:testing variables: DEBIAN_FRONTEND: noninteractive CCACHE_DIR: $CI_PROJECT_DIR/.ccache CCACHE_BASEDIR: $CI_PROJECT_DIR APT_CMAKE_BUILD_OPTIONS: '' DEB_BUILD_PROFILES: '' + BUILD_PRE: ':' cache: paths: - .ccache @@ -12,11 +13,12 @@ before_script: - rm -f /etc/dpkg/dpkg.cfg.d/excludes - apt-get update - apt-get install --no-install-recommends -qq build-essential expect sudo ccache moreutils adduser - - adduser --home /home/travis travis --quiet --disabled-login --gecos "" + - adduser --home /home/travis travis --quiet --disabled-login --gecos "" --shell /bin/sh - chmod 755 /root - chmod -R o+rwX $PWD - ./prepare-release travis-ci - sudo -u travis mkdir -p build .ccache + - $BUILD_PRE - sudo -u travis env -C build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${APT_CMAKE_BUILD_OPTIONS} -G Ninja .. - sudo -u travis --preserve-env=CCACHE_DIR,CCACHE_BASEDIR ninja -C build @@ -29,12 +31,26 @@ test as root: - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test - unbuffer ./test/integration/run-tests -q -j 4 +test solver3 and gpgv: + stage: test + variables: + APT_CMAKE_BUILD_OPTIONS: '-DWITH_DOC=OFF -DUSE_NLS=OFF' + DEB_BUILD_PROFILES: 'nodoc' + BUILD_PRE: 'rm /usr/bin/sqv' + script: + - CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test + - unbuffer ./test/integration/run-tests -q -j 4 --solver 3.0 --skip solver3.broken + test as user: - image: ubuntu:noble + image: + name: debian:testing + docker: + platform: linux/i386 stage: test script: - apt-get install --no-install-recommends -qq libxml2-utils - ./prepare-release post-build --report-failure + - sudo -u travis unbuffer ./debian/tests/pkg-config-test - sudo -u travis CTEST_OUTPUT_ON_FAILURE=1 ninja -C build test - chmod -R o-w $PWD - sudo -u travis unbuffer ./test/integration/run-tests -q -j 4 diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake index f3eb4c5..d7f1360 100644 --- a/CMake/Documentation.cmake +++ b/CMake/Documentation.cmake @@ -154,14 +154,16 @@ function(xsltproc_one) if (DOC_MANPAGE) if (language) set(manpage_output "${CMAKE_CURRENT_BINARY_DIR}/${language}/${document}.${section}") + set(manpage_l10npath "/${language}") else() + set(manpage_l10npath "") 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} + DESTINATION ${CMAKE_INSTALL_MANDIR}${manpage_l10npath}/man${section} OPTIONAL) endif() if (DOC_HTML) diff --git a/CMake/FindGCRYPT.cmake b/CMake/FindGCRYPT.cmake deleted file mode 100644 index 56bfc9f..0000000 --- a/CMake/FindGCRYPT.cmake +++ /dev/null @@ -1,25 +0,0 @@ -# - Try to find GCRYPT -# Once done, this will define -# -# GCRYPT_FOUND - system has GCRYPT -# GCRYPT_INCLUDE_DIRS - the GCRYPT include directories -# GCRYPT_LIBRARIES - the GCRYPT library -find_package(PkgConfig) - -pkg_check_modules(GCRYPT_PKGCONF libgcrypt) - -find_path(GCRYPT_INCLUDE_DIRS - NAMES gcrypt.h - PATHS ${GCRYPT_PKGCONF_INCLUDE_DIRS} -) - - -find_library(GCRYPT_LIBRARIES - NAMES gcrypt - PATHS ${GCRYPT_PKGCONF_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(GCRYPT DEFAULT_MSG GCRYPT_INCLUDE_DIRS GCRYPT_LIBRARIES) - -mark_as_advanced(GCRYPT_INCLUDE_DIRS GCRYPT_LIBRARIES) diff --git a/CMake/Misc.cmake b/CMake/Misc.cmake index 8cb18b6..83a2eaf 100644 --- a/CMake/Misc.cmake +++ b/CMake/Misc.cmake @@ -74,8 +74,6 @@ function(add_version_script target) 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) diff --git a/CMake/Translations.cmake b/CMake/Translations.cmake index 2492510..d8e5a36 100644 --- a/CMake/Translations.cmake +++ b/CMake/Translations.cmake @@ -16,6 +16,7 @@ function(apt_add_translation_domain) set(domain ${NLS_DOMAIN}) set(xgettext_params --add-comments + --from-code=utf-8 --foreign --package-name=${PROJECT_NAME} --package-version=${PACKAGE_VERSION} @@ -113,7 +114,7 @@ function(apt_add_translation_domain) 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 + COMMAND msgfmt --check --statistics -o ${outdir}/${domain}.mo ${outdir}/${domain}.po DEPENDS ${outdir}/${domain}.po ) @@ -178,7 +179,7 @@ function(apt_add_po_statistics excluded) add_custom_command( TARGET statistics PRE_BUILD COMMAND printf "%-6s " "${langcode}:" - COMMAND msgfmt --statistics -o /dev/null ${translation} + COMMAND msgfmt --check --statistics -o /dev/null ${translation} VERBATIM ) endforeach() diff --git a/CMake/config.h.in b/CMake/config.h.in index 607f9d5..b2c5eac 100644 --- a/CMake/config.h.in +++ b/CMake/config.h.in @@ -5,9 +5,6 @@ /* Define if we have the timegm() function */ #cmakedefine HAVE_TIMEGM -/* Define if we have the gnutls library for TLS */ -#cmakedefine HAVE_GNUTLS - /* Define if we have the zlib library for gzip */ #cmakedefine HAVE_ZLIB @@ -85,3 +82,7 @@ /* Whether to check for and require merged usr if a usrmerge package is available. */ #cmakedefine REQUIRE_MERGED_USR + +#cmakedefine DEFAULT_PAGER "${DEFAULT_PAGER}" +#cmakedefine PAGER_ENV "${PAGER_ENV}" +#cmakedefine SQV_EXECUTABLE "${SQV_EXECUTABLE}" diff --git a/CMake/vendor_substitute.cmake b/CMake/vendor_substitute.cmake index 71449c9..277cb3a 100644 --- a/CMake/vendor_substitute.cmake +++ b/CMake/vendor_substitute.cmake @@ -2,7 +2,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) + OUTPUT_VARIABLE value OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) string(REPLACE "&${variable};" "${value}" input "${input}") endforeach() file(WRITE ${OUT} "${input}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 5908a17..b7e3017 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,7 @@ find_package(Iconv REQUIRED) find_package(Perl REQUIRED) find_program(TRIEHASH_EXECUTABLE NAMES triehash) +find_program(SQV_EXECUTABLE NAMES sqv) if (NOT TRIEHASH_EXECUTABLE) message(FATAL_ERROR "Could not find triehash executable") @@ -63,7 +64,7 @@ add_definitions(${LFS_DEFINITIONS}) link_libraries(${LFS_LIBRARIES}) # Set compiler flags -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) @@ -85,16 +86,14 @@ add_optional_compile_options(Wdouble-promotion) add_optional_compile_options(Wsuggest-override) add_optional_compile_options(Werror=suggest-override) add_optional_compile_options(Werror=return-type) +add_optional_compile_options(Wp,-D_GLIBCXX_ASSERTIONS) # apt-ftparchive dependencies find_package(Berkeley REQUIRED) if (BERKELEY_FOUND) set(HAVE_BDB 1) endif() -find_package(GnuTLS) -if (GNUTLS_FOUND) - set(HAVE_GNUTLS 1) -endif() +find_package(OpenSSL REQUIRED) # (De)Compressor libraries find_package(ZLIB REQUIRED) @@ -140,7 +139,6 @@ if (SECCOMP_FOUND) set(HAVE_SECCOMP 1) endif() -find_package(GCRYPT REQUIRED) find_package(XXHASH REQUIRED) # Mount()ing and stat()ing and friends @@ -206,22 +204,25 @@ endif() # Configure some variables like package, version and architecture. set(PACKAGE ${PROJECT_NAME}) set(PACKAGE_MAIL "APT Development Team ") -set(PACKAGE_VERSION "2.8.0") +set(PACKAGE_VERSION "3.1.3") string(REGEX MATCH "^[0-9.]+" PROJECT_VERSION ${PACKAGE_VERSION}) if (NOT DEFINED DPKG_DATADIR) execute_process(COMMAND ${PERL_EXECUTABLE} -MDpkg -e "print $Dpkg::DATADIR;" - OUTPUT_VARIABLE DPKG_DATADIR_CMD OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE DPKG_DATADIR_CMD OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) 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) + OUTPUT_VARIABLE COMMON_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) endif() if (NOT DEFINED ROOT_GROUP) execute_process(COMMAND id -gn root - OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE ROOT_GROUP OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) message(STATUS "Found root group: ${ROOT_GROUP}") endif() set(ROOT_GROUP "${ROOT_GROUP}" CACHE STRING "Group of root (e.g.: wheel or root)") @@ -234,6 +235,9 @@ 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}") +# Setup the default pager and the environment +set(DEFAULT_PAGER "pager" CACHE STRING "The default pager to use for commands that support it.") +set(PAGER_ENV "LESS=FRSXMK\\nMORE=FRX\\nLV=-c" CACHE STRING "Environment to pass to the pager. One variable per line, with escaped newlines") # Configure our configuration headers (config.h and apti18n.h) configure_file(CMake/config.h.in ${PROJECT_BINARY_DIR}/include/config.h) diff --git a/COPYING b/COPYING index 21b874f..0f0e3f6 100644 --- a/COPYING +++ b/COPYING @@ -16,11 +16,8 @@ Comment: for the project has always been GPL-2+, so we cannot be sure that contributors meant to grant additional permissions. . - Translation files are considered to generally be GPL-2+, - but they also include strings used by methods/rsh.cc which appears to be GPL-2. - As the translations are split into separate domains later on, - these strings are not loaded by library users outside of apt - (they are in the 'apt' translation domain). + Translation files are also considered to generally be GPL-2+, + but they might include strings used in code with other licenses. . The apt-pkg/contrib/fileutl.cc file states "RunScripts()" is "GPLv2". We believe that this was not meant to exclude later versions of the GPL, @@ -52,22 +49,9 @@ Copyright: 1997-1999 Jason Gunthorpe and others 2014 Anthony Towns License: GPL-2+ -Files: methods/rsh.cc -Copyright: 2000 Ben Collins -License: GPL-2 -Comment: - This file stated: - Licensed under the GNU General Public License v2 [no exception clauses] - . - We believe that this was intended to be not a statement against future - versions of the GPL, but meant to exclude the Qt license exception in - place in APT until that time. - . - We received permission from Ben in 2021 to relicense under GPL-2+, - contributions from Adam Heath and Daniel Hartwig may still have to - be considered GPL-2 for the time being. - . - Other contributions are GPL-2+ +Files: methods/connect.c +Copyright: Copyright (c) 1996 - 2023, Daniel Stenberg, , and many contributors +License: GPL-2+ and curl Files: CMake/FindBerkeley.cmake Copyright: 2006, Alexander Dymo, @@ -153,3 +137,20 @@ License: GPL-2+ Comment: On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: curl + Permission to use, copy, modify, and distribute this software for any purpose + with or without fee is hereby granted, provided that the above copyright + notice and this permission notice appear in all copies. + . + 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 OF THIRD PARTY RIGHTS. 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. + . + Except as contained in this notice, the name of a copyright holder shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization of the copyright holder. diff --git a/README.md b/README.md index b2a0fdb..58c3497 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,6 @@ Included tools are: as well as available 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 diff --git a/abicheck/apt_build.xml.in b/abicheck/apt_build.xml.in index ec39466..0e5fcb3 100644 --- a/abicheck/apt_build.xml.in +++ b/abicheck/apt_build.xml.in @@ -9,3 +9,12 @@ @build_path@/apt-pkg/ + + + SubstVar + _ns_flagdata + + + + #define APT_COMPILING_APT 1 + diff --git a/abicheck/apt_installed.xml.in b/abicheck/apt_installed.xml.in index c3ddd08..fbc74d3 100644 --- a/abicheck/apt_installed.xml.in +++ b/abicheck/apt_installed.xml.in @@ -9,3 +9,12 @@ @installed_libapt@ + + + SubstVar + _ns_flagdata + + + + #define APT_COMPILING_APT 1 + diff --git a/abicheck/symbol-merge.py b/abicheck/symbol-merge.py new file mode 100644 index 0000000..1b4048e --- /dev/null +++ b/abicheck/symbol-merge.py @@ -0,0 +1,217 @@ +""" +Download packages from the archive and generate a symbols file for them. +""" + +import argparse +import glob +import os +import subprocess +import re +import sys +import urllib.request + +import distro_info + +import apt_pkg +import apt_inst + +import apt.progress.text + +STDLIB = ( + "^typeinfo for std::" + "|^vtable for std::" + "|^typeinfo name for std::" + "|^guard variable for std::" + "|^std::" + "|^[a-z]* std::" + "|^typeinfo for __gnu_cxx::" + "|^vtable for __gnu_cxx::" + "|^typeinfo name for __gnu_cxx::" + "|^guard variable for __gnu_cxx::" + "|^__gnu_cxx::" + "|^[a-z]* __gnu_cxx::" +) +STDLIB_RE = re.compile(STDLIB) + + +def get_archs(dist: str) -> set[str]: + if dist in distro_info.UbuntuDistroInfo().all: + url = f"https://snapshot.ubuntu.com/ubuntu/dists/{dist}/InRelease" + else: + url = f"https://deb.debian.org/debian/dists/{dist}/InRelease" + with urllib.request.urlopen(url) as rel: + for line in rel: + line = line.decode("utf-8") + if line.startswith("Architectures:"): + return set(line.split(":")[1].split()) - {"all"} + raise ValueError("Invalid Release file") + + +def download_debs(dist: str) -> list[str]: + """Download the debs and return the list of filenames.""" + runtime_dir = os.getenv("XDG_RUNTIME_DIR") + if runtime_dir is None: + raise ValueError("Need to set XDG_RUNTIME_DIR") + tmpdir = f"{runtime_dir}/apt/symbol-merger" + os.makedirs(f"{tmpdir}/etc/apt/sources.list.d", exist_ok=True) + os.makedirs(f"{tmpdir}/etc/apt/apt.conf.d", exist_ok=True) + os.makedirs(f"{tmpdir}/etc/apt/trusted.gpg.d", exist_ok=True) + os.makedirs(f"{tmpdir}/var/lib/apt/lists/partial", exist_ok=True) + os.makedirs(f"{tmpdir}/var/cache/apt/archives/partial", exist_ok=True) + + if dist in distro_info.UbuntuDistroInfo().all: + url = "https://snapshot.ubuntu.com/ubuntu/" + keyring = "/usr/share/keyrings/ubuntu-archive-keyring.gpg" + suites = f"{dist} {dist}-updates" + else: + url = "https://deb.debian.org/debian/" + keyring = "/usr/share/keyrings/debian-archive-keyring.gpg" + suites = f"{dist}" + + with open(f"{tmpdir}/etc/apt/sources.list.d/debian.sources", "w") as sources: + print("Types: deb", file=sources) + print(f"URIs: {url}", file=sources) + print(f"Suites: {suites}", file=sources) + print("Components: main", file=sources) + print(f"Signed-By: {keyring}", file=sources) + print(f"Architectures: {" ".join(archs)}", file=sources) + print("Targets: Packages", file=sources) + print("", file=sources) + + apt_pkg.config.set("Dir", tmpdir) + apt_pkg.config.set("Dir::State::status", "/dev/null") + apt_pkg.config.set("APT::List-Cleanup", "false") + apt_pkg.init() + cache = apt_pkg.Cache() + sl = apt_pkg.SourceList() + sl.read_main_list() + cache.update(apt.progress.text.AcquireProgress(), sl, 500000) + cache = apt_pkg.Cache() + depcache = apt_pkg.DepCache(cache) + + for arch in archs: + for _, _, ver in cache[("libapt-pkg", arch)].provides_list: + print("Mark", ver.parent_pkg.get_fullname(False), "for", arch, ver.ver_str) + depcache.mark_install(ver.parent_pkg, False) + + acq = apt_pkg.Acquire(apt.progress.text.AcquireProgress()) + pm = apt_pkg.PackageManager(depcache) + recs = apt_pkg.PackageRecords(cache) + pm.get_archives(acq, sl, recs) + acq.run() + + return [itm.destfile for itm in acq.items] + + +def read_main_symbols() -> dict[str, str]: + """Read the versions of already known symbols.""" + symbols = {} + with open(glob.glob("debian/libapt-pkg*.symbols")[0]) as sf: + for line in sf: + if not line.startswith(" "): + if not symbols: + prelude.append(line.strip()) + continue + if line.startswith(" "): + symbol, version = line.strip().rsplit(None, 1) + if '"' in symbol: + print(symbol.strip().split('"')) + prefix="(c++|optional=std)" if "optional=std" in symbol else "(c++)" + symbol = '{}"{}"'.format(prefix, symbol.strip().split('"')[1]) + symbols[symbol] = version + # Register the symbol so we keep the ordering later. + print("SYMBOL", symbol) + symbol_archs[symbol] = set() + return symbols + + +def read_symbol_file(debname: str) -> None: + deb = apt_inst.DebFile(debname) + arch = debname.split("_")[-1].split(".")[0] + symbols = deb.control.extractdata("symbols").decode("utf-8") + decoded_symbols = subprocess.Popen( + ["c++filt"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True + ).communicate(symbols)[0] + for line, decoded_line in zip(symbols.splitlines(), decoded_symbols.splitlines()): + if not line.startswith(" "): + continue + symbol, version = decoded_line.strip().rsplit(None, 1) + symbol = symbol.strip() + # Our version is higher than the registered one, so lower it again + if line != decoded_line: + if STDLIB_RE.search(symbol): + symbol = '(c++|optional=std)"{}"'.format(symbol) + else: + symbol = '(c++)"{}"'.format(symbol) + if ( + symbol not in smallest_symbol_version + or apt_pkg.version_compare(version, smallest_symbol_version[symbol]) < 0 + ): + smallest_symbol_version[symbol] = version + + try: + symbol_archs[symbol].add(arch) + except KeyError: + symbol_archs[symbol] = {arch} + try: + latest_symbol_archs[symbol].add(arch) + except KeyError: + latest_symbol_archs[symbol] = {arch} + + +def print_merged() -> None: + for line in prelude: + print(line) + + for optional in False, True: + if optional: + print("# Optional C++ standard library symbols") + print("# These are inlined libstdc++ symbols and not supposed to be part of our ABI") + print("# but we cannot stop stuff from linking against it, sigh.") + + for symbol, line_archs in symbol_archs.items(): + if optional != ("optional=std" in symbol): + continue + if archs == line_archs: + print("", symbol, smallest_symbol_version[symbol]) + + for symbol, line_archs in symbol_archs.items(): + if optional != ("optional=std" in symbol): + continue + if archs != line_archs and line_archs: + print_archs = " ".join(sorted(line_archs)) + if len(line_archs) > len(archs - line_archs): + print_archs = " ".join("!" + a for a in sorted(archs - line_archs)) + + if "(c++" in symbol: + print( + "", + symbol.replace("(c++", f"(arch={print_archs}|c++"), + smallest_symbol_version[symbol], + ) + else: + print( + f" (arch={print_archs}){symbol} {smallest_symbol_version[symbol]}" + ) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("dist", nargs="+") + args = parser.parse_args() + prelude: list[str] = [] + symbol_archs: dict[str, set[str]] = {} + smallest_symbol_version: dict[str, str] = read_main_symbols() + for dist in args.dist: + latest_symbol_archs: dict[str, set[str]] = {} + archs = get_archs(dist) + for deb in download_debs(dist): + read_symbol_file(deb) + # Clean up removed symbols + for symbol in list(symbol_archs): + if symbol not in latest_symbol_archs: + del symbol_archs[symbol] + else: + symbol_archs[symbol] = latest_symbol_archs[symbol] + with open(glob.glob("debian/libapt-pkg*.symbols")[0], "w") as sys.stdout: + print_merged() diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt index d13aed9..7aaacd9 100644 --- a/apt-pkg/CMakeLists.txt +++ b/apt-pkg/CMakeLists.txt @@ -3,7 +3,8 @@ include_directories(${PROJECT_BINARY_DIR}/include/apt-pkg) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/apt-pkg/) execute_process(COMMAND grep -v "^#" "${CMAKE_CURRENT_SOURCE_DIR}/tagfile-keys.list" - OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list") + OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list" + COMMAND_ERROR_IS_FATAL ANY) execute_process(COMMAND ${TRIEHASH_EXECUTABLE} --ignore-case --header ${PROJECT_BINARY_DIR}/include/apt-pkg/tagfile-keys.h @@ -13,7 +14,8 @@ execute_process(COMMAND ${TRIEHASH_EXECUTABLE} --function-name pkgTagHash --include "" --include "" - "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list") + "${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.clean.list" + COMMAND_ERROR_IS_FATAL ANY) set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "tagfile-keys.list") set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc" PROPERTIES COMPILE_DEFINITIONS APT_COMPILING_APT) @@ -22,16 +24,19 @@ set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/tagfile-keys.cc" PROPER 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) + OUTPUT_VARIABLE MAJOR OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) 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) + OUTPUT_VARIABLE MINOR OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) message(STATUS "Building libapt-pkg ${MAJOR} (release ${MINOR})") set(APT_PKG_MAJOR ${MAJOR} PARENT_SCOPE) # exporting for methods/CMakeLists.txt configure_file(apt-pkg.pc.in ${CMAKE_CURRENT_BINARY_DIR}/apt-pkg.pc @ONLY) +configure_file(versionscript.in ${CMAKE_CURRENT_BINARY_DIR}/versionscript @ONLY) # 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 @@ -41,7 +46,6 @@ 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} @@ -52,7 +56,7 @@ target_include_directories(apt-pkg $<$:${UDEV_INCLUDE_DIRS}> $<$:${SYSTEMD_INCLUDE_DIRS}> ${ICONV_INCLUDE_DIRS} - $<$:${GCRYPT_INCLUDE_DIRS}> + ${OPENSSL_INCLUDE_DIRS} $<$:${XXHASH_INCLUDE_DIRS}> ) @@ -67,13 +71,13 @@ target_link_libraries(apt-pkg $<$:${UDEV_LIBRARIES}> $<$:${SYSTEMD_LIBRARIES}> ${ICONV_LIBRARIES} - $<$:${GCRYPT_LIBRARIES}> + OpenSSL::Crypto $<$:${XXHASH_LIBRARIES}> ) set_target_properties(apt-pkg PROPERTIES VERSION ${MAJOR}.${MINOR}) set_target_properties(apt-pkg PROPERTIES SOVERSION ${MAJOR}) set_target_properties(apt-pkg PROPERTIES CXX_VISIBILITY_PRESET hidden) -add_version_script(apt-pkg) +target_link_libraries(apt-pkg PRIVATE -Wl,-version-script="${CMAKE_CURRENT_BINARY_DIR}/versionscript") # Install the library and the header files install(TARGETS apt-pkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 3c491ad..c692b52 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -5,7 +5,7 @@ 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 + 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. @@ -32,7 +32,9 @@ #include #include +#include #include +#include #include #include #include @@ -140,10 +142,11 @@ static void ReportMirrorFailureToCentral(pkgAcquire::Item const &I, std::string if(!FileExists(report)) return; + const auto DescURI = I.DescURI(); std::vector const Args = { report.c_str(), I.UsedMirror.c_str(), - I.DescURI().c_str(), + DescURI.c_str(), FailCode.c_str(), Details.c_str(), NULL @@ -470,15 +473,16 @@ bool pkgAcqTransactionItem::QueueURI(pkgAcquire::ItemDesc &Item) // now add the actual by-hash uris auto const Expected = GetExpectedHashes(); auto const TargetHash = Expected.find(nullptr); - auto const PushByHashURI = [&](std::string U) { + auto const PushByHashURI = [&](std::string const &U) { if (unlikely(TargetHash == nullptr)) return false; - auto const trailing_slash = U.find_last_of("/"); + ::URI uri{U}; + auto const trailing_slash = uri.Path.find_last_of("/"); if (unlikely(trailing_slash == std::string::npos)) return false; - auto byhashSuffix = "/by-hash/" + TargetHash->HashType() + "/" + TargetHash->HashValue(); - U.replace(trailing_slash, U.length() - trailing_slash, std::move(byhashSuffix)); - PushAlternativeURI(std::move(U), {}, false); + auto altPath = uri.Path.substr(0, trailing_slash) + "/by-hash/" + TargetHash->HashType() + "/" + TargetHash->HashValue(); + std::swap(uri.Path, altPath); + PushAlternativeURI(uri, {{"Alternate-Paths", "../../"s += flNotDir(altPath)}}, false); return true; }; PushByHashURI(Item.URI); @@ -542,7 +546,7 @@ std::string pkgAcqMetaBase::GetFinalFilename() const } std::string pkgAcqArchive::GetFinalFilename() const { - return _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename); + return _config->FindDir("Dir::Cache::Archives") += flNotDir(StoreFilename); } /*}}}*/ // pkgAcqTransactionItem::GetMetaKey and specialisations for child classes /*{{{*/ @@ -716,15 +720,15 @@ bool pkgAcqIndexDiffs::AcquireByHash() const } /*}}}*/ -class APT_HIDDEN NoActionItem : public pkgAcquire::Item /*{{{*/ +class APT_HIDDEN NoActionItem final : 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();}; + [[nodiscard]] std::string DescURI() const override {return Target.URI;}; + [[nodiscard]] HashStringList GetExpectedHashes() const override {return {};}; NoActionItem(pkgAcquire * const Owner, IndexTarget const &Target) : pkgAcquire::Item(Owner), Target(Target) @@ -740,15 +744,15 @@ class APT_HIDDEN NoActionItem : public pkgAcquire::Item /*{{{*/ } }; /*}}}*/ -class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem /*{{{*/ +class APT_HIDDEN CleanupItem final : 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();}; + [[nodiscard]] std::string DescURI() const override {return Target.URI;}; + [[nodiscard]] HashStringList GetExpectedHashes() const override {return {};}; CleanupItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) : pkgAcqTransactionItem(Owner, TransactionManager, Target) @@ -756,7 +760,7 @@ class APT_HIDDEN CleanupItem : public pkgAcqTransactionItem /*{{{*/ Status = StatDone; DestFile = GetFinalFileNameFromURI(Target.URI); } - bool TransactionState(TransactionStates const state) APT_OVERRIDE + bool TransactionState(TransactionStates const state) override { switch (state) { @@ -842,8 +846,17 @@ void pkgAcquire::Item::PushAlternativeURI(std::string &&NewURI, std::unordered_m d->AlternativeURIs.emplace_front(std::move(NewURI), std::move(fields)); } /*}}}*/ -void pkgAcquire::Item::RemoveAlternativeSite(std::string &&OldSite) /*{{{*/ +void pkgAcquire::Item::RemoveAlternativeSite(std::string const &AltUriStr)/*{{{*/ { + ::URI AltUri{AltUriStr}; + // the hostnames for these methods are empty for absolute paths which would result + // in the elimination of all sites accessed via those methods. On the upside, those + // methods are local and fast to reply with failure, so it doesn't hurt that much to + // keep them in the loop – so we just exit here rather than trying to guess the site. + std::array const badhosts{"file", "copy", "cdrom"}; + if (std::find(badhosts.begin(), badhosts.end(), AltUri.Access) != badhosts.end()) + return; + auto const OldSite = URI::SiteOnly(AltUriStr); d->AlternativeURIs.erase(std::remove_if(d->AlternativeURIs.begin(), d->AlternativeURIs.end(), [&](decltype(*d->AlternativeURIs.cbegin()) AltUri) { return URI::SiteOnly(AltUri.URI) == OldSite; @@ -938,7 +951,7 @@ void pkgAcquire::Item::FailMessage(string const &Message) failreason = WEAK_HASHSUMS; else if (FailReason == "RedirectionLoop") failreason = REDIRECTION_LOOP; - else if (Status == StatAuthError) + else if (Status == StatAuthError || FailReason == "HashSumMismatch") failreason = HASHSUM_MISMATCH; if(ErrorText.empty()) @@ -963,7 +976,7 @@ void pkgAcquire::Item::FailMessage(string const &Message) break; } - if (Status == StatAuthError) + if (Status == StatAuthError || failreason == HASHSUM_MISMATCH) { auto const ExpectedHashes = GetExpectedHashes(); if (ExpectedHashes.empty() == false) @@ -975,13 +988,25 @@ void pkgAcquire::Item::FailMessage(string const &Message) if (failreason == HASHSUM_MISMATCH) { out << "Hashes of received file:" << std::endl; + size_t hashes = 0; 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) + if (not hashsum.empty()) + { formatHashsum(out, HashString(*type, hashsum)); + ++hashes; + } } + if (hashes == 0) + for (char const *const *type = HashString::SupportedHashes(); *type != nullptr; ++type) + { + std::string const tagname = std::string("Alt-") + *type + "-Hash"; + std::string const hashsum = LookupTag(Message, tagname.c_str()); + if (not hashsum.empty()) + formatHashsum(out, HashString(*type, hashsum)); + } } auto const lastmod = LookupTag(Message, "Last-Modified", ""); if (lastmod.empty() == false) @@ -1023,8 +1048,7 @@ void pkgAcquire::Item::Start(string const &/*Message*/, unsigned long long const bool pkgAcquire::Item::VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const * const /*Cnf*/) { - std::string const FileName = LookupTag(Message,"Filename"); - if (FileName.empty() == true) + if (LookupTag(Message,"Filename").empty() && LookupTag(Message, "Alt-Filename").empty()) { Status = StatError; ErrorText = "Method gave a blank filename"; @@ -1354,20 +1378,20 @@ bool pkgAcqMetaBase::CheckStopAuthentication(pkgAcquire::Item * const I, const s 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"), + "OpenPGP signature verification failed: %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"), + _error->Error(_("OpenPGP signature verification failed: %s: %s"), Desc.Description.c_str(), GPGError.c_str()); I->Status = StatAuthError; return true; } else { - _error->Warning(_("GPG error: %s: %s"), + _error->Warning(_("OpenPGP signature verification failed: %s: %s"), Desc.Description.c_str(), GPGError.c_str()); } @@ -1399,7 +1423,15 @@ string pkgAcqMetaBase::Custom600Headers() const void pkgAcqMetaBase::QueueForSignatureVerify(pkgAcqTransactionItem * const I, std::string const &File, std::string const &Signature) { AuthPass = true; +#ifdef SQV_EXECUTABLE + if (not _config->Find("APT::Key::GPGVCommand").empty() || not FileExists(SQV_EXECUTABLE)) + I->Desc.URI = "gpgv:" + pkgAcquire::URIEncode(Signature); + else { + I->Desc.URI = "sqv:" + pkgAcquire::URIEncode(Signature); + } +#else I->Desc.URI = "gpgv:" + pkgAcquire::URIEncode(Signature); +#endif I->DestFile = File; QueueURI(I->Desc); I->SetActiveSubprocess("gpgv"); @@ -1412,7 +1444,7 @@ bool pkgAcqMetaBase::CheckDownloadDone(pkgAcqTransactionItem * const I, const st // verified yet) // Save the final base URI we got this Release file from - if (I->UsedMirror.empty() == false && _config->FindB("Acquire::SameMirrorForAllIndexes", true)) + if (not I->Local && not I->UsedMirror.empty() && _config->FindB("Acquire::SameMirrorForAllIndexes", true)) { auto InReleasePath = Target.Option(IndexTarget::INRELEASE_PATH); if (InReleasePath.empty()) @@ -2013,6 +2045,8 @@ void pkgAcqMetaClearSig::Failed(string const &Message,pkgAcquire::MethodConfig c return; } + _error->Audit(_("Repositories should provide a clear-signed InRelease file, but none found at %s."), Target.URI.c_str()); + // 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) @@ -2386,7 +2420,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ string hash; unsigned long long size; - std::stringstream ss(tmp.to_string()); + std::istringstream ss(std::string{tmp}); // TODO: replace with std::string_view_stream in C++23 ss.imbue(posix); ss >> hash >> size; if (unlikely(hash.empty() == true)) @@ -2456,7 +2490,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ string hash, filename; unsigned long long size; - std::stringstream ss(tmp.to_string()); + std::stringstream ss(std::string{tmp}); // TODO: replace with std::string_view_stream in C++23 ss.imbue(posix); while (ss >> hash >> size >> filename) @@ -2513,7 +2547,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ string hash, filename; unsigned long long size; - std::stringstream ss(tmp.to_string()); + std::stringstream ss(std::string{tmp}); // TODO: replace with std::string_view_stream in C++23 ss.imbue(posix); while (ss >> hash >> size >> filename) @@ -2551,7 +2585,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string const &IndexDiffFile) /*{{{*/ string hash, filename; unsigned long long size; - std::stringstream ss(tmp.to_string()); + std::stringstream ss(std::string{tmp}); // TODO: replace with std::string_view_stream in C++23 ss.imbue(posix); // FIXME: all of pdiff supports only .gz compressed patches @@ -2821,7 +2855,7 @@ void pkgAcqIndexDiffs::Failed(string const &Message,pkgAcquire::MethodConfig con void pkgAcqIndexDiffs::Finish(bool allDone) { if(Debug) - std::clog << "pkgAcqIndexDiffs::Finish(): " + std::clog << "pkgAcqIndexDiffs::Finish(): " << allDone << " " << Desc.URI << std::endl; @@ -3251,7 +3285,7 @@ void pkgAcqIndex::Done(string const &Message, { Item::Done(Message,Hashes,Cfg); - switch(Stage) + switch(Stage) { case STAGE_DOWNLOAD: StageDownloadDone(Message); @@ -3276,7 +3310,7 @@ void pkgAcqIndex::StageDownloadDone(string const &Message) if (StringToBool(LookupTag(Message, "IMS-Hit"), false)) { Filename = GetExistingFilename(GetFinalFileNameFromURI(Target.URI)); - EraseFileName = DestFile = flCombine(flNotFile(DestFile), flNotDir(Filename)); + EraseFileName = DestFile = flCombine(flNotFile(DestFile), std::string{flNotDir(Filename)}); 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()); Stage = STAGE_DECOMPRESS_AND_VERIFY; @@ -3464,7 +3498,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc StoreFilename = QuoteString(Version.ParentPkg().Name(), "_:") + '_' + QuoteString(Version.VerStr(), "_:") + '_' + QuoteString(Version.Arch(), "_:.") + - "." + flExtension(poolfilename); + '.' += flExtension(poolfilename); Desc.URI = Index->ArchiveURI(poolfilename); Desc.Description = Index->ArchiveInfo(Version); @@ -3493,7 +3527,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc // Check if we already downloaded the file struct stat Buf; - auto FinalFile = _config->FindDir("Dir::Cache::Archives") + flNotDir(StoreFilename); + auto FinalFile = _config->FindDir("Dir::Cache::Archives") += flNotDir(StoreFilename); if (stat(FinalFile.c_str(), &Buf) == 0) { // Make sure the size matches @@ -3512,7 +3546,7 @@ pkgAcqArchive::pkgAcqArchive(pkgAcquire *const Owner, pkgSourceList *const Sourc } // Check the destination file - DestFile = _config->FindDir("Dir::Cache::Archives") + "partial/" + flNotDir(StoreFilename); + DestFile = (_config->FindDir("Dir::Cache::Archives") += "partial/") += flNotDir(StoreFilename); if (stat(DestFile.c_str(), &Buf) == 0) { // Hmm, the partial file is too big, erase it @@ -3919,9 +3953,9 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *const Owner, string const &URI, HashStringLis if(!DestFilename.empty()) DestFile = DestFilename; else if(!DestDir.empty()) - DestFile = DestDir + "/" + DeQuoteString(flNotDir(url.Path)); + DestFile = DestDir + "/" + DeQuoteString(std::string{flNotDir(url.Path)}); else - DestFile = DeQuoteString(flNotDir(url.Path)); + DestFile = DeQuoteString(std::string{flNotDir(url.Path)}); // Create the item Desc.URI = std::string(url); @@ -3985,7 +4019,7 @@ void pkgAcqFile::Done(string const &Message,HashStringList const &CalcHashes, _error->PushToStack(); _error->Errno("pkgAcqFile::Done", "Symlinking file %s failed", DestFile.c_str()); std::stringstream msg; - _error->DumpErrors(msg, GlobalError::DEBUG, false); + _error->DumpErrors(msg, GlobalError::NOTICE, false); _error->RevertToStack(); ErrorText = msg.str(); Status = StatError; @@ -4063,7 +4097,7 @@ static std::string GetAuxFileNameFromURIInLists(std::string const &uri) auto const dirname = flCombine(_config->FindDir("Dir::State::lists"), "auxfiles/"); char const * const filetag = ".apt-acquire-privs-test.XXXXXX"; std::string const tmpfile_tpl = flCombine(dirname, filetag); - std::unique_ptr tmpfile { strdup(tmpfile_tpl.c_str()), std::free }; + std::unique_ptr tmpfile { strdup(tmpfile_tpl.c_str()) }; int const fd = mkstemp(tmpfile.get()); if (fd == -1) return ""; @@ -4079,7 +4113,7 @@ static std::string GetAuxFileNameFromURI(std::string const &uri) std::string tmpdir_tpl; strprintf(tmpdir_tpl, "%s/apt-auxfiles-XXXXXX", GetTempDir().c_str()); - std::unique_ptr tmpdir { strndup(tmpdir_tpl.data(), tmpdir_tpl.length()), std::free }; + std::unique_ptr tmpdir { strndup(tmpdir_tpl.data(), tmpdir_tpl.length()) }; if (mkdtemp(tmpdir.get()) == nullptr) { _error->Errno("GetAuxFileNameFromURI", "mkdtemp of %s failed", tmpdir.get()); diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index 22da981..5861d48 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -212,7 +212,7 @@ class APT_PUBLIC pkgAcquire::Item : public WeakPointable /*{{{*/ * \sa pkgAcqMethod */ virtual void Done(std::string const &Message, HashStringList const &Hashes, - pkgAcquire::MethodConfig const * const Cnf); + pkgAcquire::MethodConfig const *const Cnf); /** \brief Invoked when the worker starts to fetch this object. * @@ -240,7 +240,7 @@ class APT_PUBLIC pkgAcquire::Item : public WeakPointable /*{{{*/ APT_HIDDEN bool PopAlternativeURI(std::string &NewURI); APT_HIDDEN bool IsGoodAlternativeURI(std::string const &AltUri) const; APT_HIDDEN void PushAlternativeURI(std::string &&NewURI, std::unordered_map &&fields, bool const at_the_back); - APT_HIDDEN void RemoveAlternativeSite(std::string &&OldSite); + APT_HIDDEN void RemoveAlternativeSite(std::string const &AltUri); /** \brief A "descriptive" URI-like string. * @@ -372,7 +372,7 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item /*{{{*/ protected: HashStringList GetExpectedHashesFor(std::string const &MetaKey) const; - bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE; + bool QueueURI(pkgAcquire::ItemDesc &Item) override; public: IndexTarget const Target; @@ -390,14 +390,14 @@ class APT_HIDDEN pkgAcqTransactionItem: public pkgAcquire::Item /*{{{*/ }; 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; - virtual bool AcquireByHash() const; + [[nodiscard]] std::string DescURI() const override { return Target.URI; } + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] virtual std::string GetMetaKey() const; + [[nodiscard]] bool HashesRequired() const override; + [[nodiscard]] virtual bool AcquireByHash() const; pkgAcqTransactionItem(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) APT_NONNULL(2, 3); - virtual ~pkgAcqTransactionItem(); + ~pkgAcqTransactionItem() override; friend class pkgAcqMetaBase; friend class pkgAcqMetaClearSig; @@ -428,7 +428,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem /*{{{*/ /** \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; + [[nodiscard]] std::string Custom600Headers() const override; /** \brief Called when authentication succeeded. * @@ -452,7 +452,7 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem /*{{{*/ */ bool VerifyVendor(std::string const &Message); - virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE; + bool TransactionState(TransactionStates state) override; public: // This refers more to the Transaction-Manager than the actual file @@ -460,9 +460,9 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem /*{{{*/ 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; + bool QueueURI(pkgAcquire::ItemDesc &Item) override; + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] bool HashesRequired() const override; // transaction code void Add(pkgAcqTransactionItem * const I); @@ -480,11 +480,11 @@ class APT_HIDDEN pkgAcqMetaBase : public pkgAcqTransactionItem /*{{{*/ 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; + [[nodiscard]] std::string GetFinalFilename() const override; pkgAcqMetaBase(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &DataTarget) APT_NONNULL(2, 3); - virtual ~pkgAcqMetaBase(); + ~pkgAcqMetaBase() override; }; /*}}}*/ /** \brief An item that is responsible for downloading the meta-index {{{ @@ -507,17 +507,17 @@ class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase void Init(std::string const &URIDesc, std::string const &ShortDesc); public: - virtual std::string DescURI() const APT_OVERRIDE; + [[nodiscard]] std::string DescURI() const 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) 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(); + ~pkgAcqMetaIndex() override; friend class pkgAcqMetaSig; }; @@ -530,7 +530,7 @@ class APT_HIDDEN pkgAcqMetaIndex : public pkgAcqMetaBase * * \sa pkgAcqMetaIndex */ -class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem +class APT_HIDDEN pkgAcqMetaSig final : public pkgAcqTransactionItem { void * const d; @@ -542,25 +542,25 @@ class APT_HIDDEN pkgAcqMetaSig : public pkgAcqTransactionItem protected: /** \brief Get the full pathname of the final file for the current URI */ - virtual std::string GetFinalFilename() const APT_OVERRIDE; + [[nodiscard]] std::string GetFinalFilename() const override; public: - virtual bool HashesRequired() const APT_OVERRIDE { return false; } + [[nodiscard]] bool HashesRequired() const 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string Custom600Headers() const 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(); + ~pkgAcqMetaSig() override; }; /*}}}*/ /** \brief An item responsible for downloading clearsigned metaindexes {{{*/ -class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex +class APT_HIDDEN pkgAcqMetaClearSig final : public pkgAcqMetaIndex { void * const d; IndexTarget const DetachedDataTarget; @@ -570,12 +570,12 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string Custom600Headers() const override; + bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + void Finished() override; /** \brief Starts downloading the individual index files. * @@ -593,7 +593,7 @@ class APT_HIDDEN pkgAcqMetaClearSig : public pkgAcqMetaIndex IndexTarget const &DetachedDataTarget, IndexTarget const &DetachedSigTarget, metaIndex * const MetaIndexParser); - virtual ~pkgAcqMetaClearSig(); + ~pkgAcqMetaClearSig() override; }; /*}}}*/ /** \brief Common base class for all classes that deal with fetching indexes {{{*/ @@ -603,12 +603,12 @@ class APT_HIDDEN pkgAcqBaseIndex : public pkgAcqTransactionItem 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; + [[nodiscard]] std::string GetFinalFilename() const override; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; pkgAcqBaseIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) APT_NONNULL(2, 3); - virtual ~pkgAcqBaseIndex(); + ~pkgAcqBaseIndex() override; }; /*}}}*/ /** \brief An acquire item that is responsible for fetching an index {{{ @@ -660,22 +660,22 @@ class APT_HIDDEN pkgAcqIndex : public pkgAcqBaseIndex void InitByHashIfNeeded(); /** \brief Get the full pathname of the final file for the current URI */ - virtual std::string GetFinalFilename() const APT_OVERRIDE; + [[nodiscard]] std::string GetFinalFilename() const override; - virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE; + bool TransactionState(TransactionStates state) 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string Custom600Headers() const override; + [[nodiscard]] std::string DescURI() const override { return Desc.URI; }; + [[nodiscard]] std::string GetMetaKey() const override; pkgAcqIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target, bool const Derived = false) APT_NONNULL(2, 3); - virtual ~pkgAcqIndex(); + ~pkgAcqIndex() override; protected: APT_HIDDEN void Init(std::string const &URI, std::string const &URIDesc, @@ -707,7 +707,7 @@ struct APT_HIDDEN DiffInfo { /*{{{*/ * * \sa pkgAcqIndexDiffs, pkgAcqIndex */ -class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex +class APT_HIDDEN pkgAcqDiffIndex final : public pkgAcqIndex { void * const d; std::vector * diffs; @@ -719,19 +719,20 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex bool Debug; /** \brief Get the full pathname of the final file for the current URI */ - virtual std::string GetFinalFilename() const APT_OVERRIDE; + [[nodiscard]] std::string GetFinalFilename() const override; - virtual bool QueueURI(pkgAcquire::ItemDesc &Item) APT_OVERRIDE; + bool QueueURI(pkgAcquire::ItemDesc &Item) override; - virtual bool TransactionState(TransactionStates const state) APT_OVERRIDE; - public: + bool TransactionState(TransactionStates state) override; + + public: // Specialized action members - virtual void Failed(std::string const &Message, pkgAcquire::MethodConfig const * const Cnf) 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 std::string DescURI() const APT_OVERRIDE {return Target.URI + "Index";}; - virtual std::string GetMetaKey() const APT_OVERRIDE; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + bool VerifyDone(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string DescURI() const override { return Target.URI + "Index"; }; + [[nodiscard]] std::string GetMetaKey() const override; /** \brief Parse the Index file for a set of Packages diffs. * @@ -757,7 +758,7 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex */ pkgAcqDiffIndex(pkgAcquire * const Owner, pkgAcqMetaClearSig * const TransactionManager, IndexTarget const &Target) APT_NONNULL(2, 3); - virtual ~pkgAcqDiffIndex(); + ~pkgAcqDiffIndex() override; private: APT_HIDDEN void QueueOnIMSHit() const; }; @@ -773,7 +774,7 @@ class APT_HIDDEN pkgAcqDiffIndex : public pkgAcqIndex * * \sa pkgAcqDiffIndex, pkgAcqIndex */ -class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqIndexMergeDiffs final : public pkgAcqBaseIndex { protected: @@ -810,14 +811,14 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex * 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; - virtual bool AcquireByHash() const APT_OVERRIDE; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string Custom600Headers() const override; + [[nodiscard]] std::string DescURI() const override { return Target.URI + "Index"; }; + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] bool HashesRequired() const override; + [[nodiscard]] bool AcquireByHash() const override; /** \brief Create an index merge-diff item. * @@ -834,7 +835,7 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex pkgAcqIndexMergeDiffs(pkgAcquire *const Owner, pkgAcqMetaClearSig *const TransactionManager, IndexTarget const &Target, DiffInfo const &patch, std::vector const *const allPatches) APT_NONNULL(2, 3, 6); - virtual ~pkgAcqIndexMergeDiffs(); + ~pkgAcqIndexMergeDiffs() override; }; /*}}}*/ /** \brief An item that is responsible for fetching server-merge patches {{{ @@ -848,7 +849,7 @@ class APT_HIDDEN pkgAcqIndexMergeDiffs : public pkgAcqBaseIndex * * \sa pkgAcqDiffIndex, pkgAcqIndex */ -class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex +class APT_HIDDEN pkgAcqIndexDiffs final : public pkgAcqBaseIndex { private: @@ -910,15 +911,15 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex * 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) 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; - virtual bool AcquireByHash() const APT_OVERRIDE; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const * Cnf) override; + [[nodiscard]] std::string Custom600Headers() const override; + [[nodiscard]] std::string DescURI() const override { return Target.URI + "IndexDiffs"; }; + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] bool HashesRequired() const override; + [[nodiscard]] bool AcquireByHash() const override; /** \brief Create an index diff item. * @@ -936,7 +937,7 @@ class APT_HIDDEN pkgAcqIndexDiffs : public pkgAcqBaseIndex pkgAcqIndexDiffs(pkgAcquire *const Owner, pkgAcqMetaClearSig *const TransactionManager, IndexTarget const &Target, std::vector const &diffs = std::vector()) APT_NONNULL(2, 3); - virtual ~pkgAcqIndexDiffs(); + ~pkgAcqIndexDiffs() override; }; /*}}}*/ /** \brief An item that is responsible for fetching a package file. {{{ @@ -979,19 +980,18 @@ class APT_PUBLIC pkgAcqArchive : public pkgAcquire::Item bool QueueNext(); /** \brief Get the full pathname of the final file for the current URI */ - virtual std::string GetFinalFilename() const APT_OVERRIDE; + [[nodiscard]] std::string GetFinalFilename() const 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; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const * Cnf) override; + void Done(std::string const &Message, HashStringList const &Hashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string DescURI() const override; + [[nodiscard]] std::string ShortDesc() const override; + void Finished() override; + [[nodiscard]] bool IsTrusted() const override; + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] bool HashesRequired() const override; /** \brief Create a new pkgAcqArchive. * @@ -1014,7 +1014,7 @@ class APT_PUBLIC pkgAcqArchive : public pkgAcquire::Item pkgAcqArchive(pkgAcquire * const Owner,pkgSourceList * const Sources, pkgRecords * const Recs,pkgCache::VerIterator const &Version, std::string &StoreFilename); - virtual ~pkgAcqArchive(); + ~pkgAcqArchive() override; }; /*}}}*/ /** \brief Retrieve the changelog for the given version {{{ @@ -1033,14 +1033,14 @@ class APT_PUBLIC pkgAcqChangelog : public pkgAcquire::Item 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; } + [[nodiscard]] HashStringList GetExpectedHashes() const override { return {}; } + [[nodiscard]] bool HashesRequired() const 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;}; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const *Cnf) override; + void Done(std::string const &Message, HashStringList const &CalcHashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string DescURI() const override { return Desc.URI; }; /** returns the URI to the changelog of this version * @@ -1126,7 +1126,7 @@ class APT_PUBLIC pkgAcqChangelog : public pkgAcquire::Item char const * const SrcName, char const * const SrcVersion, std::string const &DestDir="", std::string const &DestFilename=""); - virtual ~pkgAcqChangelog(); + ~pkgAcqChangelog() override; private: APT_HIDDEN void Init(std::string const &DestDir, std::string const &DestFilename); @@ -1147,14 +1147,14 @@ class APT_PUBLIC pkgAcqFile : public pkgAcquire::Item HashStringList const ExpectedHashes; public: - virtual HashStringList GetExpectedHashes() const APT_OVERRIDE; - virtual bool HashesRequired() const APT_OVERRIDE; + [[nodiscard]] HashStringList GetExpectedHashes() const override; + [[nodiscard]] bool HashesRequired() const override; // Specialized action members - 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; + void Done(std::string const &Message, HashStringList const &CalcHashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string DescURI() const override { return Desc.URI; }; + [[nodiscard]] std::string Custom600Headers() const override; /** \brief Create a new pkgAcqFile object. * @@ -1191,26 +1191,26 @@ class APT_PUBLIC pkgAcqFile : public pkgAcquire::Item std::string const &Desc, std::string const &ShortDesc, std::string const &DestDir="", std::string const &DestFilename="", bool const IsIndexFile=false); - virtual ~pkgAcqFile(); + ~pkgAcqFile() override; }; /*}}}*/ -class APT_HIDDEN pkgAcqAuxFile : public pkgAcqFile /*{{{*/ +class APT_HIDDEN pkgAcqAuxFile final : public pkgAcqFile /*{{{*/ { pkgAcquire::Item *const Owner; pkgAcquire::Worker *const Worker; unsigned long long MaximumSize; public: - 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 Custom600Headers() const APT_OVERRIDE; - virtual void Finished() APT_OVERRIDE; + void Failed(std::string const &Message, pkgAcquire::MethodConfig const * Cnf) override; + void Done(std::string const &Message, HashStringList const &CalcHashes, + pkgAcquire::MethodConfig const *Cnf) override; + [[nodiscard]] std::string Custom600Headers() const override; + void Finished() override; pkgAcqAuxFile(pkgAcquire::Item *const Owner, pkgAcquire::Worker *const Worker, std::string const &ShortDesc, std::string const &Desc, std::string const &URI, HashStringList const &Hashes, unsigned long long const MaximumSize); - virtual ~pkgAcqAuxFile(); + ~pkgAcqAuxFile() override; }; /*}}}*/ /** @} */ diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc index 7b1f4f1..4739f8c 100644 --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@ -145,9 +145,15 @@ void pkgAcqMethod::Fail(bool Transient) Fail("", Transient); } + +void pkgAcqMethod::Fail(std::string Err, bool Tansient) +{ + std::unordered_map fields; + FailWithContext(Err, Tansient, fields); +} /*}}}*/ // AcqMethod::Fail - A fetch has failed /*{{{*/ -void pkgAcqMethod::Fail(string Err, bool Transient) +void pkgAcqMethod::FailWithContext(std::string Err, bool Transient, std::unordered_map &fields) { if (not _error->empty()) @@ -175,7 +181,6 @@ void pkgAcqMethod::Fail(string Err, bool Transient) if (IP.empty() == false && _config->FindB("Acquire::Failure::ShowIP", true) == true) Err.append(" ").append(IP); - std::unordered_map fields; if (Queue != nullptr) try_emplace(fields, "URI", Queue->Uri); else @@ -459,23 +464,6 @@ int pkgAcqMethod::Run(bool Single) 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 = ""; - 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 /*{{{*/ // --------------------------------------------------------------------- /* */ diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h index edee939..b8944e9 100644 --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@ -92,6 +92,7 @@ class APT_PUBLIC pkgAcqMethod // Outgoing messages void Fail(bool Transient = false); + void FailWithContext(std::string Why, bool Transient, std::unordered_map &fields); 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); @@ -101,8 +102,6 @@ class APT_PUBLIC pkgAcqMethod bool MediaFail(std::string Required,std::string Drive); virtual void Exit() {}; - APT_DEPRECATED_MSG("Use SendMessage instead") void PrintStatus(char const * const header, const char* Format, va_list &args) const; - public: enum CnfFlags { diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 3c23893..5589794 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -38,7 +39,6 @@ #include /*}}}*/ -#include "smartmirrors.h" using namespace std; @@ -99,8 +99,6 @@ bool pkgAcquire::Worker::Start() std::string Method; if (_config->Exists(confItem)) Method = _config->FindFile(confItem.c_str()); - else if (Access == "ftp" || Access == "rsh" || Access == "ssh") - return _error->Error(_("The method '%s' is unsupported and disabled by default. Consider switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again."), Access.c_str(), Access.c_str(), Access.c_str()); else Method = _config->FindDir(methodsDir) + Access; if (FileExists(Method) == false) @@ -201,6 +199,7 @@ enum class APT_HIDDEN MessageType STATUS = 102, REDIRECT = 103, WARNING = 104, + AUDIT = 105, URI_START = 200, URI_DONE = 201, AUX_REQUEST = 351, @@ -389,6 +388,10 @@ bool pkgAcquire::Worker::RunMessages() _error->Warning("%s: %s", Itm ? Itm->Owner ? Itm->Owner->DescURI().c_str() : Access.c_str() : Access.c_str(), LookupTag(Message, "Message").c_str()); break; + case MessageType::AUDIT: + _error->Audit("%s: %s", Itm ? Itm->Owner ? Itm->Owner->DescURI().c_str() : Access.c_str() : Access.c_str(), LookupTag(Message, "Message").c_str()); + break; + case MessageType::URI_START: { if (Itm == nullptr) @@ -432,11 +435,18 @@ bool pkgAcquire::Worker::RunMessages() Log->Pulse((*O)->GetOwner()); HashStringList ReceivedHashes; + bool AltFile = false; { - std::string const givenfilename = LookupTag(Message, "Filename"); - std::string const filename = givenfilename.empty() ? Itm->Owner->DestFile : givenfilename; + std::string filename; + if (filename = LookupTag(Message, "Filename"); filename.empty()) + { + if (filename = LookupTag(Message, "Alt-Filename"); not filename.empty()) + AltFile = true; + else + filename = Itm->Owner->DestFile; + } // see if we got hashes to verify - ReceivedHashes = GetHashesFromMessage("", Message); + ReceivedHashes = GetHashesFromMessage(AltFile ? "Alt-" : "", Message); // not all methods always sent Hashes our way if (ReceivedHashes.usable() == false) { @@ -447,64 +457,107 @@ bool pkgAcquire::Worker::RunMessages() FileFd file(filename, FileFd::ReadOnly, FileFd::None); calc.AddFD(file); ReceivedHashes = calc.GetHashStringList(); + for (auto const &h : ReceivedHashes) + { + std::string tagname; + if (AltFile) + tagname = "Alt-"; + tagname.append(h.HashType()).append("-Hash"); + if (not LookupTag(Message, tagname.c_str()).empty()) + continue; + if (not APT::String::Endswith(Message, "\n")) + Message.append("\n"); + Message.append(tagname).append(": ").append(h.HashValue()); + } } } // 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) + if (Log != nullptr && not Itm->Owner->Complete && not Itm->Owner->Local && not AltFile && Itm->Owner->DestFile == filename) Log->Fetched(ReceivedHashes.FileSize(),atoi(LookupTag(Message,"Resume-Point","0").c_str())); } std::vector const ItmOwners = Itm->Owners; + for (auto const Owner : ItmOwners) + Owner->ErrorText.clear(); 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"); + + bool consideredOkay = true; + HashStringList ExpectedHashes; + bool const DebugAuth = _config->FindB("Debug::pkgAcquire::Auth", false); + if (DebugAuth) + { + std::clog << "201 URI Done: " << URI << endl + << "ReceivedHash:" << endl; + for (auto const &hs : ReceivedHashes) + std::clog << "\t- " << hs.toStr() << std::endl; + std::clog << "ExpectedHash:" << endl; + } 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()) + HashStringList const OwnerExpectedHashes = [&]() { + if (AltFile) { - /* 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; + auto const * const transOwner = dynamic_cast(Owner); + if (transOwner != nullptr && transOwner->TransactionManager != nullptr && transOwner->TransactionManager->MetaIndexParser != nullptr) + { + auto const * const hashes = transOwner->TransactionManager->MetaIndexParser->Lookup(transOwner->Target.MetaKey); + if (hashes != nullptr) + return hashes->Hashes; + } } - else if (ReceivedHashes == ExpectedHashes) - consideredOkay = true; - else + return Owner->GetExpectedHashes(); + }(); + for (auto const &h : OwnerExpectedHashes) + { + if (not ExpectedHashes.push_back(h)) + { consideredOkay = false; - + std::clog << "\t- " << h.toStr() << " [conflict]" << std::endl; + } + else if (DebugAuth) + std::clog << "\t- " << h.toStr() << std::endl; } + } + if (DebugAuth) + std::clog << endl; + + // decide if what we got is what we expected + if (not consideredOkay) + ; + else if ((forcedHash.empty() && not ExpectedHashes.empty()) || + (not forcedHash.empty() && 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 = !Owner->HashesRequired(); - - if (consideredOkay == true) - consideredOkay = Owner->VerifyDone(Message, Config); - else // hashsum mismatch - Owner->Status = pkgAcquire::Item::StatAuthError; + consideredOkay = false; + } + else + consideredOkay = std::none_of(ItmOwners.begin(), ItmOwners.end(), [](auto const * const O) { return O->HashesRequired(); }); + bool otherReasons = false; + if (consideredOkay && not std::all_of(ItmOwners.begin(), ItmOwners.end(), [&](auto * const O) { return O->VerifyDone(Message, Config); })) + { + consideredOkay = false; + otherReasons = true; + } - if (consideredOkay == true) + if (consideredOkay) + { + for (auto const Owner : ItmOwners) { if (isDoomedItem(Owner) == false) Owner->Done(Message, ReceivedHashes, Config); @@ -516,22 +569,21 @@ bool pkgAcquire::Worker::RunMessages() Log->Done(Owner->GetItemDesc()); } } + } + else + { + if (otherReasons) + HandleFailure(ItmOwners, Config, Log, Message, false, false); else { - auto SavedDesc = Owner->GetItemDesc(); - if (isDoomedItem(Owner) == false) + if (Message.find("\nFailReason:") == std::string::npos) { - if (Message.find("\nFailReason:") == std::string::npos) - { - if (ReceivedHashes != ExpectedHashes) - Message.append("\nFailReason: HashSumMismatch"); - else - Message.append("\nFailReason: WeakHashSums"); - } - Owner->Failed(Message,Config); + if (ReceivedHashes != ExpectedHashes) + Message.append("\nFailReason: HashSumMismatch"); + else + Message.append("\nFailReason: WeakHashSums"); } - if (Log != nullptr) - Log->Fail(SavedDesc); + HandleFailure(ItmOwners, Config, Log, Message, false, true); } } ItemDone(); @@ -591,6 +643,8 @@ bool pkgAcquire::Worker::RunMessages() Log->Pulse((*O)->GetOwner()); std::vector const ItmOwners = Itm->Owners; + for (auto const Owner : ItmOwners) + Owner->ErrorText.clear(); OwnerQ->ItemDone(Itm); Itm = nullptr; @@ -601,8 +655,8 @@ bool pkgAcquire::Worker::RunMessages() { std::string const failReason = LookupTag(Message, "FailReason"); { - auto const reasons = { "Timeout", "ConnectionRefused", - "ConnectionTimedOut", "ResolveFailure", "TmpResolveFailure" }; + auto const reasons = {"Timeout", "ConnectionRefused", + "ConnectionTimedOut", "ResolveFailure", "TmpResolveFailure", "TooManyRequests"}; errTransient = std::find(std::begin(reasons), std::end(reasons), failReason) != std::end(reasons); } if (errTransient == false) @@ -634,6 +688,7 @@ void pkgAcquire::Worker::HandleFailure(std::vector const &It std::string const &Message, bool const errTransient, bool const errAuthErr) { auto currentTime = clock::now(); + auto currentWall = std::chrono::system_clock::now(); for (auto const Owner : ItmOwners) { std::string NewURI; @@ -646,7 +701,24 @@ void pkgAcquire::Worker::HandleFailure(std::vector const &It { auto Iter = _config->FindI("Acquire::Retries", 3) - Owner->Retries - 1; auto const MaxDur = _config->FindI("Acquire::Retries::Delay::Maximum", 30); - auto Dur = std::chrono::seconds(std::min(1 << Iter, MaxDur)); + auto const handleRetryAfter = _config->FindB("Acquire::Retries::HandleRetryAfter", true); + auto Dur = std::chrono::seconds(1 << Iter); + auto const retryAfterStr = LookupTag(Message, "Retry-After"); + auto const failReason = LookupTag(Message, "FailReason"); + if (failReason == "TooManyRequests" && !retryAfterStr.empty() && handleRetryAfter) + { + // The webserver gave a retry time. Use it, but also add exponential + // backoff waiting as we might not be the only client. + const auto retryAfter = std::chrono::seconds(std::strtoul(retryAfterStr.c_str(), nullptr, 10)); + const auto epochCurrent = std::chrono::duration_cast(currentWall.time_since_epoch()); + // If the retryAfter is in the past, we can just continue. + if (retryAfter > epochCurrent) + Dur += retryAfter - epochCurrent; + // Usually, all requests run into the rate limit at the same time. + // Distribute the retries to avoid hitting the limit again. + Dur += std::chrono::seconds(std::rand() % Dur.count()); + } + Dur = std::min(Dur, std::chrono::seconds(MaxDur)); if (_config->FindB("Debug::Acquire::Retries")) std::clog << "Delaying " << SavedDesc.Description << " by " << Dur.count() << " seconds" << std::endl; Owner->FetchAfter(currentTime + Dur); @@ -664,7 +736,7 @@ void pkgAcquire::Worker::HandleFailure(std::vector const &It else { if (errAuthErr) - Owner->RemoveAlternativeSite(URI::SiteOnly(Owner->GetItemDesc().URI)); + Owner->RemoveAlternativeSite(Owner->GetItemDesc().URI); if (Owner->PopAlternativeURI(NewURI)) { Owner->FailMessage(Message); @@ -813,7 +885,6 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item) Item->SyncDestinationFiles(); - Item->URI = SmartMirrors::GuestURI(Item->URI); string Message = "600 URI Acquire\n"; Message.reserve(300); URI URL(Item->URI); @@ -826,14 +897,12 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item) } Message += "\nFilename: " + Item->Owner->DestFile; - // FIXME: We should not hard code proxy protocols here. - if (URL.Access == "http" || URL.Access == "https") + // AutoDetectProxy() checks this already by itself, but we don't want to access unknown configs + if (CanURIBeAccessedViaProxy(URL)) { AutoDetectProxy(URL); - if (_config->Exists("Acquire::" + URL.Access + "::proxy::" + URL.Host)) - { - Message += "\nProxy: " + _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host); - } + if (auto const proxy = _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host); not proxy.empty()) + Message.append("\nProxy: ").append(proxy); } HashStringList const hsl = Item->GetExpectedHashes(); diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 7ebfa4f..d2d32e5 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -524,7 +525,7 @@ pkgAcquire::MethodConfig *pkgAcquire::GetConfig(string Access) Configs = Conf; /* if a method uses DownloadLimit, we switch to SingleInstance mode */ - if(_config->FindI("Acquire::"+Access+"::Dl-Limit",0) > 0) + if (not Conf->SingleInstance && _config->FindI("Acquire::" + Access + "::Dl-Limit", 0) > 0) Conf->SingleInstance = true; return Conf; @@ -605,7 +606,7 @@ static bool IsAccessibleBySandboxUser(std::string const &filename, bool const Re char const * const filetag = ".apt-acquire-privs-test.XXXXXX"; std::string const tmpfile_tpl = flCombine(dirname, filetag); - std::unique_ptr tmpfile { strdup(tmpfile_tpl.c_str()), std::free }; + std::unique_ptr tmpfile { strdup(tmpfile_tpl.c_str()) }; int const fd = mkstemp(tmpfile.get()); if (fd == -1 && errno == EACCES) return false; @@ -1030,7 +1031,7 @@ bool pkgAcquire::Queue::Enqueue(ItemDesc &Item) }; QItem **OptimalI = &Items; QItem **I = &Items; - auto insertLocation = std::make_tuple(Item.Owner->FetchAfter(), -Item.Owner->Priority()); + auto insertLocation = std::make_tuple(Item.Owner->FetchAfter(), Item.Owner->Priority()); // move to the end of the queue and check for duplicates here for (; *I != 0; ) { if (Item.URI == (*I)->URI && MetaKeysMatch(Item, *I)) @@ -1044,10 +1045,10 @@ bool pkgAcquire::Queue::Enqueue(ItemDesc &Item) // Determine the optimal position to insert: before anything with a // higher priority. auto queueLocation = std::make_tuple((*I)->GetFetchAfter(), - -(*I)->GetPriority()); + (*I)->GetPriority()); I = &(*I)->Next; - if (queueLocation <= insertLocation) + if (queueLocation >= insertLocation) { OptimalI = I; } diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 5869668..a08ecd2 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -25,7 +25,6 @@ #include #include #include -#include #include #include @@ -62,8 +61,8 @@ pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache), { Sim.Init(0); auto PackageCount = Cache->Head().PackageCount; - Flags = new unsigned char[PackageCount]; - memset(Flags,0,sizeof(*Flags)*PackageCount); + Flags = std::make_unique(PackageCount); + memset(&Flags[0],0,sizeof(Flags[0])*PackageCount); // Fake a filename so as not to activate the media swapping string Jnk = "SIMULATE"; @@ -74,11 +73,7 @@ pkgSimulate::pkgSimulate(pkgDepCache *Cache) : pkgPackageManager(Cache), } /*}}}*/ // Simulate::~Simulate - Destructor /*{{{*/ -pkgSimulate::~pkgSimulate() -{ - delete[] Flags; - delete d; -} +pkgSimulate::~pkgSimulate() = default; /*}}}*/ // Simulate::Describe - Describe a package /*{{{*/ // --------------------------------------------------------------------- @@ -412,9 +407,9 @@ pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pC { // Allocate memory auto const Size = Cache.Head().PackageCount; - Scores = new int[Size]; - Flags = new unsigned char[Size]; - memset(Flags,0,sizeof(*Flags)*Size); + Scores = std::make_unique(Size); + Flags = std::make_unique(Size); + memset(&Flags[0],0,sizeof(Flags[0])*Size); // Set debug to true to see its decision logic Debug = _config->FindB("Debug::pkgProblemResolver",false); @@ -423,11 +418,7 @@ pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pC // ProblemResolver::~pkgProblemResolver - Destructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgProblemResolver::~pkgProblemResolver() -{ - delete [] Scores; - delete [] Flags; -} +pkgProblemResolver::~pkgProblemResolver() = default; /*}}}*/ // ProblemResolver::ScoreSort - Sort the list by score /*{{{*/ // --------------------------------------------------------------------- @@ -447,7 +438,7 @@ int pkgProblemResolver::ScoreSort(Package const *A,Package const *B) void pkgProblemResolver::MakeScores() { auto const Size = Cache.Head().PackageCount; - memset(Scores,0,sizeof(*Scores)*Size); + memset(&Scores[0],0,sizeof(Scores[0])*Size); // maps to pkgCache::State::VerPriority: // Required Important Standard Optional Extra @@ -564,7 +555,7 @@ void pkgProblemResolver::MakeScores() // Copy the scores to advoid additive looping std::unique_ptr OldScores(new int[Size]); - memcpy(OldScores.get(),Scores,sizeof(*Scores)*Size); + memcpy(&OldScores[0],&Scores[0],sizeof(Scores[0])*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 @@ -807,16 +798,16 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) high score packages cause the removal of lower score packages that would cause the removal of even lower score packages. */ std::unique_ptr PList(new pkgCache::Package *[Size]); - pkgCache::Package **PEnd = PList.get(); + pkgCache::Package **PEnd = &PList[0]; 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; }); + std::sort(&PList[0], 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++) + for (pkgCache::Package **K = &PList[0]; K != PEnd; K++) if (Scores[(*K)->ID] != 0) { pkgCache::PkgIterator Pkg(Cache,*K); @@ -840,7 +831,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) for (int Counter = 0; Counter < MaxCounter && Change; ++Counter) { Change = false; - for (pkgCache::Package **K = PList.get(); K != PEnd; K++) + for (pkgCache::Package **K = &PList[0]; K != PEnd; K++) { pkgCache::PkgIterator I(Cache,*K); @@ -969,7 +960,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) } bool Done = false; - for (pkgCache::Version **V = VList.get(); *V != 0; V++) + for (pkgCache::Version **V = &VList[0]; *V != 0; V++) { pkgCache::VerIterator Ver(Cache,*V); pkgCache::PkgIterator Pkg = Ver.ParentPkg(); @@ -1274,7 +1265,7 @@ bool pkgProblemResolver::KeepPhasedUpdates() 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; + constexpr auto flags = 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; @@ -1300,18 +1291,18 @@ bool pkgProblemResolver::ResolveByKeepInternal() high score packages cause the removal of lower score packages that would cause the removal of even lower score packages. */ auto Size = Cache.Head().PackageCount; - pkgCache::Package **PList = new pkgCache::Package *[Size]; - pkgCache::Package **PEnd = PList; + std::unique_ptr PList{new pkgCache::Package *[Size]}; + pkgCache::Package **PEnd = &PList[0]; 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; }); + std::sort(&PList[0],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++) + for (pkgCache::Package **K = &PList[0]; K != PEnd; K++) if (Scores[(*K)->ID] != 0) { pkgCache::PkgIterator Pkg(Cache,*K); @@ -1324,7 +1315,8 @@ bool pkgProblemResolver::ResolveByKeepInternal() // Consider each broken package pkgCache::Package **LastStop = 0; - for (pkgCache::Package **K = PList; K != PEnd; K++) +restart: + for (pkgCache::Package **K = &PList[0]; K != PEnd; K++) { pkgCache::PkgIterator I(Cache,*K); @@ -1342,10 +1334,7 @@ bool pkgProblemResolver::ResolveByKeepInternal() clog << "Keeping package " << I.FullName(false) << endl; Cache.MarkKeep(I, false, false); if (InstOrNewPolicyBroken(I) == false) - { - K = PList - 1; - continue; - } + goto restart; } // Isolate the problem dependencies @@ -1374,14 +1363,13 @@ bool pkgProblemResolver::ResolveByKeepInternal() // Look at all the possible provides on this package std::unique_ptr VList(Start.AllTargets()); - for (pkgCache::Version **V = VList.get(); *V != 0; V++) + for (pkgCache::Version **V = &VList[0]; *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) + if (Pkg->CurrentVer == 0) continue; if (not Cache[Pkg].Protect()) @@ -1415,14 +1403,14 @@ bool pkgProblemResolver::ResolveByKeepInternal() // 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; + goto restart; } - delete[] PList; + if (Cache.BrokenCount() != 0) + return _error->Error(_("Unable to correct problems, you have held broken packages.")); if (Debug) Cache.CheckConsistency("keep done"); diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index 558beec..bad20aa 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -46,7 +46,7 @@ class pkgSimulatePrivate; class APT_PUBLIC pkgSimulate : public pkgPackageManager /*{{{*/ { - pkgSimulatePrivate * const d; + std::unique_ptr const d; protected: class APT_PUBLIC Policy : public pkgDepCache::Policy @@ -54,7 +54,7 @@ class APT_PUBLIC pkgSimulate : public pkgPackageManager /*{{{*/ pkgDepCache *Cache; public: - virtual VerIterator GetCandidateVer(PkgIterator const &Pkg) APT_OVERRIDE + VerIterator GetCandidateVer(PkgIterator const &Pkg) override { return (*Cache)[Pkg].CandidateVerIter(*Cache); } @@ -62,18 +62,18 @@ class APT_PUBLIC pkgSimulate : public pkgPackageManager /*{{{*/ explicit Policy(pkgDepCache *Cache) : Cache(Cache) {}; }; - unsigned char *Flags; + std::unique_ptr 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; + bool Install(PkgIterator Pkg, std::string File) override; + bool Configure(PkgIterator Pkg) override; + bool Remove(PkgIterator Pkg, bool Purge) override; -public: + public: bool Go(APT::Progress::PackageManager * progress) override; private: @@ -112,8 +112,8 @@ class APT_PUBLIC pkgProblemResolver /*{{{*/ ToRemove = (1 << 4), BrokenPolicyAllowed = (1 << 5) }; - int *Scores; - unsigned char *Flags; + std::unique_ptr Scores; + std::unique_ptr Flags; bool Debug; // Sort stuff diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index 982e68b..96ff8b2 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -368,7 +368,7 @@ const Configuration::getCompressors(bool const Cached) { { CompressorsDone.push_back(NAME); compressors.emplace_back(NAME, EXT, BINARY, ARG, DEARG, COST); } APT_ADD_COMPRESSOR(".", "", "", nullptr, nullptr, 0) if (_config->Exists("Dir::Bin::zstd") == false || FileExists(_config->Find("Dir::Bin::zstd")) == true) - APT_ADD_COMPRESSOR("zstd", ".zst", "zstd", "-19", "-d", 60) + APT_ADD_COMPRESSOR("zstd", ".zst", "zstd", "-6", "-d", 60) #ifdef HAVE_ZSTD else APT_ADD_COMPRESSOR("zstd", ".zst", "false", nullptr, nullptr, 60) @@ -563,4 +563,39 @@ bool Configuration::checkUsrMerged() return true; } /*}}}*/ +// isUsrMerged - whether usr is merged t /*{{{*/ +// --------------------------------------------------------------------- +/* */ +std::string Configuration::color(std::string const &colorName, std::string const &content) +{ + if (not _config->FindB("APT::Color")) + return content; + + auto colors = ::Configuration(_config->Tree("APT::Color")); + auto color = colors.Find(colorName); + + // Resolve the color recursively. A color string has the following format + // := \x1B ; fully resolved color + // | \\x1B ; color escaped. + // | ; a simple color name + // | ; a sequence of colors + if (color.find(" ") != color.npos) + { + std::string res; + for (auto &&colorPart : VectorizeString(color, ' ')) + res += Configuration::color(colorPart); + color = res; + } + else if (not color.empty() && color[0] != '\x1B') + { + if (APT::String::Startswith(color, "\\x1B")) + color = "\x1B" + color.substr(4); + else + color = Configuration::color(color); + } + if (content.empty()) + return color; + return color + content + Configuration::color("Neutral"); +} + /*}}}*/ } diff --git a/apt-pkg/aptconfiguration.h b/apt-pkg/aptconfiguration.h index 3e2636e..58c925b 100644 --- a/apt-pkg/aptconfiguration.h +++ b/apt-pkg/aptconfiguration.h @@ -130,7 +130,9 @@ namespace Configuration { /*{{{*/ APT_PUBLIC bool isChroot(); /** \return Check usr is merged or produce error. */ APT_PUBLIC bool checkUsrMerged(); + APT_PUBLIC std::string color(std::string const &colorName, std::string const &content = ""); #endif + /*}}}*/ } /*}}}*/ diff --git a/apt-pkg/cachefile.cc b/apt-pkg/cachefile.cc index e27688b..8034ffe 100644 --- a/apt-pkg/cachefile.cc +++ b/apt-pkg/cachefile.cc @@ -318,15 +318,15 @@ void pkgCacheFile::RemoveCaches() if (pkgcache.empty() == false) { std::string cachedir = flNotFile(pkgcache); - std::string cachefile = flNotDir(pkgcache); + std::string cachefile{flNotDir(pkgcache)}; if (cachedir.empty() != true && cachefile.empty() != true && DirectoryExists(cachedir) == true) { cachefile.append("."); std::vector caches = GetListOfFilesInDir(cachedir, false); for (std::vector::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) + auto nuke = flNotDir(*file); + if (cachefile != nuke.substr(0, cachefile.length())) continue; RemoveFile("RemoveCaches", *file); } @@ -337,15 +337,15 @@ void pkgCacheFile::RemoveCaches() return; std::string cachedir = flNotFile(srcpkgcache); - std::string cachefile = flNotDir(srcpkgcache); + std::string cachefile{flNotDir(srcpkgcache)}; if (cachedir.empty() == true || cachefile.empty() == true || DirectoryExists(cachedir) == false) return; cachefile.append("."); std::vector caches = GetListOfFilesInDir(cachedir, false); for (std::vector::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) + auto nuke = flNotDir(*file); + if (cachefile != nuke.substr(0, cachefile.length())) continue; RemoveFile("RemoveCaches", *file); } diff --git a/apt-pkg/cachefilter-patterns.cc b/apt-pkg/cachefilter-patterns.cc index 7e6d84f..e79e1af 100644 --- a/apt-pkg/cachefilter-patterns.cc +++ b/apt-pkg/cachefilter-patterns.cc @@ -12,6 +12,8 @@ #include +using namespace std::literals; + namespace APT { namespace Internal @@ -19,50 +21,50 @@ namespace Internal static const constexpr struct { - APT::StringView shortName; - APT::StringView longName; + std::string_view shortName; + std::string_view longName; bool takesArgument; } shortPatterns[] = { - {"r"_sv, "?architecture"_sv, true}, - {"A"_sv, "?archive"_sv, true}, - {"M"_sv, "?automatic"_sv, false}, - {"b"_sv, "?broken"_sv, false}, - {"c"_sv, "?config-files"_sv, false}, + {"r"sv, "?architecture"sv, true}, + {"A"sv, "?archive"sv, true}, + {"M"sv, "?automatic"sv, false}, + {"b"sv, "?broken"sv, false}, + {"c"sv, "?config-files"sv, false}, // FIXME: The words after ~D should be case-insensitive - {"DDepends:"_sv, "?depends"_sv, true}, - {"DPre-Depends:"_sv, "?pre-depends"_sv, true}, - {"DSuggests:"_sv, "?suggests"_sv, true}, - {"DRecommends:"_sv, "?recommends"_sv, true}, - {"DConflicts:"_sv, "?conflicts"_sv, true}, - {"DReplaces:"_sv, "?replaces"_sv, true}, - {"DObsoletes:"_sv, "?obsoletes"_sv, true}, - {"DBreaks:"_sv, "?breaks"_sv, true}, - {"DEnhances:"_sv, "?enhances"_sv, true}, - {"D"_sv, "?depends"_sv, true}, - {"RDepends:"_sv, "?reverse-depends"_sv, true}, - {"RPre-Depends:"_sv, "?reverse-pre-depends"_sv, true}, - {"RSuggests:"_sv, "?reverse-suggests"_sv, true}, - {"RRecommends:"_sv, "?reverse-recommends"_sv, true}, - {"RConflicts:"_sv, "?reverse-conflicts"_sv, true}, - {"RReplaces:"_sv, "?reverse-replaces"_sv, true}, - {"RObsoletes:"_sv, "?reverse-obsoletes"_sv, true}, - {"RBreaks:"_sv, "?reverse-breaks"_sv, true}, - {"REnhances:"_sv, "?reverse-enhances"_sv, true}, - {"R"_sv, "?reverse-depends"_sv, true}, - {"E"_sv, "?essential"_sv, false}, - {"F"_sv, "?false"_sv, false}, - {"g"_sv, "?garbage"_sv, false}, - {"i"_sv, "?installed"_sv, false}, - {"n"_sv, "?name"_sv, true}, - {"o"_sv, "?obsolete"_sv, false}, - {"O"_sv, "?origin"_sv, true}, - {"p"_sv, "?priority"_sv, true}, - {"s"_sv, "?section"_sv, true}, - {"e"_sv, "?source-package"_sv, true}, - {"T"_sv, "?true"_sv, false}, - {"U"_sv, "?upgradable"_sv, false}, - {"V"_sv, "?version"_sv, true}, - {"v"_sv, "?virtual"_sv, false}, + {"DDepends:"sv, "?depends"sv, true}, + {"DPre-Depends:"sv, "?pre-depends"sv, true}, + {"DSuggests:"sv, "?suggests"sv, true}, + {"DRecommends:"sv, "?recommends"sv, true}, + {"DConflicts:"sv, "?conflicts"sv, true}, + {"DReplaces:"sv, "?replaces"sv, true}, + {"DObsoletes:"sv, "?obsoletes"sv, true}, + {"DBreaks:"sv, "?breaks"sv, true}, + {"DEnhances:"sv, "?enhances"sv, true}, + {"D"sv, "?depends"sv, true}, + {"RDepends:"sv, "?reverse-depends"sv, true}, + {"RPre-Depends:"sv, "?reverse-pre-depends"sv, true}, + {"RSuggests:"sv, "?reverse-suggests"sv, true}, + {"RRecommends:"sv, "?reverse-recommends"sv, true}, + {"RConflicts:"sv, "?reverse-conflicts"sv, true}, + {"RReplaces:"sv, "?reverse-replaces"sv, true}, + {"RObsoletes:"sv, "?reverse-obsoletes"sv, true}, + {"RBreaks:"sv, "?reverse-breaks"sv, true}, + {"REnhances:"sv, "?reverse-enhances"sv, true}, + {"R"sv, "?reverse-depends"sv, true}, + {"E"sv, "?essential"sv, false}, + {"F"sv, "?false"sv, false}, + {"g"sv, "?garbage"sv, false}, + {"i"sv, "?installed"sv, false}, + {"n"sv, "?name"sv, true}, + {"o"sv, "?obsolete"sv, false}, + {"O"sv, "?origin"sv, true}, + {"p"sv, "?priority"sv, true}, + {"s"sv, "?section"sv, true}, + {"e"sv, "?source-package"sv, true}, + {"T"sv, "?true"sv, false}, + {"U"sv, "?upgradable"sv, false}, + {"V"sv, "?version"sv, true}, + {"v"sv, "?virtual"sv, false}, }; template @@ -270,7 +272,7 @@ std::unique_ptr PatternTreeParser::parsePattern() static constexpr auto CHARS = ("0123456789" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "-"_sv); + "-"sv); if (sentence[state.offset] != '?') return nullptr; @@ -278,7 +280,7 @@ std::unique_ptr PatternTreeParser::parsePattern() node->end = node->start = state.offset; state.offset++; - while (CHARS.find(sentence[state.offset]) != APT::StringView::npos) + while (CHARS.find(sentence[state.offset]) != std::string_view::npos) { ++state.offset; } @@ -356,20 +358,20 @@ std::unique_ptr PatternTreeParser::parseQuotedWord() std::unique_ptr PatternTreeParser::parseWord(bool shrt) { // Characters not allowed at the start of a word (also see ..._SHRT) - static const constexpr auto DISALLOWED_START = "!?~|,() \0"_sv; + static const constexpr auto DISALLOWED_START = "!?~|,() \0"sv; // Characters terminating a word inside a long pattern - static const constexpr auto DISALLOWED_LONG = "|,()\0"_sv; + static const constexpr auto DISALLOWED_LONG = "|,()\0"sv; // Characters terminating a word as a short form argument, should contain all of START. - static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"_sv; + static const constexpr auto DISALLOWED_SHRT = "!?~|,() \0"sv; const auto DISALLOWED = shrt ? DISALLOWED_SHRT : DISALLOWED_LONG; - if (DISALLOWED_START.find(sentence[state.offset]) != APT::StringView::npos) + if (DISALLOWED_START.find(sentence[state.offset]) != std::string_view::npos) return nullptr; auto node = std::make_unique(); node->start = state.offset; - while (DISALLOWED.find(sentence[state.offset]) == APT::StringView::npos) + while (DISALLOWED.find(sentence[state.offset]) == std::string_view::npos) state.offset++; node->end = state.offset; @@ -381,7 +383,7 @@ std::unique_ptr PatternTreeParser::parseWord(bool shrt) std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os) { - os << term.to_string(); + os << term; if (haveArgumentList) { os << "("; @@ -394,7 +396,7 @@ std::ostream &PatternTreeParser::PatternNode::render(std::ostream &os) std::ostream &PatternTreeParser::WordNode::render(std::ostream &os) { - return quoted ? os << '"' << word.to_string() << '"' : os << word.to_string(); + return quoted ? os << '"' << word << '"' : os << word; } std::nullptr_t PatternTreeParser::Node::error(std::string message) @@ -402,20 +404,20 @@ std::nullptr_t PatternTreeParser::Node::error(std::string message) throw Error{*this, message}; } -bool PatternTreeParser::PatternNode::matches(APT::StringView name, int min, int max) +bool PatternTreeParser::PatternNode::matches(std::string_view name, int min, int max) { if (name != term) return false; if (max != 0 && !haveArgumentList) - error(rstrprintf("%s expects an argument list", term.to_string().c_str())); + error(rstrprintf("%.*s expects an argument list", (int)term.size(), term.data())); if (max == 0 && haveArgumentList) - error(rstrprintf("%s does not expect an argument list", term.to_string().c_str())); + error(rstrprintf("%.*s does not expect an argument list", (int)term.size(), term.data())); if (min >= 0 && min == max && (arguments.size() != size_t(min))) - error(rstrprintf("%s expects %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size())); + error(rstrprintf("%.*s expects %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size())); if (min >= 0 && arguments.size() < size_t(min)) - error(rstrprintf("%s expects at least %d arguments, but received %d arguments", term.to_string().c_str(), min, arguments.size())); + error(rstrprintf("%.*s expects at least %d arguments, but received %d arguments", (int)term.size(), term.data(), min, arguments.size())); if (max >= 0 && arguments.size() > size_t(max)) - error(rstrprintf("%s expects at most %d arguments, but received %d arguments", term.to_string().c_str(), max, arguments.size())); + error(rstrprintf("%.*s expects at most %d arguments, but received %d arguments", (int)term.size(), term.data(), max, arguments.size())); return true; } @@ -538,7 +540,7 @@ std::unique_ptr PatternParser::aPattern(std::unique_p return pattern; } - node->error(rstrprintf("Unrecognized pattern '%s'", node->term.to_string().c_str())); + node->error(rstrprintf("Unrecognized pattern '%.*s'", (int)node->term.size(), node->term.data())); return nullptr; } @@ -549,7 +551,7 @@ std::string PatternParser::aWord(std::unique_ptr &nodeP auto node = dynamic_cast(nodeP.get()); if (node == nullptr) nodeP->error("Expected a word"); - return node->word.to_string(); + return std::string{node->word}; } namespace Patterns @@ -557,37 +559,36 @@ namespace Patterns BaseRegexMatcher::BaseRegexMatcher(std::string const &Pattern) { - pattern = new regex_t; - int const Res = regcomp(pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB); + pattern.emplace(); + 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)); + regerror(Res, &*pattern, Error, sizeof(Error)); _error->Error(_("Regex compilation error - %s"), Error); + + pattern.reset(); } bool BaseRegexMatcher::operator()(const char *string) { - if (unlikely(pattern == nullptr) || string == nullptr) + if (unlikely(pattern == std::nullopt) || string == nullptr) return false; else - return regexec(pattern, string, 0, 0, 0) == 0; + return regexec(&*pattern, string, 0, 0, 0) == 0; } BaseRegexMatcher::~BaseRegexMatcher() { - if (pattern == NULL) + if (pattern == std::nullopt) return; - regfree(pattern); - delete pattern; + regfree(&*pattern); } } // namespace Patterns } // namespace Internal // The bridge into the public world -std::unique_ptr APT::CacheFilter::ParsePattern(APT::StringView pattern, pkgCacheFile *file) +std::unique_ptr APT::CacheFilter::ParsePattern(std::string_view pattern, pkgCacheFile *file) { if (file != nullptr && !file->BuildDepCache()) return nullptr; @@ -602,7 +603,7 @@ std::unique_ptr APT::CacheFilter::ParsePattern(APT::S { std::stringstream ss; ss << "input:" << e.location.start << "-" << e.location.end << ": error: " << e.message << "\n"; - ss << pattern.to_string() << "\n"; + ss << pattern << "\n"; for (size_t i = 0; i < e.location.start; i++) ss << " "; for (size_t i = e.location.start; i < e.location.end; i++) diff --git a/apt-pkg/cachefilter-patterns.h b/apt-pkg/cachefilter-patterns.h index 1f2f4f7..8d8a62a 100644 --- a/apt-pkg/cachefilter-patterns.h +++ b/apt-pkg/cachefilter-patterns.h @@ -12,13 +12,14 @@ #include #include #include -#include #include #include #include #include +#include #include #include +#include #include namespace APT @@ -59,17 +60,17 @@ struct APT_PUBLIC PatternTreeParser struct PatternNode : public Node { - APT::StringView term; + std::string_view term; std::vector> arguments; bool haveArgumentList = false; APT_HIDDEN std::ostream &render(std::ostream &stream) override; - APT_HIDDEN bool matches(APT::StringView name, int min, int max); + APT_HIDDEN bool matches(std::string_view name, int min, int max); }; struct WordNode : public Node { - APT::StringView word; + std::string_view word; bool quoted = false; APT_HIDDEN std::ostream &render(std::ostream &stream) override; }; @@ -79,10 +80,26 @@ struct APT_PUBLIC PatternTreeParser size_t offset = 0; }; - APT::StringView sentence; + /// \brief Zero-terminated wrapper for std::string_view + /// + /// The code peeks a character ahead and assumes the input is zero-terminated, but it may not be, + /// this class provides a peek-ahead character access in operator[] by returning 0 for [size()]. + struct ZeroStringView : private std::string_view + { + explicit ZeroStringView(std::string_view s) : std::string_view(s) {} + char operator[](size_t i) + { + assert(i <= size()); + if (likely(i < size())) + return std::string_view::operator[](i); + return '\0'; + } + using std::string_view::size; + using std::string_view::substr; + } sentence; State state; - PatternTreeParser(APT::StringView sentence) : sentence(sentence){}; + PatternTreeParser(std::string_view sentence) : sentence(sentence){}; off_t skipSpace() { while (sentence[state.offset] == ' ' || sentence[state.offset] == '\t' || sentence[state.offset] == '\r' || sentence[state.offset] == '\n') @@ -132,7 +149,7 @@ using namespace APT::CacheFilter; /** \brief Basic helper class for matching regex */ class BaseRegexMatcher { - regex_t *pattern; + std::optional pattern; public: BaseRegexMatcher(std::string const &string); @@ -232,11 +249,8 @@ struct APT_HIDDEN PackageIsObsolete : public PackageMatcher // if so return false for (auto ver = pkg.VersionList(); !ver.end(); ver++) { - for (auto file = ver.FileList(); !file.end(); file++) - { - if ((file.File()->Flags & pkgCache::Flag::NotSource) == 0) - return false; - } + if (ver.Downloadable()) + return false; } return true; @@ -460,12 +474,7 @@ struct APT_HIDDEN VersionIsPriority : public VersionAnyMatcher explicit VersionIsPriority(std::string name) : name(name) {} bool operator()(pkgCache::VerIterator const &Ver) override { - std::string Mapping[] = {"", "required","important","standard", - "optional","extra"}; - if (Ver->Priority > 0 && Ver->Priority < APT_ARRAY_SIZE(Mapping)) { - return name == Mapping[Ver->Priority]; - } - return false; + return Ver->Priority > 0 && name == pkgCache::Priority_NoL10n(Ver->Priority); } }; diff --git a/apt-pkg/cachefilter.h b/apt-pkg/cachefilter.h index 1b5f9aa..5fe7df9 100644 --- a/apt-pkg/cachefilter.h +++ b/apt-pkg/cachefilter.h @@ -7,10 +7,10 @@ #define APT_CACHEFILTER_H // Include Files /*{{{*/ #include -#include #include #include +#include #include #include @@ -30,35 +30,35 @@ class APT_PUBLIC Matcher { class APT_PUBLIC PackageMatcher : public Matcher { public: - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE = 0; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE { return (*this)(Ver.ParentPkg()); } - bool operator() (pkgCache::GrpIterator const &/*Grp*/) APT_OVERRIDE { return false; } - ~PackageMatcher() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override = 0; + bool operator() (pkgCache::VerIterator const &Ver) override { return (*this)(Ver.ParentPkg()); } + bool operator() (pkgCache::GrpIterator const &/*Grp*/) override { return false; } + ~PackageMatcher() override; }; // Generica like True, False, NOT, AND, OR /*{{{*/ class APT_PUBLIC TrueMatcher : public Matcher { public: - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + bool operator() (pkgCache::VerIterator const &Ver) override; }; class APT_PUBLIC FalseMatcher : public Matcher { public: - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + bool operator() (pkgCache::VerIterator const &Ver) override; }; class APT_PUBLIC NOTMatcher : public Matcher { Matcher * const matcher; public: explicit NOTMatcher(Matcher * const matcher); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE; - ~NOTMatcher() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + bool operator() (pkgCache::VerIterator const &Ver) override; + ~NOTMatcher() override; }; class APT_PUBLIC ANDMatcher : public Matcher { @@ -72,10 +72,10 @@ class APT_PUBLIC ANDMatcher : public Matcher { 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); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE; - ~ANDMatcher() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + bool operator() (pkgCache::VerIterator const &Ver) override; + ~ANDMatcher() override; }; class APT_PUBLIC ORMatcher : public Matcher { std::vector matchers; @@ -88,28 +88,28 @@ class APT_PUBLIC ORMatcher : public Matcher { 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); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - bool operator() (pkgCache::VerIterator const &Ver) APT_OVERRIDE; - ~ORMatcher() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + bool operator() (pkgCache::VerIterator const &Ver) override; + ~ORMatcher() override; }; /*}}}*/ class APT_PUBLIC PackageNameMatchesRegEx : public PackageMatcher { /*{{{*/ regex_t* pattern; public: explicit PackageNameMatchesRegEx(std::string const &Pattern); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - ~PackageNameMatchesRegEx() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + ~PackageNameMatchesRegEx() override; }; /*}}}*/ class APT_PUBLIC PackageNameMatchesFnmatch : public PackageMatcher { /*{{{*/ const std::string Pattern; public: explicit PackageNameMatchesFnmatch(std::string const &Pattern); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - bool operator() (pkgCache::GrpIterator const &Grp) APT_OVERRIDE; - ~PackageNameMatchesFnmatch() APT_OVERRIDE = default; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + bool operator() (pkgCache::GrpIterator const &Grp) override; + ~PackageNameMatchesFnmatch() override = default; }; /*}}}*/ class APT_PUBLIC PackageArchitectureMatchesSpecification : public PackageMatcher { /*{{{*/ @@ -135,8 +135,8 @@ class APT_PUBLIC PackageArchitectureMatchesSpecification : public PackageMatcher PackageArchitectureMatchesSpecification(std::string const &pattern, bool const isPattern = true); bool operator() (char const * const &arch); using PackageMatcher::operator(); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - ~PackageArchitectureMatchesSpecification() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + ~PackageArchitectureMatchesSpecification() override; }; /*}}}*/ class APT_PUBLIC PackageIsNewInstall : public PackageMatcher { /*{{{*/ @@ -144,13 +144,13 @@ class APT_PUBLIC PackageIsNewInstall : public PackageMatcher { /*{{{*/ public: explicit PackageIsNewInstall(pkgCacheFile * const Cache); using PackageMatcher::operator(); - bool operator() (pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - ~PackageIsNewInstall() APT_OVERRIDE; + bool operator() (pkgCache::PkgIterator const &Pkg) override; + ~PackageIsNewInstall() override; }; /*}}}*/ /// \brief Parse a pattern, return nullptr or pattern -APT_PUBLIC std::unique_ptr ParsePattern(APT::StringView pattern, pkgCacheFile *file); +APT_PUBLIC std::unique_ptr ParsePattern(std::string_view pattern, pkgCacheFile *file); } } #endif diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 9ed5c17..fd74e11 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -1,17 +1,17 @@ // -*- 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 @@ -22,9 +22,9 @@ 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 @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include @@ -123,7 +123,7 @@ class APT_PUBLIC pkgCache::GrpIterator: public Iterator { inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;} inline PkgIterator PackageList() const; inline VerIterator VersionsInSource() const; - PkgIterator FindPkg(APT::StringView Arch = APT::StringView("any", 3)) const; + PkgIterator FindPkg(std::string_view Arch = {"any", 3}) const; /** \brief find the package with the "best" architecture The best architecture is either the "native" or the first @@ -177,8 +177,8 @@ class APT_PUBLIC pkgCache::PkgIterator: public Iterator { OkState State() 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); + // for a nice printable representation you likely want APT::PrettyPkg instead + friend std::ostream& operator<<(std::ostream& out, PkgIterator i); std::string FullName(bool const &Pretty = false) const; // Constructors @@ -189,6 +189,31 @@ class APT_PUBLIC pkgCache::PkgIterator: public Iterator { inline PkgIterator() : Iterator(), HashIndex(0) {} }; /*}}}*/ +// SourceVersion Iterator /*{{{*/ +class APT_PUBLIC pkgCache::SrcVerIterator : public Iterator +{ + public: + inline SourceVersion *OwnerPointer() const + { + return (Owner != 0) ? Owner->SrcVerP : 0; + } +#if 0 + // Iteration + inline SrcVerIterator& operator++() {if (S != Owner->SrcVerP) S = Owner->SrcVerP + S->NextSourceVersion; return *this;} + inline SrcVerIterator operator++(int) { SrcVerIterator const tmp(*this); operator++(); return tmp; } +#endif + inline APT_PURE GrpIterator Group() const { return GrpIterator(*Owner, Owner->GrpP + S->Group); } + inline const char *VerStr() const { return S->VerStr == 0 ? 0 : Owner->StrP + S->VerStr; } + + inline SrcVerIterator(pkgCache &Owner, SourceVersion *Trg = 0) : Iterator(Owner, Trg) + { + if (S == 0) + S = OwnerPointer(); + } + inline SrcVerIterator() : Iterator() {} +}; + /*}}}*/ + // Version Iterator /*{{{*/ class APT_PUBLIC pkgCache::VerIterator : public Iterator { public: @@ -220,12 +245,15 @@ class APT_PUBLIC pkgCache::VerIterator : public Iterator { // 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 version this version comes from + Always contains the version string, even if it is the same as the binary version */ + SrcVerIterator SourceVersion() const { return SrcVerIterator(*Owner, Owner->SrcVerP + S->SourceVersion); } /** \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;} + inline const char *SourcePkgName() const { return SourceVersion().Group().Name(); } /** \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 *SourceVerStr() const { return SourceVersion().VerStr(); } inline const char *Arch() const { if ((S->MultiArch & pkgCache::Version::All) == pkgCache::Version::All) return "all"; @@ -234,7 +262,7 @@ class APT_PUBLIC pkgCache::VerIterator : public Iterator { inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);} inline DescIterator DescriptionList() const; - DescIterator TranslatedDescriptionForLanguage(APT::StringView lang) const; + DescIterator TranslatedDescriptionForLanguage(std::string_view lang) const; DescIterator TranslatedDescription() const; inline DepIterator DependsList() const; inline PrvIterator ProvidesList() const; @@ -330,6 +358,7 @@ class APT_PUBLIC pkgCache::DepIterator : public Iterator(newMap) + (S2 - static_cast(oldMap)); } - //Nice printable representation - APT_DEPRECATED_MSG("Use APT::PrettyDep instead") friend std::ostream& operator <<(std::ostream& out, DepIterator D); + // for a nice printable representation you likely want APT::PrettyDep instead + friend std::ostream& operator<<(std::ostream& out, DepIterator D); inline DepIterator(pkgCache &Owner, Dependency *Trg, Version* = 0) : Iterator(Owner, Trg), Type(DepVer), S2(Trg == 0 ? Owner.DepDataP : (Owner.DepDataP + Trg->DependencyData)) { diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc index bfc85ef..230e3d6 100644 --- a/apt-pkg/cacheset.cc +++ b/apt-pkg/cacheset.cc @@ -60,6 +60,9 @@ bool CacheSetHelper::PackageFromTask(PackageContainerInterface * const pci, pkgC pattern.erase(archfound); } + if (pattern.empty()) + return false; + if (pattern[pattern.length() -1] != '^') return false; pattern.erase(pattern.length()-1); diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index 5dbb9bf..02dda7e 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -218,11 +218,11 @@ template(*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) const { return iterator_type(_iter + n); } inline iterator_type operator+=(typename container_iterator::difference_type const &n) { _iter += n; return static_cast(*this); } inline iterator_type& operator--() { --_iter;; return static_cast(*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) const { 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(*this); } inline bool operator!=(iterator_type const &i) const { return _iter != i._iter; } @@ -344,7 +344,7 @@ class APT_PUBLIC PackageContainerInterface { /*{{{*/ void * const d; }; /*}}}*/ -template class APT_PUBLIC PackageContainer : public PackageContainerInterface {/*{{{*/ +template class PackageContainer : public PackageContainerInterface {/*{{{*/ /** \class APT::PackageContainer Simple wrapper around a container class like std::set to provide a similar @@ -366,13 +366,13 @@ template class APT_PUBLIC PackageContainer : public PackageCont 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; } + bool insert(pkgCache::PkgIterator const &P) override { if (P.end() == true) return false; _cont.insert(P); return true; } template void insert(PackageContainer 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(); } + [[nodiscard]] bool empty() const override { return _cont.empty(); } + void clear() override { return _cont.clear(); } + [[nodiscard]] size_t size() const 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)); } @@ -658,9 +658,8 @@ class APT_PUBLIC PackageUniverse : public PackageContainerInterface { typedef const_iterator::difference_type difference_type; typedef std::make_unsigned::type size_type; - - bool empty() const APT_OVERRIDE { return false; } - size_t size() const APT_OVERRIDE { return _cont->Head().PackageCount; } + [[nodiscard]] bool empty() const override { return false; } + [[nodiscard]] size_t size() const override { return _cont->Head().PackageCount; } const_iterator begin() const { return const_iterator(_cont->PkgBegin()); } const_iterator end() const { return const_iterator(_cont->PkgEnd()); } @@ -676,11 +675,11 @@ class APT_PUBLIC PackageUniverse : public PackageContainerInterface { virtual ~PackageUniverse(); private: - APT_HIDDEN bool insert(pkgCache::PkgIterator const &) APT_OVERRIDE { return true; } + APT_HIDDEN bool insert(pkgCache::PkgIterator const &/*P*/) override { return true; } template APT_HIDDEN void insert(PackageContainer const &) { } APT_HIDDEN void insert(const_iterator, const_iterator) { } - APT_HIDDEN void clear() APT_OVERRIDE { } + APT_HIDDEN void clear() override { } APT_HIDDEN iterator erase( const_iterator pos ); APT_HIDDEN iterator erase( const_iterator first, const_iterator last ); }; @@ -799,7 +798,7 @@ class APT_PUBLIC VersionContainerInterface { /*{{{*/ /*}}}*/ }; /*}}}*/ -template class APT_PUBLIC VersionContainer : public VersionContainerInterface {/*{{{*/ +template class VersionContainer : public VersionContainerInterface {/*{{{*/ /** \class APT::VersionContainer Simple wrapper around a container class like std::set to provide a similar @@ -821,12 +820,12 @@ template class APT_PUBLIC VersionContainer : public VersionCont 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; } + bool insert(pkgCache::VerIterator const &V) override { if (V.end() == true) return false; _cont.insert(V); return true; } template void insert(VersionContainer 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(); } + [[nodiscard]] bool empty() const override { return _cont.empty(); } + void clear() override { return _cont.clear(); } + [[nodiscard]] size_t size() const 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)); } diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index 70192a0..4da2b73 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -129,7 +129,7 @@ bool pkgCdrom::FindPackages(string CD, for (std::vector::const_iterator c = compressor.begin(); c != compressor.end(); ++c) { - string fileext = flExtension(file); + string fileext{flExtension(file)}; if (file == fileext) fileext.clear(); else if (fileext.empty() == false) @@ -223,8 +223,6 @@ int pkgCdrom::Score(string Path) Res += 20; if (Path.find("/non-free-firmware/") != 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) @@ -492,7 +490,7 @@ bool pkgCdrom::WriteSourceList(string Name,vector &List,bool Source) while (F.ReadLine(Buffer)) { ++CurLine; - auto const Cleaned = APT::String::Strip(SubstVar(Buffer, "\t", " ")); + std::string const Cleaned{APT::String::Strip(SubstVar(Buffer, "\t", " "))}; // Comment or blank if (Cleaned.empty() || Cleaned[0] == '#') diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc index 5e2255f..ff8fb48 100644 --- a/apt-pkg/contrib/cdromutl.cc +++ b/apt-pkg/contrib/cdromutl.cc @@ -1,11 +1,11 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + CDROM Utilities - Some functions to manipulate CDROM mounts. - + These are here for the cdrom method and apt-cdrom. - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -39,7 +39,7 @@ using std::string; // --------------------------------------------------------------------- /* 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 + 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) { @@ -59,7 +59,7 @@ bool IsMounted(string &Path) 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 || + 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()); @@ -70,7 +70,7 @@ bool IsMounted(string &Path) /*}}}*/ // UnmountCdrom - Unmount a cdrom /*{{{*/ // --------------------------------------------------------------------- -/* Forking umount works much better than the umount syscall which can +/* Forking umount works much better than the umount syscall which can leave /etc/mtab inconsistent. We drop all messages this produces. */ bool UnmountCdrom(string Path) { @@ -85,7 +85,7 @@ bool UnmountCdrom(string Path) for (int i=0;i<3;i++) { - + int Child = ExecFork(); // The child @@ -100,7 +100,7 @@ bool UnmountCdrom(string Path) { if (system(_config->Find("Acquire::cdrom::"+Path+"::UMount").c_str()) != 0) _exit(100); - _exit(0); + _exit(0); } else { @@ -151,13 +151,13 @@ bool MountCdrom(string Path, string DeviceName) { if (system(_config->Find("Acquire::cdrom::"+Path+"::Mount").c_str()) != 0) _exit(100); - _exit(0); + _exit(0); } else { const char *Args[10]; Args[0] = "mount"; - if (DeviceName == "") + if (DeviceName == "") { Args[1] = Path.c_str(); Args[2] = 0; @@ -166,9 +166,9 @@ bool MountCdrom(string Path, string DeviceName) Args[2] = Path.c_str(); Args[3] = 0; } - execvp(Args[0],(char **)Args); + execvp(Args[0],(char **)Args); _exit(100); - } + } } // Wait for mount @@ -265,11 +265,11 @@ string FindMountPointForDevice(const char *devnode) std::vector const mounts = _config->FindVector("Dir::state::MountPoints", "/etc/mtab,/proc/mount"); for (std::vector::const_iterator m = mounts.begin(); m != mounts.end(); ++m) - if (FileExists(*m) == true) + if (FILE * f = fopen(m->c_str(), "r")) { char * line = NULL; size_t line_len = 0; - FILE * f = fopen(m->c_str(), "r"); + DEFER([&] { fclose(f); free(line); }); while(getline(&line, &line_len, f) != -1) { char * out[] = { NULL, NULL, NULL }; @@ -278,14 +278,10 @@ string FindMountPointForDevice(const char *devnode) 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/configuration.cc b/apt-pkg/contrib/configuration.cc index abda6b6..cf72aa3 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -4,7 +4,7 @@ /* ###################################################################### 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. @@ -25,7 +25,6 @@ #include #include #include -#include #include #include @@ -56,12 +55,14 @@ Configuration *_config = new Configuration; 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 }; +enum class APT_HIDDEN ConfigType { INVALID, UNDEFINED, INT, BOOL, STRING, STRING_OR_BOOL, STRING_OR_LIST, FILE, DIR, LIST, PROGRAM_PATH = FILE }; APT_HIDDEN std::unordered_map apt_known_config {}; +APT_HIDDEN std::vector> apt_known_config_patterns {}; static std::string getConfigTypeString(ConfigType const type) /*{{{*/ { switch (type) { + case ConfigType::INVALID: return "INVALID"; case ConfigType::UNDEFINED: return "UNDEFINED"; case ConfigType::INT: return "INT"; case ConfigType::BOOL: return "BOOL"; @@ -95,6 +96,8 @@ static ConfigType getConfigType(std::string const &type) /*{{{*/ return ConfigType::STRING_OR_LIST; else if (type == "") return ConfigType::PROGRAM_PATH; + else if (type == "") + return ConfigType::INVALID; return ConfigType::UNDEFINED; } /*}}}*/ @@ -102,59 +105,86 @@ static ConfigType getConfigType(std::string const &type) /*{{{*/ 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()) + bool found = false; + ConfigType expectedType = ConfigType::INVALID; + if (auto const known = apt_known_config.find(name); known != apt_known_config.cend()) { - auto const rcolon = name.rfind(':'); - if (rcolon != std::string::npos) + found = true; + expectedType = known->second; + } + else + for (auto const &known : apt_known_config_patterns) { - known = apt_known_config.find(name.substr(0, rcolon) + ":*"); - if (known == apt_known_config.cend()) + std::string_view n{name}; + std::string_view k{known.first}; + do { - auto const parts = StringSplit(name, "::"); - size_t psize = parts.size(); - if (psize > 1) + if (auto star = k.find('*'); star != std::string_view::npos) { - for (size_t max = psize; max != 1; --max) - { - std::ostringstream os; - std::copy(parts.begin(), parts.begin() + max, std::ostream_iterator(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(os, "::")); - os << "*::"; - std::copy(parts.begin() + max + 1, parts.end() - 1, std::ostream_iterator(os, "::")); - os << *(parts.end() - 1); - known = apt_known_config.find(os.str()); - if (known != apt_known_config.cend()) - break; - } + if (auto nextstar = star + 1; k.length() > nextstar && k[nextstar] == '*') + star -= 3; + if (n.compare(0, star, k, 0, star) != 0) + break; + n.remove_prefix(star); + k.remove_prefix(star + 1); } - } + else if (k == n) + { + n = {}; + break; + } + else + break; + + if (k.empty()) + { + if (n.find("::") == std::string_view::npos) + n = {}; + break; + } + if (k == "::**") + { + if (known.second == ConfigType::UNDEFINED) + return; + n = {}; + break; + } + if (k.compare(0, 2, "::") == 0) + { + auto const colons = n.find("::"); + if (colons == std::string_view::npos) + break; + n.remove_prefix(colons); + } + else + break; + } while (not n.empty()); + if (not n.empty()) + continue; + found = true; + expectedType = known.second; + break; } - } - if (known == apt_known_config.cend()) + + if (not found) _error->Warning("Using unknown config option »%s« of type %s", name.c_str(), getConfigTypeString(type).c_str()); - else if (known->second != type) + else if (expectedType != type) { - if (known->second == ConfigType::DIR && type == ConfigType::FILE) + if (expectedType == ConfigType::INVALID) + _error->Warning("Using invalid config option »%s« as a type %s", + name.c_str(), getConfigTypeString(type).c_str()); + if (expectedType == ConfigType::DIR && type == ConfigType::FILE) ; // implementation detail - else if (type == ConfigType::STRING && (known->second == ConfigType::FILE || known->second == ConfigType::DIR)) + else if (type == ConfigType::STRING && (expectedType == ConfigType::FILE || expectedType == 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 (expectedType == 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 if (expectedType == 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()); + name.c_str(), getConfigTypeString(expectedType).c_str(), getConfigTypeString(type).c_str()); } } static void checkFindConfigOptionType(char const * const name, ConfigType const type) @@ -167,6 +197,7 @@ static void checkFindConfigOptionType(char const * const name, ConfigType const static bool LoadConfigurationIndex(std::string const &filename) /*{{{*/ { apt_known_config.clear(); + apt_known_config_patterns.clear(); if (filename.empty()) return true; Configuration Idx; @@ -182,7 +213,10 @@ static bool LoadConfigurationIndex(std::string const &filename) /*{{{*/ { 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 (fulltag.find("::*") == std::string::npos) + apt_known_config.emplace(std::move(fulltag), getConfigType(Top->Value)); + else + apt_known_config_patterns.emplace_back(std::move(fulltag), getConfigType(Top->Value)); } if (Top->Child != nullptr) @@ -219,7 +253,7 @@ Configuration::~Configuration() { if (ToFree == false) return; - + Item *Top = Root; for (; Top != 0;) { @@ -228,13 +262,13 @@ Configuration::~Configuration() 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; @@ -246,7 +280,7 @@ Configuration::~Configuration() /*}}}*/ // Configuration::Lookup - Lookup a single item /*{{{*/ // --------------------------------------------------------------------- -/* This will lookup a single item by name below another item. It is a +/* 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) @@ -254,7 +288,7 @@ Configuration::Item *Configuration::Lookup(Item *Head,const char *S, int Res = 1; Item *I = Head->Child; Item **Last = &Head->Child; - + // Empty strings match nothing. They are used for lists. if (Len != 0) { @@ -264,12 +298,12 @@ Configuration::Item *Configuration::Lookup(Item *Head,const char *S, } 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; @@ -286,7 +320,7 @@ 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; @@ -298,9 +332,9 @@ Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create) Itm = Lookup(Itm,Start,TagEnd - Start,Create); if (Itm == 0) return 0; - TagEnd = Start = TagEnd + 2; + TagEnd = Start = TagEnd + 2; } - } + } // This must be a trailing ::, we create unique items in a list if (End - Start == 0) @@ -308,7 +342,7 @@ Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create) if (Create == false) return 0; } - + Itm = Lookup(Itm,Start,End - Start,Create); return Itm; } @@ -327,7 +361,7 @@ string Configuration::Find(const char *Name,const char *Default) const else return Default; } - + return Itm->Value; } /*}}}*/ @@ -440,12 +474,12 @@ int Configuration::FindI(const char *Name,int const &Default) const 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; } /*}}}*/ @@ -458,7 +492,7 @@ bool Configuration::FindB(const char *Name,bool const &Default) const const Item *Itm = Lookup(Name); if (Itm == 0 || Itm->Value.empty() == true) return Default; - + return StringToBool(Itm->Value,Default); } /*}}}*/ @@ -479,19 +513,19 @@ string Configuration::FindAny(const char *Name,const char *Default) const switch (type) { // file - case 'f': + case 'f': return FindFile(key.c_str(), Default); - + // directory - case 'd': + case 'd': return FindDir(key.c_str(), Default); - + // bool - case 'b': + case 'b': return FindB(key, Default) ? "true" : "false"; - + // int - case 'i': + case 'i': { char buf[16]; snprintf(buf, sizeof(buf)-1, "%d", FindI(key, Default ? atoi(Default) : 0 )); @@ -506,7 +540,7 @@ string Configuration::FindAny(const char *Name,const char *Default) const // Configuration::CndSet - Conditional Set a value /*{{{*/ // --------------------------------------------------------------------- /* This will not overwrite */ -void Configuration::CndSet(const char *Name,const string &Value) +void Configuration::CndSet(const char *Name,const string_view &Value) { Item *Itm = Lookup(Name,true); if (Itm == 0) @@ -531,7 +565,7 @@ void Configuration::CndSet(const char *Name,int const Value) // Configuration::Set - Set a value /*{{{*/ // --------------------------------------------------------------------- /* */ -void Configuration::Set(const char *Name,const string &Value) +void Configuration::Set(const char *Name,const string_view &Value) { Item *Itm = Lookup(Name,true); if (Itm == 0) @@ -590,7 +624,7 @@ void Configuration::Clear(string const &Name, string const &Value) I = I->Next; } } - + } /*}}}*/ // Configuration::Clear - Clear everything /*{{{*/ @@ -611,7 +645,7 @@ void Configuration::Clear() void Configuration::Clear(string const &Name) { Item *Top = Lookup(Name.c_str(),false); - if (Top == 0) + if (Top == 0) return; Top->Value.clear(); @@ -631,11 +665,11 @@ void Configuration::Clear(string const &Name) Item *Tmp = Top; Top = Top->Parent; delete Tmp; - + if (Top == Stop) return; } - + Item *Tmp = Top; if (Top != 0) Top = Top->Next; @@ -827,10 +861,10 @@ string Configuration::Item::FullTag(const Item *Stop) const // 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 + 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 + added in with a tag like "zone::foo.org" instead of being split tag/value. AsSectional enables Sectional parsing.*/ static void leaveCurrentScope(std::stack &Stack, std::string &ParentTag) { @@ -873,13 +907,13 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio // Now strip comments; if the whole line is contained in a // comment, skip this line. - APT::StringView Line{Input.data(), Input.size()}; + std::string_view Line{Input.data(), Input.size()}; // continued Multi line comment if (InComment) { size_t end = Line.find("*/"); - if (end != APT::StringView::npos) + if (end != std::string_view::npos) { Line.remove_prefix(end + 2); InComment = false; @@ -891,7 +925,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio // Discard single line comments { size_t start = 0; - while ((start = Line.find("//", start)) != APT::StringView::npos) + while ((start = Line.find("//", start)) != std::string_view::npos) { if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0) { @@ -901,10 +935,10 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio Line.remove_suffix(Line.length() - start); break; } - using APT::operator""_sv; - constexpr std::array magicComments { "clear"_sv, "include"_sv, "x-apt-configure-index"_sv }; + using std::literals::operator""sv; + constexpr std::array magicComments { "clear"sv, "include"sv, "x-apt-configure-index"sv }; start = 0; - while ((start = Line.find('#', start)) != APT::StringView::npos) + while ((start = Line.find('#', start)) != std::string_view::npos) { if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0 || std::any_of(magicComments.begin(), magicComments.end(), [&](auto const m) { return Line.compare(start+1, m.length(), m) == 0; })) @@ -922,7 +956,7 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio Fragment.reserve(Line.length()); { size_t start = 0; - while ((start = Line.find("/*", start)) != APT::StringView::npos) + while ((start = Line.find("/*", start)) != std::string_view::npos) { if (std::count(Line.begin(), Line.begin() + start, '"') % 2 != 0) { @@ -931,9 +965,9 @@ bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectio } Fragment.append(Line.data(), start); auto const end = Line.find("*/", start + 2); - if (end == APT::StringView::npos) + if (end == std::string_view::npos) { - Line.clear(); + Line = {}; InComment = true; break; } @@ -1192,3 +1226,36 @@ bool Configuration::MatchAgainstConfig::Match(char const * str) const return false; } /*}}}*/ +// helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/ +static bool ConfigValueInSubTree(Configuration *config, const char *SubTree, std::string_view const needle) +{ + if (needle.empty()) + return false; + Configuration::Item const *Opts = config->Tree(SubTree); + if (Opts != nullptr && Opts->Child != nullptr) + { + Opts = Opts->Child; + for (; Opts != nullptr; Opts = Opts->Next) + { + if (Opts->Value.empty()) + continue; + if (needle == Opts->Value) + return true; + } + } + return false; +} +bool Configuration::SectionInSubTree(char const *const SubTree, std::string_view Needle) +{ + if (ConfigValueInSubTree(this, SubTree, Needle)) + return true; + auto const sub = Needle.rfind('/'); + if (sub == std::string_view::npos) + { + std::string special{"/"}; + special.append(Needle); + return ConfigValueInSubTree(this, SubTree, special); + } + return ConfigValueInSubTree(this, SubTree, Needle.substr(sub + 1)); +} + /*}}}*/ diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 6ebf28d..30a1cbf 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -88,13 +89,13 @@ class APT_PUBLIC Configuration 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); + + inline void Set(const std::string &Name,const std::string_view &Value) {Set(Name.c_str(),Value);}; + void CndSet(const char *Name,const std::string_view &Value); void CndSet(const char *Name,const int Value); - void Set(const char *Name,const std::string &Value); + void Set(const char *Name,const std::string_view &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; @@ -116,6 +117,9 @@ class APT_PUBLIC Configuration void Dump(std::ostream& str, char const * const root, char const * const format, bool const emptyValue); +#ifdef APT_COMPILING_APT + bool SectionInSubTree(char const *const SubTree, std::string_view Needle); +#endif explicit Configuration(const Item *Root); Configuration(); ~Configuration(); diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc index c9bb622..b60a25a 100644 --- a/apt-pkg/contrib/error.cc +++ b/apt-pkg/contrib/error.cc @@ -30,10 +30,12 @@ #include #include #include +#include #include #include #include +#include /*}}}*/ // Global Error Object /*{{{*/ @@ -64,6 +66,7 @@ GEMessage(FatalE, FATAL) GEMessage(Errno, ERROR) GEMessage(WarningE, WARNING) GEMessage(NoticeE, NOTICE) +GEMessage(AuditE, AUDIT) GEMessage(DebugE, DEBUG) #undef GEMessage /*}}}*/ @@ -87,6 +90,7 @@ 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); + DEFER([&] { free(S); }); int const n = snprintf(S, msgSize, "%s - %s (%i: %s)", Description, Function, errsv, strerror(errsv)); if (n > -1 && ((unsigned int) n) < msgSize); @@ -95,13 +99,10 @@ bool GlobalError::InsertErrno(MsgType type, const char* Function, msgSize = n + 1; else msgSize *= 2; - free(S); return true; } - bool const geins = Insert(type, S, args, msgSize); - free(S); - return geins; + return Insert(type, S, args, msgSize); } /*}}}*/ // GlobalError::Fatal, Error, Warning, Notice and Debug - Add to the list/*{{{*/ @@ -121,6 +122,7 @@ GEMessage(Fatal, FATAL) GEMessage(Error, ERROR) GEMessage(Warning, WARNING) GEMessage(Notice, NOTICE) +GEMessage(Audit, AUDIT) GEMessage(Debug, DEBUG) #undef GEMessage /*}}}*/ @@ -142,6 +144,7 @@ bool GlobalError::Insert(MsgType const &type, const char *Description,...) bool GlobalError::Insert(MsgType type, const char* Description, va_list &args, size_t &msgSize) { char* S = (char*) malloc(msgSize); + DEFER([&] { free(S); }); int const n = vsnprintf(S, msgSize, Description, args); if (n > -1 && ((unsigned int) n) < msgSize); else { @@ -149,7 +152,6 @@ bool GlobalError::Insert(MsgType type, const char* Description, msgSize = n + 1; else msgSize *= 2; - free(S); return true; } @@ -162,7 +164,6 @@ bool GlobalError::Insert(MsgType type, const char* Description, if (type == FATAL || type == DEBUG) std::clog << m << std::endl; - free(S); return false; } /*}}}*/ @@ -252,11 +253,13 @@ void GlobalError::MergeWithStack() { APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i) { static constexpr auto COLOR_RESET = "\033[0m"; - static constexpr auto COLOR_NOTICE = "\033[33m"; // normal yellow + static constexpr auto COLOR_BOLD = "\033[1m"; // bold neutral + static constexpr auto COLOR_NOTICE = "\033[1m"; // bold neutral static constexpr auto COLOR_WARN = "\033[1;33m"; // bold yellow static constexpr auto COLOR_ERROR = "\033[1;31m"; // bold red bool use_color = _config->FindB("APT::Color", false); + auto out_ver = _config->FindI("APT::Output-Version"); if (use_color) { @@ -270,6 +273,7 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i) out << COLOR_WARN; break; case GlobalError::NOTICE: + case GlobalError::AUDIT: out << COLOR_NOTICE; break; default: @@ -281,19 +285,26 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i) { case GlobalError::FATAL: case GlobalError::ERROR: - out << 'E'; + // TRANSLATOR: This is a warning level displayed before the message + out << (out_ver < 30 ? "E:" : _("Error:")); break; case GlobalError::WARNING: - out << 'W'; + // TRANSLATOR: This is a warning level displayed before the message + out << (out_ver < 30 ? "W:" : _("Warning:")); break; case GlobalError::NOTICE: - out << 'N'; + // TRANSLATOR: This is a warning level displayed before the message + out << (out_ver < 30 ? "N:" : _("Notice:")); + break; + case GlobalError::AUDIT: + out << (out_ver < 30 ? "A:" : _("Audit:")); break; case GlobalError::DEBUG: - out << 'D'; + // TRANSLATOR: This is a warning level displayed before the message + out << _("Debug:"); break; } - out << ": "; + out << " "; if (use_color) { @@ -302,7 +313,12 @@ APT_HIDDEN std::ostream &operator<<(std::ostream &out, GlobalError::Item i) case GlobalError::FATAL: case GlobalError::ERROR: case GlobalError::WARNING: + out << COLOR_RESET; + if (out_ver >= 30) + out << COLOR_BOLD; + break; case GlobalError::NOTICE: + case GlobalError::AUDIT: out << COLOR_RESET; break; default: diff --git a/apt-pkg/contrib/error.h b/apt-pkg/contrib/error.h index 35e39ee..f61b44b 100644 --- a/apt-pkg/contrib/error.h +++ b/apt-pkg/contrib/error.h @@ -66,6 +66,8 @@ class APT_PUBLIC GlobalError /*{{{*/ WARNING = 20, /** \brief deprecation warnings, old fallback behavior, … */ NOTICE = 10, + /** \brief future deprecation warnings, divergence from best practices */ + AUDIT = 5, /** \brief for developers only in areas it is hard to print something directly */ DEBUG = 0 }; @@ -109,6 +111,15 @@ class APT_PUBLIC GlobalError /*{{{*/ */ bool NoticeE(const char *Function,const char *Description,...) APT_PRINTF(3) APT_COLD; + /** \brief add an audit 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 AuditE(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 @@ -193,6 +204,18 @@ class APT_PUBLIC GlobalError /*{{{*/ */ bool Notice(const char *Description,...) APT_PRINTF(2) APT_COLD; + /** \brief add an audit message to the list + * + * An audit message highlights divergences from best practices and + * future deprecations. It my for example include additional messages + * targeted at repository owners. + * + * \param Description Format string for the message + * + * \return \b false + */ + bool Audit(const char *Description,...) APT_PRINTF(2) APT_COLD; + /** \brief add a debug message to the list * * \param Description Format string for the message @@ -344,6 +367,6 @@ class APT_PUBLIC GlobalError /*{{{*/ APT_PUBLIC GlobalError *_GetErrorObj(); static struct { inline GlobalError* operator ->() { return _GetErrorObj(); } -} _error APT_UNUSED; +} _error [[maybe_unused]]; #endif diff --git a/apt-pkg/contrib/extracttar.cc b/apt-pkg/contrib/extracttar.cc index 96cc513..7b545de 100644 --- a/apt-pkg/contrib/extracttar.cc +++ b/apt-pkg/contrib/extracttar.cc @@ -25,9 +25,11 @@ #include #include +#include #include #include #include +#include #include #include #include @@ -130,6 +132,7 @@ bool ExtractTar::Go(pkgDirStream &Stream) // Loop over all blocks string LastLongLink, ItemLink; string LastLongName, ItemName; + std::array Junk; while (1) { bool BadRecord = false; @@ -290,22 +293,21 @@ bool ExtractTar::Go(pkgDirStream &Stream) { // Copy the file over the FD auto Size = Itm.Size; - unsigned char Junk[32*1024]; do { - auto const Read = std::min(Size, sizeof(Junk)); - if (not InFd.Read(Junk, ((Read + (sizeof(Block) - 1)) / sizeof(Block)) * sizeof(Block))) + auto const Read = std::min(Size, Junk.size()); + if (not InFd.Read(Junk.data(), ((Read + (sizeof(Block) - 1)) / sizeof(Block)) * sizeof(Block))) return false; if (Fd > 0) { - if (not FileFd::Write(Fd, Junk, Read)) + if (not FileFd::Write(Fd, Junk.data(), Read)) return Stream.Fail(Itm, Fd); } // An Fd of -2 means to send to a special processing function else if (Fd == -2) { - if (not Stream.Process(Itm, Junk, Read, Itm.Size - Size)) + if (not Stream.Process(Itm, Junk.data(), Read, Itm.Size - Size)) return Stream.Fail(Itm, Fd); } diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 08428e7..8599727 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -2,20 +2,20 @@ // SPDX-License-Identifier: GPL-2.0+ // Description /*{{{*/ /* ###################################################################### - + File Utilities - + CopyFile - Buffered copy of a single file GetLock - dpkg compatible lock file manipulation (fcntl) - + This file had this historic note, but now includes further changes under the GPL-2.0+: - Most of this source is placed in the Public Domain, do with it what + Most of this source is placed in the Public Domain, do with it what you will It was originally written by Jason Gunthorpe . FileFd gzip support added by Martin Pitt - + The exception is RunScripts() it is under the GPLv2 We believe that this reference to GPLv2 was not meant to exclude later @@ -59,6 +59,7 @@ #include #include +#include #include #include @@ -104,16 +105,16 @@ bool RunScripts(const char *Cnf) // Fork for running the system calls pid_t Child = ExecFork(); - + // This is the child if (Child == 0) { if (_system != nullptr && _system->IsLocked() == true && (stringcasecmp(Cnf, "dpkg::post-invoke") == 0 || stringcasecmp(Cnf, "dpkg::pre-invoke") == 0)) setenv("DPKG_FRONTEND_LOCKED", "true", 1); - if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") + if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") { - std::cerr << "Chrooting into " - << _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); @@ -121,7 +122,7 @@ bool RunScripts(const char *Cnf) if (chdir("/tmp/") != 0) _exit(100); - + unsigned int Count = 1; for (; Opts != 0; Opts = Opts->Next, Count++) { @@ -136,7 +137,7 @@ bool RunScripts(const char *Cnf) _exit(100+Count); } _exit(0); - } + } // Wait for the child int Status = 0; @@ -157,10 +158,10 @@ bool RunScripts(const char *Cnf) 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; } /*}}}*/ @@ -175,12 +176,11 @@ bool CopyFile(FileFd &From,FileFd &To) return false; // Buffered copy between fds - constexpr size_t BufSize = APT_BUFFER_SIZE; - std::unique_ptr Buf(new unsigned char[BufSize]); + std::array Buf; unsigned long long ToRead = 0; do { - if (From.Read(Buf.get(),BufSize, &ToRead) == false || - To.Write(Buf.get(),ToRead) == false) + if (From.Read(Buf.data(),Buf.size(), &ToRead) == false || + To.Write(Buf.data(),ToRead) == false) return false; } while (ToRead != 0); @@ -247,7 +247,7 @@ static std::string GetProcessName(int pid) } return ""; } -int GetLock(string File,bool Errors) +int GetLock(string const &File,bool Errors) { // GetLock() is used in aptitude on directories with public-write access // Use O_NOFOLLOW here to prevent symlink traversal attacks @@ -260,7 +260,7 @@ int GetLock(string File,bool Errors) _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()); @@ -269,7 +269,7 @@ int GetLock(string File,bool Errors) return -1; } SetCloseExec(FD,true); - + // Acquire a write lock struct flock fl; fl.l_type = F_WRLCK; @@ -300,9 +300,9 @@ int GetLock(string File,bool Errors) 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 + return dup(0); // Need something for the caller to close } - + if (Errors == true) { // We only do the lookup in the if ((errno == EACCES || errno == EAGAIN)) @@ -330,7 +330,7 @@ int GetLock(string File,bool Errors) // FileExists - Check if a file exists /*{{{*/ // --------------------------------------------------------------------- /* Beware: Directories are also files! */ -bool FileExists(string File) +bool FileExists(string const &File) { struct stat Buf; if (stat(File.c_str(),&Buf) != 0) @@ -341,7 +341,7 @@ bool FileExists(string File) // RealFileExists - Check if a file exists and if it is really a file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool RealFileExists(string File) +bool RealFileExists(string const &File) { struct stat Buf; if (stat(File.c_str(),&Buf) != 0) @@ -462,7 +462,7 @@ std::vector GetListOfFilesInDir(string const &Dir, std::vector c Configuration::MatchAgainstConfig SilentIgnore("Dir::Ignore-Files-Silently"); DIR *D = opendir(Dir.c_str()); - if (D == 0) + if (D == 0) { if (errno == EACCES) _error->WarningE("opendir", _("Unable to read %s"), Dir.c_str()); @@ -471,7 +471,7 @@ std::vector GetListOfFilesInDir(string const &Dir, std::vector c return List; } - for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) + for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) { // skip "hidden" files if (Ent->d_name[0] == '.') @@ -485,7 +485,7 @@ std::vector GetListOfFilesInDir(string const &Dir, std::vector c { if (RealFileExists(File) == false) { - string d_ext = flExtension(Ent->d_name); + auto d_ext = flExtension(Ent->d_name); // do not show ignoration warnings for directories if (( #ifdef _DIRENT_HAVE_D_TYPE @@ -505,7 +505,7 @@ std::vector GetListOfFilesInDir(string const &Dir, std::vector c // extensions given -> "" extension allows no extension if (Ext.empty() == false) { - string d_ext = flExtension(Ent->d_name); + auto d_ext = flExtension(Ent->d_name); if (d_ext == Ent->d_name) // no extension { if (std::find(Ext.begin(), Ext.end(), "") == Ext.end()) @@ -586,7 +586,7 @@ std::vector GetListOfFilesInDir(string const &Dir, bool SortList) return List; } - for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) + for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) { // skip "hidden" files if (Ent->d_name[0] == '.') @@ -670,19 +670,19 @@ time_t GetModificationTime(string const &Path) // flNotDir - Strip the directory from the filename /*{{{*/ // --------------------------------------------------------------------- /* */ -string flNotDir(string File) +string_view flNotDir(string_view File) { - string::size_type Res = File.rfind('/'); - if (Res == string::npos) + string_view::size_type Res = File.rfind('/'); + if (Res == string_view::npos) return File; Res++; - return string(File,Res,Res - File.length()); + return File.substr(Res,Res - File.length()); } /*}}}*/ // flNotFile - Strip the file from the directory name /*{{{*/ // --------------------------------------------------------------------- /* Result ends in a / */ -string flNotFile(string File) +string flNotFile(string const &File) { string::size_type Res = File.rfind('/'); if (Res == string::npos) @@ -694,13 +694,13 @@ string flNotFile(string File) // flExtension - Return the extension for the file /*{{{*/ // --------------------------------------------------------------------- /* */ -string flExtension(string File) +string_view flExtension(string_view File) { - string::size_type Res = File.rfind('.'); - if (Res == string::npos) + string_view::size_type Res = File.rfind('.'); + if (Res == string_view::npos) return File; - Res++; - return string(File,Res); + File.remove_prefix(Res + 1); + return File; } /*}}}*/ // flNoLink - If file is a symlink then deref it /*{{{*/ @@ -713,9 +713,9 @@ string flNoLink(string File) 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 + + /* 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; @@ -723,23 +723,23 @@ string flNoLink(string File) { // Read the link ssize_t Res; - if ((Res = readlink(NFile.c_str(),Buffer,sizeof(Buffer))) <= 0 || + 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; - } + return NFile; + } } /*}}}*/ // flCombine - Combine a file and a directory /*{{{*/ @@ -750,14 +750,16 @@ 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; + + if (Dir.back() != '/') + Dir.append("/"); + Dir.append(File); + return Dir; } /*}}}*/ // flAbsPath - Return the absolute path of the filename /*{{{*/ @@ -771,9 +773,9 @@ string flAbsPath(string File) _error->Errno("realpath", "flAbsPath on %s failed", File.c_str()); return ""; } - std::string AbsPath(p); + File = p; free(p); - return AbsPath; + return File; } /*}}}*/ std::string flNormalize(std::string file) /*{{{*/ @@ -799,7 +801,7 @@ std::string flNormalize(std::string file) /*{{{*/ // --------------------------------------------------------------------- /* */ 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; @@ -811,7 +813,7 @@ void SetCloseExec(int Fd,bool Close) // --------------------------------------------------------------------- /* */ 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) { @@ -823,7 +825,7 @@ void SetNonBlock(int Fd,bool Block) // 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 + applications making use of non-blocking sockets. The timeout is in seconds. */ bool WaitFd(int Fd,bool write,unsigned long timeout) { @@ -833,19 +835,19 @@ bool WaitFd(int Fd,bool write,unsigned long timeout) FD_SET(Fd,&Set); tv.tv_sec = timeout; tv.tv_usec = 0; - if (write == true) - { + 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 + } + else { int Res; do @@ -853,11 +855,11 @@ bool WaitFd(int Fd,bool write,unsigned long timeout) Res = select(Fd+1,&Set,0,0,(timeout != 0?&tv:0)); } while (Res < 0 && errno == EINTR); - + if (Res <= 0) return false; } - + return true; } /*}}}*/ @@ -884,13 +886,13 @@ void MergeKeepFdsFromConfiguration(std::set &KeepFDs) /*}}}*/ // ExecFork - Magical fork that sanitizes the context before execing /*{{{*/ // --------------------------------------------------------------------- -/* This is used if you want to cleanse the environment for the forked +/* 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 KeepFDs; - // we need to merge the Keep-Fds as external tools like + // we need to merge the Keep-Fds as external tools like // debconf-apt-progress use it MergeKeepFdsFromConfiguration(KeepFDs); return ExecFork(KeepFDs); @@ -939,20 +941,20 @@ pid_t ExecFork(std::set KeepFDs) } } } - + return Process; } /*}}}*/ // ExecWait - Fancy waitpid /*{{{*/ // --------------------------------------------------------------------- -/* Waits for the given sub process. If Reap is set then no errors are +/* 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) @@ -962,11 +964,11 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap) 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) { @@ -976,16 +978,16 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap) { if( WTERMSIG(Status) == SIGSEGV) return _error->Error(_("Sub-process %s received a segmentation fault."),Name); - else + 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; } /*}}}*/ @@ -999,24 +1001,18 @@ bool StartsWithGPGClearTextSignature(string const &FileName) char * lineptr = nullptr; size_t n = 0; errno = 0; + DEFER([&] { fclose(gpg); free(lineptr); }); ssize_t const result = getline(&lineptr, &n, gpg); - if (errno != 0) + if (result < 0 && errno != 0) { _error->Errno("getline", "Could not read from %s", FileName.c_str()); - fclose(gpg); - free(lineptr); return false; } - fclose(gpg); _strrstrip(lineptr); - static const char* SIGMSG = "-----BEGIN PGP SIGNED MESSAGE-----"; + const char* SIGMSG = "-----BEGIN PGP SIGNED MESSAGE-----"; if (result == -1 || strcmp(lineptr, SIGMSG) != 0) - { - free(lineptr); return false; - } - free(lineptr); return true; } /*}}}*/ @@ -1074,7 +1070,7 @@ struct APT_HIDDEN simple_buffer { /*{{{*/ reset(); } void reset() { bufferend = bufferstart = 0; } - ssize_t read(void *to, unsigned long long requested_size) APT_MUSTCHECK + [[nodiscard]] ssize_t read(void *to, unsigned long long requested_size) { if (size() < requested_size) requested_size = size(); @@ -1084,7 +1080,7 @@ struct APT_HIDDEN simple_buffer { /*{{{*/ bufferstart = bufferend = 0; return requested_size; } - ssize_t write(const void *from, unsigned long long requested_size) APT_MUSTCHECK + [[nodiscard]] ssize_t write(const void *from, unsigned long long requested_size) { if (free() < requested_size) requested_size = free(); @@ -1246,12 +1242,11 @@ class APT_HIDDEN FileFdPrivate { /*{{{*/ } virtual bool InternalSkip(unsigned long long Over) { - unsigned long long constexpr buffersize = 1024; - char buffer[buffersize]; + std::array buffer; while (Over != 0) { - unsigned long long toread = std::min(buffersize, Over); - if (filefd->Read(buffer, toread) == false) + auto toread = std::min(buffer.size(), Over); + if (filefd->Read(buffer.data(), toread) == false) return filefd->FileFdError("Unable to seek ahead %llu",Over); Over -= toread; } @@ -1273,11 +1268,10 @@ class APT_HIDDEN FileFdPrivate { /*{{{*/ { unsigned long long size = 0; unsigned long long const oldSeek = filefd->Tell(); - unsigned long long constexpr ignoresize = 1024; - char ignore[ignoresize]; + std::array ignore; unsigned long long read = 0; do { - if (filefd->Read(ignore, ignoresize, &read) == false) + if (filefd->Read(ignore.data(), ignore.size(), &read) == false) { filefd->Seek(oldSeek); return 0; @@ -1296,71 +1290,71 @@ class APT_HIDDEN FileFdPrivate { /*{{{*/ /*}}}*/ class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate { /*{{{*/ protected: - FileFdPrivate *wrapped; + std::unique_ptr wrapped; simple_buffer writebuffer; public: - explicit BufferedWriteFileFdPrivate(FileFdPrivate *Priv) : - FileFdPrivate(Priv->filefd), wrapped(Priv) {}; + explicit BufferedWriteFileFdPrivate(std::unique_ptr &&Priv) : + FileFdPrivate(Priv->filefd), wrapped(std::move(Priv)) {}; - virtual APT::Configuration::Compressor get_compressor() const APT_OVERRIDE + [[nodiscard]] APT::Configuration::Compressor get_compressor() const override { return wrapped->get_compressor(); } - virtual void set_compressor(APT::Configuration::Compressor const &compressor) APT_OVERRIDE + void set_compressor(APT::Configuration::Compressor const &compressor) override { return wrapped->set_compressor(compressor); } - virtual unsigned int get_openmode() const APT_OVERRIDE + [[nodiscard]] unsigned int get_openmode() const override { return wrapped->get_openmode(); } - virtual void set_openmode(unsigned int openmode) APT_OVERRIDE + void set_openmode(unsigned int openmode) override { return wrapped->set_openmode(openmode); } - virtual bool get_is_pipe() const APT_OVERRIDE + [[nodiscard]] bool get_is_pipe() const override { return wrapped->get_is_pipe(); } - virtual void set_is_pipe(bool is_pipe) APT_OVERRIDE + void set_is_pipe(bool is_pipe) override { FileFdPrivate::set_is_pipe(is_pipe); wrapped->set_is_pipe(is_pipe); } - virtual unsigned long long get_seekpos() const APT_OVERRIDE + [[nodiscard]] unsigned long long get_seekpos() const override { return wrapped->get_seekpos(); } - virtual void set_seekpos(unsigned long long seekpos) APT_OVERRIDE + void set_seekpos(unsigned long long seekpos) override { return wrapped->set_seekpos(seekpos); } - virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE + bool InternalOpen(int const iFd, unsigned int const Mode) 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 + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { if (InternalFlush() == false) return -1; return wrapped->InternalUnbufferedRead(To, Size); } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() override { return wrapped->InternalReadError(); } - virtual char * InternalReadLine(char * To, unsigned long long Size) APT_OVERRIDE + char *InternalReadLine(char *To, unsigned long long Size) override { if (InternalFlush() == false) return nullptr; return wrapped->InternalReadLine(To, Size); } - virtual bool InternalFlush() APT_OVERRIDE + bool InternalFlush() override { while (writebuffer.empty() == false) { auto written = wrapped->InternalWrite(writebuffer.get(), @@ -1376,7 +1370,7 @@ class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate { /*{{{*/ writebuffer.reset(); return wrapped->InternalFlush(); } - virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalWrite(void const *const From, unsigned long long const Size) 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. @@ -1391,51 +1385,50 @@ class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate { /*{{{*/ return written; } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() override { return wrapped->InternalWriteError(); } - virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE + bool InternalSeek(unsigned long long const To) override { if (InternalFlush() == false) return false; return wrapped->InternalSeek(To); } - virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE + bool InternalSkip(unsigned long long Over) override { if (InternalFlush() == false) return false; return wrapped->InternalSkip(Over); } - virtual bool InternalTruncate(unsigned long long const Size) APT_OVERRIDE + bool InternalTruncate(unsigned long long const Size) override { if (InternalFlush() == false) return false; return wrapped->InternalTruncate(Size); } - virtual unsigned long long InternalTell() APT_OVERRIDE + unsigned long long InternalTell() override { if (InternalFlush() == false) return -1; return wrapped->InternalTell(); } - virtual unsigned long long InternalSize() APT_OVERRIDE + unsigned long long InternalSize() override { if (InternalFlush() == false) return -1; return wrapped->InternalSize(); } - virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE + bool InternalClose(std::string const &FileName) override { return wrapped->InternalClose(FileName); } - virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE + [[nodiscard]] bool InternalAlwaysAutoClose() const override { return wrapped->InternalAlwaysAutoClose(); } virtual ~BufferedWriteFileFdPrivate() { - delete wrapped; } }; /*}}}*/ @@ -1443,7 +1436,7 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ #ifdef HAVE_ZLIB public: gzFile gz; - virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE + bool InternalOpen(int const iFd, unsigned int const Mode) override { if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite) gz = gzdopen(iFd, "r+"); @@ -1454,11 +1447,11 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ filefd->Flags |= FileFd::Compressed; return gz != nullptr; } - virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { return gzread(gz, To, Size); } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() override { int err; char const * const errmsg = gzerror(gz, &err); @@ -1466,15 +1459,15 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ 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 + char *InternalReadLine(char *To, unsigned long long Size) override { return gzgets(gz, To, Size); } - virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { return gzwrite(gz,From,Size); } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() override { int err; char const * const errmsg = gzerror(gz, &err); @@ -1482,7 +1475,7 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ return filefd->FileFdError("gzwrite: %s (%d: %s)", _("Write error"), err, errmsg); return FileFdPrivate::InternalWriteError(); } - virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE + bool InternalSeek(unsigned long long const To) override { off_t const res = gzseek(gz, To, SEEK_SET); if (res != (off_t)To) @@ -1491,7 +1484,7 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ buffer.reset(); return true; } - virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE + bool InternalSkip(unsigned long long Over) override { if (Over >= buffer.size()) { @@ -1511,11 +1504,11 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ seekpos = res; return true; } - virtual unsigned long long InternalTell() APT_OVERRIDE + unsigned long long InternalTell() override { return gztell(gz) - buffer.size(); } - virtual unsigned long long InternalSize() APT_OVERRIDE + unsigned long long InternalSize() override { unsigned long long filesize = FileFdPrivate::InternalSize(); // only check gzsize if we are actually a gzip file, just checking for @@ -1549,7 +1542,7 @@ class APT_HIDDEN GzipFileFdPrivate: public FileFdPrivate { /*{{{*/ } return size; } - virtual bool InternalClose(std::string const &FileName) APT_OVERRIDE + bool InternalClose(std::string const &FileName) override { if (gz == nullptr) return true; @@ -1570,22 +1563,22 @@ 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; +bool InternalOpen(int const iFd, unsigned int const Mode) 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 + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { return BZ2_bzread(bz2, To, Size); } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() override { int err; char const * const errmsg = BZ2_bzerror(bz2, &err); @@ -1593,11 +1586,11 @@ class APT_HIDDEN Bz2FileFdPrivate: public FileFdPrivate { /*{{{*/ 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 + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { return BZ2_bzwrite(bz2, (void*)From, Size); } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() override { int err; char const * const errmsg = BZ2_bzerror(bz2, &err); @@ -1605,8 +1598,8 @@ class APT_HIDDEN Bz2FileFdPrivate: public FileFdPrivate { /*{{{*/ 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 + [[nodiscard]] bool InternalStream() const override { return true; } + bool InternalClose(std::string const &/*FileName*/) override { if (bz2 == nullptr) return true; @@ -1632,40 +1625,42 @@ class APT_HIDDEN Lz4FileFdPrivate: public FileFdPrivate { /*{{{*/ // 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 +bool InternalOpen(int const iFd, unsigned int const Mode) override +{ + if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite) + return _error->Error("lz4 only supports write or read mode"); + + if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly) { - if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite) - return _error->Error("lz4 only supports write or read mode"); + 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); + } - 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; - filefd->Flags |= FileFd::Compressed; + if (LZ4F_isError(res)) + return false; - 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; - unsigned int flags = (Mode & (FileFd::WriteOnly|FileFd::ReadOnly)); - if (backend.OpenDescriptor(iFd, flags, FileFd::None, true) == 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; + } - // 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; + return true; } - virtual ssize_t InternalUnbufferedRead(void * const To, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { /* Keep reading as long as the compressor still wants to read */ while (next_to_load) { @@ -1703,13 +1698,13 @@ class APT_HIDDEN Lz4FileFdPrivate: public FileFdPrivate { /*{{{*/ return 0; } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() 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 + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { unsigned long long const towrite = std::min(APT_BUFFER_SIZE, Size); @@ -1722,20 +1717,20 @@ class APT_HIDDEN Lz4FileFdPrivate: public FileFdPrivate { /*{{{*/ return towrite; } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() 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; } + [[nodiscard]] bool InternalStream() const override { return true; } - virtual bool InternalFlush() APT_OVERRIDE + bool InternalFlush() override { return backend.Flush(); } - virtual bool InternalClose(std::string const &) APT_OVERRIDE + bool InternalClose(std::string const &/*FileName*/) override { /* Reset variables */ res = 0; @@ -1791,7 +1786,7 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate /*{{{*/ size_t next_to_load = APT_BUFFER_SIZE; public: - virtual bool InternalOpen(int const iFd, unsigned int const Mode) APT_OVERRIDE + bool InternalOpen(int const iFd, unsigned int const Mode) override { if ((Mode & FileFd::ReadWrite) == FileFd::ReadWrite) return _error->Error("zstd only supports write or read mode"); @@ -1820,7 +1815,7 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate /*{{{*/ return true; } - virtual ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { /* Keep reading as long as the compressor still wants to read */ while (true) @@ -1878,13 +1873,13 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate /*{{{*/ return 0; } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() override { char const *const errmsg = ZSTD_getErrorName(res); return filefd->FileFdError("ZSTD: %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 + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { // Drain compressed buffer as far as possible. ZSTD_outBuffer out = { @@ -1906,20 +1901,20 @@ class APT_HIDDEN ZstdFileFdPrivate : public FileFdPrivate /*{{{*/ return in.pos; } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() override { char const *const errmsg = ZSTD_getErrorName(res); return filefd->FileFdError("ZSTD: %s %s (%zu: %s)", filefd->FileName.c_str(), _("Write error"), res, errmsg); } - virtual bool InternalStream() const APT_OVERRIDE { return true; } + [[nodiscard]] bool InternalStream() const override { return true; } - virtual bool InternalFlush() APT_OVERRIDE + bool InternalFlush() override { return backend.Flush(); } - virtual bool InternalClose(std::string const &) APT_OVERRIDE + bool InternalClose(std::string const &/*FileName*/) override { /* Reset variables */ res = 0; @@ -1995,7 +1990,7 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ struct LZMAFILE { FILE* file; FileFd * const filefd; - uint8_t buffer[4096]; + std::array buffer; lzma_stream stream; lzma_ret err; bool eof; @@ -2006,19 +2001,18 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ { 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; + stream.avail_out = buffer.size(); + stream.next_out = buffer.data(); 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) + size_t const n = buffer.size() - stream.avail_out; + if (n && fwrite(buffer.data(), 1, n, file) != n) { _error->Errno("~LZMAFILE",_("Write error")); break; @@ -2059,51 +2053,51 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ 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()); +bool InternalOpen(int const iFd, unsigned int const Mode) 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; + 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; + lzma_stream tmp_stream = LZMA_STREAM_INIT; + lzma->stream = tmp_stream; - if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly) + if ((Mode & FileFd::WriteOnly) == FileFd::WriteOnly) + { + uint32_t const xzlevel = findXZlevel(compressor.CompressArgs); + if (compressor.Name == "xz") { - 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; + if (lzma_easy_encoder(&lzma->stream, xzlevel, LZMA_CHECK_CRC64) != LZMA_OK) + return false; } else { - uint64_t constexpr memlimit = 1024 * 1024 * 500; - if (lzma_auto_decoder(&lzma->stream, memlimit, 0) != LZMA_OK) + lzma_options_lzma options; + lzma_lzma_preset(&options, xzlevel); + if (lzma_alone_encoder(&lzma->stream, &options) != LZMA_OK) return false; - lzma->compressing = false; } - return true; + lzma->compressing = true; + } + else + { + uint64_t constexpr memlimit = 1024 * 1024 * 500; + if (lzma_auto_decoder(&lzma->stream, memlimit, 0) != 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 InternalUnbufferedRead(void *const To, unsigned long long const Size) override { ssize_t Res; if (lzma->eof == true) @@ -2113,8 +2107,8 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ 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->stream.next_in = lzma->buffer.data(); + lzma->stream.avail_in = fread(lzma->buffer.data(), 1, lzma->buffer.size(), lzma->file); } lzma->err = lzma_code(&lzma->stream, LZMA_RUN); if (lzma->err == LZMA_STREAM_END) @@ -2139,22 +2133,22 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ } return Res; } - virtual bool InternalReadError() APT_OVERRIDE + bool InternalReadError() 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 InternalWrite(void const *const From, unsigned long long const Size) 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->stream.next_out = lzma->buffer.data(); + lzma->stream.avail_out = lzma->buffer.size(); 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); + size_t const n = lzma->buffer.size() - lzma->stream.avail_out; + size_t const m = (n == 0) ? 0 : fwrite(lzma->buffer.data(), 1, n, lzma->file); if (m != n) { Res = -1; @@ -2172,12 +2166,12 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ } return Res; } - virtual bool InternalWriteError() APT_OVERRIDE + bool InternalWriteError() 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 + [[nodiscard]] bool InternalStream() const override { return true; } + bool InternalClose(std::string const &/*FileName*/) override { delete lzma; lzma = nullptr; @@ -2194,117 +2188,118 @@ class APT_HIDDEN PipedFileFdPrivate: public FileFdPrivate /*{{{*/ by executing a specified binary and pipe in/out what we need */ { public: - virtual bool InternalOpen(int const, unsigned int const Mode) APT_OVERRIDE +bool InternalOpen(int const /*iFd*/, unsigned int const Mode) 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) { - // collect zombies here in case we reopen - if (compressor_pid > 0) - ExecWait(compressor_pid, "FileFdCompressor", true); + // 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; - 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; - } + // 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); + // 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); + 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) - filefd->iFd = Pipe[1]; + { + dup2(compressed_fd, STDOUT_FILENO); + dup2(Pipe[0], STDIN_FILENO); + } 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); - } + 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 Args; - Args.push_back(compressor.Binary.c_str()); - std::vector const * const addArgs = - (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs); - for (std::vector::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); + SetCloseExec(STDOUT_FILENO, false); + SetCloseExec(STDIN_FILENO, false); - execvp(Args[0],(char **)&Args[0]); - cerr << _("Failed to exec compressor ") << Args[0] << endl; - _exit(100); + std::vector Args; + Args.push_back(compressor.Binary.c_str()); + std::vector const *const addArgs = + (Comp == true) ? &(compressor.CompressArgs) : &(compressor.UncompressArgs); + for (std::vector::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()); } - if (Comp == true) - close(Pipe[0]); - else - close(Pipe[1]); + Args.push_back(NULL); - return true; + 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 + ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override { return read(filefd->iFd, To, Size); } - virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { return write(filefd->iFd, From, Size); } - virtual bool InternalClose(std::string const &) APT_OVERRIDE + bool InternalClose(std::string const &/*FileName*/) override { bool Ret = true; if (filefd->iFd != -1) @@ -2324,12 +2319,12 @@ class APT_HIDDEN PipedFileFdPrivate: public FileFdPrivate /*{{{*/ 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); +bool InternalOpen(int const /*iFd*/, unsigned int const /*Mode*/) override { return true; } +ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) override +{ + return read(filefd->iFd, To, Size); } - virtual ssize_t InternalWrite(void const * const From, unsigned long long const Size) APT_OVERRIDE + ssize_t InternalWrite(void const *const From, unsigned long long const Size) override { // files opened read+write are strange and only really "supported" for direct files if (buffer.size() != 0) @@ -2339,7 +2334,7 @@ class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate /*{{{*/ } return write(filefd->iFd, From, Size); } - virtual bool InternalSeek(unsigned long long const To) APT_OVERRIDE + bool InternalSeek(unsigned long long const To) override { off_t const res = lseek(filefd->iFd, To, SEEK_SET); if (res != (off_t)To) @@ -2348,7 +2343,7 @@ class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate /*{{{*/ buffer.reset(); return true; } - virtual bool InternalSkip(unsigned long long Over) APT_OVERRIDE + bool InternalSkip(unsigned long long Over) override { if (Over >= buffer.size()) { @@ -2368,7 +2363,7 @@ class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate /*{{{*/ seekpos = res; return true; } - virtual bool InternalTruncate(unsigned long long const To) APT_OVERRIDE + bool InternalTruncate(unsigned long long const To) override { if (buffer.size() != 0) { @@ -2384,36 +2379,36 @@ class APT_HIDDEN DirectFileFdPrivate: public FileFdPrivate /*{{{*/ return filefd->FileFdError("Unable to truncate to %llu",To); return true; } - virtual unsigned long long InternalTell() APT_OVERRIDE + unsigned long long InternalTell() override { return lseek(filefd->iFd,0,SEEK_CUR) - buffer.size(); } - virtual unsigned long long InternalSize() APT_OVERRIDE + unsigned long long InternalSize() override { return filefd->FileSize(); } - virtual bool InternalClose(std::string const &) APT_OVERRIDE { return true; } - virtual bool InternalAlwaysAutoClose() const APT_OVERRIDE { return false; } + bool InternalClose(std::string const &/*FileName*/) override { return true; } + [[nodiscard]] bool InternalAlwaysAutoClose() const 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) +FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr) { 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) +FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr) { 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) +FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(nullptr) {} +FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(nullptr) { OpenDescriptor(Fd, Mode, Compress); } -FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(NULL) +FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(nullptr) { OpenDescriptor(Fd, ReadWrite, None, AutoClose); } @@ -2647,7 +2642,7 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C /* 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) + d = std::make_unique(this) #ifdef HAVE_ZLIB APT_COMPRESS_INIT("gzip", GzipFileFdPrivate); #endif @@ -2666,12 +2661,12 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C #endif #undef APT_COMPRESS_INIT else if (compressor.Name == "." || compressor.Binary.empty() == true) - d = new DirectFileFdPrivate(this); + d = std::make_unique(this); else - d = new PipedFileFdPrivate(this); + d = std::make_unique(this); if (Mode & BufferedWrite) - d = new BufferedWriteFileFdPrivate(d); + d = std::make_unique(std::move(d)); d->set_openmode(Mode); d->set_compressor(compressor); @@ -2696,8 +2691,6 @@ FileFd::~FileFd() Close(); if (d != NULL) d->InternalClose(FileName); - delete d; - d = NULL; } /*}}}*/ // FileFd::Read - Read a bit of the file /*{{{*/ @@ -2732,10 +2725,10 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual) if (Actual != nullptr) *Actual += Res; } - + if (Size == 0) return true; - + // Eof handling if (Actual != 0) { @@ -2915,7 +2908,7 @@ unsigned long long FileFd::Tell() return Res; } /*}}}*/ -static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, FileFdPrivate * const d) /*{{{*/ +static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, std::unique_ptr const &d) /*{{{*/ { bool ispipe = (d != NULL && d->get_is_pipe() == true); if (ispipe == false) @@ -2993,7 +2986,6 @@ bool FileFd::Close() if (d != NULL) { Res &= d->InternalClose(FileName); - delete d; d = NULL; } @@ -3186,7 +3178,7 @@ FileFd* GetTempFile(std::string const &Prefix, bool ImmediateUnlink, FileFd * co return Fd; } /*}}}*/ -bool Rename(std::string From, std::string To) /*{{{*/ +bool Rename(std::string const &From, std::string const &To) /*{{{*/ { if (rename(From.c_str(),To.c_str()) != 0) { @@ -3239,7 +3231,7 @@ bool Popen(const char *Args[], FileFd &Fd, pid_t &Child, FileFd::OpenMode Mode, } else if(Mode == FileFd::WriteOnly) dup2(fd, 0); - execv(Args[0], (char**)Args); + execvp(Args[0], (char **)Args); _exit(100); } if(Mode == FileFd::ReadOnly) diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 11f4871..ed2a947 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -29,7 +29,9 @@ #include #include +#include #include +#include #include #include @@ -134,8 +136,8 @@ class APT_PUBLIC FileFd 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); + inline bool Open(std::string FileName,unsigned int const Mode, unsigned long const AccessMode = 0666) { + return Open(std::move(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); @@ -166,7 +168,7 @@ class APT_PUBLIC FileFd virtual ~FileFd(); private: - FileFdPrivate * d; + std::unique_ptr d; APT_HIDDEN FileFd(const FileFd &); APT_HIDDEN FileFd & operator=(const FileFd &); APT_HIDDEN bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor); @@ -180,13 +182,13 @@ APT_PUBLIC bool RunScripts(const char *Cnf); APT_PUBLIC bool CopyFile(FileFd &From,FileFd &To); APT_PUBLIC bool RemoveFile(char const * const Function, std::string const &FileName); APT_PUBLIC bool RemoveFileAt(char const * const Function, int const dirfd, std::string const &FileName); -APT_PUBLIC int GetLock(std::string File,bool Errors = true); -APT_PUBLIC bool FileExists(std::string File); -APT_PUBLIC bool RealFileExists(std::string File); +APT_PUBLIC int GetLock(std::string const &File,bool Errors = true); +APT_PUBLIC bool FileExists(std::string const &File); +APT_PUBLIC bool RealFileExists(std::string const &File); APT_PUBLIC bool DirectoryExists(std::string const &Path); APT_PUBLIC bool CreateDirectory(std::string const &Parent, std::string const &Path); APT_PUBLIC time_t GetModificationTime(std::string const &Path); -APT_PUBLIC bool Rename(std::string From, std::string To); +APT_PUBLIC bool Rename(std::string const &From, std::string const &To); APT_PUBLIC std::string GetTempDir(); APT_PUBLIC std::string GetTempDir(std::string const &User); @@ -251,10 +253,10 @@ APT_PUBLIC bool ChangeOwnerAndPermissionOfFile(char const * const requester, cha APT_PUBLIC bool DropPrivileges(); // File string manipulators -APT_PUBLIC std::string flNotDir(std::string File); -APT_PUBLIC std::string flNotFile(std::string File); +APT_PUBLIC std::string_view flNotDir(std::string_view File); +APT_PUBLIC std::string flNotFile(std::string const &File); // XXX: this should take a string_view, but right now that causes more type problems than it solves APT_PUBLIC std::string flNoLink(std::string File); -APT_PUBLIC std::string flExtension(std::string File); +APT_PUBLIC std::string_view flExtension(std::string_view File); APT_PUBLIC std::string flCombine(std::string Dir,std::string File); /** \brief Takes a file path and returns the absolute path @@ -284,4 +286,32 @@ APT_HIDDEN bool OpenConfigurationFileFd(std::string const &File, FileFd &Fd); APT_HIDDEN int Inhibit(const char *what, const char *who, const char *why, const char *mode); + +namespace { + struct FILEFcloseDeleter { + void operator()(FILE *p) { + fclose(p); + } + }; + struct FILEPcloseDeleter { + void operator()(FILE *p) { + pclose(p); + } + }; + + [[maybe_unused]] std::unique_ptr make_unique_FILE(const char *const filename, char const *const mode) + { + return {fopen(filename, mode), {}}; + } + [[maybe_unused]] std::unique_ptr make_unique_FILE(std::string const &filename, char const *const mode) + { + return make_unique_FILE(filename.c_str(), mode); + } + + [[maybe_unused]] std::unique_ptr make_unique_popen(const char *program, char const *const mode) + { + return {popen(program, mode), {}}; + } +} + #endif diff --git a/apt-pkg/contrib/gpgv.cc b/apt-pkg/contrib/gpgv.cc index 2fa5b0c..0341521 100644 --- a/apt-pkg/contrib/gpgv.cc +++ b/apt-pkg/contrib/gpgv.cc @@ -18,25 +18,18 @@ #include #include +#include #include #include #include #include #include +#include #include #include /*}}}*/ -// syntactic sugar to wrap a raw pointer with a custom deleter in a std::unique_ptr -static std::unique_ptr make_unique_char(void *const str = nullptr) -{ - return {static_cast(str), &free}; -} -static std::unique_ptr make_unique_FILE(std::string const &filename, char const *const mode) -{ - return {fopen(filename.c_str(), mode), &fclose}; -} class LineBuffer /*{{{*/ { @@ -44,18 +37,18 @@ class LineBuffer /*{{{*/ size_t buffer_size = 0; int line_length = 0; // a "normal" find_last_not_of returns npos if not found - int find_last_not_of_length(APT::StringView const bad) const + int find_last_not_of_length(std::string_view const bad) const { for (int result = line_length - 1; result >= 0; --result) - if (bad.find(buffer[result]) == APT::StringView::npos) + if (bad.find(buffer[result]) == std::string_view::npos) return result + 1; return 0; } public: bool empty() const noexcept { return view().empty(); } - APT::StringView view() const noexcept { return {buffer, static_cast(line_length)}; } - bool starts_with(APT::StringView const start) const { return view().substr(0, start.size()) == start; } + std::string_view view() const noexcept { return {buffer, static_cast(line_length)}; } + bool starts_with(std::string_view const start) const { return view().substr(0, start.size()) == start; } bool writeTo(FileFd *const to, size_t offset = 0) const { @@ -83,7 +76,7 @@ class LineBuffer /*{{{*/ { errno = 0; line_length = getline(&buffer, &buffer_size, stream); - if (errno != 0) + if (line_length < 0 && errno != 0) return _error->Errno("getline", "Could not read from %s", InFile.c_str()); if (line_length == -1) { @@ -101,11 +94,11 @@ class LineBuffer /*{{{*/ ~LineBuffer() { free(buffer); } }; -static bool operator==(LineBuffer const &buf, APT::StringView const exp) noexcept +static bool operator==(LineBuffer const &buf, std::string_view const exp) noexcept { return buf.view() == exp; } -static bool operator!=(LineBuffer const &buf, APT::StringView const exp) noexcept +static bool operator!=(LineBuffer const &buf, std::string_view const exp) noexcept { return buf.view() != exp; } @@ -118,10 +111,10 @@ static bool operator!=(LineBuffer const &buf, APT::StringView const exp) noexcep 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 void APT_PRINTF(4) apt_error(std::ostream &outterm, int const statusfd, int fd[2], const char *format, ...) +#define apt_error(...) apt_msg("ERROR", __VA_ARGS__) +#define apt_warning(...) apt_msg("WARNING", __VA_ARGS__) +static void APT_PRINTF(5) apt_msg(std::string const &tag, std::ostream &outterm, int const statusfd, int fd[2], const char *format, ...) { std::ostringstream outstr; std::ostream &out = (statusfd == -1) ? outterm : outstr; @@ -137,53 +130,296 @@ static void APT_PRINTF(4) apt_error(std::ostream &outterm, int const statusfd, i } if (statusfd != -1) { - auto const errtag = "[APTKEY:] ERROR "; + auto const errtag = "[APTKEY:] " + tag + " "; outstr << '\n'; auto const errtext = outstr.str(); - if (not FileFd::Write(fd[1], errtag, strlen(errtag)) || + if (not FileFd::Write(fd[1], errtag.data(), errtag.size()) || not FileFd::Write(fd[1], errtext.data(), errtext.size())) outterm << errtext << std::flush; } } + +static bool CheckGPGV(std::unordered_map> &checkedCommands, std::string gpgv, bool Debug) +{ + if (checkedCommands.find(gpgv) == checkedCommands.end()) + { + // Create entry + checkedCommands[gpgv]; + FileFd dumpOptions; + pid_t child; + const char *argv[] = {gpgv.c_str(), "--dump-options", nullptr}; + if (unlikely(Debug)) + std::clog << "Executing " << gpgv << " --dump-options" << std::endl; + if (not Popen(argv, dumpOptions, child, FileFd::ReadOnly) && Debug) + return false; + + for (std::string line; dumpOptions.ReadLine(line);) + { + if (unlikely(Debug)) + std::clog << "Read line: " << line << std::endl; + checkedCommands[gpgv].emplace_front(APT::String::Strip(line)); + } + dumpOptions.Close(); + waitpid(child, NULL, 0); + } + return not checkedCommands[gpgv].empty(); +} + +/// Verifies a file containing a detached signature has the right format +/// @return 0 if succesful, or an exit code for ExecGPGV otherwise. +static int VerifyDetachedSignatureFile(std::string const &FileGPG, int fd[2], int statusfd = -1) +{ + auto detached = make_unique_FILE(FileGPG, "r"); + if (detached.get() == nullptr) + return _error->Error("Detached signature file '%s' could not be opened", FileGPG.c_str()), 111; + + LineBuffer buf; + bool open_signature = false; + bool found_badcontent = false; + size_t found_signatures = 0; + while (buf.readFrom(detached.get(), FileGPG, true)) + { + if (open_signature) + { + if (buf == "-----END PGP SIGNATURE-----") + open_signature = false; + else if (buf.starts_with("-")) + { + // the used Radix-64 is not using dash for any value, so a valid line can't + // start with one. Header keys could, but no existent one does and seems unlikely. + // Instead it smells a lot like a header the parser didn't recognize. + _error->Error("Detached signature file '%s' contains unexpected line starting with a dash", FileGPG.c_str()); + return 112; + } + } + else // if (not open_signature) + { + if (buf == "-----BEGIN PGP SIGNATURE-----") + { + open_signature = true; + ++found_signatures; + if (found_badcontent) + break; + } + else + { + found_badcontent = true; + if (found_signatures != 0) + break; + } + } + } + if (found_signatures == 0) + { + if (statusfd != -1 && fd) + { + auto const errtag = "[GNUPG:] NODATA\n"; + FileFd::Write(fd[1], errtag, strlen(errtag)); + } + else + { + _error->Error("Signed file isn't valid, got 'NODATA' (does the network require authentication?)"); + } + // guess if this is a binary signature, we never officially supported them, + // but silently accepted them via passing them unchecked to gpgv + if (found_badcontent) + { + rewind(detached.get()); + auto ptag = fgetc(detached.get()); + // §4.2 says that the first bit is always set and gpg seems to generate + // only old format which is indicated by the second bit not set + if (ptag != EOF && (ptag & 0x80) != 0 && (ptag & 0x40) == 0) + { + _error->Error("Detached signature file '%s' is in unsupported binary format", FileGPG.c_str()); + return 112; + } + } + // This is not an attack attempt but a file even gpgv would complain about + // likely the result of a paywall which is covered by the gpgv method + return 113; + } + else if (found_badcontent) + { + _error->Error("Detached signature file '%s' contains lines not belonging to a signature", FileGPG.c_str()); + return 112; + } + if (open_signature) + { + _error->Error("Detached signature file '%s' contains unclosed signatures", FileGPG.c_str()); + return 112; + } + + return 0; +} + +bool VerifyDetachedSignatureFile(std::string const &DetachedSignatureFileName) +{ + return VerifyDetachedSignatureFile(DetachedSignatureFileName, nullptr, -1) == 0; +} + +std::pair> APT::Internal::FindGPGV(bool Debug) +{ + static thread_local std::unordered_map> checkedCommands; + const std::string gpgvVariants[] = { + _config->Find("Apt::Key::gpgvcommand"), + // Prefer absolute path + "/usr/bin/gpgv-sq", + "/usr/bin/gpgv", + "gpgv-sq", + "gpgv", + }; + for (auto gpgv : gpgvVariants) + if (CheckGPGV(checkedCommands, gpgv, Debug)) + return std::make_pair(gpgv, checkedCommands[gpgv]); + return {}; +} + 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"); + auto const keyFiles = VectorizeString(key, ','); + ExecGPGV(File, FileGPG, statusfd, fd, keyFiles); +} +void ExecGPGV(std::string const &File, std::string const &FileGPG, + int const &statusfd, int fd[2], std::vector const &KeyFiles) +{ +#define EINTERNAL 111 bool const Debug = _config->FindB("Debug::Acquire::gpgv", false); struct exiter { - std::vector files; - void operator ()(int code) APT_NORETURN { - std::for_each(files.begin(), files.end(), unlink); + std::vector files; + [[noreturn]] void operator ()(int code) { + std::for_each(files.begin(), files.end(), [](auto f) + { unlink(f.c_str()); }); exit(code); } } local_exit; + auto [gpgv, supportedOptions] = APT::Internal::FindGPGV(Debug); + if (gpgv.empty()) + { + apt_error(std::cerr, statusfd, fd, "Couldn't find a gpgv binary"); + local_exit(EINTERNAL); + } - std::vector Args; + std::vector Args; Args.reserve(10); - Args.push_back(aptkey.c_str()); - Args.push_back("--quiet"); - Args.push_back("--readonly"); - auto const keysFileFpr = VectorizeString(key, ','); - for (auto const &k: keysFileFpr) + Args.push_back(gpgv); + Args.push_back("--ignore-time-conflict"); + + FileFd mergedFd; + if (GetTempFile("apt.XXXXXX.gpg", false, &mergedFd) == nullptr) + local_exit(EINTERNAL); + local_exit.files.push_back(mergedFd.Name()); + + auto dearmorKeyOrCheckFormat = [&](std::string const &k) + { + FileFd keyFd(k, FileFd::ReadOnly); + if (not keyFd.IsOpen()) + { + apt_warning(std::cerr, statusfd, fd, "The key(s) in the keyring %s are ignored as the file is not readable by user executing gpgv.\n", k.c_str()); + } + else if (APT::String::Endswith(k, ".asc")) + { + std::string b64msg; + int state = 0; + for (std::string line; keyFd.ReadLine(line);) + { + line = APT::String::Strip(line); + if (APT::String::Startswith(line, "-----BEGIN PGP PUBLIC KEY BLOCK-----")) + state = 1; + else if (state == 1 && line == "") + state = 2; + else if (state == 2 && line != "" && line[0] != '=' && line[0] != '-') + b64msg += line; + else if (APT::String::Startswith(line, "-----END")) + state = 3; + } + if (state != 3) + goto err; + + if (auto decoded = Base64Decode(b64msg); not decoded.empty()) + if (not mergedFd.Write(decoded.data(), decoded.size())) + local_exit(EINTERNAL); + return; + } + else + { + unsigned char c; + if (not keyFd.Read(&c, sizeof(c))) + goto err; + // Identify the leading byte of an OpenPGP public key packet + // 0x98 -- old-format OpenPGP public key packet, up to 255 octets + // 0x99 -- old-format OpenPGP public key packet, 256-65535 octets + // 0xc6 -- new-format OpenPGP public key packet, any length + if (c != 0x98 && c != 0x99 && c != 0xc6) + goto err; + + if (not mergedFd.Write(&c, sizeof(c))) + local_exit(EINTERNAL); + + if (not CopyFile(keyFd, mergedFd)) + local_exit(EINTERNAL); + + return; + } + err: + apt_warning(std::cerr, statusfd, fd, "The key(s) in the keyring %s are ignored as the file has an unsupported filetype.", k.c_str()); + }; + auto maybeAddKeyring = [&](std::string const &k) + { + if (struct stat st; stat(k.c_str(), &st) != 0 || st.st_size == 0) + return; + dearmorKeyOrCheckFormat(k); + return; + }; + + bool FoundKeyring = false; + for (auto const &k : KeyFiles) { if (unlikely(k.empty())) continue; if (k[0] == '/') { - Args.push_back("--keyring"); - Args.push_back(k.c_str()); + if (Debug) + std::clog << "Trying Signed-By: " << k << std::endl; + + maybeAddKeyring(k); + FoundKeyring = true; } else { Args.push_back("--keyid"); - Args.push_back(k.c_str()); + Args.push_back(k); } } - Args.push_back("verify"); + + if (not FoundKeyring) + { + // Either trusted or trustedparts must exist + _error->PushToStack(); + auto Parts = GetListOfFilesInDir(_config->FindDir("Dir::Etc::TrustedParts"), std::vector{"gpg", "asc"}, true); + if (auto trusted = _config->FindFile("Dir::Etc::Trusted"); not trusted.empty()) + { + apt_warning(std::cerr, statusfd, fd, "Loading %s from deprecated option Dir::Etc::Trusted\n", trusted.c_str()); + Parts.push_back(trusted); + } + if (Parts.empty()) + _error->MergeWithStack(); + else + _error->RevertToStack(); + for (auto &Part : Parts) + { + if (Debug) + std::clog << "Trying TrustedPart: " << Part << std::endl; + maybeAddKeyring(Part); + } + } + + // If we do not give it any keyring, gpgv shouts keydb errors at us + Args.push_back("--keyring"); + Args.push_back(mergedFd.Name()); char statusfdstr[10]; if (statusfd != -1) @@ -193,6 +429,12 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, Args.push_back(statusfdstr); } + if (auto assertPubkeyAlgo = _config->Find("Apt::Key::assert-pubkey-algo"); not assertPubkeyAlgo.empty()) + { + if (std::find(supportedOptions.begin(), supportedOptions.end(), "--assert-pubkey-algo") != supportedOptions.end()) + Args.push_back("--assert-pubkey-algo=" + assertPubkeyAlgo); + } + Configuration::Item const *Opts; Opts = _config->Tree("Acquire::gpgv::Options"); if (Opts != 0) @@ -202,135 +444,39 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, { if (Opts->Value.empty()) continue; - Args.push_back(Opts->Value.c_str()); + Args.push_back(Opts->Value); } } enum { DETACHED, CLEARSIGNED } releaseSignature = (FileGPG != File) ? DETACHED : CLEARSIGNED; - auto sig = make_unique_char(); - auto data = make_unique_char(); - auto conf = make_unique_char(); - - // Dump the configuration so apt-key picks up the correct Dir values - { - { - std::string tmpfile; - strprintf(tmpfile, "%s/apt.conf.XXXXXX", GetTempDir().c_str()); - conf.reset(strdup(tmpfile.c_str())); - } - 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.get()); - if (confFd == -1) { - apt_error(std::cerr, statusfd, fd, "Couldn't create temporary file %s for passing config to apt-key", conf.get()); - local_exit(EINTERNAL); - } - local_exit.files.push_back(conf.get()); - - std::ofstream confStream(conf.get()); - close(confFd); - _config->Dump(confStream); - confStream.close(); - setenv("APT_CONFIG", conf.get(), 1); - } - - // Tell apt-key not to emit warnings - setenv("APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE", "1", 1); if (releaseSignature == DETACHED) { - auto detached = make_unique_FILE(FileGPG, "r"); - if (detached.get() == nullptr) - { - apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' could not be opened", FileGPG.c_str()); - local_exit(EINTERNAL); - } - LineBuffer buf; - bool open_signature = false; - bool found_badcontent = false; - size_t found_signatures = 0; - while (buf.readFrom(detached.get(), FileGPG, true)) - { - if (open_signature) - { - if (buf == "-----END PGP SIGNATURE-----") - open_signature = false; - else if (buf.starts_with("-")) - { - // the used Radix-64 is not using dash for any value, so a valid line can't - // start with one. Header keys could, but no existent one does and seems unlikely. - // Instead it smells a lot like a header the parser didn't recognize. - apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains unexpected line starting with a dash", FileGPG.c_str()); - local_exit(112); - } - } - else //if (not open_signature) - { - if (buf == "-----BEGIN PGP SIGNATURE-----") - { - open_signature = true; - ++found_signatures; - if (found_badcontent) - break; - } - else - { - found_badcontent = true; - if (found_signatures != 0) - break; - } - } - } - if (found_signatures == 0 && statusfd != -1) - { - auto const errtag = "[GNUPG:] NODATA\n"; - FileFd::Write(fd[1], errtag, strlen(errtag)); - // guess if this is a binary signature, we never officially supported them, - // but silently accepted them via passing them unchecked to gpgv - if (found_badcontent) - { - rewind(detached.get()); - auto ptag = fgetc(detached.get()); - // §4.2 says that the first bit is always set and gpg seems to generate - // only old format which is indicated by the second bit not set - if (ptag != EOF && (ptag & 0x80) != 0 && (ptag & 0x40) == 0) - { - apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' is in unsupported binary format", FileGPG.c_str()); - local_exit(112); - } - } - // This is not an attack attempt but a file even gpgv would complain about - // likely the result of a paywall which is covered by the gpgv method - local_exit(113); - } - else if (found_badcontent) - { - apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains lines not belonging to a signature", FileGPG.c_str()); - local_exit(112); - } - if (open_signature) + // Collect the error and return it via apt_error() + _error->PushToStack(); + auto exitCode = VerifyDetachedSignatureFile(FileGPG, fd, statusfd); + std::string msg; + _error->PopMessage(msg); + _error->RevertToStack(); + if (exitCode != 0) { - apt_error(std::cerr, statusfd, fd, "Detached signature file '%s' contains unclosed signatures", FileGPG.c_str()); - local_exit(112); + if (not msg.empty()) + apt_error(std::cerr, statusfd, fd, "%s", msg.c_str()); + local_exit(exitCode); } - - Args.push_back(FileGPG.c_str()); - Args.push_back(File.c_str()); + Args.push_back(FileGPG); + Args.push_back(File); } else // clear-signed file { FileFd signature; if (GetTempFile("apt.sig", false, &signature) == nullptr) local_exit(EINTERNAL); - sig.reset(strdup(signature.Name().c_str())); - local_exit.files.push_back(sig.get()); + local_exit.files.push_back(signature.Name()); FileFd message; if (GetTempFile("apt.data", false, &message) == nullptr) local_exit(EINTERNAL); - data.reset(strdup(message.Name().c_str())); - local_exit.files.push_back(data.get()); + local_exit.files.push_back(message.Name()); if (signature.Failed() || message.Failed() || not SplitClearSignedFile(File, &message, nullptr, &signature)) @@ -338,17 +484,15 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, apt_error(std::cerr, statusfd, fd, "Splitting up %s into data and signature failed", File.c_str()); local_exit(112); } - Args.push_back(sig.get()); - Args.push_back(data.get()); + Args.push_back(signature.Name()); + Args.push_back(message.Name()); } - Args.push_back(NULL); - if (Debug) { std::clog << "Preparing to exec: "; - for (std::vector::const_iterator a = Args.begin(); *a != NULL; ++a) - std::clog << " " << *a; + for (auto const &a : Args) + std::clog << " " << a; std::clog << std::endl; } @@ -369,20 +513,27 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, putenv((char *)"LC_MESSAGES="); } + // Translate the argument list to a C array. This should happen before + // the fork so we don't allocate money between fork() and execvp(). + std::vector cArgs; + cArgs.reserve(Args.size() + 1); + for (auto const &arg : Args) + cArgs.push_back(arg.c_str()); + cArgs.push_back(nullptr); // 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()); + apt_error(std::cerr, statusfd, fd, "Fork failed for %s to check %s", Args[0].c_str(), 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()); + execvp(cArgs[0], (char **) &cArgs[0]); + apt_error(std::cerr, statusfd, fd, "Couldn't execute %s to check %s", Args[0].c_str(), File.c_str()); local_exit(EINTERNAL); } @@ -392,14 +543,14 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, { if (errno == EINTR) continue; - apt_error(std::cerr, statusfd, fd, _("Waited for %s but it wasn't there"), "apt-key"); + apt_error(std::cerr, statusfd, fd, _("Waited for %s but it wasn't there"), gpgv.c_str()); local_exit(EINTERNAL); } // check if it exit'ed normally … if (not WIFEXITED(Status)) { - apt_error(std::cerr, statusfd, fd, _("Sub-process %s exited unexpectedly"), "apt-key"); + apt_error(std::cerr, statusfd, fd, _("Sub-process %s exited unexpectedly"), gpgv.c_str()); local_exit(EINTERNAL); } @@ -407,7 +558,7 @@ void ExecGPGV(std::string const &File, std::string const &FileGPG, 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)); + apt_error(std::cerr, -1, fd, _("Sub-process %s returned an error code (%u)"), gpgv.c_str(), WEXITSTATUS(Status)); local_exit(WEXITSTATUS(Status)); } @@ -456,7 +607,7 @@ bool SplitClearSignedFile(std::string const &InFile, FileFd * const ContentFile, // but we assume that there will never be a header key starting with a dash return _error->Error("Clearsigned file '%s' contains unexpected line starting with a dash (%s)", InFile.c_str(), "armor"); if (ContentHeader != nullptr && buf.starts_with("Hash: ")) - ContentHeader->push_back(buf.view().to_string()); + ContentHeader->emplace_back(buf.view()); } // the message itself @@ -566,3 +717,35 @@ bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &Me return not MessageFile.Failed(); } /*}}}*/ +bool IsAssertedPubKeyAlgo(std::string const &pkstr, std::string const &option) /*{{{*/ +{ + auto fullAss = APT::String::Startswith(option, "APT::Key") ? _config->Find(option) : option; + for (auto &ass : VectorizeString(fullAss, ',')) + { + if (ass == pkstr) + return true; + // We only implement >= for rsa + if (APT::String::Startswith(ass, ">=rsa")) + { + if (not APT::String::Startswith(pkstr, "rsa")) + continue; + if (not std::all_of(ass.begin() + 5, ass.end(), isdigit)) + return _error->Error("Unrecognized public key specification '%s' in option %s: expect only digits after >=rsa", ass.c_str(), option.c_str()); + + int assBits = std::stoi(ass.substr(5)); + int pkBits = std::stoi(pkstr.substr(3)); + + if (pkBits >= assBits) + return true; + + continue; + } + if (ass.empty()) + return _error->Error("Empty item in public key assertion string option %s", option.c_str()); + if (not std::all_of(ass.begin(), ass.end(), [](char c) + { return isalpha(c) || isdigit(c); })) + return _error->Error("Unrecognized public key specification '%s' in option %s", ass.c_str(), option.c_str()); + } + return false; +} + /*}}}*/ diff --git a/apt-pkg/contrib/gpgv.h b/apt-pkg/contrib/gpgv.h index 1cabed4..f4f0a2a 100644 --- a/apt-pkg/contrib/gpgv.h +++ b/apt-pkg/contrib/gpgv.h @@ -11,12 +11,20 @@ #include +#include #include #include class FileFd; +#ifdef APT_COMPILING_APT +namespace APT::Internal +{ +APT_PUBLIC std::pair> FindGPGV(bool Debug); +} +#endif + /** \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 @@ -39,9 +47,11 @@ class FileFd; * @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 */ -APT_PUBLIC 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, +[[noreturn]] APT_PUBLIC void ExecGPGV(std::string const &File, std::string const &FileSig, + int const &statusfd, int fd[2], std::vector const &KeyFiles); +[[noreturn]] APT_PUBLIC void ExecGPGV(std::string const &File, std::string const &FileSig, + int const &statusfd, int fd[2], std::string const &Key = ""); +[[noreturn]] inline void ExecGPGV(std::string const &File, std::string const &FileSig, int const &statusfd = -1) { int fd[2]; ExecGPGV(File, FileSig, statusfd, fd); @@ -86,4 +96,14 @@ APT_PUBLIC bool SplitClearSignedFile(std::string const &InFile, FileFd * const C */ APT_PUBLIC bool OpenMaybeClearSignedFile(std::string const &ClearSignedFileName, FileFd &MessageFile); +/** \brief verifiy a detached signature file for correctness. + * + * We want to expect unavoided content. This may set an error when returning false + * but it might not necessarily do so (in case of empty signature file). + * + * @return true if the detached signature files contains ASCII-armored signatures, otherwise false + */ +APT_PUBLIC bool VerifyDetachedSignatureFile(std::string const &DetachedSignatureFileName); + +APT_PUBLIC bool IsAssertedPubKeyAlgo(std::string const &pkstr, std::string const &option); #endif diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc index 7ff5f9e..9c0ce40 100644 --- a/apt-pkg/contrib/hashes.cc +++ b/apt-pkg/contrib/hashes.cc @@ -3,10 +3,10 @@ /* ###################################################################### 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 /*{{{*/ @@ -21,28 +21,18 @@ #include #include +#include #include #include #include #include +#include #include #include -#include +#include /*}}}*/ -static const constexpr struct HashAlgo -{ - const char *name; - int gcryAlgo; - Hashes::SupportedHashes ourAlgo; -} Algorithms[] = { - {"MD5Sum", GCRY_MD_MD5, Hashes::MD5SUM}, - {"SHA1", GCRY_MD_SHA1, Hashes::SHA1SUM}, - {"SHA256", GCRY_MD_SHA256, Hashes::SHA256SUM}, - {"SHA512", GCRY_MD_SHA512, Hashes::SHA512SUM}, -}; - const char * HashString::_SupportedHashes[] = { "SHA512", "SHA256", "SHA1", "MD5Sum", "Checksum-FileSize", NULL @@ -65,7 +55,7 @@ HashString::HashString(std::string Type, std::string Hash) : Type(Type), Hash(Ha { } -HashString::HashString(std::string StringedHash) /*{{{*/ +HashString::HashString(std::string_view StringedHash) /*{{{*/ { if (StringedHash.find(":") == std::string::npos) { @@ -79,7 +69,7 @@ HashString::HashString(std::string StringedHash) /*{{{*/ std::clog << "HashString(string): invalid StringedHash " << StringedHash << std::endl; return; } - std::string::size_type pos = StringedHash.find(":"); + auto pos = StringedHash.find(":"); Type = StringedHash.substr(0,pos); Hash = StringedHash.substr(pos+1, StringedHash.size() - pos); @@ -306,58 +296,114 @@ bool HashStringList::operator!=(HashStringList const &other) const return !(*this == other); } /*}}}*/ +static APT_PURE std::string HexDigest(std::basic_string_view const &Sum) +{ + char Conv[16] = + {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', + 'c', 'd', 'e', 'f'}; + std::string Result(Sum.size() * 2, 0); + + // Convert each char into two letters + size_t J = 0; + size_t I = 0; + for (; I != (Sum.size()) * 2; J++, I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + return Result; +}; // PrivateHashes /*{{{*/ -class PrivateHashes { -public: - unsigned long long FileSize; - gcry_md_hd_t hd; +class PrivateHashes +{ + public: + unsigned long long FileSize{0}; - void maybeInit() - { + private: + std::array contexts{}; - // Yikes, we got to initialize libgcrypt, or we get warnings. But we - // abstract away libgcrypt in Hashes from our users - they are not - // supposed to know what the hashing backend is, so we can't force - // them to init themselves as libgcrypt folks want us to. So this - // only leaves us with this option... - if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) + public: + struct HashAlgo + { + size_t index; + const char *name; + const EVP_MD *(*evpLink)(void); + Hashes::SupportedHashes ourAlgo; + }; + + static constexpr std::array Algorithms{ + HashAlgo{0, "MD5Sum", EVP_md5, Hashes::MD5SUM}, + HashAlgo{1, "SHA1", EVP_sha1, Hashes::SHA1SUM}, + HashAlgo{2, "SHA256", EVP_sha256, Hashes::SHA256SUM}, + HashAlgo{3, "SHA512", EVP_sha512, Hashes::SHA512SUM}, + }; + + bool Write(unsigned char const *Data, size_t Size) + { + for (auto &context : contexts) { - if (!gcry_check_version(nullptr)) - { - fprintf(stderr, "libgcrypt is too old (need %s, have %s)\n", - "nullptr", gcry_check_version(NULL)); - exit(2); - } - - gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); + if (context) + EVP_DigestUpdate(context, Data, Size); } + return true; + } + + std::string HexDigest(HashAlgo const &algo) + { + auto Size = EVP_MD_size(algo.evpLink()); + unsigned char Sum[Size]; + + // We need to work on a copy, as we update the hash after creating a digest... + auto tmpContext = EVP_MD_CTX_create(); + EVP_MD_CTX_copy(tmpContext, contexts[algo.index]); + EVP_DigestFinal_ex(tmpContext, Sum, nullptr); + EVP_MD_CTX_destroy(tmpContext); + + return ::HexDigest(std::basic_string_view(Sum, Size)); + } + + bool Enable(HashAlgo const &algo) + { + contexts[algo.index] = EVP_MD_CTX_new(); + if (contexts[algo.index] == nullptr) + return false; + if (EVP_DigestInit_ex(contexts[algo.index], algo.evpLink(), NULL)) + return true; + EVP_MD_CTX_destroy(contexts[algo.index]); + contexts[algo.index] = nullptr; + return false; + } + bool IsEnabled(HashAlgo const &algo) + { + return contexts[algo.index] != nullptr; } - explicit PrivateHashes(unsigned int const CalcHashes) : FileSize(0) + explicit PrivateHashes() {} + ~PrivateHashes() + { + for (auto ctx : contexts) + if (ctx != nullptr) + EVP_MD_CTX_free(ctx); + } + + explicit PrivateHashes(unsigned int const CalcHashes) : PrivateHashes() { - maybeInit(); - gcry_md_open(&hd, 0, 0); for (auto & Algo : Algorithms) { if ((CalcHashes & Algo.ourAlgo) == Algo.ourAlgo) - gcry_md_enable(hd, Algo.gcryAlgo); + Enable(Algo); } } - explicit PrivateHashes(HashStringList const &Hashes) : FileSize(0) { - maybeInit(); - gcry_md_open(&hd, 0, 0); + explicit PrivateHashes(HashStringList const &Hashes) : PrivateHashes() + { for (auto & Algo : Algorithms) { if (not Hashes.usable() || Hashes.find(Algo.name) != NULL) - gcry_md_enable(hd, Algo.gcryAlgo); + Enable(Algo); } } - ~PrivateHashes() - { - gcry_md_close(hd); - } }; /*}}}*/ // Hashes::Add* - Add the contents of data or FD /*{{{*/ @@ -365,40 +411,41 @@ bool Hashes::Add(const unsigned char * const Data, unsigned long long const Size { if (Size != 0) { - gcry_md_write(d->hd, Data, Size); + if (not d->Write(Data, Size)) + return false; d->FileSize += Size; } return true; } bool Hashes::AddFD(int const Fd,unsigned long long Size) { - unsigned char Buf[APT_BUFFER_SIZE]; + std::array Buf; bool const ToEOF = (Size == UntilEOF); while (Size != 0 || ToEOF) { - decltype(Size) n = sizeof(Buf); + decltype(Size) n = Buf.size(); if (!ToEOF) n = std::min(Size, n); - ssize_t const Res = read(Fd,Buf,n); + ssize_t const Res = read(Fd,Buf.data(),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) + if (Add(Buf.data(), Res) == false) return false; } return true; } bool Hashes::AddFD(FileFd &Fd,unsigned long long Size) { - unsigned char Buf[APT_BUFFER_SIZE]; + std::array Buf; bool const ToEOF = (Size == 0); while (Size != 0 || ToEOF) { - decltype(Size) n = sizeof(Buf); + decltype(Size) n = Buf.size(); if (!ToEOF) n = std::min(Size, n); decltype(Size) a = 0; - if (Fd.Read(Buf, n, &a) == false) // error + if (Fd.Read(Buf.data(), n, &a) == false) // error return false; if (ToEOF == false) { @@ -408,43 +455,19 @@ bool Hashes::AddFD(FileFd &Fd,unsigned long long Size) else if (a == 0) // EOF break; Size -= a; - if (Add(Buf, a) == false) + if (Add(Buf.data(), a) == false) return false; } return true; } /*}}}*/ -static APT_PURE std::string HexDigest(gcry_md_hd_t hd, int algo) -{ - char Conv[16] = - {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', - 'c', 'd', 'e', 'f'}; - - auto Size = gcry_md_get_algo_dlen(algo); - assert(Size <= 512/8); - char Result[((Size)*2) + 1]; - Result[(Size)*2] = 0; - - auto Sum = gcry_md_read(hd, algo); - - // Convert each char into two letters - size_t J = 0; - size_t I = 0; - for (; I != (Size)*2; J++, I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - return std::string(Result); -}; - HashStringList Hashes::GetHashStringList() { HashStringList hashes; - for (auto & Algo : Algorithms) - if (gcry_md_is_enabled(d->hd, Algo.gcryAlgo)) - hashes.push_back(HashString(Algo.name, HexDigest(d->hd, Algo.gcryAlgo))); + for (auto &Algo : d->Algorithms) + if (d->IsEnabled(Algo)) + hashes.push_back(HashString(Algo.name, d->HexDigest(Algo))); hashes.FileSize(d->FileSize); return hashes; @@ -452,9 +475,9 @@ HashStringList Hashes::GetHashStringList() HashString Hashes::GetHashString(SupportedHashes hash) { - for (auto & Algo : Algorithms) + for (auto &Algo : d->Algorithms) if (hash == Algo.ourAlgo) - return HashString(Algo.name, HexDigest(d->hd, Algo.gcryAlgo)); + return HashString(Algo.name, d->HexDigest(Algo)); abort(); } diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index e259b4e..dc9cbf0 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -3,10 +3,10 @@ /* ###################################################################### 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 @@ -15,12 +15,12 @@ #include #ifdef APT_COMPILING_APT -#include #include #endif #include #include +#include #include @@ -41,7 +41,7 @@ class APT_PUBLIC HashString public: HashString(std::string Type, std::string Hash); - explicit HashString(std::string StringedHashString); // init from str as "type:hash" + explicit HashString(std::string_view StringedHashString); // init from str as "type:hash" HashString(); // get hash type used @@ -66,9 +66,9 @@ class APT_PUBLIC HashString static APT_PURE const char** SupportedHashes(); #ifdef APT_COMPILING_APT struct APT_HIDDEN HashSupportInfo { - APT::StringView name; + std::string_view name; pkgTagSection::Key namekey; - APT::StringView chksumsname; + std::string_view chksumsname; pkgTagSection::Key chksumskey; }; APT_HIDDEN static std::vector SupportedHashesInfo(); diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h index c08cd24..08e7aeb 100644 --- a/apt-pkg/contrib/macros.h +++ b/apt-pkg/contrib/macros.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0+ // Description /*{{{*/ /* ###################################################################### - + Macros Header - Various useful macro definitions This file had this historic note, but now includes further changes @@ -10,23 +10,13 @@ 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 -/* Useful count macro, use on an array of things and it will return the - number of items in the array */ -#define APT_ARRAY_SIZE(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 @@ -46,30 +36,20 @@ #endif #if APT_GCC_VERSION >= 0x0300 - #define APT_DEPRECATED __attribute__ ((deprecated)) - #define APT_DEPRECATED_MSG(X) __attribute__ ((deprecated(X))) // __attribute__((const)) is too dangerous for us, we end up using it wrongly #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)); - #define APT_UNUSED __attribute__((unused)) #else - #define APT_DEPRECATED - #define APT_DEPRECATED_MSG #define APT_PURE - #define APT_NORETURN #define APT_PRINTF(n) #define APT_WEAK - #define APT_UNUSED #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 @@ -98,21 +78,9 @@ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") #define APT_IGNORE_DEPRECATED_POP \ _Pragma("GCC diagnostic pop") - /* gcc has various problems with this shortcut, so prefer the long form */ - #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 @@ -120,7 +88,7 @@ // 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 6 +#define APT_PKG_MAJOR 7 #define APT_PKG_MINOR 0 #define APT_PKG_RELEASE 0 #define APT_PKG_ABI ((APT_PKG_MAJOR * 100) + APT_PKG_MINOR) @@ -128,4 +96,18 @@ /* Should be a multiple of the common page size (4096) */ static constexpr unsigned long long APT_BUFFER_SIZE = 64 * 1024; +template +struct AptScopeWrapper { + F func; + ~AptScopeWrapper() { func(); } +}; +template +AptScopeWrapper(F) -> AptScopeWrapper; +#define APT_PASTE2(a, b) a##b +#define APT_PASTE(a, b) APT_PASTE2(a, b) +#define DEFER(lambda) AptScopeWrapper APT_PASTE(defer, __LINE__){lambda}; + + +#ifndef APT_COMPILING_APT +#endif #endif diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index a2c4332..5f440a7 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -153,13 +153,15 @@ void OpTextProgress::Done() { if (NoUpdate == false && OldOp.empty() == false) { - char S[300]; + char S[300] = {}; if (_error->PendingError() == true) snprintf(S,sizeof(S),_("%c%s... Error!"),'\r',OldOp.c_str()); - else + else if (not _config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30)) snprintf(S,sizeof(S),_("%c%s... Done"),'\r',OldOp.c_str()); Write(S); - cout << endl; + // FIXME: apt-cdrom relies on this end of line being printed + if (_error->PendingError() || not _config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30)) + cout << endl; OldOp = string(); } @@ -200,7 +202,8 @@ void OpTextProgress::Update() { snprintf(S,sizeof(S),"\r%s",OldOp.c_str()); Write(S); - cout << endl; + if (_config->FindB("APT::Internal::OpProgress::EraseLines", _config->FindI("APT::Output-Version") >= 30)) + cout << endl; } // Print the spinner. Absolute progress shows us a time progress. diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h index d6a698a..7721530 100644 --- a/apt-pkg/contrib/progress.h +++ b/apt-pkg/contrib/progress.h @@ -71,12 +71,12 @@ class APT_PUBLIC OpTextProgress : public OpProgress bool NoUpdate; bool NoDisplay; unsigned long LastLen; - virtual void Update() APT_OVERRIDE; + void Update() override; void Write(const char *S); public: - virtual void Done() APT_OVERRIDE; + void Done() override; explicit OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate), NoDisplay(false), LastLen(0) {}; diff --git a/apt-pkg/contrib/proxy.cc b/apt-pkg/contrib/proxy.cc index a99f44f..4780f9b 100644 --- a/apt-pkg/contrib/proxy.cc +++ b/apt-pkg/contrib/proxy.cc @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -22,6 +23,16 @@ #include "proxy.h" /*}}}*/ +bool CanURIBeAccessedViaProxy(URI const &URL) /*{{{*/ +{ + // for some methods a proxy doesn't make sense, so we don't have to fork + if (URL.Host.empty() || + APT::String::Startswith(URL.Access, "mirror+") || URL.Access.find("+mirror+") != std::string::npos || APT::String::Endswith(URL.Access, "+mirror")) + return false; + std::array const noproxy{"file", "copy", "store", "gpgv", "rred", "cdrom", "mirror"}; + return std::find(noproxy.begin(), noproxy.end(), URL.Access) == noproxy.end(); +} + /*}}}*/ // AutoDetectProxy - auto detect proxy /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -29,16 +40,19 @@ static std::vector CompatibleProxies(URI const &URL) { if (URL.Access == "http" || URL.Access == "https") return {"http", "https", "socks5h"}; - return {URL.Access}; + if (URL.Access == "tor" || URL.Access == "tor+http" || URL.Access == "tor+https") + return {"socks5h"}; + if (URL.Access == "ftp") + return {"ftp"}; + return {}; } - bool AutoDetectProxy(URI &URL) { - // we support both http/https debug options - bool Debug = _config->FindB("Debug::Acquire::"+URL.Access,false); + if (not CanURIBeAccessedViaProxy(URL)) + return true; // the user already explicitly set a proxy for this host - if(_config->Find("Acquire::"+URL.Access+"::proxy::"+URL.Host, "") != "") + if (not _config->Find("Acquire::" + URL.Access + "::proxy::" + URL.Host, "").empty()) return true; // option is "Acquire::http::Proxy-Auto-Detect" but we allow the old @@ -49,6 +63,7 @@ bool AutoDetectProxy(URI &URL) if (AutoDetectProxyCmd.empty()) return true; + bool const Debug = _config->FindB("Debug::Acquire::" + URL.Access, false); if (Debug) std::clog << "Using auto proxy detect command: " << AutoDetectProxyCmd << std::endl; @@ -73,26 +88,34 @@ bool AutoDetectProxy(URI &URL) // and apt will use the generic proxy settings if (goodread == false) return true; - auto const cleanedbuf = _strstrip(buf); + std::string_view const cleanedbuf = _strstrip(buf); // We warn about this as the implementor probably meant to use DIRECT instead - if (cleanedbuf[0] == '\0') + if (cleanedbuf.empty()) { _error->Warning("ProxyAutoDetect command returned an empty line"); return true; } if (Debug) - std::clog << "auto detect command returned: '" << cleanedbuf << "'" << std::endl; + std::clog << "auto detect command returned: '" << cleanedbuf.data() << "'" << std::endl; - auto compatibleTypes = CompatibleProxies(URL); - bool compatible = strcmp(cleanedbuf, "DIRECT") == 0 || - compatibleTypes.end() != std::find_if(compatibleTypes.begin(), - compatibleTypes.end(), [cleanedbuf](std::string &compat) { - return strstr(cleanedbuf, compat.c_str()) == cleanedbuf; - }); + bool compatible = true; + if (cleanedbuf != "DIRECT") + { + if (auto const compatibleTypes = CompatibleProxies(URL); not compatibleTypes.empty()) + compatible = std::any_of(compatibleTypes.begin(), compatibleTypes.end(), + [cleanedbuf](std::string const &compat) + { + return cleanedbuf.substr(0, compat.size()) == compat; + }); + } + else if (URL.Access == "tor" || URL.Access == "tor+http" || URL.Access == "tor+https") + compatible = false; // Accepting DIRECT would silently disable tor if (compatible) - _config->Set("Acquire::"+URL.Access+"::proxy::"+URL.Host, cleanedbuf); + _config->Set("Acquire::"+URL.Access+"::proxy::"+URL.Host, cleanedbuf.data()); + else + _error->Warning("ProxyAutoDetect command returned incompatible proxy '%s' for access type %s", cleanedbuf.data(), URL.Access.c_str()); return true; } diff --git a/apt-pkg/contrib/proxy.h b/apt-pkg/contrib/proxy.h index f6d70ea..2a4c19f 100644 --- a/apt-pkg/contrib/proxy.h +++ b/apt-pkg/contrib/proxy.h @@ -9,8 +9,10 @@ #ifndef PKGLIB_PROXY_H #define PKGLIB_PROXY_H +#include + class URI; APT_PUBLIC bool AutoDetectProxy(URI &URL); - +APT_HIDDEN bool CanURIBeAccessedViaProxy(URI const &URL); #endif diff --git a/apt-pkg/contrib/srvrec.cc b/apt-pkg/contrib/srvrec.cc index 4a68f35..3ddb95a 100644 --- a/apt-pkg/contrib/srvrec.cc +++ b/apt-pkg/contrib/srvrec.cc @@ -16,6 +16,7 @@ #include #include +#include #include #include #include @@ -47,7 +48,7 @@ bool GetSrvRecords(std::string host, int port, std::vector &Result) int res; struct servent s_ent_buf; struct servent *s_ent = nullptr; - std::vector buf(1024); + std::array buf; res = getservbyport_r(htons(port), "tcp", &s_ent_buf, buf.data(), buf.size(), &s_ent); if (res != 0 || s_ent == nullptr) diff --git a/apt-pkg/contrib/string_view.h b/apt-pkg/contrib/string_view.h deleted file mode 100644 index 71f47f5..0000000 --- a/apt-pkg/contrib/string_view.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Basic implementation of string_view - * - * (C) 2015 Julian Andres Klode - * - * 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) -#define APT_STRINGVIEW_H -#include -#include -#include - -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 StringView { - const char *data_; - size_t size_; - -public: - static constexpr size_t npos = static_cast(-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()) {} - - /* Modifiers */ - void remove_prefix(size_t n) { data_ += n; size_ -= n; } - void remove_suffix(size_t n) { size_ -= n; } - void clear() { size_ = 0; } - - /* 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(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(memrchr(data_, c, size_)); - - if (found == NULL) - return npos; - - return found - data_; - } - - size_t find(APT::StringView const needle) const { - if (needle.empty()) - return npos; - if (needle.length() == 1) - return find(*needle.data()); - size_t found = 0; - while ((found = find(*needle.data(), found)) != npos) { - if (compare(found, needle.length(), needle) == 0) - return found; - ++found; - } - return found; - } - size_t find(APT::StringView const needle, size_t pos) const { - if (pos == 0) - return find(needle); - size_t const found = substr(pos).find(needle); - if (found == npos) - return npos; - return pos + found; - } - - /* 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()); -} - -static constexpr inline APT::StringView operator""_sv(const char *data, size_t size) -{ - return APT::StringView(data, size); -} -} - -inline bool operator ==(const char *other, APT::StringView that); -inline bool operator ==(const char *other, APT::StringView that) { return that.operator==(other); } -inline bool operator ==(std::string const &other, APT::StringView that); -inline bool operator ==(std::string const &other, APT::StringView that) { return that.operator==(other); } - -#endif diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index 3689dc1..651c985 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -56,43 +57,30 @@ using namespace std; // --------------------------------------------------------------------- namespace APT { namespace String { -std::string Strip(const std::string &str) +std::string_view Strip(std::string_view 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); + while (!str.empty() && isspace(str[0])) + str.remove_prefix(1); + while (!str.empty() && isspace(str.back())) + str.remove_suffix(1); + return str; } -bool Endswith(const std::string &s, const std::string &end) +bool Endswith(const std::string_view &s, const std::string_view &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) +bool Startswith(const std::string_view &s, const std::string_view &start) { if (start.size() > s.size()) return false; return (s.compare(0, start.size(), start) == 0); } -std::string Join(std::vector list, const std::string &sep) +std::string Join(std::vector list, const std::string_view &sep) { std::ostringstream oss; for (auto it = list.begin(); it != list.end(); it++) @@ -104,7 +92,7 @@ std::string Join(std::vector list, const std::string &sep) } // Returns string display length honoring multi-byte characters -size_t DisplayLength(StringView str) +size_t DisplayLength(string_view str) { size_t len = 0; @@ -248,41 +236,6 @@ char *_strrstrip(char *String) 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 @@ -503,10 +456,10 @@ string TimeToStr(unsigned long Sec) // 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) +string SubstVar(const string_view &Str,const string_view &Subst,const string_view &Contents) { if (Subst.empty() == true) - return Str; + return std::string{Str}; string::size_type Pos = 0; string::size_type OldPos = 0; @@ -523,7 +476,7 @@ string SubstVar(const string &Str,const string &Subst,const string &Contents) } if (OldPos == 0) - return Str; + return std::string{Str}; if (OldPos >= Str.length()) return Temp; @@ -624,6 +577,73 @@ string Base64Encode(const string &S) return Final; } + /*}}}*/ +// Base64Decode - Base64 decoding routine for short strings /*{{{*/ +// --------------------------------------------------------------------- +// Taken from mjg59's dpkg code: https://lists.debian.org/debian-dpkg/2018/05/msg00002.html +std::string Base64Decode(const std::string_view in) +{ + constexpr std::array mime_base64_rank{ + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255, + 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, + 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}; + std::string out; + unsigned char rank; + unsigned char last[2]; + unsigned int v; + int i; + + /* convert 4 base64 bytes to 3 normal bytes */ + v = 0; + i = 0; + + last[0] = last[1] = 0; + + /* we use the sign in the state to determine if we got a padding character + in the previous sequence */ + if (i < 0) + { + i = -i; + last[0] = '='; + } + + for (const unsigned char c : in) + { + rank = mime_base64_rank[c]; + if (rank != 0xff) + { + last[1] = last[0]; + last[0] = c; + v = (v << 6) | rank; + i++; + if (i == 4) + { + out += v >> 16; + if (last[1] != '=') + out += v >> 8; + if (last[0] != '=') + out += v; + i = 0; + } + } + } + + return out; +} + /*}}}*/ // stringcmp - Arbitrary string compare /*{{{*/ // --------------------------------------------------------------------- @@ -863,7 +883,7 @@ string TimeRFC1123(time_t Date, bool const NumericTimezone) auto const posix = std::locale::classic(); std::ostringstream datestr; datestr.imbue(posix); - APT::StringView const fmt("%a, %d %b %Y %H:%M:%S"); + std::string_view const fmt("%a, %d %b %Y %H:%M:%S"); std::use_facet>(posix).put( std::ostreambuf_iterator(datestr), datestr, ' ', &Conv, fmt.data(), fmt.data() + fmt.size()); @@ -1129,20 +1149,6 @@ bool RFC1123StrToTime(std::string const &str,time_t &time) 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; -} - /*}}}*/ // StrToNum - Convert a fixed length string to a number /*{{{*/ // --------------------------------------------------------------------- /* This is used in decoding the crazy fixed length string headers in @@ -1240,7 +1246,7 @@ static int HexDigit(int c) // 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 APT::StringView Str,unsigned char *Num,unsigned int Length) +bool Hex2Num(const std::string_view Str,unsigned char *Num,unsigned int Length) { if (Str.length() != Length*2) return false; @@ -1309,13 +1315,13 @@ bool TokSplitString(char Tok,char *Input,char **List, /* 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 VectorizeString(string const &haystack, char const &split) +vector VectorizeString(string_view const &haystack, char const &split) { vector exploded; if (haystack.empty() == true) return exploded; - string::const_iterator start = haystack.begin(); - string::const_iterator end = start; + auto start = haystack.begin(); + auto end = start; do { for (; end != haystack.end() && *end != split; ++end); exploded.push_back(string(start, end)); @@ -1328,7 +1334,7 @@ vector VectorizeString(string const &haystack, char const &split) // --------------------------------------------------------------------- /* See header for details. */ -vector StringSplit(std::string const &s, std::string const &sep, +vector StringSplit(std::string_view const &s, std::string_view const &sep, unsigned int maxsplit) { vector split; @@ -1342,8 +1348,8 @@ vector StringSplit(std::string const &s, std::string const &sep, while (pos != string::npos) { pos = s.find(sep, start); - split.push_back(s.substr(start, pos-start)); - + split.emplace_back(s.substr(start, pos-start)); + // if maxsplit is reached, the remaining string is the last item if(split.size() >= maxsplit) { @@ -1421,7 +1427,7 @@ unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin, and to allow reordering of parameters */ bool iovprintf(std::ostream &out, const char *format, va_list &args, ssize_t &size) { - auto S = std::unique_ptr{static_cast(malloc(size)), &free}; + auto S = std::unique_ptr{static_cast(malloc(size))}; ssize_t const n = vsnprintf(S.get(), size, format, args); if (n > -1 && n < size) { out << S.get(); diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h index 7cf9b45..79b7c8b 100644 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@ -4,41 +4,50 @@ /* ###################################################################### String Util - These are some useful string functions - + _strstrip is a function to remove whitespace from the front and end of a string. - + This file had this historic note, but now includes further changes under the GPL-2.0+: This source is placed in the Public Domain, do with it what you will - It was originally written by Jason Gunthorpe - + It was originally written by Jason Gunthorpe + ##################################################################### */ /*}}}*/ #ifndef STRUTL_H #define STRUTL_H -#include #include #include #include #include #include #include +#include #include #include "macros.h" +namespace { + struct FreeDeleter { + void operator()(void *p) { + free(p); + } + }; +} + + namespace APT { namespace String { - APT_PUBLIC std::string Strip(const std::string &s); - APT_PUBLIC bool Endswith(const std::string &s, const std::string &ending); - APT_PUBLIC bool Startswith(const std::string &s, const std::string &starting); - APT_PUBLIC std::string Join(std::vector list, const std::string &sep); + APT_PUBLIC std::string_view Strip(std::string_view s); + APT_PUBLIC bool Endswith(const std::string_view &s, const std::string_view &ending); + APT_PUBLIC bool Startswith(const std::string_view &s, const std::string_view &starting); + APT_PUBLIC std::string Join(std::vector list, const std::string_view &sep); // Returns string display length honoring multi-byte characters - APT_PUBLIC size_t DisplayLength(StringView str); + APT_PUBLIC size_t DisplayLength(std::string_view str); } } @@ -46,7 +55,6 @@ namespace APT { APT_PUBLIC bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest); APT_PUBLIC char *_strstrip(char *String); APT_PUBLIC char *_strrstrip(char *String); // right strip only -APT_DEPRECATED_MSG("Use SubstVar to avoid memory headaches") APT_PUBLIC char *_strtabexpand(char *String,size_t Len); APT_PUBLIC bool ParseQuoteWord(const char *&String,std::string &Res); APT_PUBLIC bool ParseCWord(const char *&String,std::string &Res); APT_PUBLIC std::string QuoteString(const std::string &Str,const char *Bad); @@ -59,6 +67,7 @@ APT_PUBLIC std::string DeEscapeString(const std::string &input); APT_PUBLIC std::string SizeToStr(double Bytes); APT_PUBLIC std::string TimeToStr(unsigned long Sec); APT_PUBLIC std::string Base64Encode(const std::string &Str); +APT_PUBLIC std::string Base64Decode(const std::string_view in); APT_PUBLIC std::string OutputInDepth(const unsigned long Depth, const char* Separator=" "); APT_PUBLIC std::string URItoFileName(const std::string &URI); /** returns a datetime string as needed by HTTP/1.1 and Debian files. @@ -86,8 +95,7 @@ APT_PUBLIC std::string TimeRFC1123(time_t Date, bool const NumericTimezone); * parsing is successful, undefined otherwise. * @return \b true if parsing was successful, otherwise \b false. */ -APT_PUBLIC bool RFC1123StrToTime(const std::string &str,time_t &time) APT_MUSTCHECK; -APT_PUBLIC bool FTPMDTMStrToTime(const char* const str,time_t &time) APT_MUSTCHECK; +[[nodiscard]] APT_PUBLIC bool RFC1123StrToTime(const std::string &str,time_t &time); APT_PUBLIC std::string LookupTag(const std::string &Message,const char *Tag,const char *Default = 0); APT_PUBLIC int StringToBool(const std::string &Text,int Default = -1); APT_PUBLIC bool ReadMessages(int Fd, std::vector &List); @@ -95,13 +103,13 @@ APT_PUBLIC bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigne APT_PUBLIC bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base = 0); APT_PUBLIC bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len); APT_PUBLIC bool Base256ToNum(const char *Str,unsigned long long &Res,unsigned int Len); -APT_PUBLIC bool Hex2Num(const APT::StringView Str,unsigned char *Num,unsigned int Length); +APT_PUBLIC bool Hex2Num(const std::string_view Str,unsigned char *Num,unsigned int Length); // input changing string split APT_PUBLIC bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); // split a given string by a char -APT_PUBLIC std::vector VectorizeString(std::string const &haystack, char const &split) APT_PURE; +APT_PUBLIC std::vector VectorizeString(std::string_view const &haystack, char const &split) APT_PURE; /* \brief Return a vector of strings from string "input" where "sep" * is used as the delimiter string. @@ -112,13 +120,13 @@ APT_PUBLIC std::vector VectorizeString(std::string const &haystack, * * \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. */ -APT_PUBLIC std::vector StringSplit(std::string const &input, - std::string const &sep, +APT_PUBLIC std::vector StringSplit(std::string_view const &input, + std::string_view const &sep, unsigned int maxsplit=std::numeric_limits::max()) APT_PURE; @@ -220,7 +228,7 @@ class APT_PUBLIC URI 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();}; @@ -238,7 +246,7 @@ struct SubstVar const std::string *Contents; }; APT_PUBLIC std::string SubstVar(std::string Str,const struct SubstVar *Vars); -APT_PUBLIC std::string SubstVar(const std::string &Str,const std::string &Subst,const std::string &Contents); +APT_PUBLIC std::string SubstVar(const std::string_view &Str,const std::string_view &Subst,const std::string_view &Contents); struct RxChoiceList { @@ -249,4 +257,15 @@ struct RxChoiceList APT_PUBLIC unsigned long RegexChoice(RxChoiceList *Rxs,const char **ListBegin, const char **ListEnd); +/** + * \brief Faster comparison for string views (compare size before data) + * + * Still stable, but faster than the normal ordering. */ +static inline int StringViewCompareFast(const std::string_view & a, const std::string_view & b) { + if (a.size() != b.size()) + return a.size() - b.size(); + + return a.compare(b); +} + #endif diff --git a/apt-pkg/deb/debfile.h b/apt-pkg/deb/debfile.h index 48a75ae..887ee71 100644 --- a/apt-pkg/deb/debfile.h +++ b/apt-pkg/deb/debfile.h @@ -56,8 +56,7 @@ class APT_PUBLIC debDebFile class APT_PUBLIC debDebFile::ControlExtract : public pkgDirStream { public: - - virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE; + bool DoItem(Item &Itm, int &Fd) override; }; class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream @@ -72,9 +71,9 @@ class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream 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; + bool DoItem(Item &Itm, int &Fd) override; + bool Process(Item &Itm, const unsigned char *Data, + unsigned long long Size, unsigned long long Pos) override; // Helpers bool Read(debDebFile &Deb); @@ -82,7 +81,7 @@ class APT_PUBLIC debDebFile::MemControlExtract : public pkgDirStream MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {}; explicit MemControlExtract(std::string Member) : IsControl(false), Control(0), Length(0), Member(Member) {}; - ~MemControlExtract() {delete [] Control;}; + ~MemControlExtract() override { delete[] Control; }; }; /*}}}*/ diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index c4115e5..fefbf45 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -33,6 +33,8 @@ #include #include + +using namespace std::literals; /*}}}*/ // Sources Index /*{{{*/ @@ -198,7 +200,7 @@ bool debDebPkgFileIndex::GetContent(std::ostream &content, std::string const &de 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) + if (GetTempFile("deb-file-"s += flNotDir(FileName), true, &Pkg) == NULL) return false; std::ostringstream content; if (GetContent(content, FileName) == false) @@ -325,7 +327,7 @@ class APT_HIDDEN debIFTypeSrc : public pkgIndexFile::Type class APT_HIDDEN debIFTypePkg : public pkgIndexFile::Type { public: - virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE + [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override { return new debRecordParser(File.FileName(),*File.Cache()); }; @@ -339,7 +341,7 @@ class APT_HIDDEN debIFTypeTrans : public debIFTypePkg class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type { public: - virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE + [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override { return new debRecordParser(File.FileName(),*File.Cache()); }; @@ -348,7 +350,7 @@ class APT_HIDDEN debIFTypeStatus : public pkgIndexFile::Type class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type { public: - virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const APT_OVERRIDE + [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &File) const override { return new debDebFileRecordParser(File.FileName()); }; @@ -357,7 +359,7 @@ class APT_HIDDEN debIFTypeDebPkgFile : public pkgIndexFile::Type class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type { public: - virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &DscFile) const APT_OVERRIDE + [[nodiscard]] pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &DscFile) const override { return new debDscRecordParser(DscFile, NULL); }; @@ -366,7 +368,7 @@ class APT_HIDDEN debIFTypeDscFile : public pkgIndexFile::Type class APT_HIDDEN debIFTypeDebianSourceDir : public pkgIndexFile::Type { public: - virtual pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &SourceDir) const APT_OVERRIDE + [[nodiscard]] pkgSrcRecords::Parser *CreateSrcPkgParser(std::string const &SourceDir) const override { return new debDscRecordParser(SourceDir + std::string("/debian/control"), NULL); }; diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index 57b3738..e9b22ff 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -29,87 +29,85 @@ 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; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] std::string GetComponent() const override; + [[nodiscard]] uint8_t GetIndexFlags() const override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + [[nodiscard]] const Type *GetType() const override APT_PURE; // Interface for the Cache Generator - virtual bool HasPackages() const APT_OVERRIDE {return true;}; + [[nodiscard]] bool HasPackages() const override { return true; }; // Abort if the file does not exist. - virtual bool Exists() const APT_OVERRIDE {return true;}; + [[nodiscard]] bool Exists() const override { return true; }; - virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; + pkgCacheListParser *CreateListParser(FileFd &Pkg) override; explicit debStatusIndex(std::string const &File); - virtual ~debStatusIndex(); + ~debStatusIndex() override; }; class debPackagesIndex : public pkgDebianIndexTargetFile { void * const d; protected: - virtual uint8_t GetIndexFlags() const APT_OVERRIDE; + [[nodiscard]] uint8_t GetIndexFlags() const override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + [[nodiscard]] const Type *GetType() const override APT_PURE; // Stuff for accessing files on remote items - virtual std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const APT_OVERRIDE; + [[nodiscard]] std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override; // Interface for the Cache Generator - virtual bool HasPackages() const APT_OVERRIDE {return true;}; + [[nodiscard]] bool HasPackages() const override {return true;}; debPackagesIndex(IndexTarget const &Target, bool const Trusted); - virtual ~debPackagesIndex(); + ~debPackagesIndex() override; }; 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; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] uint8_t GetIndexFlags() const override; + bool OpenListFile(FileFd &Pkg, std::string const &FileName) override; + APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override; public: - - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + [[nodiscard]] const Type *GetType() const override APT_PURE; // Interface for the Cache Generator - virtual bool HasPackages() const APT_OVERRIDE; + [[nodiscard]] bool HasPackages() const override; explicit debTranslationsIndex(IndexTarget const &Target); - virtual ~debTranslationsIndex(); + ~debTranslationsIndex() override; }; 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: + [[nodiscard]] uint8_t GetIndexFlags() const override; + bool OpenListFile(FileFd &Pkg, std::string const &FileName) override; + APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override; - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; +public: + [[nodiscard]] const Type *GetType() const override APT_PURE; // Stuff for accessing files on remote items - virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record, - pkgSrcRecords::File const &File) const APT_OVERRIDE; + [[nodiscard]] std::string SourceInfo(pkgSrcRecords::Parser const &Record, + pkgSrcRecords::File const &File) const override; // Interface for the record parsers - virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE; + [[nodiscard]] pkgSrcRecords::Parser *CreateSrcParser() const override; // Interface for the Cache Generator - virtual bool HasPackages() const APT_OVERRIDE {return false;}; + [[nodiscard]] bool HasPackages() const override { return false; }; debSourcesIndex(IndexTarget const &Target, bool const Trusted); - virtual ~debSourcesIndex(); + ~debSourcesIndex() override; }; class debDebPkgFileIndex : public pkgDebianIndexRealFile @@ -118,14 +116,14 @@ class debDebPkgFileIndex : public pkgDebianIndexRealFile 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; + [[nodiscard]] std::string GetComponent() const override; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] uint8_t GetIndexFlags() const override; + bool OpenListFile(FileFd &Pkg, std::string const &FileName) override; + APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + [[nodiscard]] const Type *GetType() const override APT_PURE; /** get the control (file) content of the deb file * @@ -136,15 +134,15 @@ class debDebPkgFileIndex : public pkgDebianIndexRealFile 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; + [[nodiscard]] bool HasPackages() const override { return true; } + pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const override; // Interface for acquire explicit debDebPkgFileIndex(std::string const &DebFile); - virtual ~debDebPkgFileIndex(); + ~debDebPkgFileIndex() override; - std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override; + [[nodiscard]] std::string ArchiveInfo(pkgCache::VerIterator const &Ver) const override; }; class APT_PUBLIC debDscFileIndex : public pkgDebianIndexRealFile @@ -152,14 +150,14 @@ class APT_PUBLIC 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; + [[nodiscard]] std::string GetComponent() const override; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] uint8_t GetIndexFlags() const override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; - virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE; - virtual bool HasPackages() const APT_OVERRIDE {return false;}; + [[nodiscard]] const Type *GetType() const override APT_PURE; + [[nodiscard]] pkgSrcRecords::Parser *CreateSrcParser() const override; + [[nodiscard]] bool HasPackages() const override { return false; }; explicit debDscFileIndex(std::string const &DscFile); virtual ~debDscFileIndex(); @@ -168,29 +166,29 @@ class APT_PUBLIC debDscFileIndex : public pkgDebianIndexRealFile class debDebianSourceDirIndex : public debDscFileIndex { protected: - virtual std::string GetComponent() const APT_OVERRIDE; + [[nodiscard]] std::string GetComponent() const override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; +[[nodiscard]] const Type *GetType() const override APT_PURE; }; class APT_PUBLIC 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; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] std::string GetComponent() const override; + [[nodiscard]] uint8_t GetIndexFlags() const override; -public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + public: + [[nodiscard]] const Type *GetType() const override APT_PURE; // Interface for the Cache Generator - virtual bool HasPackages() const APT_OVERRIDE {return true;}; + [[nodiscard]] bool HasPackages() const override { return true; }; // Abort if the file does not exist. - virtual bool Exists() const APT_OVERRIDE {return true;}; + [[nodiscard]] bool Exists() const override { return true; }; explicit debStringPackageIndex(std::string const &content); - virtual ~debStringPackageIndex(); + ~debStringPackageIndex() override; }; #endif diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 46c3629..dfb07d2 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -1,11 +1,11 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Package Cache Generator - Generator for the cache structure. - - This builds the cache structure from the abstract package list parser. - + + This builds the cache structure from the abstract package list parser. + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -33,7 +33,8 @@ /*}}}*/ using std::string; -using APT::StringView; +using std::string_view; +using namespace std::literals; static const debListParser::WordList PrioList[] = { {"required",pkgCache::State::Required}, @@ -68,7 +69,7 @@ debListParser::debListParser(FileFd *File) : // --------------------------------------------------------------------- /* This is to return the name of the package this section describes */ string debListParser::Package() { - string Result = Section.Find(pkgTagSection::Key::Package).to_string(); + string Result{Section.Find(pkgTagSection::Key::Package)}; // Normalize mixed case package names to lower case, like dpkg does // See Bug#807012 for details. @@ -93,7 +94,7 @@ string debListParser::Package() { // ListParser::Architecture - Return the package arch /*{{{*/ // --------------------------------------------------------------------- /* This will return the Architecture of the package this section describes */ -APT::StringView debListParser::Architecture() { +std::string_view debListParser::Architecture() { auto const Arch = Section.Find(pkgTagSection::Key::Architecture); return Arch.empty() ? "none" : Arch; } @@ -108,9 +109,9 @@ bool debListParser::ArchitectureAll() { // 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 + epoch:upstream-release. If this returns the blank string then the entry is assumed to only describe package properties */ -APT::StringView debListParser::Version() +std::string_view debListParser::Version() { return Section.Find(pkgTagSection::Key::Version); } @@ -119,9 +120,9 @@ 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") + if (MultiArch.empty() == true || MultiArch == "no"sv) MA = pkgCache::Version::No; - else if (MultiArch == "same") { + else if (MultiArch == "same"sv) { if (ArchitectureAll() == true) { if (showErrors == true) @@ -132,15 +133,15 @@ unsigned char debListParser::ParseMultiArch(bool const showErrors) /*{{{*/ else MA = pkgCache::Version::Same; } - else if (MultiArch == "foreign") + else if (MultiArch == "foreign"sv) MA = pkgCache::Version::Foreign; - else if (MultiArch == "allowed") + else if (MultiArch == "allowed"sv) MA = pkgCache::Version::Allowed; else { if (showErrors == true) - _error->Warning("Unknown Multi-Arch type '%s' for package '%s'", - MultiArch.to_string().c_str(), Package().c_str()); + _error->Warning("Unknown Multi-Arch type '%.*s' for package '%s'", + (int)MultiArch.size(), MultiArch.data(), Package().c_str()); MA = pkgCache::Version::No; } @@ -168,8 +169,8 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) pkgCache::GrpIterator G = Ver.ParentPkg().Group(); // Setup the defaults - Ver->SourcePkgName = G->Name; - Ver->SourceVerStr = Ver->VerStr; + Ver.SourceVersion()->Group = G.MapPointer(); + Ver.SourceVersion()->VerStr = Ver->VerStr; // Parse the name and version str if (Section.Find(pkgTagSection::Key::Source,Start,Stop) == true) @@ -185,19 +186,19 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) const char * const Close = static_cast(memchr(Open, ')', Stop - Open)); if (likely(Close != NULL)) { - APT::StringView const version(Open + 1, (Close - Open) - 1); + std::string_view 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; + Ver.SourceVersion()->VerStr = idx; } } } Stop = Space; } - APT::StringView const pkgname(Start, Stop - Start); + std::string_view const pkgname(Start, Stop - Start); // Oh, our group is the wrong one for the source package. Make a new one. if (pkgname != G.Name()) { @@ -207,7 +208,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) } // Link into by source package group. - Ver->SourcePkgName = G->Name; + Ver.SourceVersion()->Group = G.MapPointer(); Ver->NextInSource = G->VersionsInSource; G->VersionsInSource = Ver.MapPointer(); @@ -221,7 +222,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) // Priority if (Section.Find(pkgTagSection::Key::Priority,Start,Stop) == true) { - if (GrabWord(StringView(Start,Stop-Start),PrioList,Ver->Priority) == false) + if (GrabWord(string_view(Start,Stop-Start),PrioList,Ver->Priority) == false) Ver->Priority = pkgCache::State::Extra; } @@ -268,7 +269,7 @@ std::vector debListParser::AvailableDescriptionLanguages() continue; } memcpy(buf + prefixLen, lang.c_str(), lang.size()); - if (Section.Exists(StringView(buf, prefixLen + lang.size())) == true) + if (Section.Exists(string_view(buf, prefixLen + lang.size())) == true) avail.push_back(lang); } return avail; @@ -280,14 +281,14 @@ std::vector debListParser::AvailableDescriptionLanguages() description. If no Description-md5 is found in the section it will be calculated. */ -APT::StringView debListParser::Description_md5() +std::string_view debListParser::Description_md5() { return Section.Find(pkgTagSection::Key::Description_md5); } /*}}}*/ // ListParser::UsePackage - Update a package structure /*{{{*/ // --------------------------------------------------------------------- -/* This is called to update the package with any new information +/* 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) @@ -349,7 +350,7 @@ uint32_t debListParser::VersionHash() 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 @@ -368,7 +369,7 @@ uint32_t debListParser::VersionHash() } - + return Result; } /*}}}*/ @@ -418,7 +419,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg, {"deinstall",pkgCache::State::DeInstall}, {"purge",pkgCache::State::Purge}, {"", 0}}; - if (GrabWord(StringView(Start,I-Start),WantList,Pkg->SelectedState) == false) + if (GrabWord(string_view(Start,I-Start),WantList,Pkg->SelectedState) == false) return _error->Error("Malformed 1st word in the Status line"); // Isloate the next word @@ -434,7 +435,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg, {"hold",pkgCache::State::HoldInst}, {"hold-reinstreq",pkgCache::State::HoldReInstReq}, {"", 0}}; - if (GrabWord(StringView(Start,I-Start),FlagList,Pkg->InstState) == false) + if (GrabWord(string_view(Start,I-Start),FlagList,Pkg->InstState) == false) return _error->Error("Malformed 2nd word in the Status line"); // Isloate the last word @@ -454,12 +455,12 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg, {"triggers-pending",pkgCache::State::TriggersPending}, {"installed",pkgCache::State::Installed}, {"", 0}}; - if (GrabWord(StringView(Start,I-Start),StatusList,Pkg->CurrentState) == false) + if (GrabWord(string_view(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 + the interesting dpkg handling of the status file creates bogus entries. */ if (!(Pkg->CurrentState == pkgCache::State::NotInstalled || Pkg->CurrentState == pkgCache::State::ConfigFiles)) @@ -469,7 +470,7 @@ bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg, else Pkg->CurrentVer = Ver.MapPointer(); } - + return true; } @@ -486,18 +487,18 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op) 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 == '=') @@ -506,18 +507,18 @@ const char *debListParser::ConvertRelation(const char *I,unsigned int &Op) 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++; @@ -552,19 +553,19 @@ const char *debListParser::ParseDepends(const char *Start,const char *Stop, bool const &ParseRestrictionsList, string const &Arch) { - StringView PackageView; - StringView VerView; + string_view PackageView; + string_view VerView; auto res = ParseDepends(Start, Stop, PackageView, VerView, Op, (bool)ParseArchFlags, (bool) StripMultiArch, (bool) ParseRestrictionsList, Arch); - Package = PackageView.to_string(); - Ver = VerView.to_string(); + Package = PackageView; + Ver = VerView; return res; } const char *debListParser::ParseDepends(const char *Start, const char *Stop, - StringView &Package, StringView &Ver, + string_view &Package, string_view &Ver, unsigned int &Op, bool ParseArchFlags, bool StripMultiArch, bool ParseRestrictionsList, string Arch) @@ -573,27 +574,27 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop, Arch = _config->Find("APT::Architecture"); // 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); + Package = string_view(Start, I - Start); // We don't want to confuse library users which can't handle MultiArch if (StripMultiArch == true) { size_t const found = Package.rfind(':'); - if (found != StringView::npos && + if (found != string_view::npos && (Package.substr(found) == ":any" || Package.substr(found) == ":native" || Package.substr(found +1) == Arch)) @@ -602,96 +603,93 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop, // 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) + 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); + + Ver = string_view(Start,End-Start); I++; } else { - Ver = StringView(); + Ver = string_view(); Op = pkgCache::Dep::NoOp; } - + // Skip whitespace for (;I != Stop && isspace_ascii(*I) != 0; I++); - if (unlikely(ParseArchFlags == true)) + // Parse architecture restrictions + if (ParseArchFlags && I != Stop && *I == '[') { + for (++I; I != Stop && isspace_ascii(*I) != 0 && *I != ']'; ++I); + // malformed + if (unlikely(I == Stop || *I == ']')) + return 0; + APT::CacheFilter::PackageArchitectureMatchesSpecification matchesArch(Arch, false); - // Parse an architecture - if (I != Stop && *I == '[') + bool Found = false; + bool NegArch = false; + while (I < Stop && *I != ']') { - ++I; - // malformed - if (unlikely(I == Stop)) - return 0; - + // look for whitespace or ending ']' to end current Arch 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); - } + for (;End < Stop && isspace_ascii(*End) == 0 && *End != ']'; ++End); - if (*End++ == ']') { - I = End; - break; - } + if (unlikely(End >= Stop)) + return 0; - I = End; - for (;I != Stop && isspace_ascii(*I) != 0; I++); + bool CurNegArch = false; + if (*I == '!') + { + NegArch = true; + CurNegArch = true; + ++I; } - if (NegArch == true) - Found = !Found; + if (I >= End) + return 0; + std::string const arch(I, End); + if (matchesArch(arch.c_str())) + { + Found = true; + if (not CurNegArch) + NegArch = false; + // we found a match, so fast-forward to the end of the wildcards + for (; End < Stop && *End != ']'; ++End); + } + else + for (; End < Stop && isspace_ascii(*End) != 0; ++End); - if (Found == false) - Package = ""; /* not for this arch */ + I = End; } + if (NegArch == true) + Found = not Found; + + if (Found == false) + Package = ""; /* not for this arch */ + // Skip whitespace - for (;I != Stop && isspace_ascii(*I) != 0; I++); + for (++I; I < Stop && isspace_ascii(*I) != 0; ++I); } if (unlikely(ParseRestrictionsList == true)) @@ -787,14 +785,14 @@ const char *debListParser::ParseDepends(const char *Start, const char *Stop, 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; } /*}}}*/ @@ -815,8 +813,8 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver, while (1) { - StringView Package; - StringView Version; + string_view Package; + string_view Version; unsigned int Op; Start = ParseDepends(Start, Stop, Package, Version, Op, false, false, false, myArch); @@ -848,7 +846,7 @@ bool debListParser::ParseDepends(pkgCache::VerIterator &Ver, // … 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(); + std::string const Pkg = std::string{Package, 0, found}.append(":").append(Ver.Cache()->NativeArch()); if (NewDepends(Ver, Pkg, "any", Version, Op | pkgCache::Dep::ArchSpecific, Type) == false) return false; } @@ -887,10 +885,10 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) bool const barbarianArch = not APT::Configuration::checkArchitecture(Arch); const char *Start; const char *Stop; - if (Section.Find(pkgTagSection::Key::Provides,Start,Stop) == true) + if (Section.Find(pkgTagSection::Key::Provides,Start,Stop) && Start != Stop) { - StringView Package; - StringView Version; + string_view Package; + string_view Version; unsigned int Op; do @@ -900,9 +898,9 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) if (Start == 0) return _error->Error("Problem parsing Provides line of %s:%s=%s", Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr()); if (unlikely(Op != pkgCache::Dep::NoOp && Op != pkgCache::Dep::Equals)) { - _error->Warning("Ignoring non-equal Provides for package %s in %s:%s=%s", Package.to_string().c_str(), Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr()); + _error->Warning("Ignoring non-equal Provides for package %.*s in %s:%s=%s", (int)Package.size(), Package.data(), Ver.ParentPkg().Name(), Ver.Arch(), Ver.VerStr()); } else if (archfound != string::npos) { - StringView spzArch = Package.substr(archfound + 1); + string_view spzArch = Package.substr(archfound + 1); if (spzArch != "any") { if (NewProvides(Ver, Package.substr(0, archfound), spzArch, Version, pkgCache::Flag::MultiArchImplicit | pkgCache::Flag::ArchSpecific) == false) @@ -921,7 +919,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) } else { if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed && not barbarianArch) { - if (NewProvides(Ver, Package.to_string().append(":any"), "any", Version, pkgCache::Flag::MultiArchImplicit) == false) + if (NewProvides(Ver, std::string{Package}.append(":any"), "any", Version, pkgCache::Flag::MultiArchImplicit) == false) return false; } if (NewProvides(Ver, Package, Arch, Version, 0) == false) @@ -929,7 +927,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) } if (archfound == std::string::npos) { - string spzName = Package.to_string(); + string spzName{Package}; spzName.push_back(':'); spzName.append(Ver.ParentPkg().Arch()); pkgCache::PkgIterator const spzPkg = Ver.Cache()->FindPkg(spzName, "any"); @@ -972,7 +970,7 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) // 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) +bool debListParser::GrabWord(string_view Word, WordList const *List, unsigned char &Out) { for (unsigned int C = 0; List[C].Str.empty() == false; C++) { @@ -1003,7 +1001,7 @@ unsigned char debListParser::GetPrio(string Str) unsigned char Out; if (GrabWord(Str,PrioList,Out) == false) Out = pkgCache::State::Extra; - + return Out; } /*}}}*/ diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index e6767d7..ff1bfa0 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -1,10 +1,10 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - - Debian Package List Parser - This implements the abstract parser + + Debian Package List Parser - This implements the abstract parser interface for Debian package files - + ##################################################################### */ /*}}}*/ #ifndef PKGLIB_DEBLISTPARSER_H @@ -19,8 +19,8 @@ #endif #include +#include #include -#include class FileFd; @@ -32,7 +32,7 @@ class APT_HIDDEN debListParser : public pkgCacheListParser // Parser Helper struct WordList { - APT::StringView Str; + std::string_view Str; unsigned char Val; }; @@ -52,29 +52,29 @@ class APT_HIDDEN debListParser : public pkgCacheListParser unsigned int Type); bool ParseProvides(pkgCache::VerIterator &Ver); - APT_HIDDEN static bool GrabWord(APT::StringView Word,const WordList *List,unsigned char &Out); + APT_HIDDEN static bool GrabWord(std::string_view Word,const WordList *List,unsigned char &Out); 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; - virtual APT::StringView Architecture() APT_OVERRIDE; - virtual APT::StringView Version() APT_OVERRIDE; - virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE; - virtual std::vector AvailableDescriptionLanguages() APT_OVERRIDE; - virtual APT::StringView Description_md5() APT_OVERRIDE; - virtual uint32_t VersionHash() APT_OVERRIDE; - virtual bool SameVersion(uint32_t 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; + std::string Package() override; + bool ArchitectureAll() override; + std::string_view Architecture() override; + std::string_view Version() override; + bool NewVersion(pkgCache::VerIterator &Ver) override; + std::vector AvailableDescriptionLanguages() override; + std::string_view Description_md5() override; + uint32_t VersionHash() override; + bool SameVersion(uint32_t Hash, pkgCache::VerIterator const &Ver) override; + bool UsePackage(pkgCache::PkgIterator &Pkg, + pkgCache::VerIterator &Ver) override; + map_filesize_t Offset() override { return iOffset; }; + map_filesize_t Size() override { return Section.size(); }; + + bool Step() override; APT_PUBLIC static const char *ParseDepends(const char *Start, const char *Stop, std::string &Package, std::string &Ver, unsigned int &Op, @@ -83,19 +83,19 @@ class APT_HIDDEN debListParser : public pkgCacheListParser std::string const &Arch = ""); APT_PUBLIC 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, + std::string_view &Package, + std::string_view &Ver, unsigned int &Op, + bool ParseArchFlags = false, bool StripMultiArch = true, + bool ParseRestrictionsList = false, std::string Arch = ""); APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op); explicit debListParser(FileFd *File); - virtual ~debListParser(); + ~debListParser() override; #ifdef APT_COMPILING_APT - APT::StringView SHA256() const + std::string_view SHA256() const { return Section.Find(pkgTagSection::Key::SHA256); } @@ -109,25 +109,25 @@ class APT_HIDDEN debDebFileParser : public debListParser public: debDebFileParser(FileFd *File, std::string const &DebFile); - virtual bool UsePackage(pkgCache::PkgIterator &Pkg, - pkgCache::VerIterator &Ver) APT_OVERRIDE; + bool UsePackage(pkgCache::PkgIterator &Pkg, + pkgCache::VerIterator &Ver) override; }; class APT_HIDDEN debTranslationsParser : public debListParser { public: // a translation can never be a real package - virtual APT::StringView Architecture() APT_OVERRIDE { return ""; } - virtual APT::StringView Version() APT_OVERRIDE { return ""; } + std::string_view Architecture() override { return {}; } + std::string_view Version() override { return {}; } - explicit debTranslationsParser(FileFd *File) - : debListParser(File) {}; + explicit debTranslationsParser(FileFd *File) + : debListParser(File) {}; }; class APT_HIDDEN debStatusListParser : public debListParser { public: - virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE; + bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) override; explicit debStatusListParser(FileFd *File) : debListParser(File) {}; }; diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 5158931..c040b76 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -75,7 +75,7 @@ static std::string NormalizeSignedBy(std::string SignedBy, bool const Introducer return os.str(); } - // we could go all fancy and allow short/long/string matches as gpgv/apt-key does, + // we could go all fancy and allow short/long/string matches as gpgv 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. std::transform(SignedBy.begin(), SignedBy.end(), SignedBy.begin(), [](char const c) { @@ -111,6 +111,8 @@ class APT_HIDDEN debReleaseIndexPrivate /*{{{*/ std::vector const Languages; bool const UsePDiffs; std::string const UseByHash; + std::optional> const include; + std::optional> const exclude; }; std::vector DebEntries; @@ -375,6 +377,10 @@ static void GetIndexTargetsFor(char const * const Type, std::string const &URI, Options.insert(std::make_pair("COMPRESSIONTYPES", CompressionTypes)); Options.insert(std::make_pair("KEEPCOMPRESSEDAS", KeepCompressedAs)); Options.insert(std::make_pair("SOURCESENTRY", E->sourcesEntry)); + if (auto include = E->include) + Options.insert(std::make_pair("INCLUDE", APT::String::Join(*include, " "))); + if (auto exclude = E->exclude) + Options.insert(std::make_pair("EXCLUDE", APT::String::Join(*exclude, " "))); bool IsOpt = IsOptional; { @@ -425,22 +431,36 @@ std::vector debReleaseIndex::GetIndexTargets() const return IndexTargets; } /*}}}*/ -void debReleaseIndex::AddComponent(std::string const &sourcesEntry, /*{{{*/ - bool const isSrc, std::string const &Name, - std::vector const &Targets, - std::vector const &Architectures, - std::vector Languages, - bool const usePDiffs, std::string const &useByHash) +bool debReleaseIndex::AddComponent(std::string const &sourcesEntry, /*{{{*/ + bool const isSrc, std::string const &Name, + std::vector const &Targets, + std::vector const &Architectures, + std::vector Languages, + bool const usePDiffs, std::string const &useByHash, + std::optional> const &include, + std::optional> const &exclude) { + if (include && exclude) + return _error->Error("Both 'Include' and 'Exclude' specified in %s", sourcesEntry.c_str()); if (Languages.empty() == true) Languages.push_back("none"); debReleaseIndexPrivate::debSectionEntry const entry = { - sourcesEntry, Name, Targets, Architectures, Languages, usePDiffs, useByHash + sourcesEntry, + Name, + Targets, + Architectures, + Languages, + usePDiffs, + useByHash, + include, + exclude, }; if (isSrc) d->DebSrcEntries.push_back(entry); else d->DebEntries.push_back(entry); + + return true; } /*}}}*/ std::string debReleaseIndex::ArchiveURI(std::string const &File) const /*{{{*/ @@ -533,7 +553,7 @@ bool debReleaseIndex::Load(std::string const &Filename, std::string * const Erro if (!parseSumData(Start, End, Name, Hash, Size)) return false; - HashString const hs(hashinfo.name.to_string(), Hash); + HashString const hs(std::string{hashinfo.name}, Hash); if (Entries.find(Name) == Entries.end()) { metaIndex::checkSum *Sum = new metaIndex::checkSum; @@ -698,7 +718,7 @@ bool debReleaseIndex::parseSumData(const char *&Start, const char *End, /*{{{*/ Start++; if (Start >= End) return false; - + EntryEnd = Start; /* Find the end of the second entry (the size) */ while ((*EntryEnd != '\t' && *EntryEnd != ' ' ) @@ -706,19 +726,19 @@ bool debReleaseIndex::parseSumData(const char *&Start, const char *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 != ' ' && + while ((*EntryEnd != '\t' && *EntryEnd != ' ' && *EntryEnd != '\n' && *EntryEnd != '\r') && EntryEnd < End) EntryEnd++; @@ -817,6 +837,8 @@ bool debReleaseIndex::SetSignedBy(std::string const &pSignedBy) else { auto const normalSignedBy = NormalizeSignedBy(pSignedBy, true); + if (normalSignedBy.empty() == true) + return true; if (normalSignedBy != 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(), normalSignedBy.c_str()); } @@ -1253,7 +1275,7 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type /*{{{*/ } protected: - // This is a duplicate of pkgAcqChangelog::URITemplate() with some changes to work + // This is a duplicate of pkgAcqChangelog::URITemplate() with some changes to work // on metaIndex instead of cache structures, and using Snapshots std::string SnapshotServer(debReleaseIndex const *Rls) const { @@ -1401,16 +1423,18 @@ class APT_HIDDEN debSLTypeDebian : public pkgSourceList::Type /*{{{*/ } 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 (not Deb->AddComponent( + entry->second, + IsSrc, + Section, + parsePlusMinusTargetOptions(Name, Options), + parsePlusMinusArchOptions("arch", Options), + parsePlusMinusOptions("lang", Options, APT::Configuration::getLanguages(true)), + UsePDiffs, + UseByHash, + getDefaultSetOf("include", Options), + getDefaultSetOf("exclude", Options))) + return false; if (Deb->SetTrusted(GetTriStateOption(Options, "trusted")) == false || Deb->SetCheckValidUntil(GetTriStateOption(Options, "check-valid-until")) == false || @@ -1473,7 +1497,7 @@ class APT_HIDDEN debSLTypeDeb : public debSLTypeDebian /*{{{*/ bool CreateItem(std::vector &List, std::string const &URI, std::string const &Dist, std::string const &Section, - std::map const &Options) const APT_OVERRIDE + std::map const &Options) const override { return CreateItemInternal(List, URI, Dist, Section, false, Options); } @@ -1489,7 +1513,7 @@ class APT_HIDDEN debSLTypeDebSrc : public debSLTypeDebian /*{{{*/ bool CreateItem(std::vector &List, std::string const &URI, std::string const &Dist, std::string const &Section, - std::map const &Options) const APT_OVERRIDE + std::map const &Options) const override { return CreateItemInternal(List, URI, Dist, Section, true, Options); } diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index a1a9c41..712b4ec 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -30,20 +31,20 @@ class APT_HIDDEN debReleaseIndex : public metaIndex debReleaseIndex(std::string const &URI, std::string const &Dist, std::map const &Options); debReleaseIndex(std::string const &URI, std::string const &Dist, bool const Trusted, std::map const &Options); - virtual ~debReleaseIndex(); + ~debReleaseIndex() override; - virtual std::string ArchiveURI(std::string const &File) const APT_OVERRIDE; - virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) APT_OVERRIDE; - virtual std::vector GetIndexTargets() const APT_OVERRIDE; + [[nodiscard]] std::string ArchiveURI(std::string const &File) const override; + bool GetIndexes(pkgAcquire *Owner, bool const &GetAll = false) override; + [[nodiscard]] std::vector GetIndexTargets() const 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; + [[nodiscard]] std::string Describe() const override; + pkgCache::RlsFileIterator FindInCache(pkgCache &Cache, bool ModifyCheck) const override; + bool Merge(pkgCacheGenerator &Gen, OpProgress *Prog) const override; - virtual bool Load(std::string const &Filename, std::string * const ErrorText) APT_OVERRIDE; - virtual metaIndex * UnloadedClone() const APT_OVERRIDE; + bool Load(std::string const &Filename, std::string *ErrorText) override; + [[nodiscard]] metaIndex *UnloadedClone() const override; - virtual std::vector *GetIndexFiles() APT_OVERRIDE; + std::vector *GetIndexFiles() override; bool SetTrusted(TriState const Trusted); bool SetCheckValidUntil(TriState const Trusted); @@ -56,19 +57,21 @@ class APT_HIDDEN debReleaseIndex : public metaIndex bool SetSignedBy(std::string const &SignedBy); std::map GetReleaseOptions(); - virtual bool IsTrusted() const APT_OVERRIDE; - bool IsArchitectureSupported(std::string const &arch) const override; - bool IsArchitectureAllSupportedFor(IndexTarget const &target) const override; - bool HasSupportForComponent(std::string const &component) const override; - - APT_PURE time_t GetNotBefore() const override; - - void AddComponent(std::string const &sourcesEntry, - bool const isSrc, std::string const &Name, - std::vector const &Targets, - std::vector const &Architectures, - std::vector Languages, - bool const usePDiffs, std::string const &useByHash); + [[nodiscard]] bool IsTrusted() const override; + [[nodiscard]] bool IsArchitectureSupported(std::string const &arch) const override; + [[nodiscard]] bool IsArchitectureAllSupportedFor(IndexTarget const &target) const override; + [[nodiscard]] bool HasSupportForComponent(std::string const &component) const override; + + [[nodiscard]] time_t GetNotBefore() const override APT_PURE; + + bool AddComponent(std::string const &sourcesEntry, + bool const isSrc, std::string const &Name, + std::vector const &Targets, + std::vector const &Architectures, + std::vector Languages, + bool const usePDiffs, std::string const &useByHash, + std::optional> const &include, + std::optional> const &exclude); }; #endif diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index b9d1b6e..625bfab 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -1,9 +1,9 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Debian Package Records - Parser for debian package records - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -58,13 +58,13 @@ debRecordParserBase::debRecordParserBase() : Parser(), d(NULL) {} // RecordParserBase::FileName - Return the archive filename on the site /*{{{*/ string debRecordParserBase::FileName() { - return Section.Find(pkgTagSection::Key::Filename).to_string(); + return string{Section.Find(pkgTagSection::Key::Filename)}; } /*}}}*/ // RecordParserBase::Name - Return the package name /*{{{*/ string debRecordParserBase::Name() { - auto Result = Section.Find(pkgTagSection::Key::Package).to_string(); + auto Result = string{Section.Find(pkgTagSection::Key::Package)}; // Normalize mixed case package names to lower case, like dpkg does // See Bug#807012 for details @@ -76,7 +76,7 @@ string debRecordParserBase::Name() // RecordParserBase::Homepage - Return the package homepage /*{{{*/ string debRecordParserBase::Homepage() { - return Section.Find(pkgTagSection::Key::Homepage).to_string(); + return string{Section.Find(pkgTagSection::Key::Homepage)}; } /*}}}*/ // RecordParserBase::Hashes - return the available archive hashes /*{{{*/ @@ -87,7 +87,7 @@ HashStringList debRecordParserBase::Hashes() const { std::string const hash = Section.FindS(*type); if (hash.empty() == false) - hashes.push_back(HashString(*type, hash)); + hashes.push_back(HashString(*type, std::move(hash))); } auto const size = Section.FindULL(pkgTagSection::Key::Size, 0); if (size != 0) @@ -98,7 +98,7 @@ HashStringList debRecordParserBase::Hashes() const // RecordParserBase::Maintainer - Return the maintainer email /*{{{*/ string debRecordParserBase::Maintainer() { - return Section.Find(pkgTagSection::Key::Maintainer).to_string(); + return string{Section.Find(pkgTagSection::Key::Maintainer)}; } /*}}}*/ // RecordParserBase::RecordField - Return the value of an arbitrary field /*{{*/ @@ -135,20 +135,20 @@ string debRecordParserBase::LongDesc(std::string const &lang) break; else if (*l == "en") { - orig = Section.Find(pkgTagSection::Key::Description).to_string(); + orig = Section.Find(pkgTagSection::Key::Description); if (orig.empty() == false) break; } } if (orig.empty() == true) - orig = Section.Find(pkgTagSection::Key::Description).to_string(); + orig = Section.Find(pkgTagSection::Key::Description); } else { std::string const tagname = "Description-" + lang; orig = Section.FindS(tagname.c_str()); if (orig.empty() == true && lang == "en") - orig = Section.Find(pkgTagSection::Key::Description).to_string(); + orig = Section.Find(pkgTagSection::Key::Description); } char const * const codeset = nl_langinfo(CODESET); @@ -166,7 +166,7 @@ static const char * const SourceVerSeparators = " ()"; // RecordParserBase::SourcePkg - Return the source package name if any /*{{{*/ string debRecordParserBase::SourcePkg() { - auto Res = Section.Find(pkgTagSection::Key::Source).to_string(); + auto Res = string{Section.Find(pkgTagSection::Key::Source)}; auto const Pos = Res.find_first_of(SourceVerSeparators); if (Pos != std::string::npos) Res.erase(Pos); @@ -176,22 +176,22 @@ string debRecordParserBase::SourcePkg() // RecordParserBase::SourceVer - Return the source version number if present /*{{{*/ string debRecordParserBase::SourceVer() { - auto const Pkg = Section.Find(pkgTagSection::Key::Source).to_string(); - string::size_type Pos = Pkg.find_first_of(SourceVerSeparators); - if (Pos == string::npos) + std::string_view Pkg = Section.Find(pkgTagSection::Key::Source); + auto Pos = Pkg.find_first_of(SourceVerSeparators); + if (Pos == std::string_view::npos) return ""; - string::size_type VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos); - if(VerStart == string::npos) + auto VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos); + if(VerStart == std::string_view::npos) return ""; - string::size_type VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart); - if(VerEnd == string::npos) + auto VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart); + if(VerEnd == std::string_view::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); + return string(Pkg.data(), VerStart); else - return string(Pkg, VerStart, VerEnd - VerStart); + return string(Pkg.data(), VerStart, VerEnd - VerStart); } /*}}}*/ // RecordParserBase::GetRec - Return the whole record /*{{{*/ diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 10ef917..050f039 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -29,26 +29,26 @@ class APT_HIDDEN debRecordParserBase : public pkgRecords::Parser 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; + std::string FileName() override; + std::string SourcePkg() override; + std::string SourceVer() override; - virtual HashStringList Hashes() const APT_OVERRIDE; + [[nodiscard]] HashStringList Hashes() const 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; + std::string Maintainer() override; + std::string ShortDesc(std::string const &lang) override; + std::string LongDesc(std::string const &lang) override; + std::string Name() override; + std::string Homepage() override; // An arbitrary custom field - virtual std::string RecordField(const char *fieldName) APT_OVERRIDE; + std::string RecordField(const char *fieldName) override; - virtual void GetRec(const char *&Start,const char *&Stop) APT_OVERRIDE; + void GetRec(const char *&Start, const char *&Stop) override; debRecordParserBase(); - virtual ~debRecordParserBase(); + ~debRecordParserBase() override; }; class APT_HIDDEN debRecordParser : public debRecordParserBase @@ -58,12 +58,12 @@ class APT_HIDDEN debRecordParser : public debRecordParserBase FileFd File; pkgTagFile Tags; - virtual bool Jump(pkgCache::VerFileIterator const &Ver) APT_OVERRIDE; - virtual bool Jump(pkgCache::DescFileIterator const &Desc) APT_OVERRIDE; + bool Jump(pkgCache::VerFileIterator const &Ver) override; + bool Jump(pkgCache::DescFileIterator const &Desc) override; public: debRecordParser(std::string FileName,pkgCache &Cache); - virtual ~debRecordParser(); + ~debRecordParser() override; }; // custom record parser that reads deb files directly @@ -76,14 +76,14 @@ class APT_HIDDEN debDebFileRecordParser : public debRecordParserBase 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; + bool Jump(pkgCache::VerFileIterator const &/*Ver*/) override; + bool Jump(pkgCache::DescFileIterator const & /*Desc*/) override; public: - virtual std::string FileName() APT_OVERRIDE; + std::string FileName() override; - explicit debDebFileRecordParser(std::string FileName); - virtual ~debDebFileRecordParser(); + explicit debDebFileRecordParser(std::string FileName); + ~debDebFileRecordParser() override; }; #endif diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index ab78b88..6b3cae1 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -1,10 +1,10 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Debian Source Package Records - Parser implementation for Debian style source indexes - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -46,8 +46,8 @@ std::string debSrcRecordParser::Package() const /*{{{*/ { auto const name = Sect.Find(pkgTagSection::Key::Package); if (iIndex != nullptr || name.empty() == false) - return name.to_string(); - return Sect.Find(pkgTagSection::Key::Source).to_string(); + return std::string{name}; + return std::string{Sect.Find(pkgTagSection::Key::Source)}; } /*}}}*/ // SrcRecordParser::Binaries - Return the binaries field /*{{{*/ @@ -93,9 +93,9 @@ const char **debSrcRecordParser::Binaries() /*}}}*/ // 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 +/* 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 &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch) @@ -165,7 +165,7 @@ bool debSrcRecordParser::Files(std::vector &List) List.clear(); // Stash the / terminated directory prefix - std::string Base = Sect.Find(pkgTagSection::Key::Directory).to_string(); + std::string Base{Sect.Find(pkgTagSection::Key::Directory)}; if (Base.empty() == false && Base[Base.length()-1] != '/') Base += '/'; @@ -177,7 +177,7 @@ bool debSrcRecordParser::Files(std::vector &List) auto const Files = Sect.Find(hashinfo.chksumskey); if (Files.empty() == true) continue; - std::istringstream ss(Files.to_string()); + std::istringstream ss(std::string{Files}); // TODO: replace with std::string_view_stream in C++23 ss.imbue(posix); while (ss.good()) @@ -193,9 +193,9 @@ bool debSrcRecordParser::Files(std::vector &List) ss >> hash >> size >> path; if (ss.fail() || hash.empty() || path.empty()) - return _error->Error("Error parsing file record in %s of source package %s", hashinfo.chksumsname.to_string().c_str(), Package().c_str()); + return _error->Error("Error parsing file record in %.*s of source package %s", (int)hashinfo.chksumsname.size(), hashinfo.chksumsname.data(), Package().c_str()); - HashString const hashString(hashinfo.name.to_string(), hash); + HashString const hashString(std::string{hashinfo.name}, hash); if (Base.empty() == false) path = Base + path; @@ -210,7 +210,7 @@ bool debSrcRecordParser::Files(std::vector &List) { // 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", hashinfo.chksumsname.to_string().c_str(), Package().c_str()); + return _error->Error("Error parsing checksum in %.*s of source package %s", (int)hashinfo.chksumsname.size(), hashinfo.chksumsname.data(), Package().c_str()); continue; } diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index 6ba30c2..a439efa 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -1,10 +1,10 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Debian Source Package Records - Parser implementation for Debian style source indexes - + ##################################################################### */ /*}}}*/ #ifndef PKGLIB_DEBSRCRECORDS_H @@ -33,30 +33,29 @@ class APT_HIDDEN debSrcRecordParser : public pkgSrcRecords::Parser std::vector 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);}; + public: + bool Restart() override { return Jump(0); } + bool Step() override {iOffset = Tags.Offset(); return Tags.Step(Sect);} + bool Jump(unsigned long const &Off) override {iOffset = Off; return Tags.Jump(Sect,Off);} - virtual std::string Package() const APT_OVERRIDE; - virtual std::string Version() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Version).to_string();}; - virtual std::string Maintainer() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Maintainer).to_string();}; - virtual std::string Section() const APT_OVERRIDE {return Sect.Find(pkgTagSection::Key::Section).to_string();}; - virtual const char **Binaries() APT_OVERRIDE; - virtual bool BuildDepends(std::vector &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) APT_OVERRIDE; - virtual unsigned long Offset() APT_OVERRIDE {return iOffset;}; - virtual std::string AsStr() APT_OVERRIDE + [[nodiscard]] std::string Package() const override; + [[nodiscard]] std::string Version() const override { return std::string{Sect.Find(pkgTagSection::Key::Version)}; } + [[nodiscard]] std::string Maintainer() const override { return std::string{Sect.Find(pkgTagSection::Key::Maintainer)}; } + [[nodiscard]] std::string Section() const override { return std::string{Sect.Find(pkgTagSection::Key::Section)}; } + const char **Binaries() override; + bool BuildDepends(std::vector &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) override; + unsigned long Offset() override { return iOffset; } + std::string AsStr() override { const char *Start=0,*Stop=0; Sect.GetSection(Start,Stop); return std::string(Start,Stop); }; - virtual bool Files(std::vector &F) APT_OVERRIDE; + bool Files(std::vector &F) override; debSrcRecordParser(std::string const &File,pkgIndexFile const *Index); - virtual ~debSrcRecordParser(); + ~debSrcRecordParser() override; }; class APT_HIDDEN debDscRecordParser : public debSrcRecordParser diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index a218005..90b893f 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -5,7 +5,7 @@ System - Abstraction for running on different systems. Basic general structure.. - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -53,7 +53,7 @@ class APT_HIDDEN debSystemPrivate { int FrontendLockFD; int LockFD; unsigned LockCount; - + debStatusIndex *StatusFile; }; @@ -146,7 +146,7 @@ bool debSystem::Lock(OpProgress *const Progress) close(d->FrontendLockFD); return false; } - + // See if we need to abort with a dirty journal if (CheckUpdates() == true) { @@ -166,7 +166,7 @@ bool debSystem::Lock(OpProgress *const Progress) } d->LockCount++; - + return true; } @@ -193,7 +193,7 @@ 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) @@ -202,7 +202,7 @@ bool debSystem::UnLock(bool NoErrors) close(d->FrontendLockFD); d->LockCount = 0; } - + return true; } bool debSystem::UnLockInner(bool NoErrors) { @@ -222,7 +222,7 @@ bool debSystem::IsLocked() /*}}}*/ // System::CheckUpdates - Check if the updates dir is dirty /*{{{*/ // --------------------------------------------------------------------- -/* This does a check of the updates directory (dpkg journal) to see if it has +/* This does a check of the updates directory (dpkg journal) to see if it has any entries in it. */ bool debSystem::CheckUpdates() { @@ -231,8 +231,8 @@ bool debSystem::CheckUpdates() DIR *DirP = opendir(File.c_str()); if (DirP == 0) return false; - - /* We ignore any files that are not all digits, this skips .,.. and + + /* 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)) @@ -373,7 +373,7 @@ bool debSystem::FindIndex(pkgCache::PkgFileIterator File, Found = d->StatusFile; return true; } - + return false; } /*}}}*/ @@ -392,7 +392,16 @@ std::string debSystem::StripDpkgChrootDirectory(std::string const &File)/*{{{*/ /*}}}*/ std::string debSystem::GetDpkgExecutable() /*{{{*/ { - return StripDpkgChrootDirectory(_config->Find("Dir::Bin::dpkg","dpkg")); + std::string dpkg_executable = _config->Find("Dir::Bin::dpkg","dpkg"); + if (APT::String::Startswith(dpkg_executable, "/")) { + struct stat buf; + if (stat(dpkg_executable.c_str(), &buf) != 0) { + _error->Warning(_("The dpkg executable set in Dir::Bin::dpkg is " + "missing, falling back to using default dpkg.")); + dpkg_executable = "dpkg"; + } + } + return StripDpkgChrootDirectory(dpkg_executable); } /*}}}*/ std::vector debSystem::GetDpkgBaseCommand() /*{{{*/ @@ -411,6 +420,13 @@ std::vector debSystem::GetDpkgBaseCommand() /*{{{*/ Args.push_back(Opts->Value); } } + auto status = _config->FindFile("Dir::State::status"); + auto admindir = StripDpkgChrootDirectory(flNotFile(status)); + if (admindir != "/var/lib/dpkg/") + { + Args.push_back("--admindir"); + Args.push_back(admindir); + } return Args; } /*}}}*/ @@ -528,10 +544,10 @@ std::vector debSystem::ArchitecturesSupported() const /*{{{*/ if (dpkgMultiArch == -1) return archs; - FILE *dpkg = fdopen(outputFd, "r"); - if(dpkg != NULL) { + if(FILE *dpkg = fdopen(outputFd, "r")) { char* buf = NULL; size_t bufsize = 0; + DEFER([&] { fclose(dpkg); free(buf); }); while (getline(&buf, &bufsize, dpkg) != -1) { char* tok_saveptr; @@ -548,9 +564,9 @@ std::vector debSystem::ArchitecturesSupported() const /*{{{*/ arch = strtok_r(NULL, " ", &tok_saveptr); } } - free(buf); - fclose(dpkg); } + else + close(outputFd); ExecWait(dpkgMultiArch, "dpkg --print-foreign-architectures", true); return archs; } diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h index c426faf..294ae18 100644 --- a/apt-pkg/deb/debsystem.h +++ b/apt-pkg/deb/debsystem.h @@ -27,18 +27,18 @@ class debSystem : public pkgSystem APT_HIDDEN bool CheckUpdates(); public: - virtual bool Lock(OpProgress *const Progress) 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 &List) APT_OVERRIDE; - virtual bool FindIndex(pkgCache::PkgFileIterator File, - pkgIndexFile *&Found) const APT_OVERRIDE; + bool Lock(OpProgress *Progress) override; + bool UnLock(bool NoErrors = false) override; + pkgPackageManager *CreatePM(pkgDepCache *Cache) const override; + bool Initialize(Configuration &Cnf) override; + bool ArchiveSupported(const char *Type) override; + signed Score(Configuration const &Cnf) override; + bool AddStatusFiles(std::vector &List) override; + bool FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const override; debSystem(); - virtual ~debSystem(); + ~debSystem() override; APT_HIDDEN static std::string GetDpkgExecutable(); APT_HIDDEN static std::vector GetDpkgBaseCommand(); diff --git a/apt-pkg/deb/debversion.h b/apt-pkg/deb/debversion.h index 5c328a9..6d82e58 100644 --- a/apt-pkg/deb/debversion.h +++ b/apt-pkg/deb/debversion.h @@ -23,15 +23,15 @@ class APT_PUBLIC debVersioningSystem : public pkgVersioningSystem 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 + int DoCmpVersion(const char *A, const char *Aend, + const char *B, const char *Bend) override APT_PURE; + bool CheckDep(const char *PkgVer, int Op, const char *DepVer) override APT_PURE; + int DoCmpReleaseVer(const char *A, const char *Aend, + const char *B, const char *Bend) override APT_PURE { return DoCmpVersion(A,Aend,B,Bend); } - virtual std::string UpstreamVersion(const char *A) APT_OVERRIDE; + std::string UpstreamVersion(const char *A) override; debVersioningSystem(); }; diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 4f87cc2..09f3e47 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -76,8 +77,13 @@ APT_PURE static string AptHistoryRequestingUser() /*{{{*/ if (uid > 0) { struct passwd pwd; struct passwd *result; - char buf[255]; - if (getpwuid_r(uid, &pwd, buf, sizeof(buf), &result) == 0 && result != NULL) { + int tmp = sysconf(_SC_GETPW_R_SIZE_MAX); + if(tmp <= 0) + tmp = 256; + std::vector buf(tmp); + while ((tmp = getpwuid_r(uid, &pwd, buf.data(), buf.size(), &result)) == -1 && errno == ERANGE) + buf.resize(buf.size() * 2); + if (tmp == 0 && result != NULL) { std::string res; strprintf(res, "%s (%d)", pwd.pw_name, uid); return res; @@ -116,7 +122,7 @@ class pkgDPkgPMPrivate /*{{{*/ bool stdin_is_dev_null; bool status_fd_reached_end_of_file; // the buffer we use for the dpkg status-fd reading - char dpkgbuf[1024]; + std::array dpkgbuf; size_t dpkgbuf_pos; FILE *term_out; FILE *history_out; @@ -480,6 +486,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) close(Pipes[0]); FILE *F = fdopen(Pipes[1],"w"); if (F == 0) { + close(Pipes[1]); result = _error->Errno("fdopen","Failed to open new FD"); break; } @@ -528,10 +535,10 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) */ void pkgDPkgPM::DoStdin(int master) { - unsigned char input_buf[256] = {0,}; - ssize_t len = read(STDIN_FILENO, input_buf, sizeof(input_buf)); + std::array input_buf; + ssize_t len = read(STDIN_FILENO, input_buf.data(), input_buf.size()); if (len) - FileFd::Write(master, input_buf, len); + FileFd::Write(master, input_buf.data(), len); else d->stdin_is_dev_null = true; } @@ -543,9 +550,9 @@ void pkgDPkgPM::DoStdin(int master) */ void pkgDPkgPM::DoTerminalPty(int master) { - unsigned char term_buf[1024] = {0,0, }; + std::array term_buf; - ssize_t len=read(master, term_buf, sizeof(term_buf)); + ssize_t len=read(master, term_buf.data(), term_buf.size()); if(len == -1 && errno == EIO) { // this happens when the child is about to exit, we @@ -557,9 +564,9 @@ void pkgDPkgPM::DoTerminalPty(int master) } if(len <= 0) return; - FileFd::Write(1, term_buf, len); + FileFd::Write(1, term_buf.data(), len); if(d->term_out) - fwrite(term_buf, len, sizeof(char), d->term_out); + fwrite(term_buf.data(), len, sizeof(char), d->term_out); } /*}}}*/ // DPkgPM::ProcessDpkgStatusBuf /*{{{*/ @@ -593,7 +600,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(char *line) // build the (prefix, pkgname, action) tuple, position of this // is different for "processing" or "status" messages - std::string prefix = APT::String::Strip(list[0]); + auto prefix = APT::String::Strip(list[0]); std::string pkgname; std::string action; @@ -754,10 +761,12 @@ void pkgDPkgPM::ProcessDpkgStatusLine(char *line) char* buf = NULL; size_t bufsize = 0; if (getline(&buf, &bufsize, dpkg) != -1) - pkgname += ':' + bufsize; + pkgname.append(":").append(buf); free(buf); fclose(dpkg); } + else + close(outputFd); ExecWait(dpkgNativeArch, "dpkg --print-architecture", true); if (pkgname.find(':') != std::string::npos) { @@ -946,7 +955,7 @@ void pkgDPkgPM::handleCrossUpgradeAction(string const &pkgname) /*{{{*/ // DPkgPM::DoDpkgStatusFd /*{{{*/ void pkgDPkgPM::DoDpkgStatusFd(int statusfd) { - auto const remainingBuffer = (sizeof(d->dpkgbuf) / sizeof(d->dpkgbuf[0])) - d->dpkgbuf_pos; + auto const remainingBuffer = d->dpkgbuf.size() - d->dpkgbuf_pos; if (likely(remainingBuffer > 0) && d->status_fd_reached_end_of_file == false) { auto const len = read(statusfd, &d->dpkgbuf[d->dpkgbuf_pos], remainingBuffer); @@ -957,12 +966,12 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd) d->status_fd_reached_end_of_file = true; return; } - d->dpkgbuf_pos += (len / sizeof(d->dpkgbuf[0])); + d->dpkgbuf_pos += len; } // 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) + char *p = d->dpkgbuf.data(), *q = nullptr; + while((q=(char*)memchr(p, '\n', &d->dpkgbuf[d->dpkgbuf_pos] - p)) != nullptr) { *q = '\0'; ProcessDpkgStatusLine(p); @@ -970,15 +979,15 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd) } // check if we stripped the buffer clean - if (p > (d->dpkgbuf + d->dpkgbuf_pos)) + if (p > (d->dpkgbuf.data() + 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; + memmove(d->dpkgbuf.data(), p, (p - d->dpkgbuf.data())); + d->dpkgbuf_pos = &d->dpkgbuf[d->dpkgbuf_pos] - p; } /*}}}*/ // DPkgPM::WriteHistoryTag /*{{{*/ @@ -1078,6 +1087,8 @@ bool pkgDPkgPM::OpenLog() std::string RequestingUser = AptHistoryRequestingUser(); if (RequestingUser != "") WriteHistoryTag("Requested-By", RequestingUser); + if (auto comment = _config->Find("APT::History::Comment"); not comment.empty()) + WriteHistoryTag("Comment", comment); WriteHistoryTag("Install", install); WriteHistoryTag("Reinstall", reinstall); WriteHistoryTag("Upgrade", upgrade); @@ -1301,7 +1312,7 @@ void pkgDPkgPM::StartPtyMagic() /*{{{*/ free(d->slave); d->slave = NULL; } - _error->DumpErrors(std::cerr, GlobalError::DEBUG, false); + _error->DumpErrors(std::cerr, GlobalError::NOTICE, false); } _error->RevertToStack(); } @@ -1477,7 +1488,7 @@ class APT_HIDDEN BuildDpkgCall { auto begin() const { return args.cbegin(); } auto end() const { return args.cend(); } auto& front() const { return args.front(); } - APT_NORETURN void execute(char const *const errmsg) { + [[noreturn]] void execute(char const *const errmsg) { args.push_back(nullptr); execvp(args.front(), &args.front()); std::cerr << errmsg << std::endl; @@ -1762,7 +1773,6 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) // this loop is runs once per dpkg operation vector::const_iterator I = List.cbegin(); - BuildDpkgCall Args; while (I != List.end()) { // Do all actions with the same Op in one run @@ -1784,7 +1794,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) else J = std::find_if(J, List.cend(), [&J](Item const &I) { return I.Op != J->Op; }); - Args.clearCallArguments(); + BuildDpkgCall Args; Args.reserve((J - I) + 10); int fd[2]; @@ -1866,7 +1876,7 @@ bool pkgDPkgPM::Go(APT::Progress::PackageManager *progress) { 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); + std::string file{flNotDir(I->File)}; if (flExtension(file) != "deb") file.append(".deb"); std::string linkpath; @@ -2233,6 +2243,19 @@ void pkgDPkgPM::Reset() { List.erase(List.begin(),List.end()); } + +static void CopyIndented(const char *header, FILE *from, FILE *to) +{ + if (!from) + return; + + fputs(header, to); + char *line{}; + size_t linelen; + DEFER([&] { free(line); }); + while (getline(&line, &linelen, from) != -1) + fprintf(to, " %s", line); +} /*}}}*/ // pkgDpkgPM::WriteApportReport - write out error report pkg failure /*{{{*/ // --------------------------------------------------------------------- @@ -2346,7 +2369,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) pkgver = Ver.VerStr() == NULL ? "unknown" : Ver.VerStr(); // if the file exists already, we check: - // - if it was reported already (touched by apport). + // - 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 @@ -2355,30 +2378,25 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) reportfile = flCombine(_config->FindDir("Dir::Apport", "var/crash"), pkgname+".0.crash"); if(FileExists(reportfile)) { - struct stat buf; - char strbuf[255]; - // check atime/mtime + struct stat buf{}; stat(reportfile.c_str(), &buf); if(buf.st_mtime > buf.st_atime) return; + char *line{}; + size_t linelen; + DEFER([&] { free(line); }); // check if the existing report is the same version report = fopen(reportfile.c_str(),"r"); - while(fgets(strbuf, sizeof(strbuf), report) != NULL) + DEFER([&] { fclose(report); }); + while(getline(&line, &linelen, report) != -1) { - 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; - } - } + char pkgname[255], version[255]; + if(sscanf(line, "Package: %254s %254s", pkgname, version) == 2) + if(strcmp(pkgver.c_str(), version) == 0) + return; } - fclose(report); } // now write the report @@ -2386,6 +2404,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) report = fopen(reportfile.c_str(),"w"); if(report == NULL) return; + DEFER([&] { fclose(report); }); if(_config->FindB("DPkgPM::InitialReportOnly",false) == true) chmod(reportfile.c_str(), 0); else @@ -2406,35 +2425,12 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) // attach terminal log it if we have it string logfile_name = _config->FindFile("Dir::Log::Terminal", "/dev/null"); if (logfile_name != "/dev/null") - { - 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); - } - } + CopyIndented("DpkgTerminalLog:\n", make_unique_FILE(logfile_name, "r").get(), report); // attach history log it if we have it string histfile_name = _config->FindFile("Dir::Log::History", "/dev/null"); if (histfile_name != "/dev/null") - { - 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); - } - } + CopyIndented("DpkgHistoryLog:\n", make_unique_FILE(histfile_name, "r").get(), report); // log the ordering, see dpkgpm.h and the "Ops" enum there fprintf(report, "AptOrdering:\n"); @@ -2458,34 +2454,10 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) // 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); - } - } + CopyIndented("Dmesg:\n", make_unique_popen("/bin/dmesg","r").get(), report); // attach df -l log (to learn about filesystem status) if (FileExists("/bin/df")) - { - - fprintf(report, "Df:\n"); - FILE *log = popen("/bin/df -l -x squashfs","r"); - if(log != NULL) - { - char buf[1024]; - while( fgets(buf, sizeof(buf), log) != NULL) - fprintf(report, " %s", buf); - pclose(log); - } - } - - fclose(report); - + CopyIndented("Df:\n", make_unique_popen("/bin/df -l -x squashfs","r").get(), report); } /*}}}*/ diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h index ed0b67b..5ce9dc1 100644 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@ -113,18 +113,18 @@ class APT_PUBLIC pkgDPkgPM : public pkgPackageManager 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; + bool Install(PkgIterator Pkg,std::string File) override; + bool Configure(PkgIterator Pkg) override; + bool Remove(PkgIterator Pkg, bool Purge = false) override; - virtual bool Go(APT::Progress::PackageManager *progress) APT_OVERRIDE; + bool Go(APT::Progress::PackageManager *progress) override; + + void Reset() override; - virtual void Reset() APT_OVERRIDE; - public: explicit pkgDPkgPM(pkgDepCache *Cache); - virtual ~pkgDPkgPM(); + ~pkgDPkgPM() override; APT_HIDDEN static bool ExpandPendingCalls(std::vector &List, pkgDepCache &Cache); }; diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index e3e8d62..f7f508f 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -42,6 +42,7 @@ #include #include #include +#include #include @@ -61,45 +62,11 @@ class DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc public: DefaultRootSetFunc2(pkgCache *cache) : Kernels(APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(cache)){}; - virtual ~DefaultRootSetFunc2(){}; + ~DefaultRootSetFunc2() override = default; - bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); }; + bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); }; }; - /*}}}*/ -// helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/ -// FIXME: Has verbatim copy in cmdline/apt-mark.cc -static bool ConfigValueInSubTree(const char* SubTree, std::string_view const needle) -{ - if (needle.empty()) - return false; - Configuration::Item const *Opts = _config->Tree(SubTree); - if (Opts != nullptr && Opts->Child != nullptr) - { - Opts = Opts->Child; - for (; Opts != nullptr; Opts = Opts->Next) - { - if (Opts->Value.empty()) - continue; - if (needle == Opts->Value) - return true; - } - } - return false; -} -static bool SectionInSubTree(char const * const SubTree, std::string_view Needle) -{ - if (ConfigValueInSubTree(SubTree, Needle)) - return true; - auto const sub = Needle.rfind('/'); - if (sub == std::string_view::npos) - { - std::string special{"/"}; - special.append(Needle); - return ConfigValueInSubTree(SubTree, special); - } - return ConfigValueInSubTree(SubTree, Needle.substr(sub + 1)); -} /*}}}*/ pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) : /*{{{*/ d(NULL), cache(cache), released(false) @@ -143,6 +110,7 @@ struct pkgDepCache::Private std::unique_ptr inRootSetFunc; std::unique_ptr IsAVersionedKernelPackage, IsProtectedKernelPackage; std::string machineID; + unsigned long iUpgradeCount{0}; }; 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), @@ -181,6 +149,7 @@ bool pkgDepCache::CheckConsistency(char const *const msgtag) /*{{{*/ auto const origUsrSize = iUsrSize; auto const origDownloadSize = iDownloadSize; auto const origInstCount = iInstCount; + auto const origUpgradeCount = d->iUpgradeCount; auto const origDelCount = iDelCount; auto const origKeepCount = iKeepCount; auto const origBrokenCount = iBrokenCount; @@ -241,6 +210,7 @@ bool pkgDepCache::CheckConsistency(char const *const msgtag) /*{{{*/ iUsrSize = origUsrSize; iDownloadSize = origDownloadSize; iInstCount = origInstCount; + d->iUpgradeCount = origUpgradeCount; iDelCount = origDelCount; iKeepCount = origKeepCount; iBrokenCount = origBrokenCount; @@ -665,7 +635,11 @@ void pkgDepCache::AddStates(const PkgIterator &Pkg, bool const Invert) else if (State.Mode == ModeKeep) iKeepCount += Add; else if (State.Mode == ModeInstall) + { iInstCount += Add; + if (Pkg->CurrentVer != 0 && State.Status > 0) + d->iUpgradeCount += Add; + } } /*}}}*/ // DepCache::BuildGroupOrs - Generate the Or group dep data /*{{{*/ @@ -795,6 +769,7 @@ void pkgDepCache::PerformDependencyPass(OpProgress * const Prog) iUsrSize = 0; iDownloadSize = 0; iInstCount = 0; + d->iUpgradeCount = 0; iDelCount = 0; iKeepCount = 0; iBrokenCount = 0; @@ -1067,7 +1042,7 @@ bool pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, // 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 && SectionInSubTree("APT::Never-MarkAuto-Sections", PV.Section())); + bool const PinNeverMarkAutoSection = (PV->Section != 0 && _config->SectionInSubTree("APT::Never-MarkAuto-Sections", PV.Section())); if (PinNeverMarkAutoSection) { for (DepIterator D = PV.DependsList(); D.end() != true; ++D) @@ -1462,7 +1437,7 @@ static bool MarkInstall_RemoveConflictsIfNotUpgradeable(pkgDepCache &Cache, bool return not failedToRemoveSomething; } /*}}}*/ -static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const DebugAutoInstall, pkgCache::VerIterator const &PV, unsigned long Depth, APT::PackageVector &toUpgrade) /*{{{*/ +static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const DebugAutoInstall, pkgCache::VerIterator const &PV, unsigned long Depth, APT::PackageVector &toUpgrade, APT::PackageVector const &delayedRemove) /*{{{*/ { auto CurrentVer = PV.ParentPkg().CurrentVer(); if (CurrentVer.end()) @@ -1473,6 +1448,9 @@ static bool MarkInstall_CollectReverseDepends(pkgDepCache &Cache, bool const Deb // Skip non-installed versions and packages already marked for upgrade if (ParentPkg.CurrentVer() != D.ParentVer() || Cache[ParentPkg].Install()) continue; + // Skip rev-depends we already tagged for removal + if (Cache[ParentPkg].Delete() || std::find(delayedRemove.begin(), delayedRemove.end(), ParentPkg) != delayedRemove.end()) + continue; // We only handle important positive dependencies, RemoveConflictsIfNotUpgradeable handles negative if (not Cache.IsImportantDep(D) || D.IsNegative()) continue; @@ -1721,7 +1699,7 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg, bool AutoInst, return false; hasFailed = true; } - if (not MarkInstall_CollectReverseDepends(*this, DebugAutoInstall, PV, Depth, toUpgrade)) + if (not MarkInstall_CollectReverseDepends(*this, DebugAutoInstall, PV, Depth, toUpgrade, delayedRemove)) { if (failEarly) return false; @@ -1778,8 +1756,8 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg, bool AutoInst, VerIterator const CurVer = Pkg.CurrentVer(); if (not CurVer.end() && CurVer->Section != 0 && strcmp(CurVer.Section(), PV.Section()) != 0) { - bool const CurVerInMoveSection = SectionInSubTree("APT::Move-Autobit-Sections", CurVer.Section()); - bool const InstVerInMoveSection = SectionInSubTree("APT::Move-Autobit-Sections", PV.Section()); + bool const CurVerInMoveSection = _config->SectionInSubTree("APT::Move-Autobit-Sections", CurVer.Section()); + bool const InstVerInMoveSection = _config->SectionInSubTree("APT::Move-Autobit-Sections", PV.Section()); return (not CurVerInMoveSection && InstVerInMoveSection); } return false; @@ -2271,7 +2249,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) const // FIXME: this is a meant as a temporary solution until the // recommends are cleaned up const char *sec = Dep.ParentVer().Section(); - if (sec && SectionInSubTree("APT::Install-Recommends-Sections", sec)) + if (sec && _config->SectionInSubTree("APT::Install-Recommends-Sections", sec)) return true; } else if(Dep->Type == pkgCache::Dep::Suggests) @@ -2451,6 +2429,25 @@ static bool MarkPackage(pkgCache::PkgIterator const &Pkg, if (not unsatisfied_choice) fullyExplored[T->ID] = true; + + // do not follow newly installed providers if we have already installed providers + if (providers_by_source.size() >= 2) + { + if (std::any_of(providers_by_source.begin(), providers_by_source.end(), [](auto const PV) { + return std::any_of(PV.second.begin(), PV.second.end(), [](auto const &Prv) { + auto const PP = Prv.ParentPkg(); + return not PP.end() && PP->CurrentVer != 0; + });})) + { + for (auto &providers : providers_by_source) + providers.second.erase(std::remove_if(providers.second.begin(), providers.second.end(), + [](auto const &Prv) { + auto const PP = Prv.ParentPkg(); + return not PP.end() && PP->CurrentVer == 0; + }), providers.second.end()); + } + } + for (auto const &providers : providers_by_source) { for (auto const &PV : providers.second) @@ -2473,7 +2470,7 @@ static bool MarkPackage(pkgCache::PkgIterator const &Pkg, // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc) { - if (_config->Find("APT::Solver", "internal") != "internal") + if (_config->Find("APT::Solver", "internal") != "internal" && _config->Find("APT::Solver") != "3.0") return true; // init the states @@ -2613,3 +2610,130 @@ bool pkgDepCache::PhasingApplied(pkgCache::PkgIterator Pkg) const return true; } /*}}}*/ + +// DepCache::BootSize /*{{{*/ +unsigned long long pkgDepCache::BootSize(bool initrdOnly) +{ + int BootCount = 0; + auto VirtualKernelPkg = FindPkg("$kernel", "any"); + if (VirtualKernelPkg.end()) + return 0; + + for (pkgCache::PrvIterator Prv = VirtualKernelPkg.ProvidesList(); Prv.end() == false; ++Prv) + { + auto Pkg = Prv.OwnerPkg(); + if ((*this)[Pkg].NewInstall()) + BootCount++; + } + if (BootCount == 0) + return 0; + + DIR *boot = opendir(_config->FindDir("Dir::Boot").c_str()); + if (not boot) + return 0; + + enum + { + VMLINUZ, + INITRD, + MAP, + MAX_ARTEFACT, + } type; + off_t sizes[MAX_ARTEFACT]{}; + while (struct dirent *ent = readdir(boot)) + { + if (APT::String::Startswith(ent->d_name, "initrd.img-")) + type = INITRD; + else if (APT::String::Startswith(ent->d_name, "System.map-")) + type = MAP; + else if (not initrdOnly && APT::String::Startswith(ent->d_name, "vmlinuz-")) + type = VMLINUZ; + else + continue; + + if (struct stat st; fstatat(dirfd(boot), ent->d_name, &st, 0) == 0) + sizes[type] = std::max(sizes[type], st.st_size); + } + closedir(boot); + return std::accumulate(sizes, sizes + MAX_ARTEFACT, off_t{0}) * BootCount * 110 / 100; +} + /*}}}*/ +// pkgDepCache::UpgradeCount /*{{{*/ +unsigned long pkgDepCache::UpgradeCount() +{ + return d->iUpgradeCount; +} + /*}}}*/ +// pkgDepCache::Transaction /*{{{*/ +struct pkgDepCache::Transaction::Private +{ + template + static T *copyArray(T *array, size_t count) + { + auto out = new T[count]; + memcpy(&out[0], &array[0], sizeof(T) * count); + return out; + } + // State information + pkgDepCache &cache; + Behavior behavior; + std::unique_ptr PkgState{copyArray(cache.PkgState, cache.GetCache().Head().PackageCount)}; + std::unique_ptr DepState{copyArray(cache.DepState, cache.GetCache().Head().DependsCount)}; + signed long long iUsrSize{cache.iUsrSize}; + unsigned long long iDownloadSize{cache.iDownloadSize}; + unsigned long iInstCount{cache.iInstCount}; + unsigned long iUpgradeCount{cache.d->iUpgradeCount}; + unsigned long iDelCount{cache.iDelCount}; + unsigned long iKeepCount{cache.iKeepCount}; + unsigned long iBrokenCount{cache.iBrokenCount}; + unsigned long iPolicyBrokenCount{cache.iPolicyBrokenCount}; + unsigned long iBadCount{cache.iBadCount}; + + void rollback() + { + memcpy(&cache.PkgState[0], &PkgState[0], sizeof(PkgState[0]) * cache.GetCache().Head().PackageCount); + memcpy(&cache.DepState[0], &DepState[0], sizeof(DepState[0]) * cache.GetCache().Head().DependsCount); + + cache.iUsrSize = iUsrSize; + cache.iDownloadSize = iDownloadSize; + cache.iInstCount = iInstCount; + cache.d->iUpgradeCount = iUpgradeCount; + cache.iDelCount = iDelCount; + cache.iKeepCount = iKeepCount; + cache.iBrokenCount = iBrokenCount; + cache.iPolicyBrokenCount = iPolicyBrokenCount; + cache.iBadCount = iBadCount; + } +}; + +pkgDepCache::Transaction::Transaction(pkgDepCache &cache, Behavior behavior) : d(new Private{cache, behavior}) {} + +void pkgDepCache::Transaction::temporaryRollback() +{ + d->rollback(); +} + +void pkgDepCache::Transaction::commit() +{ + d.reset(); +} + +void pkgDepCache::Transaction::rollback() +{ + if (d == nullptr) + return; + + temporaryRollback(); + d.reset(); +} + +pkgDepCache::Transaction::~Transaction() +{ + if (not d) + return; + if (d->behavior == Behavior::ROLLBACK || (d->behavior == Behavior::AUTO && d->cache.iBrokenCount > d->iBrokenCount)) + rollback(); + else + commit(); +} + /*}}}*/ diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 5dd022b..bab5248 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -46,6 +46,7 @@ #include #include #include +#include #include @@ -178,9 +179,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace { public: DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverAutoRemove") {}; - virtual ~DefaultRootSetFunc() {}; + ~DefaultRootSetFunc() override = default; - bool InRootSet(const pkgCache::PkgIterator &pkg) APT_OVERRIDE { return pkg.end() == false && Match(pkg.Name()); }; + bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && Match(pkg.Name()); }; }; struct APT_PUBLIC StateCache @@ -266,6 +267,42 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace bool InstallSuggests; }; + /** + * \brief Perform changes to the depcache atomically. + * + * The default policy for a transaction is to rollback if the number of broken packages + * increased, otherwise to commit. Call commit() or rollback() to override the default + * policy. + */ + class APT_PUBLIC Transaction final + { + struct Private; + std::unique_ptr d; + + public: + enum class Behavior + { + COMMIT, + ROLLBACK, + AUTO, + }; + + explicit Transaction(pkgDepCache &cache, Behavior behavior); + /** \brief Commit the transaction immediately */ + void commit(); + /** \brief Rollback the transaction immediately */ + void rollback(); + /** \brief Like rollback, but can be called multiple times. + * + * You can for example create a new transaction, then temporarily + * rollback to the state before the previous transaction in that + * transaction. + */ + void temporaryRollback(); + /** \brief Commit or rollback the transaction based on default policy */ + ~Transaction(); + }; + private: /** The number of open "action groups"; certain post-action * operations are suppressed if this number is > 0. @@ -273,6 +310,8 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace int group_level; friend class ActionGroup; + friend class Transaction; + public: int IncreaseActionGroupLevel(); int DecreaseActionGroupLevel(); @@ -332,9 +371,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace inline Header &Head() {return *Cache->HeaderP;}; inline GrpIterator GrpBegin() {return Cache->GrpBegin();}; inline PkgIterator PkgBegin() {return Cache->PkgBegin();}; - inline GrpIterator FindGrp(APT::StringView Name) {return Cache->FindGrp(Name);}; - inline PkgIterator FindPkg(APT::StringView Name) {return Cache->FindPkg(Name);}; - inline PkgIterator FindPkg(APT::StringView Name, APT::StringView Arch) {return Cache->FindPkg(Name, Arch);}; + inline GrpIterator FindGrp(std::string_view Name) {return Cache->FindGrp(Name);}; + inline PkgIterator FindPkg(std::string_view Name) {return Cache->FindPkg(Name);}; + inline PkgIterator FindPkg(std::string_view Name, std::string_view Arch) {return Cache->FindPkg(Name, Arch);}; inline pkgCache &GetCache() {return *Cache;}; inline pkgVersioningSystem &VS() {return *Cache->VS;}; @@ -478,6 +517,7 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace inline unsigned long DelCount() {return iDelCount;}; inline unsigned long KeepCount() {return iKeepCount;}; inline unsigned long InstCount() {return iInstCount;}; + unsigned long UpgradeCount(); inline unsigned long BrokenCount() {return iBrokenCount;}; inline unsigned long PolicyBrokenCount() {return iPolicyBrokenCount;}; inline unsigned long BadCount() {return iBadCount;}; @@ -490,7 +530,9 @@ class APT_PUBLIC pkgDepCache : protected pkgCache::Namespace virtual ~pkgDepCache(); bool CheckConsistency(char const *const msgtag = ""); - +#ifdef APT_COMPILING_APT + unsigned long long BootSize(bool initrdOnly); +#endif protected: // methods call by IsInstallOk bool IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg, diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index b0ac4ae..02e8d4e 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -41,20 +41,9 @@ 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 static bool WriteOkay_fn(FileFd &output, APT::StringView data, Tail... more_data) +template static bool WriteOkay_fn(FileFd &output, std::string_view data, Tail... more_data) { return likely(output.Write(data.data(), data.length()) && WriteOkay_fn(output, more_data...)); } @@ -99,7 +88,7 @@ static bool WriteScenarioVersion(FileFd &output, pkgCache::PkgIterator const &Pk // WriteScenarioDependency /*{{{*/ static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const &Ver, bool const OnlyCritical) { - std::array dependencies; + std::array dependencies; bool orGroup = false; for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) { @@ -123,7 +112,7 @@ static bool WriteScenarioDependency(FileFd &output, pkgCache::VerIterator const 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]); + WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]); std::vector provides; for (auto Prv = Ver.ProvidesList(); not Prv.end(); ++Prv) { @@ -152,7 +141,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output, std::vector const &pkgset, bool const OnlyCritical) { - std::array dependencies; + std::array dependencies; bool orGroup = false; for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) { @@ -189,7 +178,7 @@ static bool WriteScenarioLimitedDependency(FileFd &output, 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]); + WriteOkay(Okay, output, "\n", pkgCache::DepType_NoL10n(i), ": ", dependencies[i]); string provides; for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) { @@ -216,7 +205,7 @@ static bool checkKnownArchitecture(std::string const &arch) /*{{{*/ return std::find(veryforeign.begin(), veryforeign.end(), arch) != veryforeign.end(); } /*}}}*/ -static bool WriteGenericRequestHeaders(FileFd &output, APT::StringView const head)/*{{{*/ +static bool WriteGenericRequestHeaders(FileFd &output, std::string_view const head)/*{{{*/ { bool Okay = WriteOkay(output, head, "Architecture: ", _config->Find("APT::Architecture"), "\n", "Architectures:"); @@ -250,10 +239,12 @@ static bool WriteScenarioEDSPVersion(pkgDepCache &Cache, FileFd &output, pkgCach { bool Okay = WriteOkay(output, "\nSource: ", Ver.SourcePkgName(), "\nSource-Version: ", Ver.SourceVerStr()); - if (PrioMap[Ver->Priority] != nullptr) - WriteOkay(Okay, output, "\nPriority: ", PrioMap[Ver->Priority]); + if (auto const Prio = pkgCache::Priority_NoL10n(Ver->Priority); not Prio.empty()) + WriteOkay(Okay, output, "\nPriority: ", Prio); if (Ver->Section != 0) WriteOkay(Okay, output, "\nSection: ", Ver.Section()); + if (Ver->Size != 0) + WriteOkay(Okay, output, "\nSize: ", Ver->Size); if (Pkg.CurrentVer() == Ver) WriteOkay(Okay, output, "\nInstalled: yes"); if (Pkg->SelectedState == pkgCache::State::Hold || @@ -336,6 +327,36 @@ bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FileFd &output, Progress->Done(); return Okay; } + +static void MarkPackage(std::vector &pkgset, pkgCache::PkgIterator pkg) +{ + if (pkgset[pkg->ID]) + return; + pkgset[pkg->ID] = true; + for (auto ver = pkg.VersionList(); not ver.end(); ++ver) + { + for (auto P = ver.ProvidesList(); not P.end(); ++P) + MarkPackage(pkgset, P.ParentPkg()); + for (auto D = ver.DependsList(); not D.end(); ++D) + { + std::unique_ptr targets(D.AllTargets()); + for (size_t i = 0; targets[i] != 0; ++i) + MarkPackage(pkgset, pkgCache::VerIterator(*ver.Cache(), targets[i]).ParentPkg()); + + MarkPackage(pkgset, D.TargetPkg()); + } + } +} + +bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FileFd &output, + OpProgress *Progress) +{ + std::vector pkgset(Cache.Head().PackageCount); + for (auto Pkg = Cache.PkgBegin(); not Pkg.end(); ++Pkg) + if (Cache[Pkg].Install() || Pkg->CurrentVer) + MarkPackage(pkgset, Pkg); + return WriteLimitedScenario(Cache, output, pkgset, Progress); +} /*}}}*/ // EDSP::WriteRequest - to the given file descriptor /*{{{*/ bool EDSP::WriteRequest(pkgDepCache &Cache, FileFd &output, @@ -382,8 +403,12 @@ bool EDSP::WriteRequest(pkgDepCache &Cache, FileFd &output, } if (flags & Request::FORBID_NEW_INSTALL) WriteOkay(Okay, output, "Forbid-New-Install: yes\n"); + else if (flags & Request::FORBID_REMOVE) + WriteOkay(Okay, output, "Forbid-New-Install: no\n"); if (flags & Request::FORBID_REMOVE) WriteOkay(Okay, output, "Forbid-Remove: yes\n"); + else if (flags & Request::FORBID_NEW_INSTALL) + WriteOkay(Okay, output, "Forbid-Remove: no\n"); auto const solver = _config->Find("APT::Solver", "internal"); WriteOkay(Okay, output, "Solver: ", solver, "\n"); if (_config->FindB("APT::Solver::Strict-Pinning", true) == false) @@ -435,7 +460,7 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progres if (Progress != nullptr) Progress->Done(); Progress = nullptr; - _error->DumpErrors(std::cerr, GlobalError::DEBUG, false); + _error->DumpErrors(std::cerr, GlobalError::NOTICE, false); } std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n"); if (msg.empty() == true) { @@ -536,7 +561,7 @@ static bool localStringToBool(std::string answer, bool const defValue) { return defValue; } /*}}}*/ -static bool LineStartsWithAndStrip(std::string &line, APT::StringView const with)/*{{{*/ +static bool LineStartsWithAndStrip(std::string &line, std::string_view const with)/*{{{*/ { if (line.compare(0, with.size(), with.data()) != 0) return false; @@ -544,7 +569,7 @@ static bool LineStartsWithAndStrip(std::string &line, APT::StringView const with return true; } /*}}}*/ -static bool ReadFlag(unsigned int &flags, std::string &line, APT::StringView const name, unsigned int const setflag)/*{{{*/ +static bool ReadFlag(unsigned int &flags, std::string &line, std::string_view const name, unsigned int const setflag)/*{{{*/ { if (LineStartsWithAndStrip(line, name) == false) return false; @@ -746,7 +771,7 @@ static bool CreateDumpFile(char const * const id, char const * const type, FileF 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; + output.Open(dumpfile, FileFd::WriteOnly | FileFd::Exclusive | FileFd::Create | FileFd::BufferedWrite, FileFd::Extension, 0644) == false; std::vector downgrademsgs; while (_error->empty() == false) { @@ -765,12 +790,33 @@ static bool CreateDumpFile(char const * const id, char const * const type, FileF // 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 (strstr(solver, "3.") == solver) + { + APT::Solver s(Cache.GetCache(), Cache.GetPolicy(), (EDSP::Request::Flags) flags); + FileFd output; + bool res = true; + if (Progress != NULL) + Progress->OverallProgress(0, 100, 1, (flags & EDSP::Request::UPGRADE_ALL) ? _("Calculating upgrade") : _("Solving dependencies")); + if (res && not s.FromDepCache(Cache)) + res = false; + if (Progress != NULL) + Progress->Progress(10); + if (res && not s.Solve()) + res = false; + if (Progress != NULL) + Progress->Progress(90); + if (res && not s.ToDepCache(Cache)) + res = false; + if (Progress != NULL) + Progress->Done(); + return res; + } 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); + return Okay && EDSP::WriteLimitedScenario(Cache, output, nullptr); } _error->PushToStack(); int solver_in, solver_out; @@ -963,14 +1009,14 @@ bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const pkgset[P->ID] = true; if (strcmp(P.Arch(), "any") == 0) { - APT::StringView const pkgname(P.Name()); + std::string_view const pkgname(P.Name()); auto const idxColon = pkgname.find(':'); - if (idxColon != APT::StringView::npos) + if (idxColon != std::string_view::npos) { pkgCache::PkgIterator PA; if (pkgname.substr(idxColon + 1) == "any") { - auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon).to_string()); + auto const GA = Cache.FindGrp(pkgname.substr(0, idxColon)); for (auto PA = GA.PackageList(); PA.end() == false; PA = GA.NextPkg(PA)) { pkgset[PA->ID] = true; @@ -978,7 +1024,7 @@ bool EIPP::WriteScenario(pkgDepCache &Cache, FileFd &output, OpProgress * const } else { - auto const PA = Cache.FindPkg(pkgname.to_string()); + auto const PA = Cache.FindPkg(pkgname); if (PA.end() == false) pkgset[PA->ID] = true; } @@ -1044,7 +1090,7 @@ bool EIPP::ReadResponse(int const input, pkgPackageManager * const PM, OpProgres if (Progress != nullptr) Progress->Done(); Progress = nullptr; - _error->DumpErrors(std::cerr, GlobalError::DEBUG, false); + _error->DumpErrors(std::cerr, GlobalError::NOTICE, false); } std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n"); if (msg.empty() == true) { diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index 0c37e23..22767bd 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -91,6 +91,22 @@ namespace EDSP /*{{{*/ std::vector const &pkgset, OpProgress *Progress = NULL); + /** \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 reachable from installed packages or packages marked for + * install. + * + * \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 + */ + APT_PUBLIC bool WriteLimitedScenario(pkgDepCache &Cache, FileFd &output, + OpProgress *Progress = NULL); + /** \brief waits and acts on the information returned from the solver * * This method takes care of interpreting whatever the solver sends diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc index e97f168..99947f4 100644 --- a/apt-pkg/edsp/edspindexfile.cc +++ b/apt-pkg/edsp/edspindexfile.cc @@ -28,7 +28,7 @@ edspLikeIndex::edspLikeIndex(std::string const &File) : pkgDebianIndexRealFile(F } std::string edspLikeIndex::GetArchitecture() const { - return std::string(); + return {}; } bool edspLikeIndex::HasPackages() const { @@ -94,10 +94,10 @@ pkgCacheListParser * eippIndex::CreateListParser(FileFd &Pkg) class APT_HIDDEN edspIFType: public pkgIndexFile::Type { public: - virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE + [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*PkgFile*/) const override { // we don't have a record parser for this type as the file is not persistent - return NULL; + return nullptr; }; edspIFType() {Label = "EDSP scenario file";}; }; @@ -110,10 +110,10 @@ const pkgIndexFile::Type *edspIndex::GetType() const class APT_HIDDEN eippIFType: public pkgIndexFile::Type { public: - virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &) const APT_OVERRIDE + [[nodiscard]] pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator const &/*PkgFile*/) const override { // we don't have a record parser for this type as the file is not persistent - return NULL; + return nullptr; }; eippIFType() {Label = "EIPP scenario file";}; }; @@ -124,6 +124,6 @@ const pkgIndexFile::Type *eippIndex::GetType() const } /*}}}*/ -edspLikeIndex::~edspLikeIndex() {} -edspIndex::~edspIndex() {} -eippIndex::~eippIndex() {} +edspLikeIndex::~edspLikeIndex() = default; +edspIndex::~edspIndex() = default; +eippIndex::~eippIndex() = default; diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h index 42ef3fe..ee1079a 100644 --- a/apt-pkg/edsp/edspindexfile.h +++ b/apt-pkg/edsp/edspindexfile.h @@ -18,42 +18,42 @@ 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; + bool OpenListFile(FileFd &Pkg, std::string const &File) override; + [[nodiscard]] uint8_t GetIndexFlags() const override; + [[nodiscard]] std::string GetArchitecture() const override; -public: - virtual bool Exists() const APT_OVERRIDE; - virtual bool HasPackages() const APT_OVERRIDE; + public: + [[nodiscard]] bool Exists() const override; + [[nodiscard]] bool HasPackages() const override; explicit edspLikeIndex(std::string const &File); - virtual ~edspLikeIndex(); + ~edspLikeIndex() override; }; class APT_HIDDEN edspIndex : public edspLikeIndex { protected: - APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; - virtual std::string GetComponent() const APT_OVERRIDE; + APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override; + [[nodiscard]] std::string GetComponent() const override; public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + [[nodiscard]] const Type *GetType() const override APT_PURE; explicit edspIndex(std::string const &File); - virtual ~edspIndex(); + ~edspIndex() override; }; class APT_HIDDEN eippIndex : public edspLikeIndex { protected: - APT_HIDDEN virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; - virtual std::string GetComponent() const APT_OVERRIDE; + APT_HIDDEN pkgCacheListParser *CreateListParser(FileFd &Pkg) override; + [[nodiscard]] std::string GetComponent() const override; -public: - virtual const Type *GetType() const APT_OVERRIDE APT_PURE; + public: + [[nodiscard]] const Type *GetType() const override APT_PURE; explicit eippIndex(std::string const &File); - virtual ~eippIndex(); + ~eippIndex() override; }; #endif diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc index 5419069..a3cdf79 100644 --- a/apt-pkg/edsp/edsplistparser.cc +++ b/apt-pkg/edsp/edsplistparser.cc @@ -17,7 +17,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,25 @@ edspListParser::edspListParser(FileFd * const File) : edspLikeListParser(File) bool edspLikeListParser::NewVersion(pkgCache::VerIterator &Ver) { _system->SetVersionMapping(Ver->ID, Section.FindI("APT-ID", Ver->ID)); - return debListParser::NewVersion(Ver); + if (not debListParser::NewVersion(Ver)) + return false; + + // Patch up the source version, it is stored in the Source-Version field in EDSP. + if (std::string_view version = Section.Find(pkgTagSection::Key::Source_Version); not version.empty()) + { + if (version != Ver.VerStr()) + { + map_stringitem_t const idx = StoreString(pkgCacheGenerator::VERSIONNUMBER, version); + Ver.SourceVersion()->VerStr = idx; + } + } + + // If we have a Size field, use it, otherwise fake one based on APT-Release to + // be able to distinguish downloadable debs from installed ones. + Ver->Size = Section.Exists(pkgTagSection::Key::Size) + ? Section.FindI(pkgTagSection::Key::Size) + : Section.Exists("APT-Release"); + return true; } /*}}}*/ // ListParser::Description - Return the description string /*{{{*/ @@ -54,9 +71,9 @@ std::vector edspLikeListParser::AvailableDescriptionLanguages() { return {}; } -APT::StringView edspLikeListParser::Description_md5() +std::string_view edspLikeListParser::Description_md5() { - return APT::StringView(); + return {}; } /*}}}*/ // ListParser::VersionHash - Compute a unique hash for this version /*{{{*/ diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h index 41bfd1f..7d9eb58 100644 --- a/apt-pkg/edsp/edsplistparser.h +++ b/apt-pkg/edsp/edsplistparser.h @@ -16,21 +16,19 @@ #include #include +#include -namespace APT { - class StringView; -} class APT_HIDDEN edspLikeListParser : public debListParser { public: - virtual bool NewVersion(pkgCache::VerIterator &Ver) APT_OVERRIDE; - virtual std::vector AvailableDescriptionLanguages() APT_OVERRIDE; - virtual APT::StringView Description_md5() APT_OVERRIDE; - virtual uint32_t VersionHash() APT_OVERRIDE; + bool NewVersion(pkgCache::VerIterator &Ver) override; + std::vector AvailableDescriptionLanguages() override; + std::string_view Description_md5() override; + uint32_t VersionHash() override; explicit edspLikeListParser(FileFd *File); - virtual ~edspLikeListParser(); + ~edspLikeListParser() override; }; class APT_HIDDEN edspListParser : public edspLikeListParser @@ -39,20 +37,20 @@ class APT_HIDDEN edspListParser : public edspLikeListParser FileFd preferences; protected: - virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE; + bool ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) override; public: explicit edspListParser(FileFd *File); - virtual ~edspListParser(); + ~edspListParser() override; }; class APT_HIDDEN eippListParser : public edspLikeListParser { protected: - virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE; + bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) override; public: explicit eippListParser(FileFd *File); - virtual ~eippListParser(); + ~eippListParser() override; }; #endif diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h index 97c2d66..e34c4ec 100644 --- a/apt-pkg/edsp/edspsystem.h +++ b/apt-pkg/edsp/edspsystem.h @@ -29,24 +29,24 @@ class APT_HIDDEN edspLikeSystem : public pkgSystem std::unique_ptr StatusFile; public: - virtual bool Lock(OpProgress * const Progress) APT_OVERRIDE APT_PURE; - virtual bool UnLock(bool NoErrors = false) APT_OVERRIDE APT_PURE; - virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const APT_OVERRIDE APT_PURE; - virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE; - virtual bool ArchiveSupported(const char *Type) APT_OVERRIDE APT_PURE; - virtual signed Score(Configuration const &Cnf) APT_OVERRIDE; - virtual bool FindIndex(pkgCache::PkgFileIterator File, - pkgIndexFile *&Found) const APT_OVERRIDE; - - bool MultiArchSupported() const override { return true; } - std::vector ArchitecturesSupported() const override { return {}; }; - - bool LockInner(OpProgress * const, int) override { return _error->Error("LockInner is not implemented"); }; - bool UnLockInner(bool) override { return _error->Error("UnLockInner is not implemented"); }; + bool Lock(OpProgress *Progress) override APT_PURE; + bool UnLock(bool NoErrors = false) override APT_PURE; + pkgPackageManager *CreatePM(pkgDepCache *Cache) const override APT_PURE; + bool Initialize(Configuration &Cnf) override; + bool ArchiveSupported(const char *Type) override APT_PURE; + signed Score(Configuration const &Cnf) override; + bool FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const override; + + [[nodiscard]] bool MultiArchSupported() const override { return true; } + [[nodiscard]] std::vector ArchitecturesSupported() const override { return {}; }; + + bool LockInner(OpProgress * const /*Progress*/, int /*timeOutSec*/) override { return _error->Error("LockInner is not implemented"); }; + bool UnLockInner(bool /*NoErrors*/) override { return _error->Error("UnLockInner is not implemented"); }; bool IsLocked() override { return true; }; explicit edspLikeSystem(char const * const Label); - virtual ~edspLikeSystem(); + ~edspLikeSystem() override; }; class APT_HIDDEN edspSystem : public edspLikeSystem @@ -56,20 +56,20 @@ class APT_HIDDEN edspSystem : public edspLikeSystem std::string tempPrefsFile; public: - virtual bool Initialize(Configuration &Cnf) APT_OVERRIDE; - virtual bool AddStatusFiles(std::vector &List) APT_OVERRIDE; + bool Initialize(Configuration &Cnf) override; + bool AddStatusFiles(std::vector &List) override; edspSystem(); - virtual ~edspSystem(); + ~edspSystem() override; }; class APT_HIDDEN eippSystem : public edspLikeSystem { public: - virtual bool AddStatusFiles(std::vector &List) APT_OVERRIDE; + bool AddStatusFiles(std::vector &List) override; eippSystem(); - virtual ~eippSystem(); + ~eippSystem() override; }; #endif diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index bf78703..139b103 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -3,9 +3,9 @@ /* ###################################################################### Index Copying - Aid for copying and verifying the index files - - This class helps apt-cache reconstruct a damaged index files. - + + This class helps apt-cache reconstruct a damaged index files. + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -48,13 +48,13 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector &List, OpProgress *Progress = NULL; if (List.empty() == true) return true; - - if(log) + + 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 const compressor = APT::Configuration::getCompressors(); @@ -91,7 +91,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector &List, 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(), @@ -282,14 +282,14 @@ bool IndexCopy::ReconstructPrefix(string &Prefix,string OrigPath,string CD, cout << "Failed, " << CD + MyPrefix + File << endl; if (GrabFirst(OrigPath,MyPrefix,Depth++) == true) continue; - + return false; } else { Prefix = MyPrefix; return true; - } + } } return false; } @@ -324,18 +324,18 @@ bool IndexCopy::ReconstructChop(unsigned long &Chop,string Dir,string File) /*}}}*/ // IndexCopy::ConvertToSourceList - Convert a Path to a sourcelist /*{{{*/ // --------------------------------------------------------------------- -/* We look for things in dists/ notation and convert them to +/* We look for things in dists/ notation and convert them to form otherwise it is left alone. This also strips - the CD path. - - This implements a regex sort of like: - (.*)/dists/([^/]*)/(.*)/binary-* + 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 + unstable/some-component) to increase the chance that each CD gets a single line in sources.list. */ void IndexCopy::ConvertToSourceList(string CD,string &Path) @@ -344,22 +344,22 @@ void IndexCopy::ConvertToSourceList(string CD,string &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++) @@ -368,13 +368,13 @@ void IndexCopy::ConvertToSourceList(string CD,string &Path) 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-")); @@ -386,7 +386,7 @@ void IndexCopy::ConvertToSourceList(string CD,string &Path) Path = Dist + ' ' + Comp; return; - } + } } /*}}}*/ // IndexCopy::GrabFirst - Return the first Depth path components /*{{{*/ @@ -401,7 +401,7 @@ bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth) Depth--; } while (I != string::npos && Depth != 0); - + if (I == string::npos) return false; @@ -414,7 +414,7 @@ bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth) /* */ bool PackageCopy::GetFile(string &File,unsigned long long &Size) { - File = Section->Find(pkgTagSection::Key::Filename).to_string(); + File = Section->Find(pkgTagSection::Key::Filename); Size = Section->FindULL(pkgTagSection::Key::Size); if (File.empty() || Size == 0) return _error->Error("Cannot find filename or size tag"); @@ -440,7 +440,7 @@ bool SourceCopy::GetFile(string &File,unsigned long long &Size) std::string Files; for (auto hashinfo : HashString::SupportedHashesInfo()) { - Files = Section->Find(hashinfo.chksumskey).to_string(); + Files = Section->Find(hashinfo.chksumskey); if (not Files.empty()) break; } @@ -451,17 +451,17 @@ bool SourceCopy::GetFile(string &File,unsigned long long &Size) 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); auto const Base = Section->Find(pkgTagSection::Key::Directory); - File = flCombine(Base.to_string(), File); + File = flCombine(std::string{Base}, File); return true; } /*}}}*/ @@ -552,7 +552,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector &SigList, cout << "Signature verify for: " << *I << endl; metaIndex *MetaIndex = new debReleaseIndex("","", {}); - string prefix = *I; + string prefix = *I; string const releasegpg = *I+"Release.gpg"; string const release = *I+"Release"; @@ -604,18 +604,18 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector &SigList, // if so, remove them from our copy of the lists vector keys = MetaIndex->MetaKeys(); for (vector::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; + 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"); @@ -624,7 +624,7 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector &SigList, CopyMetaIndex(CDROM, Name, prefix, "Release"); CopyMetaIndex(CDROM, Name, prefix, "Release.gpg"); } - } + } return true; } @@ -635,12 +635,12 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name, /*{{{*/ OpProgress *Progress = NULL; if (List.empty() == true) return true; - - if(log) + + if(log) Progress = log->GetOpProgress(); - + bool Debug = _config->FindB("Debug::aptcdrom",false); - + // Prepare the progress indicator off_t TotalSize = 0; std::vector const compressor = APT::Configuration::getCompressors(); diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h index 5fcce20..d81bc09 100644 --- a/apt-pkg/indexcopy.h +++ b/apt-pkg/indexcopy.h @@ -55,30 +55,28 @@ class APT_PUBLIC 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";}; + bool GetFile(std::string &Filename, unsigned long long &Size) override; + bool RewriteEntry(FileFd &Target, std::string const &File) override; + const char *GetFileName() override { return "Packages"; } + const char *Type() override { return "Package"; } public: PackageCopy(); - virtual ~PackageCopy(); + ~PackageCopy() override; }; /*}}}*/ class APT_PUBLIC 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";}; + bool GetFile(std::string &Filename, unsigned long long &Size) override; + bool RewriteEntry(FileFd &Target, std::string const &File) override; + const char *GetFileName() override { return "Sources"; } + const char *Type() override { return "Source"; }; public: SourceCopy(); - virtual ~SourceCopy(); + ~SourceCopy() override; }; /*}}}*/ class APT_PUBLIC TranslationsCopy /*{{{*/ diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc index 1176903..a6da060 100644 --- a/apt-pkg/indexfile.cc +++ b/apt-pkg/indexfile.cc @@ -324,7 +324,9 @@ pkgCacheListParser * pkgDebianIndexFile::CreateListParser(FileFd &Pkg) bool pkgDebianIndexFile::Merge(pkgCacheGenerator &Gen,OpProgress * const Prog) { std::string const PackageFile = IndexFileName(); + const IndexTarget *Target = nullptr; FileFd Pkg; + if (OpenListFile(Pkg, PackageFile) == false) return false; _error->PushToStack(); @@ -339,7 +341,10 @@ bool pkgDebianIndexFile::Merge(pkgCacheGenerator &Gen,OpProgress * const Prog) if (Prog != NULL) Prog->SubProgress(0, GetProgressDescription()); - if (Gen.SelectFile(PackageFile, *this, GetArchitecture(), GetComponent(), GetIndexFlags()) == false) + if (auto tmp = dynamic_cast(this)) + Target = &tmp->Target; + + if (Gen.SelectFile(PackageFile, *this, GetArchitecture(), GetComponent(), Target, GetIndexFlags()) == false) return _error->Error("Problem with SelectFile %s",PackageFile.c_str()); // Store the IMS information diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h index 95cee5d..887e9ff 100644 --- a/apt-pkg/indexfile.h +++ b/apt-pkg/indexfile.h @@ -163,34 +163,35 @@ class APT_PUBLIC pkgDebianIndexFile : public pkgIndexFile 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; + bool Merge(pkgCacheGenerator &Gen, OpProgress *Prog) override; + pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const override; explicit pkgDebianIndexFile(bool const Trusted); - virtual ~pkgDebianIndexFile(); + ~pkgDebianIndexFile() override; }; class APT_PUBLIC pkgDebianIndexTargetFile : public pkgDebianIndexFile { + friend class 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; + std::string IndexFileName() const override; + [[nodiscard]] std::string GetComponent() const override; + [[nodiscard]] std::string GetArchitecture() const override; + [[nodiscard]] std::string GetProgressDescription() const override; + bool OpenListFile(FileFd &Pkg, std::string const &FileName) 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; + public: + [[nodiscard]] std::string ArchiveURI(std::string const &File) const override; + [[nodiscard]] std::string Describe(bool Short = false) const override; + [[nodiscard]] bool Exists() const override; + [[nodiscard]] unsigned long Size() const override; IndexTarget GetIndexTarget() const APT_HIDDEN; pkgDebianIndexTargetFile(IndexTarget const &Target, bool const Trusted); - virtual ~pkgDebianIndexTargetFile(); + ~pkgDebianIndexTargetFile() override; }; class APT_PUBLIC pkgDebianIndexRealFile : public pkgDebianIndexFile @@ -199,17 +200,18 @@ class APT_PUBLIC pkgDebianIndexRealFile : public pkgDebianIndexFile 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; + [[nodiscard]] std::string IndexFileName() const override; + [[nodiscard]] std::string GetProgressDescription() const override; + bool OpenListFile(FileFd &Pkg, std::string const &FileName) override; + + public: + [[nodiscard]] std::string Describe(bool /*Short*/ = false) const override; + [[nodiscard]] bool Exists() const override; + [[nodiscard]] unsigned long Size() const override; + [[nodiscard]] std::string ArchiveURI(std::string const & /*File*/) const override; pkgDebianIndexRealFile(std::string const &File, bool const Trusted); - virtual ~pkgDebianIndexRealFile(); + ~pkgDebianIndexRealFile() override; }; #endif diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index 7593540..61d45e3 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -70,7 +70,7 @@ static bool pkgInitArchTupleMap() auto cpurow = split(cpuline); auto cpu = APT::String::Strip(cpurow.at(0)); - cpus.push_back(cpu); + cpus.emplace_back(cpu); } if (!cputable.eof()) return _error->Error("Error reading the CPU table"); @@ -97,14 +97,14 @@ static bool pkgInitArchTupleMap() if (tuple.find("") == tuple.npos && arch.find("") == arch.npos) { - APT::ArchToTupleMap.insert({arch, VectorizeString(tuple, '-')}); + APT::ArchToTupleMap.insert({std::string{arch}, VectorizeString(tuple, '-')}); } else { for (auto && cpu : cpus) { - auto mytuple = SubstVar(tuple, std::string(""), cpu); - auto myarch = SubstVar(arch, std::string(""), cpu); + auto mytuple = SubstVar(tuple, "", cpu); + auto myarch = SubstVar(arch, "", cpu); APT::ArchToTupleMap.insert({myarch, VectorizeString(mytuple, '-')}); } @@ -131,7 +131,9 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.Set("APT::Build-Essential::", "build-essential"); Cnf.CndSet("APT::Install-Recommends", true); Cnf.CndSet("APT::Install-Suggests", false); - Cnf.CndSet("APT::Key::Assert-Pubkey-Algo", ">=rsa2048,ed25519,ed448"); + Cnf.CndSet("APT::Key::Assert-Pubkey-Algo", ">=rsa2048,ed25519,ed448,nistp256,nistp384,nistp512,brainpoolP256r1,brainpoolP320r1,brainpoolP384r1,brainpoolP512r1,secp256k1"); + Cnf.CndSet("APT::Key::Assert-Pubkey-Algo::Next", ">=rsa2048,ed25519,ed448,nistp256,nistp384,nistp512"); + Cnf.CndSet("APT::Key::Assert-Pubkey-Algo::Future", ">=rsa3072,ed25519,ed448"); Cnf.CndSet("Dir","/"); // State @@ -147,6 +149,8 @@ bool pkgInitConfig(Configuration &Cnf) // Configuration Cnf.CndSet("Dir::Etc", &CONF_DIR[1]); + Cnf.CndSet("Dir::Boot", "boot"); + Cnf.CndSet("Dir::Usr", "usr"); Cnf.CndSet("Dir::Etc::sourcelist","sources.list"); Cnf.CndSet("Dir::Etc::sourceparts","sources.list.d"); Cnf.CndSet("Dir::Etc::main","apt.conf"); @@ -155,7 +159,6 @@ bool pkgInitConfig(Configuration &Cnf) 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"); diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc index 2b0dc21..fe33244 100644 --- a/apt-pkg/install-progress.cc +++ b/apt-pkg/install-progress.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -344,14 +345,23 @@ void PackageManagerFancy::Stop() std::string PackageManagerFancy::GetTextProgressStr(float Percent, int OutputSize) { + bool Unicode = strcmp(nl_langinfo(CODESET), "UTF-8") == 0; 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(std::floor(Percent * BarSize)))); + double dummy; + double const BarDoneFractional = std::modf(Percent * BarSize, &dummy); + const char *const BarDoneFractionalChar = (const char *[]){ + " ", "▏", "▎", "▍", "▌", "▋", "▊", "▉"}[static_cast(std::floor(BarDoneFractional * 8))]; output.append("["); - std::fill_n(std::fill_n(std::back_inserter(output), BarDone, '#'), BarSize - BarDone, '.'); + for (int i = 0; i < BarDone; i++) + output.append(Unicode ? "█" : "#"); + if (BarDone + 1 <= BarSize) + output.append(Unicode ? BarDoneFractionalChar : "."); + std::fill_n(std::back_inserter(output), BarSize - BarDone - 1, Unicode ? ' ' : '.'); output.append("]"); return output; } diff --git a/apt-pkg/install-progress.h b/apt-pkg/install-progress.h index db060b3..499ac23 100644 --- a/apt-pkg/install-progress.h +++ b/apt-pkg/install-progress.h @@ -70,24 +70,23 @@ namespace Progress { 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; - + ~PackageManagerProgressFd() override; + + void StartDpkg() override; + void Stop() override; + + bool StatusChanged(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string HumanReadableAction) override; + void Error(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string ErrorMessage) override; + void ConffilePrompt(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string ConfMessage) override; }; class APT_PUBLIC PackageManagerProgressDeb822Fd : public PackageManager @@ -101,23 +100,23 @@ namespace Progress { 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; + ~PackageManagerProgressDeb822Fd() override; + + void StartDpkg() override; + void Stop() override; + + bool StatusChanged(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string HumanReadableAction) override; + void Error(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string ErrorMessage) override; + void ConffilePrompt(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string ConfMessage) override; }; class APT_PUBLIC PackageManagerFancy : public PackageManager @@ -146,14 +145,14 @@ namespace Progress { public: PackageManagerFancy(); - virtual ~PackageManagerFancy(); - virtual void Pulse() APT_OVERRIDE; - 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; + ~PackageManagerFancy() override; + void Pulse() override; + void Start(int child_pty = -1) override; + void Stop() override; + bool StatusChanged(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string HumanReadableAction) override; // return a progress bar of the given size for the given progress // percent between 0.0 and 1.0 in the form "[####...]" @@ -164,13 +163,13 @@ namespace Progress { { void * const d; public: - virtual bool StatusChanged(std::string PackageName, - unsigned int StepsDone, - unsigned int TotalSteps, - std::string HumanReadableAction) APT_OVERRIDE; + bool StatusChanged(std::string PackageName, + unsigned int StepsDone, + unsigned int TotalSteps, + std::string HumanReadableAction) override; PackageManagerText(); - virtual ~PackageManagerText(); + ~PackageManagerText() override; }; diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc index f3df9b1..10c93de 100644 --- a/apt-pkg/metaindex.cc +++ b/apt-pkg/metaindex.cc @@ -1,6 +1,7 @@ // Include Files /*{{{*/ #include +#include #include #include #include @@ -151,3 +152,15 @@ bool metaIndex::HasSupportForComponent(std::string const &) const/*{{{*/ return true; } /*}}}*/ +bool metaIndex::Load(std::string *ErrorText) /*{{{*/ +{ + auto debmeta = dynamic_cast(this); + if (not debmeta) + return false; + if (auto f = debmeta->MetaIndexFile("InRelease"); FileExists(f)) + return Load(f, ErrorText); + if (auto f = debmeta->MetaIndexFile("Release"); FileExists(f)) + return Load(f, ErrorText); + return false; +} + /*}}}*/ diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h index e2a773c..e6c8b7c 100644 --- a/apt-pkg/metaindex.h +++ b/apt-pkg/metaindex.h @@ -96,6 +96,7 @@ class APT_PUBLIC metaIndex virtual std::vector *GetIndexFiles() = 0; virtual bool IsTrusted() const = 0; virtual bool Load(std::string const &Filename, std::string * const ErrorText) = 0; + bool Load(std::string *const ErrorText); /** @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 @@ -120,6 +121,10 @@ class APT_PUBLIC metaIndex virtual bool IsArchitectureSupported(std::string const &arch) const; virtual bool IsArchitectureAllSupportedFor(IndexTarget const &target) const; virtual bool HasSupportForComponent(std::string const &component) const; + +#ifdef APT_COMPILING_APT + bool IsTrustedSet() { return Trusted == TRI_YES; } +#endif }; #endif diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index ce7677e..05a4f7f 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -44,9 +44,9 @@ bool pkgPackageManager::SigINTStop = false; // --------------------------------------------------------------------- /* */ pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache), - List(NULL), Res(Incomplete), d(NULL) + List(nullptr), Res(Incomplete), d(nullptr) { - FileNames = new string[Cache.Head().PackageCount]; + FileNames = std::make_unique(Cache.Head().PackageCount); Debug = _config->FindB("Debug::pkgPackageManager",false); NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true); ImmConfigureAll = _config->FindB("APT::Immediate-Configure-All",false); @@ -55,11 +55,7 @@ pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache), // PM::PackageManager - Destructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgPackageManager::~pkgPackageManager() -{ - delete List; - delete [] FileNames; -} +pkgPackageManager::~pkgPackageManager() = default; /*}}}*/ // PM::GetArchives - Queue the archives for download /*{{{*/ // --------------------------------------------------------------------- @@ -109,7 +105,7 @@ bool pkgPackageManager::FixMissing() { pkgDepCache::ActionGroup group(Cache); pkgProblemResolver Resolve(&Cache); - List->SetFileList(FileNames); + List->SetFileList(FileNames.get()); bool Bad = false; for (PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I) @@ -123,8 +119,7 @@ bool pkgPackageManager::FixMissing() } // We have to empty the list otherwise it will not have the new changes - delete List; - List = 0; + List.reset(); if (Bad == false) return true; @@ -176,8 +171,7 @@ bool pkgPackageManager::CreateOrderList() if (List != 0) return true; - delete List; - List = new pkgOrderList(&Cache); + List = std::make_unique(&Cache); if (Debug && ImmConfigureAll) clog << "CreateOrderList(): Adding Immediate flag for all packages because of APT::Immediate-Configure-All" << endl; @@ -1065,7 +1059,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall() bool const ordering = _config->FindB("PackageManager::UnpackAll",true) ? - List->OrderUnpack(FileNames) : List->OrderCritical(); + List->OrderUnpack(FileNames.get()) : List->OrderCritical(); if (ordering == false) { _error->Error("Internal ordering error"); diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h index d4cc3c6..b6d592e 100644 --- a/apt-pkg/packagemanager.h +++ b/apt-pkg/packagemanager.h @@ -27,6 +27,7 @@ #include #include +#include #include #include @@ -52,9 +53,9 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace static bool SigINTStop; protected: - std::string *FileNames; + std::unique_ptrFileNames; pkgDepCache &Cache; - pkgOrderList *List; + std::unique_ptr List; bool Debug; bool NoImmConfigure; bool ImmConfigureAll; @@ -78,10 +79,10 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace // Install helpers bool ConfigureAll(); - bool SmartConfigure(PkgIterator Pkg, int const Depth) APT_MUSTCHECK; - bool SmartUnPack(PkgIterator Pkg, bool const Immediate = true, int const Depth = 0) APT_MUSTCHECK; - bool SmartRemove(PkgIterator Pkg) APT_MUSTCHECK; - bool EarlyRemove(PkgIterator Pkg, DepIterator const * const Dep) APT_MUSTCHECK; + [[nodiscard]] bool SmartConfigure(PkgIterator Pkg, int Depth); + [[nodiscard]] bool SmartUnPack(PkgIterator Pkg, bool Immediate = true, int Depth = 0); + [[nodiscard]] bool SmartRemove(PkgIterator Pkg); + [[nodiscard]] bool EarlyRemove(PkgIterator Pkg, DepIterator const *Dep); // The Actual installation implementation virtual bool Install(PkgIterator /*Pkg*/,std::string /*File*/) {return false;}; @@ -130,9 +131,9 @@ class APT_PUBLIC pkgPackageManager : protected pkgCache::Namespace 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; + [[nodiscard]] APT_HIDDEN bool NonLoopingSmart(SmartAction action, pkgCache::PkgIterator &Pkg, + pkgCache::PkgIterator DepPkg, int Depth, bool PkgLoop, + bool *Bad, bool *Changed); }; #endif diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index ffe30fa..4101fb4 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -1,18 +1,18 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Package Cache - Accessor code for the cache - - Please see doc/apt-pkg/cache.sgml for a more detailed description of + + 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 seamlessly 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. @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -44,7 +45,7 @@ /*}}}*/ using std::string; -using APT::StringView; +using std::string_view; // Cache::Header::Header - Constructor /*{{{*/ @@ -66,7 +67,8 @@ pkgCache::Header::Header() 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(SourceVersionSz, sizeof(pkgCache::SourceVersion)); + APT_HEADER_SET(VersionSz, sizeof(pkgCache::Version) + sizeof(pkgCache::Version::Extra)); APT_HEADER_SET(DescriptionSz, sizeof(pkgCache::Description)); APT_HEADER_SET(DependencySz, sizeof(pkgCache::Dependency)); APT_HEADER_SET(DependencyDataSz, sizeof(pkgCache::DependencyData)); @@ -78,6 +80,7 @@ pkgCache::Header::Header() GroupCount = 0; PackageCount = 0; VersionCount = 0; + SourceVersionCount = 0; DescriptionCount = 0; DependsCount = 0; DependsDataCount = 0; @@ -111,6 +114,7 @@ bool pkgCache::Header::CheckSizes(Header &Against) const ReleaseFileSz == Against.ReleaseFileSz && PackageFileSz == Against.PackageFileSz && VersionSz == Against.VersionSz && + SourceVersionSz == Against.SourceVersionSz && DescriptionSz == Against.DescriptionSz && DependencySz == Against.DependencySz && DependencyDataSz == Against.DependencyDataSz && @@ -127,7 +131,7 @@ bool pkgCache::Header::CheckSizes(Header &Against) const /* */ pkgCache::pkgCache(MMap *Map, bool DoMap) : Map(*Map), VS(nullptr), d(NULL) { - // call getArchitectures() with cached=false to ensure that the + // call getArchitectures() with cached=false to ensure that the // architectures cache is re-evaluated. this is needed in cases // when the APT::Architecture field changes between two cache creations APT::Configuration::getArchitectures(false); @@ -150,6 +154,7 @@ bool pkgCache::ReMap(bool const &Errorchecks) RlsFileP = (ReleaseFile *)Map.Data(); PkgFileP = (PackageFile *)Map.Data(); VerP = (Version *)Map.Data(); + SrcVerP = (SourceVersion *)Map.Data(); DescP = (Description *)Map.Data(); ProvideP = (Provides *)Map.Data(); DepP = (Dependency *)Map.Data(); @@ -161,13 +166,13 @@ bool pkgCache::ReMap(bool const &Errorchecks) 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) @@ -207,7 +212,7 @@ bool pkgCache::ReMap(bool const &Errorchecks) /* 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 +map_id_t pkgCache::sHash(string_view Str) const { uint32_t Hash = 5381; auto I = Str.begin(); @@ -244,7 +249,7 @@ uint32_t pkgCache::CacheHash() XXH3_64bits_update(state, reinterpret_cast(PACKAGE_VERSION), - APT_ARRAY_SIZE(PACKAGE_VERSION)); + strlen(PACKAGE_VERSION)); XXH3_64bits_update(state, reinterpret_cast(&header), @@ -264,7 +269,7 @@ uint32_t pkgCache::CacheHash() // Cache::FindPkg - Locate a package by name /*{{{*/ // --------------------------------------------------------------------- /* Returns 0 on error, pointer to the package otherwise */ -pkgCache::PkgIterator pkgCache::FindPkg(StringView Name) { +pkgCache::PkgIterator pkgCache::FindPkg(string_view Name) { auto const found = Name.rfind(':'); if (found == string::npos) return FindPkg(Name, "native"); @@ -280,7 +285,7 @@ pkgCache::PkgIterator pkgCache::FindPkg(StringView Name) { // Cache::FindPkg - Locate a package by name /*{{{*/ // --------------------------------------------------------------------- /* Returns 0 on error, pointer to the package otherwise */ -pkgCache::PkgIterator pkgCache::FindPkg(StringView Name, StringView Arch) { +pkgCache::PkgIterator pkgCache::FindPkg(string_view Name, string_view 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) */ @@ -294,7 +299,7 @@ pkgCache::PkgIterator pkgCache::FindPkg(StringView Name, StringView Arch) { // Cache::FindGrp - Locate a group by name /*{{{*/ // --------------------------------------------------------------------- /* Returns End-Pointer on error, pointer to the group otherwise */ -pkgCache::GrpIterator pkgCache::FindGrp(StringView Name) { +pkgCache::GrpIterator pkgCache::FindGrp(string_view Name) { if (unlikely(Name.empty() == true)) return GrpIterator(*this,0); @@ -313,7 +318,7 @@ pkgCache::GrpIterator pkgCache::FindGrp(StringView Name) { /*}}}*/ // Cache::CompTypeDeb - Return a string describing the compare type /*{{{*/ // --------------------------------------------------------------------- -/* This returns a string representation of the dependency compare +/* This returns a string representation of the dependency compare type in the weird debian style.. */ const char *pkgCache::CompTypeDeb(unsigned char Comp) { @@ -340,30 +345,46 @@ const char *pkgCache::CompType(unsigned char Comp) /* */ 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)) + std::array Types{nullptr, _("Depends"), _("PreDepends"), _("Suggests"), + _("Recommends"), _("Conflicts"), _("Replaces"), + _("Obsoletes"), _("Breaks"), _("Enhances")}; + if (Type < Types.size()) return Types[Type]; return ""; +} +std::string_view pkgCache::DepType_NoL10n(unsigned char Type) +{ + std::array Types{"", "Depends", "Pre-Depends", "Suggests", + "Recommends", "Conflicts", "Replaces", + "Obsoletes", "Breaks", "Enhances"}; + if (Type < Types.size()) + 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 < APT_ARRAY_SIZE(Mapping)) + std::array Mapping{nullptr, _("required"), _("important"), _("standard"), + _("optional"), _("extra")}; + if (Prio < Mapping.size()) return Mapping[Prio]; - return 0; + return nullptr; +} +std::string_view pkgCache::Priority_NoL10n(unsigned char Prio) +{ + constexpr std::array const Mapping{ + "", "required", "important", "standard", "optional", "extra" + }; + if (Prio < Mapping.size()) + return Mapping[Prio]; + return {}; } /*}}}*/ // GrpIterator::FindPkg - Locate a package by arch /*{{{*/ // --------------------------------------------------------------------- /* Returns an End-Pointer on error, pointer to the package otherwise */ -pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(StringView Arch) const { +pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(string_view Arch) const { if (unlikely(IsGood() == false || S->FirstPackage == 0)) return PkgIterator(*Owner, 0); @@ -390,7 +411,7 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPkg(StringView Arch) const { // --------------------------------------------------------------------- /* 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)); + pkgCache::PkgIterator Pkg = FindPkg(string_view("native", 6)); if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0)) return Pkg; // native and foreign @@ -408,7 +429,7 @@ pkgCache::PkgIterator pkgCache::GrpIterator::FindPreferredPkg(bool const &Prefer return Pkg; } // packages without an architecture - Pkg = FindPkg(StringView("none", 4)); + Pkg = FindPkg(string_view("none", 4)); if (Pkg.end() == false && (PreferNonVirtual == false || Pkg->VersionList != 0)) return Pkg; // the "rest" we somehow know about (+ those we tried already again as skipping is hard) @@ -489,25 +510,25 @@ pkgCache::DepIterator& pkgCache::DepIterator::operator++() /*{{{*/ // --------------------------------------------------------------------- /* 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 + // 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; } /*}}}*/ @@ -529,8 +550,8 @@ pkgCache::PkgIterator::CurVersion() const 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) +std::ostream& +operator<<(std::ostream& out, pkgCache::PkgIterator Pkg) { if (Pkg.end() == true) return out << "invalid package"; @@ -593,34 +614,34 @@ bool pkgCache::DepIterator::IsNegative() const 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 + 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. */ + 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) @@ -633,11 +654,11 @@ bool pkgCache::DepIterator::SmartTargetPkg(PkgIterator &Result) const } Result = PStart.OwnerPkg(); - + // Check for non dups if (P.end() != true) return true; - + return false; } /*}}}*/ @@ -668,7 +689,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const if (Res != 0) *End++ = I; } - + // Follow all provides for (PrvIterator I = DPkg.ProvidesList(); I.end() == false; ++I) { @@ -681,7 +702,7 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const if (Res != 0) *End++ = I.OwnerVer(); } - + // Do it again and write it into the array if (Res == 0) { @@ -692,9 +713,9 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const { *End = 0; break; - } + } } - + return Res; } /*}}}*/ @@ -759,6 +780,13 @@ bool pkgCache::DepIterator::IsIgnorable(PrvIterator const &Prv) const } /*}}}*/ // DepIterator::IsSatisfied - check if a version satisfied the dependency /*{{{*/ +bool pkgCache::DepIterator::IsSatisfied(PkgIterator const &Pkg) const +{ + for (auto ver = Pkg.VersionList(); not ver.end(); ++ver) + if (not IsSatisfied(ver)) + return false; + return not Pkg.VersionList().end(); +} bool pkgCache::DepIterator::IsSatisfied(VerIterator const &Ver) const { return Owner->VS->CheckDep(Ver.VerStr(),S2->CompareOp,TargetVer()); @@ -821,7 +849,7 @@ int pkgCache::VerIterator::CompareVer(const VerIterator &B) const 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; @@ -836,6 +864,10 @@ int pkgCache::VerIterator::CompareVer(const VerIterator &B) const /* */ APT_PURE bool pkgCache::VerIterator::Downloadable() const { + // A zero size deb is not downloadable + if (S->Size == 0) + return false; + VerFileIterator Files = FileList(); for (; Files.end() == false; ++Files) if (Files.File().Flagged(pkgCache::Flag::NotSource) == false) @@ -845,7 +877,7 @@ APT_PURE bool pkgCache::VerIterator::Downloadable() const /*}}}*/ // VerIterator::Automatic - Check if this version is 'automatic' /*{{{*/ // --------------------------------------------------------------------- -/* This checks to see if any of the versions files are not NotAutomatic. +/* 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 { @@ -870,13 +902,13 @@ pkgCache::VerFileIterator pkgCache::VerIterator::NewestFile() const 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 +/* 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) { @@ -980,7 +1012,7 @@ string pkgCache::PkgFileIterator::RelStr() /*{{{*/ // --------------------------------------------------------------------- /* return a DescIter for the specified language */ -pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescriptionForLanguage(StringView lang) const +pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescriptionForLanguage(string_view lang) const { for (pkgCache::DescIterator Desc = DescriptionList(); Desc.end() == false; ++Desc) if (lang == Desc.LanguageCode()) diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 7c16f0d..7a9db3d 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -81,8 +81,8 @@ #include #include #include +#include -#include // size of (potentially big) files like debs or the install size of them @@ -131,6 +131,7 @@ class APT_PUBLIC pkgCache /*{{{*/ struct Package; struct ReleaseFile; struct PackageFile; + struct SourceVersion; struct Version; struct Description; struct Provides; @@ -145,6 +146,7 @@ class APT_PUBLIC pkgCache /*{{{*/ class GrpIterator; class PkgIterator; class VerIterator; + class SrcVerIterator; class DescIterator; class DepIterator; class PrvIterator; @@ -213,7 +215,7 @@ class APT_PUBLIC pkgCache /*{{{*/ // Memory mapped cache file std::string CacheFile; MMap ⤅ - map_id_t sHash(APT::StringView S) const APT_PURE; + map_id_t sHash(std::string_view S) const APT_PURE; public: @@ -225,13 +227,14 @@ class APT_PUBLIC pkgCache /*{{{*/ DescFile *DescFileP; ReleaseFile *RlsFileP; PackageFile *PkgFileP; + SourceVersion *SrcVerP; // reserved for SourceVersion objects Version *VerP; Description *DescP; Provides *ProvideP; Dependency *DepP; DependencyData *DepDataP; char *StrP; - void *reserved[12]; + void *reserved[13]; virtual bool ReMap(bool const &Errorchecks = true); inline bool Sync() {return Map.Sync();} @@ -239,23 +242,24 @@ class APT_PUBLIC pkgCache /*{{{*/ inline void *DataEnd() {return ((unsigned char *)Map.Data()) + Map.Size();} // String hashing function (512 range) - inline map_id_t Hash(APT::StringView S) const {return sHash(S);} + inline map_id_t Hash(std::string_view S) const {return sHash(S);} APT_HIDDEN uint32_t CacheHash(); // Useful transformation things static const char *Priority(unsigned char Priority); - + static std::string_view Priority_NoL10n(unsigned char Prio); + // Accessors - GrpIterator FindGrp(APT::StringView Name); - PkgIterator FindPkg(APT::StringView Name); - PkgIterator FindPkg(APT::StringView Name, APT::StringView Arch); + GrpIterator FindGrp(std::string_view Name); + PkgIterator FindPkg(std::string_view Name); + PkgIterator FindPkg(std::string_view Name, std::string_view Arch); - APT::StringView ViewString(map_stringitem_t idx) const + std::string_view ViewString(map_stringitem_t idx) const { char *name = StrP + idx; - uint16_t len = *reinterpret_cast(name - sizeof(uint16_t)); - return APT::StringView(name, len); + size_t len = *reinterpret_cast(__builtin_assume_aligned(name - sizeof(uint16_t), sizeof(uint16_t))); + return {name, len}; } Header &Head() {return *HeaderP;} @@ -278,6 +282,7 @@ class APT_PUBLIC pkgCache /*{{{*/ static const char *CompTypeDeb(unsigned char Comp) APT_PURE; static const char *CompType(unsigned char Comp) APT_PURE; static const char *DepType(unsigned char Dep); + static std::string_view DepType_NoL10n(unsigned char Dep); pkgCache(MMap *Map,bool DoMap = true); virtual ~pkgCache(); @@ -319,6 +324,7 @@ struct pkgCache::Header map_number_t ReleaseFileSz; map_number_t PackageFileSz; map_number_t VersionSz; + map_number_t SourceVersionSz; map_number_t DescriptionSz; map_number_t DependencySz; map_number_t DependencyDataSz; @@ -334,13 +340,14 @@ struct pkgCache::Header map_id_t GroupCount; map_id_t PackageCount; map_id_t VersionCount; + map_id_t SourceVersionCount; 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 VerFileCount; + map_id_t DescFileCount; map_id_t ProvidesCount; /** \brief index of the first PackageFile structure @@ -370,7 +377,7 @@ struct pkgCache::Header twice the number of pools as there are non-private structure types. The generator stores this information so future additions can make use of any unused pool blocks. */ - DynamicMMap::Pool Pools[2 * 12]; + DynamicMMap::Pool Pools[2 * 13]; /** \brief hash tables providing rapid group/package name lookup @@ -430,6 +437,9 @@ struct pkgCache::Group /** \brief List of binary produces by source package with this name. */ map_pointer VersionsInSource; + /** \brief SourceVersionList */ + map_pointer SourceVersionList; + /** \brief Private pointer */ map_pointer d; }; @@ -597,8 +607,6 @@ struct pkgCache::VerFile map_pointer NextFile; /** \brief position in the package file */ map_filesize_t Offset; // File offset - /** @TODO document pkgCache::VerFile::Size */ - map_filesize_t Size; }; /*}}}*/ // DescFile structure /*{{{*/ @@ -611,8 +619,27 @@ struct pkgCache::DescFile map_pointer NextFile; /** \brief position in the file */ map_filesize_t Offset; // File offset - /** @TODO document pkgCache::DescFile::Size */ - map_filesize_t Size; +}; + /*}}}*/ +// SourceVersion structure /*{{{*/ +/** \brief information for a single version of a source 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. */ +struct pkgCache::SourceVersion +{ + /** \brief unique sequel ID */ + map_id_t ID; + /** \brief Group the source package belongs too */ + map_pointer Group; + /** \brief complete version string */ + map_stringitem_t VerStr; + map_pointer VersionList [[gnu::unavailable("not yet available")]]; + map_pointer NextSourceVersion [[gnu::unavailable("not yet available")]]; + + /** \brief Private pointer */ + map_pointer d; }; /*}}}*/ // Version structure /*{{{*/ @@ -629,12 +656,11 @@ struct pkgCache::Version 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 the source version object */ + map_pointer SourceVersion; + /** \brief next version in the source package (might be different binary) */ + map_pointer NextInSourceVersion; /** \brief Multi-Arch capabilities of a package version */ enum VerMultiArch { No = 0, /*!< is the default and doesn't trigger special behaviour */ @@ -828,6 +854,7 @@ class pkgCache::Namespace /*{{{*/ typedef pkgCache::GrpIterator GrpIterator; typedef pkgCache::PkgIterator PkgIterator; typedef pkgCache::VerIterator VerIterator; + typedef pkgCache::SrcVerIterator SrcVerIterator; typedef pkgCache::DescIterator DescIterator; typedef pkgCache::DepIterator DepIterator; typedef pkgCache::PrvIterator PrvIterator; diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index 5047561..3358441 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -1,11 +1,11 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Package Cache Generator - Generator for the cache structure. - - This builds the cache structure from the abstract package list parser. - + + This builds the cache structure from the abstract package list parser. + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -44,11 +45,8 @@ template using Dynamic = pkgCacheGenerator::Dynamic; typedef std::vector::iterator FileIterator; template std::vector pkgCacheGenerator::Dynamic::toReMap; -static bool IsDuplicateDescription(pkgCache &Cache, pkgCache::DescIterator Desc, - APT::StringView CurMd5, std::string const &CurLang); - using std::string; -using APT::StringView; +using std::string_view; // Convert an offset returned from e.g. DynamicMMap or ptr difference to // an uint32_t location without data loss. @@ -70,6 +68,8 @@ pkgCacheGenerator::pkgCacheGenerator(DynamicMMap *pMap,OpProgress *Prog) : Map(*pMap), Cache(pMap,false), Progress(Prog), CurrentRlsFile(nullptr), CurrentFile(nullptr), d(nullptr) { + // Reserve some space for version extra data, to avoid lots of small resizes. + VersionExtra.reserve(32 * 1024); } bool pkgCacheGenerator::Start() { @@ -129,7 +129,7 @@ bool pkgCacheGenerator::Start() else { // Map directly from the existing file - Cache.ReMap(); + 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")); @@ -150,7 +150,7 @@ pkgCacheGenerator::~pkgCacheGenerator() return; if (Map.Sync() == false) return; - + Cache.HeaderP->Dirty = false; Cache.HeaderP->CacheFileSize = Cache.CacheHash(); @@ -192,7 +192,7 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void * const newMap, si APT_REMAP(pkgCache::RlsFileIterator); #undef APT_REMAP - for (APT::StringView* ViewP : Dynamic::toReMap) { + for (std::string_view* ViewP : Dynamic::toReMap) { if (std::get<1>(seen.insert(ViewP)) == false) continue; // Ignore views outside of the cache. @@ -200,7 +200,7 @@ void pkgCacheGenerator::ReMap(void const * const oldMap, void * const newMap, si || ViewP->data() > static_cast(oldMap) + oldSize) continue; const char *data = ViewP->data() + (static_cast(newMap) - static_cast(oldMap)); - *ViewP = StringView(data , ViewP->size()); + *ViewP = string_view(data , ViewP->size()); } } /*}}}*/ // CacheGenerator::WriteStringInMap /*{{{*/ @@ -251,14 +251,23 @@ bool pkgCacheGenerator::MergeList(ListParser &List, if (PackageName.empty() == true) return false; + // Package is excluded + if (exclude.find(PackageName) != exclude.end()) + continue; + + // Includes are specified, this is the total set of packages to include, + // so we need to skip the package if it is not in the include list. + if (not include.empty() && include.find(PackageName) == include.end()) + continue; + Counter++; if (Counter % 100 == 0 && Progress != 0) Progress->Progress(List.Offset()); - APT::StringView Arch = List.Architecture(); - Dynamic DynArch(Arch); - APT::StringView Version = List.Version(); - Dynamic DynVersion(Version); + std::string_view Arch = List.Architecture(); + Dynamic DynArch(Arch); + std::string_view Version = List.Version(); + Dynamic DynVersion(Version); if (Version.empty() == true && Arch.empty() == true) { // package descriptions @@ -339,7 +348,7 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator Pkg.Name(), "UsePackage", 1); // Find the right version to write the description - StringView CurMd5 = List.Description_md5(); + string_view CurMd5 = List.Description_md5(); std::vector availDesc = List.AvailableDescriptionLanguages(); for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) { @@ -350,14 +359,10 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator continue; map_stringitem_t md5idx = VerDesc->md5sum; - for (std::vector::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang) + for (auto const &CurLang : availDesc) { - // 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); + if (not AddNewDescription(List, Ver, CurLang, CurMd5, md5idx)) + return false; } // we can stop here as all "same" versions will share the description @@ -369,7 +374,7 @@ bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator /*}}}*/ // CacheGenerator::MergeListVersion /*{{{*/ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, - APT::StringView const &Version, pkgCache::VerIterator* &OutVer) + std::string_view Version, pkgCache::VerIterator* &OutVer) { pkgCache::VerIterator Ver = Pkg.VersionList(); Dynamic DynVer(Ver); @@ -377,7 +382,7 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator void const * oldMap = Map.Data(); auto Hash = List.VersionHash(); - APT::StringView ListSHA256; + std::string_view ListSHA256; bool const Debug = _config->FindB("Debug::pkgCacheGen", false); auto DebList = dynamic_cast(&List); @@ -402,13 +407,13 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator if (List.SameVersion(Hash, Ver)) { // We do not have SHA256 for both, so we cannot compare them, trust the call from SameVersion() - if (ListSHA256.empty() || VersionExtra[Ver->ID].SHA256[0] == 0) - break; + if (ListSHA256.empty() || Ver->ID >= VersionExtra.size() || VersionExtra[Ver->ID].SHA256[0] == 0) + break; // We have SHA256 for both, so they must match. - if (ListSHA256 == APT::StringView(VersionExtra[Ver->ID].SHA256, 64)) + if (ListSHA256 == std::string_view(VersionExtra[Ver->ID].SHA256, 64)) break; if (Debug) - std::cerr << "Found differing SHA256 for " << Pkg.Name() << "=" << Version.to_string() << std::endl; + std::cerr << "Found differing SHA256 for " << Pkg.Name() << "=" << Version << std::endl; } // sort (volatile) sources above not-sources like the status file @@ -506,53 +511,72 @@ bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator } /* Record the Description(s) based on their master md5sum */ - StringView CurMd5 = List.Description_md5(); + string_view 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)) + not P.end() && Ver->DescriptionList == 0; P = Grp.NextPkg(P)) { - for (pkgCache::VerIterator V = P.VersionList(); - V.end() == false; ++V) + for (pkgCache::VerIterator V = P.VersionList(); not V.end(); ++V) { if (V->DescriptionList == 0 || Cache.ViewString(V.DescriptionList()->md5sum) != CurMd5) continue; Ver->DescriptionList = V->DescriptionList; + break; } } - // 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 availDesc = List.AvailableDescriptionLanguages(); - for (std::vector::const_iterator CurLang = availDesc.begin(); CurLang != availDesc.end(); ++CurLang) - if (AddNewDescription(List, Ver, *CurLang, CurMd5, md5idx) == false) + for (auto const &CurLang : List.AvailableDescriptionLanguages()) + if (not AddNewDescription(List, Ver, CurLang, CurMd5, md5idx)) return false; return true; } /*}}}*/ -bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx) /*{{{*/ +// findDescription /*{{{*/ +static bool findDescription(pkgCache &Cache, pkgCache::DescIterator &Desc, + std::string_view CurMd5, std::string_view const CurLang) { - pkgCache::DescIterator Desc; + // Descriptions in the same link-list have all the same md5 + if (Desc.end() || Cache.ViewString(Desc->md5sum) != CurMd5) + return false; + for (; not Desc.end(); ++Desc) + if (CurLang == Cache.ViewString(Desc->language_code)) + return true; + return false; +} + /*}}}*/ +bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, std::string const &CurLang, std::string_view CurMd5, map_stringitem_t &md5idx) /*{{{*/ +{ + pkgCache::DescIterator Desc = Ver.DescriptionList(); Dynamic DynDesc(Desc); - map_pointer 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); + // don't add a new description if we have one for the given md5 && language + if (not findDescription(Cache, Desc, CurMd5, CurLang)) + { + map_pointer const descindex = NewDescription(Desc, CurLang, 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().MapPointer(); + md5idx = Desc->md5sum; + Desc->ParentPkg = Ver.ParentPkg().MapPointer(); - // 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 * const LastNextDesc = (VerDesc.end() == true) ? &Ver->DescriptionList : &VerDesc->NextDesc; - *LastNextDesc = descindex; + // we add at the end, so that the start is constant as we need + // that to be able to efficiently share these lists + if (Ver->DescriptionList == 0) + Ver->DescriptionList = descindex; + else + { + auto VerDesc = Ver.DescriptionList(); + for (; VerDesc->NextDesc != 0; ++VerDesc); + VerDesc->NextDesc = descindex; + } + } - if (NewFileDesc(Desc,List) == false) + if (not NewFileDesc(Desc, List)) return _error->Error(_("Error occurred while processing %s (%s%d)"), Ver.ParentPkg().Name(), "NewFileDesc", 1); @@ -563,9 +587,9 @@ bool pkgCacheGenerator::AddNewDescription(ListParser &List, pkgCache::VerIterato // 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) +bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, string_view Name) { - Dynamic DName(Name); + Dynamic DName(Name); Grp = Cache.FindGrp(Name); if (Grp.end() == false) return true; @@ -598,11 +622,11 @@ bool pkgCacheGenerator::NewGroup(pkgCache::GrpIterator &Grp, StringView Name) // 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) { +bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, string_view Name, + string_view Arch) { pkgCache::GrpIterator Grp; - Dynamic DName(Name); - Dynamic DArch(Arch); + Dynamic DName(Name); + Dynamic DArch(Arch); Dynamic DynGrp(Grp); if (unlikely(NewGroup(Grp, Name) == false)) return false; @@ -714,24 +738,24 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg, StringView Name, if (Arch == "any") { size_t const found = Name.rfind(':'); - StringView ArchA = Name.substr(found + 1); + string_view ArchA = Name.substr(found + 1); if (ArchA != "any") { // ArchA is used inside the loop which might remap (NameA is not used) - Dynamic DynArchA(ArchA); - StringView NameA = Name.substr(0, found); + Dynamic DynArchA(ArchA); + string_view NameA = Name.substr(0, found); pkgCache::PkgIterator PkgA = Cache.FindPkg(NameA, ArchA); Dynamic DynPkgA(PkgA); if (PkgA.end()) { - Dynamic DynNameA(NameA); + Dynamic DynNameA(NameA); if (NewPackage(PkgA, NameA, ArchA) == false) return false; } if (unlikely(PkgA.end())) - return _error->Fatal("NewPackage was successful for %s:%s," + 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()); + (int)NameA.size(), NameA.data(), (int)ArchA.size(), ArchA.data()); else { pkgCache::PrvIterator Prv = PkgA.ProvidesList(); @@ -763,8 +787,8 @@ bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P, pkgCache::VerIterator &V) { - APT::StringView Arch = P.Arch() == NULL ? "" : P.Arch(); - Dynamic DynArch(Arch); + std::string_view Arch = P.Arch() == NULL ? "" : P.Arch(); + Dynamic DynArch(Arch); map_pointer *OldDepLast = NULL; /* MultiArch handling introduces a lot of implicit Dependencies: - MultiArch: same → Co-Installable if they have the same version @@ -836,28 +860,28 @@ bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver, { if (CurrentFile == nullptr) return true; - + // Get a structure auto const VerFile = AllocateInMap(); if (VerFile == 0) return false; - + pkgCache::VerFileIterator VF(Cache,Cache.VerFileP + VerFile); VF->File = map_pointer{NarrowOffset(CurrentFile - Cache.PkgFileP)}; - + // Link it to the end of the list map_pointer *Last = &Ver->FileList; for (pkgCache::VerFileIterator V = Ver.FileList(); V.end() == false; ++V) Last = &V->NextFile; VF->NextFile = *Last; *Last = VF.MapPointer(); - + VF->Offset = List.Offset(); - VF->Size = List.Size(); - if (Cache.HeaderP->MaxVerFileSize < VF->Size) - Cache.HeaderP->MaxVerFileSize = VF->Size; + auto const Size = List.Size(); + if (Cache.HeaderP->MaxVerFileSize < Size) + Cache.HeaderP->MaxVerFileSize = Size; Cache.HeaderP->VerFileCount++; - + return true; } /*}}}*/ @@ -865,7 +889,7 @@ bool pkgCacheGenerator::NewFileVer(pkgCache::VerIterator &Ver, // --------------------------------------------------------------------- /* This puts a version structure in the linked list */ map_pointer pkgCacheGenerator::NewVersion(pkgCache::VerIterator &Ver, - APT::StringView const &VerStr, + std::string_view VerStr, map_pointer const ParentPkg, uint32_t Hash, map_pointer const Next) @@ -874,13 +898,18 @@ map_pointer pkgCacheGenerator::NewVersion(pkgCache::VerIterat auto const Version = AllocateInMap(); if (Version == 0) return 0; - + // Fill it in Ver = pkgCache::VerIterator(Cache,Cache.VerP + Version); auto d = AllocateInMap(); // sequence point so Ver can be moved if needed Ver->d = d; if (not Ver.PhasedUpdatePercentage(100)) abort(); + auto SourceVersion = AllocateInMap(); // sequence point so Ver can be moved if needed + Ver->SourceVersion = SourceVersion; + Ver.SourceVersion()->ID = Cache.HeaderP->SourceVersionCount++; + if (not Ver.SourceVersion()) + abort(); //Dynamic DynV(Ver); // caller MergeListVersion already takes care of it Ver->NextVer = Next; @@ -923,36 +952,42 @@ map_pointer pkgCacheGenerator::NewVersion(pkgCache::VerIterat } /*}}}*/ // CacheGenerator::NewFileDesc - Create a new File<->Desc association /*{{{*/ -// --------------------------------------------------------------------- -/* */ bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc, ListParser &List) { if (CurrentFile == nullptr) return true; - + + auto const DFFile = map_pointer{NarrowOffset(CurrentFile - Cache.PkgFileP)}; + auto const DFOffset = List.Offset(); + for (auto DF = Desc.FileList(); not DF.end(); ++DF) + if (DF->File == DFFile && DF->Offset == DFOffset) + return true; + // Get a structure auto const DescFile = AllocateInMap(); if (DescFile == 0) return false; pkgCache::DescFileIterator DF(Cache,Cache.DescFileP + DescFile); - DF->File = map_pointer{NarrowOffset(CurrentFile - Cache.PkgFileP)}; + DF->File = DFFile; + DF->Offset = DFOffset; // Link it to the end of the list - map_pointer *Last = &Desc->FileList; - for (pkgCache::DescFileIterator D = Desc.FileList(); D.end() == false; ++D) - Last = &D->NextFile; - - DF->NextFile = *Last; - *Last = DF.MapPointer(); - - DF->Offset = List.Offset(); - DF->Size = List.Size(); - if (Cache.HeaderP->MaxDescFileSize < DF->Size) - Cache.HeaderP->MaxDescFileSize = DF->Size; + if (Desc->FileList == 0) + Desc->FileList = DescFile; + else + { + auto Last = Desc.FileList(); + for (; Last->NextFile != 0; ++Last); + Last->NextFile = DescFile; + } + + auto const Size = List.Size(); + if (Cache.HeaderP->MaxDescFileSize < Size) + Cache.HeaderP->MaxDescFileSize = Size; Cache.HeaderP->DescFileCount++; - + return true; } /*}}}*/ @@ -961,7 +996,7 @@ bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc, /* This puts a description structure in the linked list */ map_pointer pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc, const string &Lang, - APT::StringView md5sum, + std::string_view md5sum, map_stringitem_t const idxmd5str) { // Get a structure @@ -1094,17 +1129,17 @@ bool pkgCacheGenerator::NewDepends(pkgCache::PkgIterator &Pkg, /* 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, + string_view PackageName, + string_view Arch, + string_view Version, uint8_t const Op, uint8_t const Type) { pkgCache::GrpIterator Grp; Dynamic DynGrp(Grp); - Dynamic DynPackageName(PackageName); - Dynamic DynArch(Arch); - Dynamic DynVersion(Version); + Dynamic DynPackageName(PackageName); + Dynamic DynArch(Arch); + Dynamic DynVersion(Version); if (unlikely(Owner->NewGroup(Grp, PackageName) == false)) return false; @@ -1166,18 +1201,18 @@ bool pkgCacheListParser::NewDepends(pkgCache::VerIterator &Ver, /*}}}*/ // ListParser::NewProvides - Create a Provides element /*{{{*/ bool pkgCacheListParser::NewProvides(pkgCache::VerIterator &Ver, - StringView PkgName, - StringView PkgArch, - StringView Version, + string_view PkgName, + string_view PkgArch, + string_view Version, uint8_t const Flags) { pkgCache const &Cache = Owner->Cache; - Dynamic DynPkgName(PkgName); - Dynamic DynArch(PkgArch); - Dynamic DynVersion(Version); + Dynamic DynPkgName(PkgName); + Dynamic DynArch(PkgArch); + Dynamic DynVersion(Version); // We do not add self referencing provides - if (Ver.ParentPkg().Name() == PkgName && (PkgArch == Ver.ParentPkg().Arch() || + if (string_view{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; @@ -1223,13 +1258,13 @@ bool pkgCacheGenerator::NewProvides(pkgCache::VerIterator &Ver, } /*}}}*/ // ListParser::NewProvidesAllArch - add provides for all architectures /*{{{*/ -bool pkgCacheListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, StringView Package, - StringView Version, uint8_t const Flags) { +bool pkgCacheListParser::NewProvidesAllArch(pkgCache::VerIterator &Ver, string_view Package, + string_view Version, uint8_t const Flags) { pkgCache &Cache = Owner->Cache; pkgCache::GrpIterator Grp = Cache.FindGrp(Package); Dynamic DynGrp(Grp); - Dynamic DynPackage(Package); - Dynamic DynVersion(Version); + Dynamic DynPackage(Package); + Dynamic DynVersion(Version); if (Grp.end() == true || Grp->FirstPackage == 0) return NewProvides(Ver, Package, Cache.NativeArch(), Version, Flags); @@ -1306,6 +1341,7 @@ bool pkgCacheGenerator::SelectFile(std::string const &File, pkgIndexFile const &Index, std::string const &Architecture, std::string const &Component, + const IndexTarget *Target, unsigned long const Flags) { CurrentFile = nullptr; @@ -1348,6 +1384,22 @@ bool pkgCacheGenerator::SelectFile(std::string const &File, Cache.HeaderP->FileList = map_pointer{NarrowOffset(CurrentFile - Cache.PkgFileP)}; Cache.HeaderP->PackageFileCount++; + include.clear(); + exclude.clear(); + if (Target) + { + if (auto inc = Target->Options.find("INCLUDE"); inc != Target->Options.end()) + { + auto v = VectorizeString(inc->second, ' '); + include.insert(v.begin(), v.end()); + } + if (auto exc = Target->Options.find("EXCLUDE"); exc != Target->Options.end()) + { + auto v = VectorizeString(exc->second, ' '); + exclude.insert(v.begin(), v.end()); + } + } + if (Progress != 0) Progress->SubProgress(Index.Size()); return true; @@ -1615,7 +1667,7 @@ static bool BuildCache(pkgCacheGenerator &Gen, /*}}}*/ // CacheGenerator::MakeStatusCache - Construct the status cache /*{{{*/ // --------------------------------------------------------------------- -/* This makes sure that the status cache (the cache that has all +/* 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 mandatory if you @@ -1637,6 +1689,10 @@ static DynamicMMap* CreateDynamicMMap(FileFd * const CacheF, unsigned long Flags static bool writeBackMMapToFile(pkgCacheGenerator * const Gen, DynamicMMap * const Map, std::string const &FileName) { + // Do not write the file back to /dev/null or try to change its mode... + if (FileName == "/dev/null") + return true; + FileFd SCacheF(FileName, FileFd::WriteAtomic); if (SCacheF.IsOpen() == false || SCacheF.Failed()) return false; @@ -1864,23 +1920,10 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O 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 index 4206426..c481e1b 100644 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@ -1,18 +1,18 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + Package Cache Generator - Generator for the cache structure. - - This builds the cache structure from the abstract package list parser. + + 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. - + 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 @@ -23,11 +23,11 @@ #include #include +#include #include #if __cplusplus >= 201103L #include #endif -#include #ifdef APT_COMPILING_APT #include @@ -35,13 +35,14 @@ class FileFd; class pkgSourceList; +class IndexTarget; class OpProgress; class pkgIndexFile; class pkgCacheListParser; class APT_HIDDEN pkgCacheGenerator /*{{{*/ { - APT_HIDDEN map_stringitem_t WriteStringInMap(APT::StringView String) { return WriteStringInMap(String.data(), String.size()); }; + APT_HIDDEN map_stringitem_t WriteStringInMap(std::string_view String) { return WriteStringInMap(String.data(), String.size()); }; APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String); APT_HIDDEN map_stringitem_t WriteStringInMap(const char *String, const unsigned long &Len); APT_HIDDEN uint32_t AllocateInMap(const unsigned long &size); @@ -80,7 +81,7 @@ class APT_HIDDEN pkgCacheGenerator /*{{{*/ { char SHA256[64]; }; - std::vector VersionExtra{32 * 1024}; + std::vector VersionExtra; friend class pkgCacheListParser; typedef pkgCacheListParser ListParser; @@ -114,13 +115,15 @@ class APT_HIDDEN pkgCacheGenerator /*{{{*/ pkgCache::ReleaseFile *CurrentRlsFile; std::string PkgFileName; pkgCache::PackageFile *CurrentFile; + std::unordered_set include; + std::unordered_set exclude; - bool NewGroup(pkgCache::GrpIterator &Grp, APT::StringView Name); - bool NewPackage(pkgCache::PkgIterator &Pkg, APT::StringView Name, APT::StringView Arch); - map_pointer NewVersion(pkgCache::VerIterator &Ver, APT::StringView const &VerStr, + bool NewGroup(pkgCache::GrpIterator &Grp, std::string_view Name); + bool NewPackage(pkgCache::PkgIterator &Pkg, std::string_view Name, std::string_view Arch); + map_pointer NewVersion(pkgCache::VerIterator &Ver, std::string_view VerStr, map_pointer const ParentPkg, uint32_t Hash, map_pointer const Next); - map_pointer NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, APT::StringView md5sum,map_stringitem_t const idxmd5str); + map_pointer NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang, std::string_view md5sum,map_stringitem_t const idxmd5str); bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List); bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List); bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver, @@ -134,10 +137,10 @@ class APT_HIDDEN pkgCacheGenerator /*{{{*/ enum StringType { MIXED, VERSIONNUMBER, SECTION }; map_stringitem_t StoreString(StringType const type, const char * S, unsigned int const Size); - inline map_stringitem_t StoreString(enum StringType const type, APT::StringView S) {return StoreString(type, S.data(),S.length());}; + inline map_stringitem_t StoreString(enum StringType const type, std::string_view S) {return StoreString(type, S.data(),S.length());}; 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 SelectFile(const std::string &File, pkgIndexFile const &Index, std::string const &Architecture, std::string const &Component, const IndexTarget *target, 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;}; @@ -163,14 +166,14 @@ class APT_HIDDEN pkgCacheGenerator /*{{{*/ APT_HIDDEN bool MergeListGroup(ListParser &List, std::string const &GrpName); APT_HIDDEN bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg); APT_HIDDEN bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, - APT::StringView const &Version, pkgCache::VerIterator* &OutVer); + std::string_view Version, pkgCache::VerIterator* &OutVer); APT_HIDDEN bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P, pkgCache::VerIterator &V); APT_HIDDEN bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D); APT_HIDDEN bool AddNewDescription(ListParser &List, pkgCache::VerIterator &Ver, - std::string const &lang, APT::StringView CurMd5, map_stringitem_t &md5idx); + std::string const &lang, std::string_view CurMd5, map_stringitem_t &md5idx); }; /*}}}*/ // This is the abstract package list parser class. /*{{{*/ @@ -186,30 +189,30 @@ class APT_HIDDEN pkgCacheListParser void * const d; protected: - inline bool NewGroup(pkgCache::GrpIterator &Grp, APT::StringView Name) { return Owner->NewGroup(Grp, Name); } + inline bool NewGroup(pkgCache::GrpIterator &Grp, std::string_view Name) { return Owner->NewGroup(Grp, Name); } inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, const char *S,unsigned int Size) {return Owner->StoreString(type, S, Size);}; - 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());}; + inline map_stringitem_t StoreString(pkgCacheGenerator::StringType const type, std::string_view S) {return Owner->StoreString(type, S);}; + inline map_stringitem_t WriteString(std::string_view S) {return Owner->WriteStringInMap(S.data(), S.size());}; inline map_stringitem_t WriteString(const char *S,unsigned int Size) {return Owner->WriteStringInMap(S,Size);}; - bool NewDepends(pkgCache::VerIterator &Ver,APT::StringView Package, APT::StringView Arch, - APT::StringView Version,uint8_t const Op, + bool NewDepends(pkgCache::VerIterator &Ver,std::string_view Package, std::string_view Arch, + std::string_view Version,uint8_t const Op, uint8_t const Type); - bool NewProvides(pkgCache::VerIterator &Ver,APT::StringView PkgName, - APT::StringView PkgArch, APT::StringView Version, + bool NewProvides(pkgCache::VerIterator &Ver,std::string_view PkgName, + std::string_view PkgArch, std::string_view Version, uint8_t const Flags); - bool NewProvidesAllArch(pkgCache::VerIterator &Ver, APT::StringView Package, - APT::StringView Version, uint8_t const Flags); + bool NewProvidesAllArch(pkgCache::VerIterator &Ver, std::string_view Package, + std::string_view Version, uint8_t const Flags); public: - + // These all operate against the current section virtual std::string Package() = 0; virtual bool ArchitectureAll() = 0; - virtual APT::StringView Architecture() = 0; - virtual APT::StringView Version() = 0; + virtual std::string_view Architecture() = 0; + virtual std::string_view Version() = 0; virtual bool NewVersion(pkgCache::VerIterator &Ver) = 0; virtual std::vector AvailableDescriptionLanguages() = 0; - virtual APT::StringView Description_md5() = 0; + virtual std::string_view Description_md5() = 0; virtual uint32_t VersionHash() = 0; /** compare currently parsed version with given version * @@ -221,9 +224,9 @@ class APT_HIDDEN pkgCacheListParser 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;}; diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc index 83d19bb..d4f05b1 100644 --- a/apt-pkg/pkgrecords.cc +++ b/apt-pkg/pkgrecords.cc @@ -37,7 +37,8 @@ pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache), return; } - Files[I->ID] = Type->CreatePkgParser(I); + // FIXME: CreatePkgParser shall return unique_ptr + Files[I->ID] = std::unique_ptr{Type->CreatePkgParser(I)}; if (Files[I->ID] == 0) return; } @@ -46,15 +47,7 @@ pkgRecords::pkgRecords(pkgCache &aCache) : d(NULL), Cache(aCache), // Records::~pkgRecords - Destructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgRecords::~pkgRecords() -{ - for ( std::vector::iterator it = Files.begin(); - it != Files.end(); - ++it) - { - delete *it; - } -} +pkgRecords::~pkgRecords() = default; /*}}}*/ // Records::Lookup - Get a parser for the package version file /*{{{*/ // --------------------------------------------------------------------- diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index 09c0b5f..d193dde 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -33,7 +34,7 @@ class APT_PUBLIC pkgRecords /*{{{*/ void * const d; pkgCache &Cache; - std::vectorFiles; + std::vector>Files; public: // Lookup function diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index b1d8e72..ab21cd0 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -58,8 +57,8 @@ pkgPolicy::pkgPolicy(pkgCache *Owner) : VerPins(nullptr), { if (Owner == 0) return; - PFPriority = new signed short[Owner->Head().PackageFileCount]; - VerPins = new Pin[Owner->Head().VersionCount]; + PFPriority = std::make_unique(Owner->Head().PackageFileCount); + VerPins = std::make_unique(Owner->Head().VersionCount); auto VersionCount = Owner->Head().VersionCount; for (decltype(VersionCount) I = 0; I != VersionCount; ++I) @@ -238,7 +237,7 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, // Find matching version(s) and copy the pin into it pkgVersionMatch Match(P.Data,P.Type); if (Match.VersionMatches(Ver)) { - Pin *VP = VerPins + Ver->ID; + Pin *VP = &VerPins[Ver->ID]; if (VP->Type == pkgVersionMatch::None) { *VP = P; matched = true; @@ -261,7 +260,7 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name, for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() != true; ++Ver) { if (Match.VersionMatches(Ver)) { - Pin *VP = VerPins + Ver->ID; + Pin *VP = &VerPins[Ver->ID]; if (VP->Type == pkgVersionMatch::None) { *VP = P; matched = true; @@ -438,13 +437,13 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) if (Name.empty()) return _error->Error(_("Invalid record in the preferences file %s, no Package header"), File.c_str()); if (Name == "*") - Name = APT::StringView{}; + Name = {}; 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++); @@ -452,6 +451,8 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) pkgVersionMatch::MatchType Type; if (stringcasecmp(Start,Word,"version") == 0 && Name.empty() == false) Type = pkgVersionMatch::Version; + else if (stringcasecmp(Start,Word,"source-version") == 0 && Name.empty() == false) + Type = pkgVersionMatch::SourceVersion; else if (stringcasecmp(Start,Word,"release") == 0) Type = pkgVersionMatch::Release; else if (stringcasecmp(Start,Word,"origin") == 0) @@ -488,7 +489,7 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) return _error->Error(_("No priority (or zero) specified for pin")); } - std::istringstream s(Name.to_string()); + std::istringstream s(std::string{Name}); // TODO: replace with std::string_view_stream in C++23 string pkg; while(!s.eof()) { @@ -502,9 +503,4 @@ bool ReadPinFile(pkgPolicy &Plcy,string File) } /*}}}*/ -pkgPolicy::~pkgPolicy() -{ - delete[] PFPriority; - delete[] VerPins; - delete d; -} +pkgPolicy::~pkgPolicy() = default; diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h index 589cebc..9347322 100644 --- a/apt-pkg/policy.h +++ b/apt-pkg/policy.h @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -58,8 +59,9 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy explicit PkgPin(std::string const &Pkg) : Pin(), Pkg(Pkg) {}; }; - Pin *VerPins; - signed short *PFPriority; + std::unique_ptr SrcVerPins; + std::unique_ptr VerPins; + std::unique_ptr PFPriority; std::vector Defaults; std::vector Unmatched; pkgCache *Cache; @@ -72,9 +74,9 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy std::string Data,signed short Priority); // Things for the cache interface. - virtual pkgCache::VerIterator GetCandidateVer(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; + pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg) override; + signed short GetPriority(pkgCache::VerIterator const &Ver, bool ConsiderFiles = true) override; + signed short GetPriority(pkgCache::PkgFileIterator const &File) override; void SetPriority(pkgCache::VerIterator const &Ver, signed short Priority); void SetPriority(pkgCache::PkgFileIterator const &File, signed short Priority); @@ -84,7 +86,7 @@ class APT_PUBLIC pkgPolicy : public pkgDepCache::Policy virtual ~pkgPolicy(); private: struct Private; - Private *const d; + std::unique_ptr const d; }; APT_PUBLIC bool ReadPinFile(pkgPolicy &Plcy, std::string File = ""); diff --git a/apt-pkg/smartmirrors.cc b/apt-pkg/smartmirrors.cc deleted file mode 100644 index 77895f9..0000000 --- a/apt-pkg/smartmirrors.cc +++ /dev/null @@ -1,76 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - - Smart Mirrors - Get Archive File by Smart Mirrors Server. - - ##################################################################### */ -/*}}}*/ -// Include Files /*{{{*/ - - -#include -#include -#include -#include - -#include -#include "smartmirrors.h" - -using namespace std; - -namespace SmartMirrors { - static string - normalizeURI(const string& uri) - { - if (uri.length() >=1 && uri.at(uri.length()-1) == '/') { - return uri.substr(0, uri.length()-1); - } - return uri; - } - - const std::string - GuestURI(const std::string& uri) - { - if(uri.substr(0, strlen("http")) != "http") { - return uri; - } - static bool debug = _config->FindB("Acquire::SmartMirrors::Debug"); - static bool enabled = _config->FindB("Acquire::SmartMirrors::Enable"); - if (!enabled) { - if (debug) { - std::clog << "SmartMirrors is disabled." << std::endl; - } - return uri; - } - static string official = normalizeURI(_config->Find("Acquire::SmartMirrors::MainSource")); - static string mirror = normalizeURI(_config->Find("Acquire::SmartMirrors::MirrorSource")); - - static string detector = _config->Find("Acquire::SmartMirrors::GuestURI"); - static bool exists = FileExists(detector); - if (!exists) { - return uri; - } - - string cmd = detector + " " + uri + " " + official + " " + mirror; - std::tr1::shared_ptr out(popen(cmd.c_str(), "r"), pclose); - if (!out) { - return uri; - } - - char buffer[1024] = {0}; - std::string result = ""; - while (!feof(out.get())) { - if (fgets(buffer, 1024, out.get()) != NULL) - result += buffer; - } - if(result.substr(0, strlen("http")) != "http") { - return uri; - } - - if (debug && result != uri) { - printf("Using '%s' instead of '%s'\n", result.c_str(), uri.c_str()); - } - return result; - } -} diff --git a/apt-pkg/smartmirrors.h b/apt-pkg/smartmirrors.h deleted file mode 100644 index e2fe5fd..0000000 --- a/apt-pkg/smartmirrors.h +++ /dev/null @@ -1,8 +0,0 @@ -#include - -#include -#include - -namespace SmartMirrors { - const std::string GuestURI(const std::string& uri); -}; diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc new file mode 100644 index 0000000..c287794 --- /dev/null +++ b/apt-pkg/solver3.cc @@ -0,0 +1,1390 @@ +/* + * solver3.cc - The APT 3.0 solver + * + * Copyright (c) 2023 Julian Andres Klode + * Copyright (c) 2023 Canonical Ltd + * + * SPDX-License-Identifier: GPL-2.0+ + * + * This solver started from scratch but turns slowly into a variant of + * MiniSat as documented in the paper + * "An extensible SAT-solver [extended version 1.2]." + * by Niklas Eén, and Niklas Sörensson. + * + * It extends MiniSAT with support for optional clauses, and differs + * in that it removes non-deterministic aspects like the activity based + * ordering. Instead it uses a more nuanced static ordering that, to + * some extend, preserves some greediness and sub-optimality of the + * classic APT solver. + */ + +#define APT_COMPILING_APT + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +// FIXME: Helpers stolen from DepCache, please give them back. +struct APT::Solver::CompareProviders3 /*{{{*/ +{ + pkgCache &Cache; + pkgDepCache::Policy &Policy; + pkgCache::PkgIterator const Pkg; + APT::Solver &Solver; + + pkgCache::VerIterator bestVersion(pkgCache::PkgIterator pkg) + { + pkgCache::VerIterator res = pkg.VersionList(); + for (auto v = res; not v.end(); ++v) + res = std::max(res, v, *this); + return res; + } + bool operator()(Var a, Var b) + { + pkgCache::VerIterator va = a.Ver(Cache); + pkgCache::VerIterator vb = b.Ver(Cache); + if (auto pa = a.Pkg(Cache)) + va = bestVersion(pa); + if (auto pb = b.Pkg(Cache)) + vb = bestVersion(pb); + + assert(not va.end() && not vb.end()); + return (*this)(va, vb); + } + bool operator()(pkgCache::VerIterator const &AV, pkgCache::VerIterator const &BV) + { + assert(not AV.end() && not BV.end()); + pkgCache::PkgIterator const A = AV.ParentPkg(); + pkgCache::PkgIterator const B = BV.ParentPkg(); + // Compare versions for the same package. FIXME: Move this to the real implementation + if (A == B) + { + if (AV == BV) + return false; + + // Candidate wins in upgrade scenario + if (Solver.IsUpgrade) + { + auto Cand = Solver.GetCandidateVer(A); + if (AV == Cand || BV == Cand) + return (AV == Cand); + } + + // Installed version wins otherwise + if (A.CurrentVer() == AV || B.CurrentVer() == BV) + return (A.CurrentVer() == AV); + + // Rest is ordered list, first by priority + if (auto pinA = Solver.GetPriority(AV), pinB = Solver.GetPriority(BV); pinA != pinB) + return pinA > pinB; + + // Then by version + return _system->VS->CmpVersion(AV.VerStr(), BV.VerStr()) > 0; + } + // Try obsolete choices only after exhausting non-obsolete choices such that we install + // packages replacing them and don't keep back upgrades depending on the replacement to + // keep the obsolete package installed. + if (Solver.IsUpgrade) + if (auto obsoleteA = Solver.Obsolete(A), obsoleteB = Solver.Obsolete(B); obsoleteA != obsoleteB) + return obsoleteB; + // 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; + } + 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 && not Pkg.end()) + { + if (A->Group == Pkg->Group && B->Group != Pkg->Group) + return true; + else if (B->Group == Pkg->Group && A->Group != Pkg->Group) + return false; + } + // we like essentials + if ((A->Flags & pkgCache::Flag::Essential) != (B->Flags & pkgCache::Flag::Essential)) + { + if ((A->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + return true; + else if ((B->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + return false; + } + if ((A->Flags & pkgCache::Flag::Important) != (B->Flags & pkgCache::Flag::Important)) + { + if ((A->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) + return true; + else if ((B->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) + return false; + } + // prefer native architecture + if (strcmp(A.Arch(), B.Arch()) != 0) + { + if (strcmp(A.Arch(), A.Cache()->NativeArch()) == 0) + return true; + else if (strcmp(B.Arch(), B.Cache()->NativeArch()) == 0) + return false; + std::vector archs = APT::Configuration::getArchitectures(); + for (std::vector::const_iterator a = archs.begin(); a != archs.end(); ++a) + if (*a == A.Arch()) + return true; + else if (*a == B.Arch()) + return false; + } + // higher priority seems like a good idea + if (AV->Priority != BV->Priority) + return AV->Priority < BV->Priority; + if (auto NameCmp = strcmp(A.Name(), B.Name())) + return NameCmp < 0; + // unable to decide… + return A->ID > B->ID; + } +}; + +/** \brief Returns \b true for packages matching a regular + * expression in APT::NeverAutoRemove. + */ +class DefaultRootSetFunc2 : public pkgDepCache::DefaultRootSetFunc +{ + std::unique_ptr Kernels; + + public: + DefaultRootSetFunc2(pkgCache *cache) : Kernels(APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(cache)) {}; + ~DefaultRootSetFunc2() override = default; + + bool InRootSet(const pkgCache::PkgIterator &pkg) override { return pkg.end() == false && ((*Kernels)(pkg) || DefaultRootSetFunc::InRootSet(pkg)); }; +}; // FIXME: DEDUP with pkgDepCache. +/*}}}*/ + +APT::Solver::Solver(pkgCache &cache, pkgDepCache::Policy &policy, EDSP::Request::Flags requestFlags) + : cache(cache), + policy(policy), + rootState(new State), + pkgStates(cache), + verStates(cache), + pkgObsolete(cache), + priorities(cache), + candidates(cache), + requestFlags(requestFlags) +{ + // Ensure trivially + static_assert(std::is_trivially_destructible_v); + static_assert(std::is_trivially_destructible_v); + static_assert(sizeof(APT::Solver::Var) == sizeof(map_pointer)); + static_assert(sizeof(APT::Solver::Var) == sizeof(map_pointer)); + // Root state is "true". + rootState->decision = Decision::MUST; +} + +APT::Solver::~Solver() = default; + +// This function determines if a work item is less important than another. +bool APT::Solver::Work::operator<(APT::Solver::Work const &b) const +{ + if ((not clause->optional && size < 2) != (not b.clause->optional && b.size < 2)) + return not b.clause->optional && b.size < 2; + if (clause->optional != b.clause->optional) + return clause->optional; + if (clause->group != b.clause->group) + return clause->group > b.clause->group; + if ((size < 2) != (b.size < 2)) + return b.size < 2; + if (size == 1 && b.size == 1) // Special case: 'shortcircuit' optional packages + return clause->solutions.size() < b.clause->solutions.size(); + return false; +} + +std::string APT::Solver::Clause::toString(pkgCache &cache, bool pretty, bool showMerged) const +{ + std::string out; + if (showMerged) + out.append(reason.toString(cache)); + if (dep && pretty) + { + out.append(" ").append(pkgCache::DepIterator(cache, dep).DepType()).append(" "); + for (auto dep = pkgCache::DepIterator(cache, this->dep); not dep.end(); ++dep) + { + out.append(dep.TargetPkg().FullName(true)); + if (dep.TargetVer()) + out.append(" (").append(dep.CompType()).append(" ").append(dep.TargetVer()).append(")"); + if (!(dep->CompareOp & pkgCache::Dep::Or)) + break; + out.append(" | "); + } + } + else if (pretty && group == Group::SelectVersion && negative) + out.append(" conflicts with other versions of itself"); + else if (pretty && group == Group::SelectVersion && reason.Pkg()) { + out.append(solutions.size() > 1 ? " is available in versions " : " is available in version "); + for (auto var : solutions) { + assert(var.Ver()); + if (var != solutions.front()) + out.append(", "); + out.append(var.Ver(cache).VerStr()); + } + } + else + { + out.append(" -> "); + for (auto var : solutions) + out.append(" | ").append(var.toString(cache)); + } + if (showMerged && not merged.empty()) + { + for (auto &clause : merged) + { + out.append(" and"); + out.append(clause.toString(cache, pretty, false)); + } + } + return out; +} + +std::string APT::Solver::Work::toString(pkgCache &cache) const +{ + std::ostringstream out; + if (erased) + out << "Erased "; + if (clause->optional) + out << "Optional "; + out << "Item (" << ssize_t(size <= clause->solutions.size() ? size : -1) << "@" << depth << ") "; + out << clause->toString(cache); + return out.str(); +} + +inline APT::Solver::Var APT::Solver::bestReason(APT::Solver::Clause const *clause, APT::Solver::Var var) const +{ + if (not clause) + return Var{}; + if (clause->reason == var) + for (auto choice : clause->solutions) + { + if (clause->negative && (*this)[choice].decision == Decision::MUST) + return choice; + if (not clause->negative && (*this)[choice].decision == Decision::MUSTNOT) + return choice; + } + return clause->reason; +} + +// Prints an implication graph part of the form A -> B -> C, possibly with "not" +std::string APT::Solver::WhyStr(Var reason) const +{ + std::vector out; + while (not reason.empty()) + { + if ((*this)[reason].decision == Decision::MUSTNOT) + out.push_back(std::string("not ") + reason.toString(cache)); + else + out.push_back(reason.toString(cache)); + reason = bestReason((*this)[reason].reason, reason); + } + + std::string outstr; + for (auto I = out.rbegin(); I != out.rend(); ++I) + { + outstr += (outstr.size() == 0 ? "" : " -> ") + *I; + } + return outstr; +} + +std::string APT::Solver::LongWhyStr(Var var, bool decision, const Clause *rclause, std::string prefix, std::unordered_set &seen) const +{ + std::ostringstream out; + + // Helper function to nicely print more details than just "install/do not install", such as "removal", "upgrade", "downgrade", "install" + auto printSelection = [this](Var var, bool decision) + { + std::string s; + if (auto pkg = var.Pkg(cache); not decision && pkg && pkg->CurrentVer) + strprintf(s, "%s is selected for removal", var.toString(cache).c_str()); + else if (auto ver = var.Ver(cache); decision && ver && ver.ParentPkg().CurrentVer() && ver.ParentPkg().CurrentVer() != ver) + { + if (cache.VS->CmpVersion(ver.ParentPkg().CurrentVer().VerStr(), ver.VerStr()) < 0) + strprintf(s, "%s is selected as an upgrade", var.toString(cache).c_str()); + else + strprintf(s, "%s is selected as a downgrade", var.toString(cache).c_str()); + } + else if (not decision) + strprintf(s, "%s is not selected for install", var.toString(cache).c_str()); + else + strprintf(s, "%s is selected for install", var.toString(cache).c_str()); + return s; + }; + + // Helper: Recurse into all of the children of the clause and print the decision for them. + auto recurseChildren = [&](const Clause *clause, Var skip = Var()) + { + if (clause->solutions.empty()) + out << prefix << "[no choices]\n"; + for (auto choice : clause->solutions) + { + if (choice == skip) + continue; + + if ((*this)[choice].decision == Decision::NONE) + out << prefix << "- " << choice.toString(cache) << " is undecided\n"; + else + out << prefix << "- " << LongWhyStr(choice, (*this)[choice].decision == Decision::MUST, (*this)[choice].reason, prefix + " ", seen).substr(prefix.size() + 2); + } + }; + + // Inverse version selection clauses that select the package if the version is selected, + // such as pkg=ver -> pkg, are irrelevant for the user, skip them + if (var.Pkg() && decision && rclause && rclause->group == Group::SelectVersion) + { + var = rclause->reason; + rclause = (*this)[var].reason; + } + + // No reason given, probably a user request or manually installed or essential or whatnot. + if (not rclause) + { + out << prefix << printSelection(var, decision) << "\n"; + return out.str(); + } + + // We could be called with a decision we tried to make but failed due to a conflict; + // this checks if it is the real decision. + if ((*this)[var].decision != Decision::NONE && decision == ((*this)[var].decision == Decision::MUST) && (*this)[var].reason == rclause) + { + // If we have seen the real decision before; we dont't need to print it again. + if (seen.find(var) != seen.end()) + { + out << prefix << printSelection(var, decision) << " as above\n"; + return out.str(); + } + seen.insert(var); + } + + // A package was decided "not install" due to a positive clause, so the clause is unsat. + if (not decision && rclause && not rclause->negative) + { + out << prefix << rclause->toString(cache, true) << "\n"; + out << prefix << "but none of the choices are installable:\n"; + recurseChildren(rclause); + return out.str(); + } + + // Build the strongest path from a root to our decision leaf + std::vector path; + for (auto reason = bestReason(rclause, var); not reason.empty(); reason = bestReason((*this)[reason].reason, reason)) + path.push_back(reason); + + // Render the strong reasoning path + out << prefix << printSelection(var, decision) << " because:\n"; + auto w = std::to_string(path.size() + 1).size(); + size_t i = 1; + for (auto it = path.rbegin(); it != path.rend(); ++it, ++i) + { + auto const &state = (*this)[*it]; + // Don't print version selection clauses + if (it->Pkg() && state.reason && state.reason->group == Group::SelectVersion) + { + --i; + continue; + } + if (seen.find(*it) != seen.end()) + { + if ((it + 1) == path.rend() || seen.find(*(it + 1)) == seen.end()) + { + out << prefix << (i == 1 ? "" : "1-") << i << ". " << printSelection(*it, state.decision == Decision::MUST) << " as above\n"; + } + continue; + } + seen.insert(*it); + if (state.reason) + { + out << prefix << std::setw(w) << i << ". " << state.reason->toString(cache, true) << "\n"; + if (state.reason->solutions.size() > 1) + out << prefix << std::setw(w) << " " << " [selected " << it->toString(cache) << " for " << (state.decision == Decision::MUST ? "install" : "remove") << "]\n"; + } + else + out << prefix << std::setw(w) << i << ". " << printSelection(*it, state.decision == Decision::MUST) << "\n"; + } + + // Print the leaf. We can't have the leaf in the path because we might be called for an attempted decision + // that conflicts with the actual assignment (to simplify: we marked X for not install, then we process Y depends X + // and try to mark X and reach the conflict, we are called with "X" and the "Y depends X" clause). + out << prefix << std::setw(w) << i << ". " << rclause->toString(cache, true) << "\n"; + if (rclause->solutions.size() > 1) + out << prefix << std::setw(w) << " " << " " << "[selected " << bestReason(rclause, var).toString(cache) << "]\n"; + + bool firstContext = true; + // Show alternative paths not taken. Consider you have Y depends X|Z; and you mark X + // for it; we show above Y -> X as the path, but here we go show why Z was not considered in "Y depends X|Z". + for (auto it = path.rbegin(); it != path.rend(); ++it) + { + auto const &state = (*this)[*it]; + if (not state.reason) // If we have no reason, we don't have alternatives + continue; + if (state.reason->solutions.size() <= 1) // Nothing to print if we no alternatives + continue; + if (state.reason->negative) // We only actually need one conflicting choice, ignore others + continue; + + if (firstContext) + { + out << prefix << "For context, additional choices that could not be installed:" << "\n"; + } + + firstContext = false; + out << prefix << "* In " << state.reason->toString(cache, true) << ":\n"; + prefix += " "; + recurseChildren(state.reason, *it); + prefix.resize(prefix.size() - 2); + } + if (rclause->solutions.size() > 1 && not rclause->negative) + { + if (firstContext) + { + out << prefix << "For context, additional choices that could not be installed:" << "\n"; + } + firstContext = false; + out << prefix << "* In " << rclause->toString(cache, true) << ":\n"; + prefix += " "; + recurseChildren(rclause, var); + prefix.resize(prefix.size() - 2); + } + + return out.str(); +} + +// This is essentially asking whether any other binary in the source package has a higher candidate +// version. This pretends that each package is installed at the same source version as the package +// under consideration. +bool APT::Solver::ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const +{ + const auto pkg = cand.ParentPkg(); + const int candPriority = GetPriority(cand); + + for (auto ver = cand.Cache()->FindGrp(cand.SourcePkgName()).VersionsInSource(); not ver.end(); ver = ver.NextInSource()) + { + // We are only interested in other packages in the same source package; built for the same architecture. + if (ver->ParentPkg == cand->ParentPkg || ver.ParentPkg()->Arch != cand.ParentPkg()->Arch || + (ver->MultiArch & pkgCache::Version::All) != (cand->MultiArch & pkgCache::Version::All) || + cache.VS->CmpVersion(ver.SourceVerStr(), cand.SourceVerStr()) <= 0) + continue; + + // We also take equal priority here, given that we have a higher version + const int priority = GetPriority(ver); + if (priority == 0 || priority < candPriority) + continue; + + pkgObsolete[pkg] = 2; + if (debug >= 3) + std::cerr << "Obsolete: " << cand.ParentPkg().FullName() << "=" << cand.VerStr() << " due to " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << "\n"; + return true; + } + + return false; +} + +bool APT::Solver::Obsolete(pkgCache::PkgIterator pkg, bool AllowManual) const +{ + if ((*this)[pkg].flags.manual && not AllowManual) + return false; + if (pkgObsolete[pkg] != 0) + return pkgObsolete[pkg] == 2; + + auto ver = GetCandidateVer(pkg); + + if (ver.end() && not StrictPinning) + ver = pkg.VersionList(); + if (ver.end()) + { + if (debug >= 3) + std::cerr << "Obsolete: " << pkg.FullName() << " - not installable\n"; + pkgObsolete[pkg] = 2; + return true; + } + + if (ObsoletedByNewerSourceVersion(ver)) + return true; + + if (ver.Downloadable()) + { + pkgObsolete[pkg] = 1; + return false; + } + if (debug >= 3) + std::cerr << "Obsolete: " << ver.ParentPkg().FullName() << "=" << ver.VerStr() << " - not installable\n"; + pkgObsolete[pkg] = 2; + return true; +} +bool APT::Solver::Assume(Var var, bool decision, const Clause *reason) +{ + choices.push_back(solved.size()); + return Enqueue(var, decision, std::move(reason)); +} + +bool APT::Solver::Enqueue(Var var, bool decision, const Clause *reason) +{ + auto &state = (*this)[var]; + auto decisionCast = decision ? Decision::MUST : Decision::MUSTNOT; + + if (state.decision != Decision::NONE) + { + if (state.decision != decisionCast) + { + std::ostringstream err; + err << "Unable to satisfy dependencies. Reached two conflicting decisions:" << "\n"; + std::unordered_set seen; + err << "1. " << LongWhyStr(var, state.decision == Decision::MUST, state.reason, " ", seen).substr(3) << "\n"; + err << "2. " << LongWhyStr(var, decision, reason, " ", seen).substr(3); + return _error->Error("%s", err.str().c_str()); + } + return true; + } + + state.decision = decisionCast; + state.depth = depth(); + state.reason = reason; + + if (unlikely(debug >= 1)) + std::cerr << "[" << depth() << "] " << (decision ? "Install" : "Reject") << ":" << var.toString(cache) << " (" << WhyStr(bestReason(reason, var)) << ")\n"; + + solved.push_back(Solved{var, std::nullopt}); + propQ.push(var); + + return true; +} + +bool APT::Solver::Propagate() +{ + while (!propQ.empty()) + { + Var var = propQ.front(); + propQ.pop(); + if ((*this)[var].decision == Decision::MUST) + { + Discover(var); + for (auto &clause : (*this)[var].clauses) + if (not AddWork(Work{clause.get(), depth()})) + return false; + for (auto rclause : (*this)[var].rclauses) + { + if (not rclause->negative || rclause->optional || rclause->reason.empty()) + continue; + if (unlikely(debug >= 3)) + std::cerr << "Propagate " << var.toString(cache) << " to NOT " << rclause->reason.toString(cache) << " for dep " << const_cast(rclause)->toString(cache) << std::endl; + if (not Enqueue(rclause->reason, false, rclause)) + return false; + } + } + else if ((*this)[var].decision == Decision::MUSTNOT) + { + for (auto rclause : (*this)[var].rclauses) + { + if (rclause->negative || rclause->reason.empty()) + continue; + if ((*this)[rclause->reason].decision == Decision::MUSTNOT) + continue; + + auto count = std::count_if(rclause->solutions.begin(), rclause->solutions.end(), [this](auto var) + { return (*this)[var].decision != Decision::MUSTNOT; }); + + if (count == 1 && (*this)[rclause->reason].decision == Decision::MUST) + { + if (unlikely(debug >= 3)) + std::cerr << "Propagate NOT " << var.toString(cache) << " to unit clause " << rclause->toString(cache); + if (rclause->optional) + { + // Enqueue duplicated item, this will ensure we see it at the correct time + if (not AddWork(Work{rclause, depth()})) + return false; + } + else + { + // Find the variable that must be chosen and enqueue it as a fact + for (auto sol : rclause->solutions) + if ((*this)[sol].decision == Decision::NONE && not Enqueue(sol, true, rclause)) + return false; + } + continue; + } + if (count >= 1 || rclause->optional) + continue; + + if (unlikely(debug >= 3)) + std::cerr << "Propagate NOT " << var.toString(cache) << " to " << rclause->reason.toString(cache) << " for dep " << const_cast(rclause)->toString(cache) << std::endl; + + if (not Enqueue(rclause->reason, false, rclause)) // Last version invalidated + return false; + } + } + } + return true; +} + +static bool SameOrGroup(pkgCache::DepIterator a, pkgCache::DepIterator b) +{ + while (1) + { + if (a->DependencyData != b->DependencyData) + return false; + + // At least one has reached the end, break + if (not(a->CompareOp & pkgCache::Dep::Or) || not(b->CompareOp & pkgCache::Dep::Or)) + break; + + ++a, ++b; + } + // Fully iterated over a and b + return not(a->CompareOp & pkgCache::Dep::Or) && not(b->CompareOp & pkgCache::Dep::Or); +} + +const APT::Solver::Clause *APT::Solver::RegisterClause(Clause &&clause) +{ + auto &clauses = (*this)[clause.reason].clauses; + pkgCache::DepIterator dep(cache, clause.dep); + + // Merge dependencies on the same name into a single one, and restrict their solution space. + // For example, given dependencies on + // bar Depends: pkg (<< 3), pkg (>> 2) + // foo Provides: pkg (= 1) + // The solution must always be pkg (= 2) and not say pkg (= 3), foo. + // FIXME: This would be nice to merge across or groups too, but we can't do that yet. + if (not clause.negative && not dep.end() && not(dep->CompareOp & pkgCache::Dep::Or)) + { + bool merged = false; + for (auto const &earlierClause : clauses) + { + if (earlierClause->negative) + continue; + // Skip dependencies with or groups or dependencies on different names + if (pkgCache::DepIterator earlierDep(cache, earlierClause->dep); + earlierDep.end() || (earlierDep->CompareOp & pkgCache::Dep::Or) || + earlierDep.TargetPkg() != dep.TargetPkg()) + continue; + if (std::none_of(earlierClause->solutions.begin(), earlierClause->solutions.end(), [&clause](auto earlierSol) + { return std::find(clause.solutions.begin(), + clause.solutions.end(), + earlierSol) != clause.solutions.end(); })) + continue; + + if (earlierClause->optional == clause.optional) + { + std::erase_if(earlierClause->solutions, [&clause, this](auto earlierSol) + { return std::find(clause.solutions.begin(), + clause.solutions.end(), + earlierSol) == clause.solutions.end(); }); + + earlierClause->merged.push_front(clause); + merged = true; + } + else if (clause.optional) + { + // If say a Depends has fewer solution than a Recommends, remove the Recommend's extranous ones. + std::erase_if(clause.solutions, [&earlierClause, this](auto sol) + { return std::find(earlierClause->solutions.begin(), + earlierClause->solutions.end(), + sol) == earlierClause->solutions.end(); }); + + // Remove recursion here, such that we display correctly (if we ever display anywhere...) + auto earlierClauseCopy = *earlierClause; + clause.merged = std::move(earlierClauseCopy.merged); + clause.merged.push_front(earlierClauseCopy); + } + } + + if (merged) + return nullptr; + } + + clauses.push_back(std::make_unique(std::move(clause))); + auto const &inserted = clauses.back(); + for (auto var : inserted->solutions) + (*this)[var].rclauses.push_back(inserted.get()); + return inserted.get(); +} + +void APT::Solver::Discover(Var var) +{ + assert(discoverQ.empty()); + discoverQ.push(var); + + while (not discoverQ.empty()) + { + var = discoverQ.front(); + discoverQ.pop(); + + // Package needs to be discovered before the version to be able to dedup shared dependencies + if (auto Ver = var.Ver(cache); not Ver.end() && not(*this)[Ver.ParentPkg()].flags.discovered) + var = Var(Ver.ParentPkg()); + + auto &state = (*this)[var]; + + if (state.flags.discovered) + continue; + + state.flags.discovered = true; + + if (auto Pkg = var.Pkg(cache); not Pkg.end()) + { + Clause clause{Var(Pkg), Group::SelectVersion}; + for (auto ver = Pkg.VersionList(); not ver.end(); ver++) + clause.solutions.push_back(Var(ver)); + + std::stable_sort(clause.solutions.begin(), clause.solutions.end(), CompareProviders3{cache, policy, Pkg, *this}); + RegisterClause(std::move(clause)); + + RegisterCommonDependencies(Pkg); + } + else if (auto Ver = var.Ver(cache); not Ver.end()) + { + Clause clause{Var(Ver), Group::SelectVersion}; + clause.solutions = {Var(Ver.ParentPkg())}; + RegisterClause(std::move(clause)); + + for (auto OV = Ver.ParentPkg().VersionList(); not OV.end(); ++OV) + { + if (OV == Ver) + continue; + + Clause clause{Var(Ver), Group::SelectVersion, false, true /* negative */}; + clause.solutions = {Var(OV)}; + RegisterClause(std::move(clause)); + } + + for (auto dep = Ver.DependsList(); not dep.end();) + { + // Compute a single dependency element (glob or) + pkgCache::DepIterator start; + pkgCache::DepIterator end; + dep.GlobOr(start, end); // advances dep + + // This dependency is shared across all versions, skip it. + if (auto &pkgClauses = (*this)[Ver.ParentPkg()].clauses; + std::any_of(pkgClauses.begin(), pkgClauses.end(), [this, start](auto &c) + { return c->dep && SameOrGroup(start, pkgCache::DepIterator(cache, c->dep)); })) + continue; + + auto clause = TranslateOrGroup(start, end, Var(Ver)); + + RegisterClause(std::move(clause)); + } + } + + // Recursively discover everything else that is not already FALSE by fact (MUSTNOT at depth 0) + for (auto const &clause : state.clauses) + for (auto const &var : clause->solutions) + if ((*this)[var].decision != Decision::MUSTNOT || (*this)[var].depth > 0) + discoverQ.push(var); + } +} + +void APT::Solver::RegisterCommonDependencies(pkgCache::PkgIterator Pkg) +{ + for (auto dep = Pkg.VersionList().DependsList(); not dep.end();) + { + pkgCache::DepIterator start, end; + dep.GlobOr(start, end); // advances dep + + bool allHaveDep = true; + for (auto ver = Pkg.VersionList()++; allHaveDep && not ver.end(); ver++) + { + bool haveDep = false; + for (auto otherDep = ver.DependsList(); not haveDep && not otherDep.end();) + { + pkgCache::DepIterator otherStart, otherEnd; + otherDep.GlobOr(otherStart, otherEnd); // advances other dep + haveDep = SameOrGroup(start, otherStart); + } + if (not haveDep) + allHaveDep = false; + } + if (not allHaveDep) + continue; + auto clause = TranslateOrGroup(start, end, Var(Pkg)); + RegisterClause(std::move(clause)); + } +} + +APT::Solver::Clause APT::Solver::TranslateOrGroup(pkgCache::DepIterator start, pkgCache::DepIterator end, Var reason) +{ + auto TgtPkg = start.TargetPkg(); + + // Non-important dependencies can only be installed if they are currently satisfied, see the check further + // below once we have calculated all possible solutions. + if (start.ParentPkg()->CurrentVer == 0 && not policy.IsImportantDep(start)) + return Clause{reason, Group::Satisfy, true}; + // Replaces and Enhances are not a real dependency. + if (start->Type == pkgCache::Dep::Replaces || start->Type == pkgCache::Dep::Enhances) + return Clause{reason, Group::Satisfy, true}; + if (unlikely(debug >= 3)) + std::cerr << "Found dependency critical " << reason.toString(cache) << " -> " << start.TargetPkg().FullName() << "\n"; + + Clause clause{reason, Group::Satisfy, not start.IsCritical() /* optional */, start.IsNegative()}; + + clause.dep = start; + + do + { + auto begin = clause.solutions.size(); + + if (DeferVersionSelection && not start.IsNegative() && start.TargetPkg().ProvidesList().end() && start.IsSatisfied(start.TargetPkg())) + { + clause.solutions.push_back(Var(start.TargetPkg())); + } + else + { + auto all = start.AllTargets(); + + for (auto tgt = all; *tgt; ++tgt) + { + pkgCache::VerIterator tgti(cache, *tgt); + + if (unlikely(debug >= 3)) + std::cerr << "Adding work to item " << reason.toString(cache) << " -> " << tgti.ParentPkg().FullName() << "=" << tgti.VerStr() << (clause.negative ? " (negative)" : "") << "\n"; + clause.solutions.push_back(Var(pkgCache::VerIterator(cache, *tgt))); + } + delete[] all; + + std::stable_sort(clause.solutions.begin() + begin, clause.solutions.end(), CompareProviders3{cache, policy, TgtPkg, *this}); + } + if (start == end) + break; + ++start; + } while (1); + + // Move obsolete packages to the end, and (non-obsolete) installed packages to the front + if (not FixPolicyBroken) + std::stable_sort(clause.solutions.begin(), clause.solutions.end(), [this](Var a, Var b) + { + if (IsUpgrade) + if (auto obsoleteA = Obsolete(a.CastPkg(cache)), obsoleteB = Obsolete(b.CastPkg(cache)); obsoleteA != obsoleteB) + return obsoleteB; + if ((a.CastPkg(cache)->CurrentVer == 0 || b.CastPkg(cache)->CurrentVer == 0) && a.CastPkg(cache)->CurrentVer != b.CastPkg(cache)->CurrentVer) + return a.CastPkg(cache)->CurrentVer != 0; + return false; }); + + if (std::all_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var) -> auto + { return var.CastPkg(cache)->CurrentVer == 0; })) + clause.group = Group::SatisfyNew; + if (std::any_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var) -> auto + { return Obsolete(var.CastPkg(cache), true); })) + clause.group = Group::SatisfyObsolete; + // Try to perserve satisfied Recommends. FIXME: We should check if the Recommends was there in the installed version? + if (clause.optional && start.ParentPkg()->CurrentVer) + { + bool important = policy.IsImportantDep(start); + auto importantToKeep = [this](pkgCache::DepIterator d) + { + return policy.IsImportantDep(d) || (KeepRecommends && d->Type == pkgCache::Dep::Recommends) || (KeepSuggests && d->Type == pkgCache::Dep::Suggests); + }; + bool satisfied = std::any_of(clause.solutions.begin(), clause.solutions.end(), [this](auto var) + { return var.Pkg(cache) ? var.Pkg(cache)->CurrentVer != nullptr : Var(var.CastPkg(cache).CurrentVer()) == var; }); + + // Find the existing dependency + pkgCache::DepIterator existing; + for (auto D = start.ParentPkg().CurrentVer().DependsList(); not D.end(); D++) + if (not D.IsCritical() && importantToKeep(D) && D.TargetPkg() == start.TargetPkg()) + { + existing = D; + break; + } + + if (not existing.end() && not important && importantToKeep(start) && satisfied) + { + if (unlikely(debug >= 3)) + std::cerr << "Try to keep satisfied: " << clause.toString(cache, true) << std::endl; + clause.group = Group::SatisfySuggests; + // Erase the non-installed solutions. We will process this last and try to keep the previously installed + // "best" solution installed. + clause.solutions.erase(std::remove_if(clause.solutions.begin(), clause.solutions.end(), [this](auto var) + { return var.CastPkg(cache)->CurrentVer == nullptr; }), + clause.solutions.end()); + } + else if (not important) + { + if (unlikely(debug >= 3)) + std::cerr << "Ignore unimportant clause: " << clause.toString(cache, true) << std::endl; + return Clause{reason, Group::Satisfy, true}; + } + else if (not existing.end() && policy.IsImportantDep(existing) && not satisfied) + { + if (unlikely(debug >= 3)) + std::cerr << "Ignoring unsatisfied clause: " << clause.toString(cache, true) << std::endl; + return Clause{reason, Group::Satisfy, true}; + } + else if (IsUpgrade && not existing.end() && satisfied) + { + if (unlikely(debug >= 3)) + std::cerr << "Promoting previously satisfied clause to hard dependency: " << clause.toString(cache, true) << std::endl; + clause.optional = false; + } + else if ( + IsUpgrade && not(AllowRemove && AllowInstall) // promote Recommends to Depends in upgrade, not in dist-upgrade. + && reason.Ver() && reason.Ver(cache) != reason.CastPkg(cache).CurrentVer() // and if this an upgrade to an installed package + && (existing.end() || not policy.IsImportantDep(existing)) // new Recommends, or upgraded from Suggests + ) + { + if (unlikely(debug >= 3)) + std::cerr << "Promoting new clause to hard dependency: " << clause.toString(cache) << std::endl; + clause.optional = false; + } + else if (not existing.end() && importantToKeep(start) && satisfied) + { + if (unlikely(debug >= 3)) + std::cerr << "Restricting existing Recommends to installed packages: " << clause.toString(cache, true) << std::endl; + // Erase the non-installed solutions. We will process this last and try to keep the previously installed + // "best" solution installed. + clause.solutions.erase(std::remove_if(clause.solutions.begin(), clause.solutions.end(), [this](auto var) + { return var.CastPkg(cache)->CurrentVer == nullptr; }), + clause.solutions.end()); + } + } + + return clause; +} + +void APT::Solver::Push(Var var, Work work) +{ + if (unlikely(debug >= 2)) + std::cerr << "Trying choice for " << work.toString(cache) << std::endl; + + choices.push_back(solved.size()); + solved.push_back(Solved{var, std::move(work)}); +} + +void APT::Solver::UndoOne() +{ + auto solvedItem = solved.back(); + + if (unlikely(debug >= 4)) + std::cerr << "Undoing a single decision\n"; + + if (not solvedItem.assigned.empty()) + { + if (unlikely(debug >= 4)) + std::cerr << "Unassign " << solvedItem.assigned.toString(cache) << "\n"; + auto &state = (*this)[solvedItem.assigned]; + state.decision = Decision::NONE; + state.reason = nullptr; + state.depth = 0; + } + + if (auto work = solvedItem.work) + { + if (unlikely(debug >= 4)) + std::cerr << "Adding work item " << work->toString(cache) << std::endl; + + if (not AddWork(std::move(*work))) + abort(); + } + + solved.pop_back(); + + // FIXME: Add the undo handling here once we have watchers. +} + +bool APT::Solver::Pop() +{ + if (depth() == 0) + return false; + + time_t now = time(nullptr); + if (startTime == 0) + startTime = now; + if (now - startTime >= Timeout) + return _error->Error("Solver timed out."); + + if (unlikely(debug >= 2)) + for (std::string msg; _error->PopMessage(msg);) + std::cerr << "Branch failed: " << msg << std::endl; + + _error->Discard(); + + // Assume() actually failed to enqueue anything, abort here + if (choices.back() == solved.size()) + { + choices.pop_back(); + return true; + } + + assert(choices.back() < solved.size()); + int itemsToUndo = solved.size() - choices.back(); + auto choice = solved[choices.back()].assigned; + + for (; itemsToUndo; --itemsToUndo) + UndoOne(); + + // We need to remove any work that is at a higher depth. + // FIXME: We should just mark the entries as erased and only do a compaction + // of the heap once we have a lot of erased entries in it. + choices.pop_back(); + work.erase(std::remove_if(work.begin(), work.end(), [this](Work &w) -> bool + { return w.depth > depth() || w.erased; }), + work.end()); + std::make_heap(work.begin(), work.end()); + + if (unlikely(debug >= 2)) + std::cerr << "Backtracking to choice " << choice.toString(cache) << "\n"; + + // FIXME: There should be a reason! + if (not choice.empty() && not Enqueue(choice, false, {})) + return false; + + if (unlikely(debug >= 2)) + std::cerr << "Backtracked to choice " << choice.toString(cache) << "\n"; + + return true; +} + +bool APT::Solver::AddWork(Work &&w) +{ + if (w.clause->negative) + { + for (auto var : w.clause->solutions) + if (not Enqueue(var, false, w.clause)) + return false; + } + else + { + if (unlikely(debug >= 3 && w.clause->optional)) + std::cerr << "Enqueuing Recommends " << w.clause->toString(cache) << std::endl; + if (w.clause->solutions.size() == 1 && not w.clause->optional) + return Enqueue(w.clause->solutions[0], true, w.clause); + + w.size = std::count_if(w.clause->solutions.begin(), w.clause->solutions.end(), [this](auto V) + { return (*this)[V].decision != Decision::MUSTNOT; }); + work.push_back(std::move(w)); + std::push_heap(work.begin(), work.end()); + } + return true; +} + +bool APT::Solver::Solve() +{ + _error->PushToStack(); + DEFER([&]() { _error->MergeWithStack(); }); + startTime = time(nullptr); + while (true) + { + while (not Propagate()) + { + if (not Pop()) + return false; + } + + if (work.empty()) + break; + + // *NOW* we can pop the item. + std::pop_heap(work.begin(), work.end()); + + // This item has been replaced with a new one. Remove it. + if (work.back().erased) + { + work.pop_back(); + continue; + } + auto item = std::move(work.back()); + work.pop_back(); + solved.push_back(Solved{Var(), item}); + + if (std::any_of(item.clause->solutions.begin(), item.clause->solutions.end(), [this](auto ver) + { return (*this)[ver].decision == Decision::MUST; })) + { + if (unlikely(debug >= 2)) + std::cerr << "ELIDED " << item.toString(cache) << std::endl; + continue; + } + + if (unlikely(debug >= 1)) + std::cerr << item.toString(cache) << std::endl; + + bool foundSolution = false; + for (auto &sol : item.clause->solutions) + { + if ((*this)[sol].decision == Decision::MUSTNOT) + { + if (unlikely(debug >= 3)) + std::cerr << "(existing conflict: " << sol.toString(cache) << ")\n"; + continue; + } + if (item.size > 1 || item.clause->optional) + { + Push(sol, item); + } + if (unlikely(debug >= 3)) + std::cerr << "(try it: " << sol.toString(cache) << ")\n"; + if (not Enqueue(sol, true, item.clause) && not Pop()) + return false; + foundSolution = true; + break; + } + if (not foundSolution && not item.clause->optional) + { + std::ostringstream err; + + err << "Unable to satisfy dependencies. Reached two conflicting decisions:" << "\n"; + std::unordered_set seen; + err << "1. " << LongWhyStr(item.clause->reason, true, (*this)[item.clause->reason].reason, " ", seen).substr(3) << "\n"; + err << "2. " << LongWhyStr(item.clause->reason, false, item.clause, " ", seen).substr(3); + _error->Error("%s", err.str().c_str()); + if (not Pop()) + return false; + } + } + + return true; +} + +// \brief Apply the selections from the dep cache to the solver +bool APT::Solver::FromDepCache(pkgDepCache &depcache) +{ + DefaultRootSetFunc2 rootSet(&cache); + std::vector manualPackages; + + // Enforce strict pinning rules by rejecting all forbidden versions. + if (StrictPinning) + { + for (auto P = cache.PkgBegin(); not P.end(); P++) + { + bool isForced = depcache[P].Protect() && depcache[P].Install(); + bool isPhasing = IsUpgrade && depcache.PhasingApplied(P) && not isForced; + for (auto V = P.VersionList(); not V.end(); ++V) + if (P.CurrentVer() != V && (depcache.GetCandidateVersion(P) != V || isPhasing)) + if (not Enqueue(Var(V), false, {})) + return false; + } + } + + // Clause discovery depends on the manual flag, so we need to set the manual flag first before we discover any packages + for (auto P = cache.PkgBegin(); not P.end(); P++) + if (P->CurrentVer && not(depcache[P].Flags & pkgCache::Flag::Auto) && (depcache[P].Keep() || depcache[P].Install())) + (*this)[P].flags.manual = true; + + for (auto P = cache.PkgBegin(); not P.end(); P++) + { + if (P->VersionList == nullptr) + continue; + + auto state = depcache[P]; + if (P->SelectedState == pkgCache::State::Hold && not state.Protect()) + { + if (unlikely(debug >= 1)) + std::cerr << "Hold " << P.FullName() << "\n"; + if (P->CurrentVer ? not Enqueue(Var(P.CurrentVer()), true) : not Enqueue(Var(P), false)) + return false; + } + else if (state.Delete() // Normal delete request. + || (not P->CurrentVer && state.Keep() && state.Protect()) // Delete request of not installed package. + || (not P->CurrentVer && state.Keep() && not AllowInstall) // New package installs not allowed. + ) + { + if (unlikely(debug >= 1)) + std::cerr << "Delete " << P.FullName() << "\n"; + if (not Enqueue(Var(P), false)) + return false; + } + else if (state.Install() || (state.Keep() && P->CurrentVer)) + { + auto isEssential = P->Flags & (pkgCache::Flag::Essential | pkgCache::Flag::Important); + auto isAuto = (depcache[P].Flags & pkgCache::Flag::Auto); + auto isOptional = ((isAuto && AllowRemove) || AllowRemoveManual) && not isEssential && not depcache[P].Protect(); + auto Root = rootSet.InRootSet(P); + auto Upgrade = depcache.GetCandidateVersion(P) != P.CurrentVer(); + auto Group = isAuto ? (Upgrade ? Group::UpgradeAuto : Group::KeepAuto) + : (Upgrade ? Group::UpgradeManual : Group::InstallManual); + + if (isAuto && not depcache[P].Protect() && not isEssential && not KeepAuto && not rootSet.InRootSet(P)) + { + if (unlikely(debug >= 1)) + std::cerr << "Ignore automatic install " << P.FullName() << " (" << (isEssential ? "E" : "") << (isAuto ? "M" : "") << (Root ? "R" : "") << ")" + << "\n"; + continue; + } + if (unlikely(debug >= 1)) + std::cerr << "Install " << P.FullName() << " (" << (isEssential ? "E" : "") << (isAuto ? "M" : "") << (Root ? "R" : "") << ")" + << "\n"; + if (not isOptional) + { + // Pre-empt the non-optional requests, as we don't want to queue them, we can just "unit propagate" here. + if (depcache[P].Keep() ? not Enqueue(Var(P), true) : not Enqueue(Var(depcache.GetCandidateVersion(P)), true)) + return false; + } + else + { + Clause w{Var(), Group, isOptional}; + w.solutions.push_back(Var(P)); + auto insertedW = RegisterClause(std::move(w)); + if (insertedW && not AddWork(Work{insertedW, depth()})) + return false; + + if (not isAuto) + manualPackages.push_back(Var(P)); + + // Given A->A2|A1, B->B1|B2; Bn->An, if we select `not A1`, we + // should try to install A2 before trying B so we end up with + // A2, B2, instead of removing A1 to keep B1 installed. This + // requires some special casing in Work::operator< above. + // Compare test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch + Clause shortcircuit{Var(), Group, isOptional}; + for (auto V = P.VersionList(); not V.end(); ++V) + shortcircuit.solutions.push_back(Var(V)); + std::stable_sort(shortcircuit.solutions.begin(), shortcircuit.solutions.end(), CompareProviders3{cache, policy, P, *this}); + auto insertedShort = RegisterClause(std::move(shortcircuit)); + if (insertedShort && not AddWork(Work{insertedShort, depth()})) + return false; + + // Discovery here is needed so the shortcircuit clause can actually become unit. + if (P.VersionList() && P.VersionList()->NextVer) + Discover(Var(P)); + } + } + else if (IsUpgrade && AllowRemove && AllowInstall && (P->Flags & pkgCache::Flag::Essential)) + { + Clause w{Var(), Group::InstallManual, false}; + auto G = P.Group(); + for (auto P = G.PackageList(); not P.end(); P = G.NextPkg(P)) + if (P->Flags & pkgCache::Flag::Essential) + w.solutions.push_back(Var(P)); + std::stable_sort(w.solutions.begin(), w.solutions.end(), CompareProviders3{cache, policy, P, *this}); + if (unlikely(debug >= 1)) + std::cerr << "Install essential package " << P << std::endl; + auto inserted = RegisterClause(std::move(w)); + if (inserted && not AddWork(Work{inserted, depth()})) + return false; + } + } + + if (not Propagate()) + return false; + + std::stable_sort(manualPackages.begin(), manualPackages.end(), CompareProviders3{cache, policy, {}, *this}); + for (auto assumption : manualPackages) + { + if (not Assume(assumption, true, {}) || not Propagate()) + if (not Pop()) + abort(); + } + + return true; +} + +bool APT::Solver::ToDepCache(pkgDepCache &depcache) const +{ + FastContiguousCacheMap movedManual(cache); + pkgDepCache::ActionGroup group(depcache); + for (auto P = cache.PkgBegin(); not P.end(); P++) + { + depcache[P].Marked = 0; + depcache[P].Garbage = 0; + if ((*this)[P].decision == Decision::MUST) + { + pkgCache::VerIterator cand; + for (auto V = P.VersionList(); cand.end() && not V.end(); V++) + if ((*this)[V].decision == Decision::MUST) + cand = V; + + auto reasonClause = (*this)[cand].reason; + auto reason = reasonClause ? reasonClause->reason : Var(); + if (auto RP = reason.Pkg(); RP == P.MapPointer()) + reason = (*this)[P].reason ? (*this)[P].reason->reason : Var(); + + if (cand != P.CurrentVer()) + { + bool automatic = (not reason.empty() || (depcache[P].Flags & pkgCache::Flag::Auto)) && not movedManual[P]; + depcache.SetCandidateVersion(cand); + depcache.MarkInstall(P, false, 0, not automatic); + + // Set the automatic bit for new packages or move it on upgrades to oldlibs + if (not P->CurrentVer) + depcache.MarkAuto(P, automatic); + else if (not(depcache[P].Flags & pkgCache::Flag::Auto) && P.CurrentVer()->Section && cand->Section && not _config->SectionInSubTree("APT::Move-Autobit-Sections", P.CurrentVer().Section()) && _config->SectionInSubTree("APT::Move-Autobit-Sections", cand.Section())) + { + bool moved = false; + for (auto const &clause : (*this)[cand].clauses) + for (auto sol : clause->solutions) + { + // New installs move the auto-bit. TODO: Should we look at whether clause is the reason for installing it? + if (sol.CastPkg(cache) == P || sol.CastPkg(cache)->CurrentVer) + continue; + std::cerr << "Move manual bit from " << P.FullName() << " to " << sol.CastPkg(cache).Name() << std::endl; + movedManual[sol.CastPkg(cache)] = true; + depcache.MarkAuto(sol.CastPkg(cache), false); + moved = true; + } + if (moved) + depcache.MarkAuto(P, true); + } + + } + else + depcache.MarkKeep(P, false, reason.empty() && not(depcache[P].Flags & pkgCache::Flag::Auto)); + + depcache[P].Marked = 1; + depcache[P].Garbage = 0; + } + else if (P->CurrentVer || depcache[P].Install()) + { + depcache.MarkDelete(P, false, 0, not(*this)[P].reason); + depcache[P].Marked = 0; + depcache[P].Garbage = 1; + } + } + return true; +} + +// Command-line +std::string APT::Solver::InternalCliWhy(pkgDepCache &cache, pkgCache::PkgIterator pkg, bool decision) +{ + APT::Solver solver(cache.GetCache(), cache.GetPolicy(), EDSP::Request::Flags(0)); + // In case nothing has a positive dependency on pkg it may not actually be discovered in a `why-not` + // scenario, so make sure we discover it explicitly. + solver.Discover(Var(pkg)); + if (not solver.FromDepCache(cache) || not solver.Solve()) + return ""; + std::unordered_set seen; + std::string buf; + if (solver[Var(pkg)].decision == Decision::NONE) + return strprintf(buf, "%s is undecided\n", pkg.FullName().c_str()), buf; + if (decision && solver[Var(pkg)].decision != Decision::MUST) + return strprintf(buf, "%s is not actually marked for install\n", pkg.FullName().c_str()), buf; + if (not decision && solver[Var(pkg)].decision == Decision::MUST) + return strprintf(buf, "%s is actually marked for install\n", pkg.FullName().c_str()), buf; + return solver.LongWhyStr(Var(pkg), decision, solver[Var(pkg)].reason, "", seen); +} diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h new file mode 100644 index 0000000..019a01b --- /dev/null +++ b/apt-pkg/solver3.h @@ -0,0 +1,532 @@ +/* + * solver3.h - The APT 3.0 solver + * + * Copyright (c) 2023 Julian Andres Klode + * Copyright (c) 2023 Canonical Ltd + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +template struct always_false : std::false_type {}; + +namespace APT +{ + +/** + * \brief A simple mapping from objects in the cache to user-defined types. + * + * This default initializes an array with the specified value type for each + * object in the cache of that type. + */ +template +class ContiguousCacheMap +{ + V *data_; // Avoid std::unique_ptr() as it may check that it's non-null. + + public: + ContiguousCacheMap(pkgCache &cache) + { + static_assert(std::is_constructible_v); + if constexpr (fast) + { + static_assert(std::is_trivially_constructible_v); + static_assert(std::is_trivially_destructible_v); + } + + size_t size; + if constexpr (std::is_same_v) + size = cache.Head().VersionCount; + else if constexpr (std::is_same_v) + size = cache.Head().PackageCount; + else + static_assert(always_false::value, "Cannot construct map for key type"); + + data_ = new V[size]{}; + } + V &operator[](const K *key) { return data_[key->ID]; } + const V &operator[](const K *key) const { return data_[key->ID]; } + ~ContiguousCacheMap() { delete[] data_; } +}; + +/** + * \brief A version of ContiguousCacheMap that ensures allocation and deallocation is trivial. + */ +template +using FastContiguousCacheMap = ContiguousCacheMap; + +/* + * \brief APT 3.0 solver + * + * This is a simple solver focused on understandability and sensible results, it + * will not generally find all solutions to the problem but will try to find the best + * ones. + * + * It is a brute force solver with heuristics, conflicts learning, and 2**32 levels + * of backtracking. + */ +class Solver +{ + enum class Decision : uint16_t; + enum class Hint : uint16_t; + struct Var; + struct CompareProviders3; + struct State; + struct Clause; + struct Work; + struct Solved; + friend struct std::hash; + + // \brief Groups of works, these are ordered. + // + // Later items will be skipped if they are optional, or we will when backtracking, + // try a different choice for them. + enum class Group : uint8_t + { + HoldOrDelete, + + // Satisfying dependencies on entirely new packages first is a good idea because + // it may contain replacement packages like libfoo1t64 whereas we later will see + // Depends: libfoo1 where libfoo1t64 Provides libfoo1 and we'd have to choose. + SatisfyNew, + Satisfy, + // On a similar note as for SatisfyNew, if the dependency contains obsolete packages + // try it last. + SatisfyObsolete, + + // Select a version of a package chosen for install. + SelectVersion, + + // My intuition tells me that we should try to schedule upgrades first, then + // any non-obsolete installed packages, and only finally obsolete ones, such + // that newer packages guide resolution of dependencies for older ones, they + // may have more stringent dependencies, like a (>> 2) whereas an obsolete + // package may have a (>> 1), for example. + UpgradeManual, + InstallManual, + ObsoleteManual, + + // Automatically installed packages must come last in the group, this allows + // us to see if they were installed as a dependency of a manually installed package, + // allowing a simple implementation of an autoremoval code. + UpgradeAuto, + KeepAuto, + ObsoleteAuto, + + // Satisfy optional dependencies that were previously satisfied but won't otherwise be installed + SatisfySuggests, + }; + + // \brief Type to record depth at. This may very well be a 16-bit + // unsigned integer, then change Solver::State::Decision to be a + // uint16_t class enum as well to get a more compact space. + using depth_type = unsigned int; + + // Documentation + template + using heap = std::vector; + + static_assert(sizeof(depth_type) >= sizeof(map_id_t)); + + // Cache is needed to construct Iterators from Version objects we see + pkgCache &cache; + // Policy is needed for determining candidate version. + pkgDepCache::Policy &policy; + // Root state + std::unique_ptr rootState; + // States for packages + ContiguousCacheMap pkgStates; + // States for versions + ContiguousCacheMap verStates; + + // \brief Helper function for safe access to package state. + inline State &operator[](const pkgCache::Package *P) + { + return pkgStates[P]; + } + inline const State &operator[](const pkgCache::Package *P) const + { + return pkgStates[P]; + } + + // \brief Helper function for safe access to version state. + inline State &operator[](const pkgCache::Version *V) + { + return verStates[V]; + } + inline const State &operator[](const pkgCache::Version *V) const + { + return verStates[V]; + } + // \brief Helper function for safe access to either state. + inline State &operator[](Var r); + inline const State &operator[](Var r) const; + + mutable FastContiguousCacheMap pkgObsolete; + // \brief Check if package is obsolete. + // \param AllowManual controls whether manual packages can be obsolete + bool Obsolete(pkgCache::PkgIterator pkg, bool AllowManual=false) const; + bool ObsoletedByNewerSourceVersion(pkgCache::VerIterator cand) const; + + mutable FastContiguousCacheMap priorities; + short GetPriority(pkgCache::VerIterator ver) const + { + if (priorities[ver] == 0) + priorities[ver] = policy.GetPriority(ver); + return priorities[ver]; + } + + mutable ContiguousCacheMap candidates; + pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator pkg) const + { + if (candidates[pkg].end()) + candidates[pkg] = policy.GetCandidateVer(pkg); + return candidates[pkg]; + } + + // \brief Heap of the remaining work. + // + // We are using an std::vector with std::make_heap(), std::push_heap(), + // and std::pop_heap() rather than a priority_queue because we need to + // be able to iterate over the queued work and see if a choice would + // invalidate any work. + heap work; + + // \brief Backlog of solved work. + // + // Solved work may become invalidated when backtracking, so store it + // here to revisit it later. This is similar to what MiniSAT calls the + // trail; one distinction is that we have both literals and our work + // queue to be concerned about + std::vector solved; + + // \brief Propagation queue + std::queue propQ; + // \brief Discover variables + std::queue discoverQ; + + // \brief Current decision level. + // + // This is an index into the solved vector. + std::vector choices{}; + + // \brief The time we called Solve() + time_t startTime{}; + + EDSP::Request::Flags requestFlags; + /// Various configuration options + std::string version{_config->Find("APT::Solver", "3.0")}; + // \brief Debug level + int debug{_config->FindI("Debug::APT::Solver")}; + // \brief If set, we try to keep automatically installed packages installed. + bool KeepAuto{version == "3.0" || not _config->FindB("APT::Get::AutomaticRemove")}; + // \brief Determines if we are in upgrade mode. + bool IsUpgrade{_config->FindB("APT::Solver::Upgrade", requestFlags &EDSP::Request::UPGRADE_ALL)}; + // \brief If set, removals are allowed. + bool AllowRemove{_config->FindB("APT::Solver::Remove", not(requestFlags & EDSP::Request::FORBID_REMOVE))}; + // \brief If set, removal of manual packages is allowed. + bool AllowRemoveManual{AllowRemove && _config->FindB("APT::Solver::RemoveManual", false)}; + // \brief If set, installs are allowed. + bool AllowInstall{_config->FindB("APT::Solver::Install", not(requestFlags & EDSP::Request::FORBID_NEW_INSTALL))}; + // \brief If set, we use strict pinning. + bool StrictPinning{_config->FindB("APT::Solver::Strict-Pinning", true)}; + // \brief If set, we install missing recommends and pick new best packages. + bool FixPolicyBroken{_config->FindB("APT::Get::Fix-Policy-Broken")}; + // \brief If set, we use strict pinning. + bool DeferVersionSelection{_config->FindB("APT::Solver::Defer-Version-Selection", true)}; + // \brief If set, we use strict pinning. + int Timeout{_config->FindI("APT::Solver::Timeout", 10)}; + + // \brief Keep recommends installed + bool KeepRecommends{_config->FindB("APT::AutoRemove::RecommendsImportant", true)}; + // \brief Keep suggests installed + bool KeepSuggests{_config->FindB("APT::AutoRemove::SuggestsImportant", true)}; + + // \brief Discover a variable, translating the underlying dependencies to the SAT presentation + // + // This does a breadth-first search of the entire dependency tree of var, + // utilizing the discoverQ above. + void Discover(Var var); + // \brief Link a clause into the watchers + const Clause *RegisterClause(Clause &&clause); + // \brief Enqueue dependencies shared by all versions of the package. + void RegisterCommonDependencies(pkgCache::PkgIterator Pkg); + + // \brief Translate an or group into a clause object + [[nodiscard]] Clause TranslateOrGroup(pkgCache::DepIterator start, pkgCache::DepIterator end, Var reason); + // \brief Propagate all pending propagations + [[nodiscard]] bool Propagate(); + + // \brief Return the current depth (choices.size() with casting) + depth_type depth() + { + return static_cast(choices.size()); + } + inline Var bestReason(Clause const *clause, Var var) const; + + public: + // \brief Create a new decision level. + void Push(Var var, Work work); + // \brief Revert to the previous decision level. + [[nodiscard]] bool Pop(); + // \brief Undo a single assignment / solved work item + void UndoOne(); + // \brief Add work to our work queue. + [[nodiscard]] bool AddWork(Work &&work); + + // \brief Basic solver initializer. This cannot fail. + Solver(pkgCache &Cache, pkgDepCache::Policy &Policy, EDSP::Request::Flags requestFlags); + ~Solver(); + + // Assume that the variable is decided as specified. + [[nodiscard]] bool Assume(Var var, bool decision, const Clause *reason = nullptr); + // Enqueue a decision fact + [[nodiscard]] bool Enqueue(Var var, bool decision, const Clause *reason = nullptr); + + // \brief Apply the selections from the dep cache to the solver + [[nodiscard]] bool FromDepCache(pkgDepCache &depcache); + // \brief Apply the solver result to the depCache + [[nodiscard]] bool ToDepCache(pkgDepCache &depcache) const; + + // \brief Solve the dependencies + [[nodiscard]] bool Solve(); + + // Print dependency chain + std::string WhyStr(Var reason) const; + + /** + * \brief Print a long reason string + * + * Print a reason as to why `rclause` implies `decision` for the variable `var`. + * + * \param var The variable to print the reason for + * \param decision The assumed decision to print the reason for (may be different from actual decision if rclause is specified) + * \param rclause The clause that caused this variable to be marked (or would be marked) + * \param prefix A prefix, for indentation purposes, as this is recursive + * \param seen A set of seen objects such that the output does not repeat itself (not for safety, it is acyclic) + */ + std::string LongWhyStr(Var var, bool decision, const Clause *rclause, std::string prefix, std::unordered_set &seen) const; + + // \brief Temporary internal API with external linkage for the `apt why` and `apt why-not` commands. + APT_PUBLIC static std::string InternalCliWhy(pkgDepCache &depcache, pkgCache::PkgIterator Pkg, bool decision); +}; + +}; // namespace APT + +/** + * \brief Tagged union holding either a package, version, or nothing; representing the reason for installing something. + * + * We want to keep track of the reason why things are being installed such that + * we can have sensible debugging abilities; and we want to generically refer to + * both packages and versions as variables, hence this class was added. + * + */ +struct APT::Solver::Var +{ + uint32_t value; + + explicit constexpr Var(uint32_t value = 0) : value{value} {} + explicit Var(pkgCache::PkgIterator const &Pkg) : value(uint32_t(Pkg.MapPointer()) << 1) {} + explicit Var(pkgCache::VerIterator const &Ver) : value(uint32_t(Ver.MapPointer()) << 1 | 1) {} + + inline constexpr bool isVersion() const { return value & 1; } + inline constexpr uint32_t mapPtr() const { return value >> 1; } + + // \brief Return the package, if any, otherwise 0. + map_pointer Pkg() const + { + return isVersion() ? 0 : map_pointer{mapPtr()}; + } + // \brief Return the version, if any, otherwise 0. + map_pointer Ver() const + { + return isVersion() ? map_pointer{mapPtr()} : 0; + } + // \brief Return the package iterator if storing a package, or an empty one + pkgCache::PkgIterator Pkg(pkgCache &cache) const + { + return isVersion() ? pkgCache::PkgIterator() : pkgCache::PkgIterator(cache, cache.PkgP + Pkg()); + } + // \brief Return the version iterator if storing a package, or an empty end. + pkgCache::VerIterator Ver(pkgCache &cache) const + { + return isVersion() ? pkgCache::VerIterator(cache, cache.VerP + Ver()) : pkgCache::VerIterator(); + } + // \brief Return a package, cast from version if needed + pkgCache::PkgIterator CastPkg(pkgCache &cache) const + { + return isVersion() ? Ver(cache).ParentPkg() : Pkg(cache); + } + // \brief Check if there is no reason. + constexpr bool empty() const { return value == 0; } + constexpr bool operator!=(Var const other) const { return value != other.value; } + constexpr bool operator==(Var const other) const { return value == other.value; } + + std::string toString(pkgCache &cache) const + { + if (auto P = Pkg(cache); not P.end()) + return P.FullName(); + if (auto V = Ver(cache); not V.end()) + return V.ParentPkg().FullName() + "=" + V.VerStr(); + return "(root)"; + } +}; + +/** + * \brief A single clause + * + * A clause is a normalized, expanded dependency, translated into an implication + * in terms of Var objects, that is, `reason -> solutions[0] | ... | solutions[n]` + */ +struct APT::Solver::Clause +{ + // \brief Underyling dependency + pkgCache::Dependency *dep = nullptr; + // \brief Var for the work + Var reason; + // \brief The group we are in + Group group; + // \brief Possible solutions to this task, ordered in order of preference. + std::vector solutions{}; + // \brief An optional clause does not need to be satisfied + bool optional; + + // \brief A negative clause negates the solutions, that is X->A|B you get X->!(A|B), aka X->!A&!B + bool negative; + + // Clauses merged with this clause + std::forward_list merged; + + inline Clause(Var reason, Group group, bool optional = false, bool negative = false) : reason(reason), group(group), optional(optional), negative(negative) {} + + std::string toString(pkgCache &cache, bool pretty = false, bool showMerged = true) const; +}; + +/** + * \brief A single work item + * + * A work item is a positive dependency that still needs to be resolved. Work + * is ordered, by depth, length of solutions, and optionality. + * + * The work can always be recalculated from the state by iterating over dependencies + * of all packages in there, finding solutions to them, and then adding all dependencies + * not yet resolved to the work queue. + */ +struct APT::Solver::Work +{ + const Clause *clause; + + // \brief The depth at which the item has been added + depth_type depth; + + // Number of valid choices + size_t size{0}; + + // \brief This item should be removed from the queue. + bool erased{false}; + + bool operator<(APT::Solver::Work const &b) const; + std::string toString(pkgCache &cache) const; + inline Work(const Clause *clause, depth_type depth) : clause(clause), depth(depth) {} +}; + +// \brief This essentially describes the install state in RFC2119 terms. +enum class APT::Solver::Decision : uint16_t +{ + // \brief We have not made a choice about the package yet + NONE, + // \brief We need to install this package + MUST, + // \brief We cannot install this package (need conflicts with it) + MUSTNOT, +}; + +/** + * \brief The solver state + * + * For each version, the solver records a decision at a certain level. It + * maintains an array mapping from version ID to state. + */ +struct APT::Solver::State +{ + // \brief The reason for causing this state (invalid for NONE). + // + // Rejects may have been caused by a later state. Consider we select + // between x1 and x2 in depth = N. If we now find dependencies of x1 + // leading to a conflict with a package in K < N, we will record all + // of them as REJECT in depth = K. + // + // You can follow the reason chain upwards as long as the depth + // doesn't increase to unwind. + // + // Vars < 0 are package ID, reasons > 0 are version IDs. + const Clause *reason{}; + + // \brief The depth at which the decision has been taken + depth_type depth{0}; + + // \brief This essentially describes the install state in RFC2119 terms. + Decision decision{Decision::NONE}; + + // \brief Flags. + struct + { + bool discovered{}; + bool manual{}; + } flags; + + static_assert(sizeof(flags) <= sizeof(int)); + + // \brief Clauses owned by this package/version + std::vector> clauses; + // \brief Reverse clauses, that is dependencies (or conflicts) from other packages on this one + std::vector rclauses; +}; + +/** + * \brief A solved item. + * + * Here we keep track of solved clauses and variable assignments such that we can easily undo + * them. + */ +struct APT::Solver::Solved +{ + // \brief A variable that has been assigned. We store this as a reason (FIXME: Rename Var to Var) + Var assigned; + // \brief A work item that has been solved. This needs to be put back on the queue. + std::optional work; +}; + +inline APT::Solver::State &APT::Solver::operator[](Var r) +{ + if (auto P = r.Pkg()) + return (*this)[cache.PkgP + P]; + if (auto V = r.Ver()) + return (*this)[cache.VerP + V]; + return *rootState.get(); +} + +inline const APT::Solver::State &APT::Solver::operator[](Var r) const +{ + return const_cast(*this)[r]; +} + +// Custom specialization of std::hash can be injected in namespace std. +template <> +struct std::hash +{ + std::hash hash_value; + std::size_t operator()(const APT::Solver::Var &v) const noexcept { return hash_value(v.value); } +}; diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index 65412b4..687ac39 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -36,6 +36,7 @@ /*}}}*/ using namespace std; +using namespace std::literals; // Global list of Items supported static pkgSourceList::Type *ItmList[10]; @@ -124,6 +125,8 @@ bool pkgSourceList::Type::ParseStanza(vector &List, /*{{{*/ 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))); + mapping.insert(std::make_pair("Include", std::make_pair("include", false))); + mapping.insert(std::make_pair("Exclude", std::make_pair("exclude", false))); for (std::map >::const_iterator m = mapping.begin(); m != mapping.end(); ++m) if (Tags.Exists(m->first)) @@ -541,7 +544,7 @@ void pkgSourceList::AddVolatileFile(pkgIndexFile * const File) /*{{{*/ VolatileFiles.push_back(File); } /*}}}*/ -static bool fileNameMatches(std::string const &filename, std::string const &idxtype)/*{{{*/ +static bool fileNameMatches(std::string_view const &filename, std::string const &idxtype)/*{{{*/ { for (auto && type: APT::Configuration::getCompressionTypes()) { @@ -563,7 +566,7 @@ bool pkgSourceList::AddVolatileFile(std::string const &File, std::vector * const VolatileCmdL)/*{{{*/ { - std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const * const I) { + (void)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)) diff --git a/apt-pkg/tagfile-keys.list b/apt-pkg/tagfile-keys.list index 4b57e46..d198ea0 100644 --- a/apt-pkg/tagfile-keys.list +++ b/apt-pkg/tagfile-keys.list @@ -80,3 +80,4 @@ Vcs-Mtn Vcs-Svn Version ### APPEND BELOW, sort in with next ABI break ### +Source-Version diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc index 95ae4a4..fbc9cfb 100644 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@ -3,18 +3,18 @@ /* ###################################################################### 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 +#include #include #include -#include #include #include #include @@ -30,8 +30,9 @@ #include /*}}}*/ +using APT::Configuration::color; using std::string; -using APT::StringView; +using std::string_view; class APT_HIDDEN pkgTagFilePrivate /*{{{*/ { @@ -73,6 +74,9 @@ class APT_HIDDEN pkgTagFilePrivate /*{{{*/ }; std::list chunks; + bool FillBuffer(); + void RemoveCommentsFromBuffer(); + ~pkgTagFilePrivate() { if (Buffer != NULL) @@ -154,10 +158,7 @@ void pkgTagFile::Init(FileFd * const pFd,unsigned long long Size) } /*}}}*/ // TagFile::~pkgTagFile - Destructor /*{{{*/ -pkgTagFile::~pkgTagFile() -{ - delete d; -} +pkgTagFile::~pkgTagFile() = default; /*}}}*/ // TagFile::Offset - Return the current offset in the buffer /*{{{*/ APT_PURE unsigned long pkgTagFile::Offset() @@ -197,7 +198,7 @@ bool pkgTagFile::Resize(unsigned long long const newSize) /*}}}*/ // TagFile::Step - Advance to the next section /*{{{*/ // --------------------------------------------------------------------- -/* If the Section Scanner fails we refill the buffer and try again. +/* 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. */ @@ -262,57 +263,57 @@ bool pkgTagFile::Step(pkgTagSection &Tag) // --------------------------------------------------------------------- /* 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) +bool pkgTagFilePrivate::FillBuffer() { 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) + unsigned long long const dataSize = Size - ((End - Buffer) + 1); + if (Fd->Read(End, dataSize, &Actual) == false) return false; if (Actual != dataSize) - d->Done = true; - d->End += Actual; + Done = true; + End += Actual; return true; } -static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d) +void pkgTagFilePrivate::RemoveCommentsFromBuffer() { // look for valid comments in the buffer char * good_start = nullptr, * bad_start = nullptr; - char * current = d->Start; - if (d->isCommentedLine == false) + char * current = Start; + if (isCommentedLine == false) { - if (d->Start == d->Buffer) + if (Start == 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 == '#') + if (*Start == '#') { - d->isCommentedLine = true; + isCommentedLine = true; ++current; - if (current > d->End) - d->chunks.emplace_back(false, 1); + if (current > End) + chunks.emplace_back(false, 1); } } - if (d->isCommentedLine == false) - good_start = d->Start; + if (isCommentedLine == false) + good_start = Start; else - bad_start = d->Start; + bad_start = Start; } else - bad_start = d->Start; + bad_start = Start; std::vector> good_parts; - while (current <= d->End) + while (current <= End) { - size_t const restLength = (d->End - current); - if (d->isCommentedLine == false) + size_t const restLength = (End - current); + if (isCommentedLine == false) { current = static_cast(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) + size_t const goodLength = End - good_start; + chunks.emplace_back(true, goodLength); + if (good_start != Start) good_parts.push_back(std::make_pair(good_start, goodLength)); break; } @@ -322,10 +323,10 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d) if (*current == '\n') { size_t const goodLength = (current - good_start) + 1; - d->chunks.emplace_back(true, goodLength); + chunks.emplace_back(true, goodLength); good_parts.push_back(std::make_pair(good_start, goodLength)); good_start = nullptr; - d->isCommentedLine = true; + isCommentedLine = true; } current += 2; } @@ -334,17 +335,17 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d) current = static_cast(memchr(current, '\n', restLength)); if (current == nullptr) { - d->chunks.emplace_back(false, (d->End - bad_start)); + chunks.emplace_back(false, (End - bad_start)); break; } ++current; // is the next line a comment, too? - if (current >= d->End || *current != '#') + if (current >= End || *current != '#') { - d->chunks.emplace_back(false, (current - bad_start)); + chunks.emplace_back(false, (current - bad_start)); good_start = current; bad_start = nullptr; - d->isCommentedLine = false; + isCommentedLine = false; } ++current; } @@ -353,31 +354,31 @@ static void RemoveCommentsFromBuffer(pkgTagFilePrivate * const d) if (good_parts.empty() == false) { // we found comments, so move later parts over them - current = d->Start; + current = Start; for (auto const &good: good_parts) { memmove(current, good.first, good.second); current += good.second; } - d->End = current; + End = current; } - if (d->isCommentedLine == true) + if (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; + End = Start; else - d->Start = d->End; + Start = 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; + if (good_parts.empty() == true && good_start >= End) + End = Start; else - d->Start = d->End; + Start = End; } } bool pkgTagFile::Fill() @@ -394,10 +395,10 @@ bool pkgTagFile::Fill() unsigned long long Actual = 0; while (d->Done == false && d->Size > (Actual + 1)) { - if (FillBuffer(d) == false) + if (d->FillBuffer() == false) return false; if ((d->Flags & pkgTagFile::SUPPORT_COMMENTS) != 0) - RemoveCommentsFromBuffer(d); + d->RemoveCommentsFromBuffer(); Actual = d->End - d->Buffer; } d->Start = d->Buffer; @@ -464,14 +465,14 @@ bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset) 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; } /*}}}*/ @@ -600,7 +601,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R TrimRecord(false,End); return true; } - + Stop++; } @@ -626,7 +627,7 @@ void pkgTagSection::Trim() } /*}}}*/ // TagSection::Exists - return True if a tag exists /*{{{*/ -bool pkgTagSection::Exists(StringView Tag) const +bool pkgTagSection::Exists(string_view Tag) const { unsigned int tmp; return Find(Tag, tmp); @@ -646,7 +647,7 @@ bool pkgTagSection::Find(Key key,unsigned int &Pos) const Pos = Bucket - 1; return Bucket != 0; } -bool pkgTagSection::Find(StringView TagView,unsigned int &Pos) const +bool pkgTagSection::Find(string_view TagView,unsigned int &Pos) const { const char * const Tag = TagView.data(); size_t const Length = TagView.length(); @@ -691,7 +692,7 @@ bool pkgTagSection::FindInternal(unsigned int Pos, const char *&Start, return true; } -bool pkgTagSection::Find(StringView Tag,const char *&Start, +bool pkgTagSection::Find(string_view Tag,const char *&Start, const char *&End) const { unsigned int Pos; @@ -705,25 +706,25 @@ bool pkgTagSection::Find(Key key,const char *&Start, } /*}}}*/ // TagSection::FindS - Find a string /*{{{*/ -StringView pkgTagSection::Find(StringView Tag) const +string_view pkgTagSection::Find(string_view Tag) const { const char *Start; const char *End; if (Find(Tag,Start,End) == false) - return StringView(); - return StringView(Start, End - Start); + return string_view(); + return string_view(Start, End - Start); } -StringView pkgTagSection::Find(Key key) const +string_view pkgTagSection::Find(Key key) const { const char *Start; const char *End; if (Find(key,Start,End) == false) - return StringView(); - return StringView(Start, End - Start); + return string_view(); + return string_view(Start, End - Start); } /*}}}*/ // TagSection::FindRawS - Find a string /*{{{*/ -StringView pkgTagSection::FindRawInternal(unsigned int Pos) const +string_view pkgTagSection::FindRawInternal(unsigned int Pos) const { if (unlikely(Pos + 1 >= d->Tags.size() || Pos >= d->Tags.size())) return _error->Error("Internal parsing error"), ""; @@ -741,14 +742,14 @@ StringView pkgTagSection::FindRawInternal(unsigned int Pos) const for (; isspace_ascii(End[-1]) != 0 && End > Start; --End); - return StringView(Start, End - Start); + return string_view(Start, End - Start); } -StringView pkgTagSection::FindRaw(StringView Tag) const +string_view pkgTagSection::FindRaw(std::string_view Tag) const { unsigned int Pos; return Find(Tag, Pos) ? FindRawInternal(Pos) : ""; } -StringView pkgTagSection::FindRaw(Key key) const +string_view pkgTagSection::FindRaw(Key key) const { unsigned int Pos; return Find(key, Pos) ? FindRawInternal(Pos) : ""; @@ -759,14 +760,14 @@ StringView pkgTagSection::FindRaw(Key key) const /* */ signed int pkgTagSection::FindIInternal(unsigned int Pos,signed long Default) const { - const char *Start; - const char *Stop; + const char *Start = nullptr; + const char *Stop = nullptr; 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)) + if ((size_t)(Stop - Start) >= sizeof(S)) return Default; strncpy(S,Start,Stop-Start); S[Stop - Start] = 0; @@ -789,7 +790,7 @@ signed int pkgTagSection::FindI(Key key,signed long Default) const return Find(key, Pos) ? FindIInternal(Pos) : Default; } -signed int pkgTagSection::FindI(StringView Tag,signed long Default) const +signed int pkgTagSection::FindI(string_view Tag,signed long Default) const { unsigned int Pos; @@ -801,18 +802,18 @@ signed int pkgTagSection::FindI(StringView Tag,signed long Default) const /* */ unsigned long long pkgTagSection::FindULLInternal(unsigned int Pos, unsigned long long const &Default) const { - const char *Start; - const char *Stop; + const char *Start = nullptr; + const char *Stop = nullptr; 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)) + if ((size_t)(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) @@ -825,7 +826,7 @@ unsigned long long pkgTagSection::FindULL(Key key, unsigned long long const &Def return Find(key, Pos) ? FindULLInternal(Pos, Default) : Default; } -unsigned long long pkgTagSection::FindULL(StringView Tag, unsigned long long const &Default) const +unsigned long long pkgTagSection::FindULL(string_view Tag, unsigned long long const &Default) const { unsigned int Pos; @@ -837,7 +838,7 @@ unsigned long long pkgTagSection::FindULL(StringView Tag, unsigned long long con /* */ bool pkgTagSection::FindBInternal(unsigned int Pos, bool Default) const { - const char *Start, *Stop; + const char *Start = nullptr, *Stop = nullptr; if (FindInternal(Pos, Start, Stop) == false) return Default; return StringToBool(string(Start, Stop)); @@ -847,7 +848,7 @@ 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 +bool pkgTagSection::FindB(string_view Tag, bool Default) const { unsigned int Pos; return Find(Tag, Pos) ? FindBInternal(Pos, Default) : Default; @@ -859,8 +860,8 @@ bool pkgTagSection::FindB(StringView Tag, bool Default) const bool pkgTagSection::FindFlagInternal(unsigned int Pos, uint8_t &Flags, uint8_t const Flag) const { - const char *Start; - const char *Stop; + const char *Start = nullptr; + const char *Stop = nullptr; if (FindInternal(Pos,Start,Stop) == false) return true; return FindFlag(Flags, Flag, Start, Stop); @@ -873,7 +874,7 @@ bool pkgTagSection::FindFlag(Key key, uint8_t &Flags, return true; return FindFlagInternal(Pos, Flags, Flag); } -bool pkgTagSection::FindFlag(StringView Tag, uint8_t &Flags, +bool pkgTagSection::FindFlag(string_view Tag, uint8_t &Flags, uint8_t const Flag) const { unsigned int Pos; @@ -903,8 +904,8 @@ bool pkgTagSection::FindFlag(uint8_t &Flags, uint8_t const Flag, bool pkgTagSection::FindFlagInternal(unsigned int Pos,unsigned long &Flags, unsigned long Flag) const { - const char *Start; - const char *Stop; + const char *Start = nullptr; + const char *Stop = nullptr; if (FindInternal(Pos,Start,Stop) == false) return true; return FindFlag(Flags, Flag, Start, Stop); @@ -915,7 +916,7 @@ bool pkgTagSection::FindFlag(Key key,unsigned long &Flags, unsigned int Pos; return Find(key, Pos) ? FindFlagInternal(Pos, Flags, Flag) : true; } -bool pkgTagSection::FindFlag(StringView Tag,unsigned long &Flags, +bool pkgTagSection::FindFlag(string_view Tag,unsigned long &Flags, unsigned long Flag) const { unsigned int Pos; @@ -957,34 +958,38 @@ APT_PURE unsigned int pkgTagSection::Count() const { /*{{{*/ } /*}}}*/ // TagSection::Write - Ordered (re)writing of fields /*{{{*/ -pkgTagSection::Tag pkgTagSection::Tag::Remove(std::string const &Name) +pkgTagSection::Tag pkgTagSection::Tag::Remove(std::string_view Name) { return Tag(REMOVE, Name, ""); } -pkgTagSection::Tag pkgTagSection::Tag::Rename(std::string const &OldName, std::string const &NewName) +pkgTagSection::Tag pkgTagSection::Tag::Rename(std::string_view OldName, std::string_view NewName) { return Tag(RENAME, OldName, NewName); } -pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string const &Name, std::string const &Data) +pkgTagSection::Tag pkgTagSection::Tag::Rewrite(std::string_view Name, std::string_view 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) +static bool WriteTag(FileFd &File, std::string Tag, string_view Value, pkgTagSection::WriteFlags flags) { if (Value.empty() || isspace_ascii(Value[0]) != 0) Tag.append(":"); else Tag.append(": "); + + if (flags & pkgTagSection::WRITE_HUMAN) + Tag = color("Show::Field", Tag); + 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::const_iterator &R, - std::vector::const_iterator const &REnd) +static bool RewriteTags(FileFd &File, pkgTagSection const *const This, char const *const Tag, + std::vector::const_iterator &R, + std::vector::const_iterator const &REnd, pkgTagSection::WriteFlags flags) { size_t const TagLen = strlen(Tag); for (; R != REnd; ++R) @@ -998,15 +1003,19 @@ static bool RewriteTags(FileFd &File, pkgTagSection const * const This, char con } 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(); + data = This->FindRaw(R->Name.c_str()); else continue; - return WriteTag(File, Tag, data); + return WriteTag(File, Tag, data, flags); } return true; } bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::vector const &Rewrite) const +{ + return Write(File, WRITE_DEFAULT, Order, Rewrite); +} +bool pkgTagSection::Write(FileFd &File, pkgTagSection::WriteFlags flags, char const *const *const Order, std::vector const &Rewrite) const { // first pass: Write everything we have an order for if (Order != NULL) @@ -1014,7 +1023,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v for (unsigned int I = 0; Order[I] != 0; ++I) { std::vector::const_iterator R = Rewrite.begin(); - if (RewriteTags(File, this, Order[I], R, Rewrite.end()) == false) + if (RewriteTags(File, this, Order[I], R, Rewrite.end(), flags) == false) return false; if (R != Rewrite.end()) continue; @@ -1022,7 +1031,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v if (Exists(Order[I]) == false) continue; - if (WriteTag(File, Order[I], FindRaw(Order[I])) == false) + if (WriteTag(File, Order[I], FindRaw(Order[I]), flags) == false) return false; } } @@ -1047,12 +1056,12 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v std::string const name(fieldname, fieldnamelen); std::vector::const_iterator R = Rewrite.begin(); - if (RewriteTags(File, this, name.c_str(), R, Rewrite.end()) == false) + if (RewriteTags(File, this, name.c_str(), R, Rewrite.end(), flags) == false) return false; if (R != Rewrite.end()) continue; - if (WriteTag(File, name, FindRaw(name)) == false) + if (WriteTag(File, name, FindRaw(name), flags) == false) return false; } } @@ -1076,7 +1085,7 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v continue; } - if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data)) == false) + if (WriteTag(File, name, ((R->Action == Tag::RENAME) ? FindRaw(R->Name) : R->Data), flags) == false) return false; } return true; @@ -1085,4 +1094,4 @@ bool pkgTagSection::Write(FileFd &File, char const * const * const Order, std::v #include "tagfile-order.c" -pkgTagSection::~pkgTagSection() { delete d; } +pkgTagSection::~pkgTagSection() = default; diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 0020d28..23e42e4 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -3,17 +3,17 @@ /* ###################################################################### 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 + by indexing the start of each header field and providing lookup functions for header fields. - + ##################################################################### */ /*}}}*/ #ifndef PKGLIB_TAGFILE_H @@ -25,9 +25,10 @@ #include #include +#include #include +#include #include -#include class FileFd; @@ -47,11 +48,11 @@ class APT_PUBLIC pkgTagSection unsigned int AlphaIndexes[128]; unsigned int BetaIndexes[128]; - pkgTagSectionPrivate * const d; + std::unique_ptr const d; APT_HIDDEN bool FindInternal(unsigned int Pos,const char *&Start, const char *&End) const; - APT_HIDDEN APT::StringView FindInternal(unsigned int Pos) const; - APT_HIDDEN APT::StringView FindRawInternal(unsigned int Pos) const; + APT_HIDDEN std::string_view FindInternal(unsigned int Pos) const; + APT_HIDDEN std::string_view FindRawInternal(unsigned int Pos) const; 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; @@ -67,8 +68,8 @@ class APT_PUBLIC pkgTagSection inline bool operator !=(const pkgTagSection &rhs) {return Section != rhs.Section;}; // TODO: Remove internally - std::string FindS(APT::StringView sv) const { return Find(sv).to_string(); } - std::string FindRawS(APT::StringView sv) const { return FindRaw(sv).to_string(); }; + std::string FindS(std::string_view sv) const { return std::string{Find(sv)}; } + std::string FindRawS(std::string_view sv) const { return std::string{FindRaw(sv)}; }; // Functions for lookup with a perfect hash function enum class Key; @@ -81,23 +82,23 @@ class APT_PUBLIC pkgTagSection bool FindFlag(Key key,uint8_t &Flags, uint8_t const Flag) const; bool FindFlag(Key key,unsigned long &Flags, unsigned long Flag) const; bool Exists(Key key) const; - APT::StringView Find(Key key) const; - APT::StringView FindRaw(Key key) const; + std::string_view Find(Key key) const; + std::string_view FindRaw(Key key) const; #endif - bool Find(APT::StringView Tag,const char *&Start, const char *&End) const; - bool Find(APT::StringView Tag,unsigned int &Pos) const; - APT::StringView Find(APT::StringView Tag) const; - APT::StringView FindRaw(APT::StringView Tag) const; - signed int FindI(APT::StringView Tag,signed long Default = 0) const; - bool FindB(APT::StringView, bool Default = false) const; - unsigned long long FindULL(APT::StringView Tag, unsigned long long const &Default = 0) const; + bool Find(std::string_view Tag,const char *&Start, const char *&End) const; + bool Find(std::string_view Tag,unsigned int &Pos) const; + std::string_view Find(std::string_view Tag) const; + std::string_view FindRaw(std::string_view Tag) const; + signed int FindI(std::string_view Tag,signed long Default = 0) const; + bool FindB(std::string_view, bool Default = false) const; + unsigned long long FindULL(std::string_view Tag, unsigned long long const &Default = 0) const; - bool FindFlag(APT::StringView Tag,uint8_t &Flags, + bool FindFlag(std::string_view Tag,uint8_t &Flags, uint8_t const Flag) const; - bool FindFlag(APT::StringView Tag,unsigned long &Flags, + bool FindFlag(std::string_view Tag,unsigned long &Flags, unsigned long Flag) const; - bool Exists(APT::StringView Tag) const; + bool Exists(std::string_view Tag) const; bool static FindFlag(uint8_t &Flags, uint8_t const Flag, const char* const Start, const char* const Stop); @@ -120,7 +121,7 @@ class APT_PUBLIC pkgTagSection * @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); + [[nodiscard]] bool Scan(const char *Start, unsigned long MaxLength, bool const Restart = true); inline unsigned long size() const {return Stop - Section;}; void Trim(); @@ -150,11 +151,11 @@ class APT_PUBLIC pkgTagSection 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); + static Tag Remove(std::string_view Name); + static Tag Rename(std::string_view OldName, std::string_view NewName); + static Tag Rewrite(std::string_view Name, std::string_view Data); private: - Tag(ActionType const Action, std::string const &Name, std::string const &Data) : + Tag(ActionType const Action, std::string_view Name, std::string_view Data) : Action(Action), Name(Name), Data(Data) {} }; @@ -166,6 +167,14 @@ class APT_PUBLIC pkgTagSection * @return \b true if successful, otherwise \b false */ bool Write(FileFd &File, char const * const * const Order = NULL, std::vector const &Rewrite = std::vector()) const; +#ifdef APT_COMPILING_APT + enum WriteFlags + { + WRITE_DEFAULT = 0, + WRITE_HUMAN = (1 << 0), /* write human readable output, may include highlighting */ + }; + bool Write(FileFd &File, WriteFlags flags, char const *const *const Order = NULL, std::vector const &Rewrite = std::vector()) const; +#endif }; @@ -175,7 +184,7 @@ class APT_PUBLIC pkgTagSection * for comments e.g. needs to be enabled explicitly. */ class APT_PUBLIC pkgTagFile { - pkgTagFilePrivate * const d; + std::unique_ptr const d; APT_HIDDEN bool Fill(); APT_HIDDEN bool Resize(); @@ -193,11 +202,11 @@ class APT_PUBLIC pkgTagFile 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); + void Init(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = APT_BUFFER_SIZE); + void Init(FileFd * const F,unsigned long long const Size = APT_BUFFER_SIZE); - pkgTagFile(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = 32*1024); - pkgTagFile(FileFd * const F,unsigned long long Size = 32*1024); + pkgTagFile(FileFd * const F, pkgTagFile::Flags const Flags, unsigned long long Size = APT_BUFFER_SIZE); + pkgTagFile(FileFd * const F,unsigned long long Size = APT_BUFFER_SIZE); virtual ~pkgTagFile(); }; diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc index f95232a..4a8aafd 100644 --- a/apt-pkg/versionmatch.cc +++ b/apt-pkg/versionmatch.cc @@ -42,7 +42,7 @@ pkgVersionMatch::pkgVersionMatch(string Data,MatchType Type) : Type(Type) return; // Cut up the version representation - if (Type == Version) + if (Type == Version || Type == SourceVersion) { if (Data.end()[-1] == '*') { @@ -143,8 +143,8 @@ bool pkgVersionMatch::MatchVer(const char *A,string B,bool Prefix) 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()) + if (((size_t)(Ae - Ab) != B.length() && Prefix == false) || + (size_t)(Ae - Ab) < B.length()) return false; // Match (leading?) @@ -177,6 +177,14 @@ pkgCache::VerIterator pkgVersionMatch::Find(pkgCache::PkgIterator Pkg) /* */ bool pkgVersionMatch::VersionMatches(pkgCache::VerIterator Ver) { + if (Type == SourceVersion) + { + if (MatchVer(Ver.SourceVerStr(),VerStr,VerPrefixMatch) == true) + return true; + if (ExpressionMatches(VerStr, Ver.SourceVerStr()) == true) + return true; + return false; + } if (Type == Version) { if (MatchVer(Ver.VerStr(),VerStr,VerPrefixMatch) == true) diff --git a/apt-pkg/versionmatch.h b/apt-pkg/versionmatch.h index faf1fd4..283df61 100644 --- a/apt-pkg/versionmatch.h +++ b/apt-pkg/versionmatch.h @@ -13,7 +13,7 @@ Release: a=testing Release: n=squeeze Release: * - Origin: ftp.debian.org + Origin: deb.debian.org Release may be a complex type that can specify matches for any of: Version (v= with prefix) @@ -62,7 +62,7 @@ class APT_PUBLIC pkgVersionMatch public: - enum MatchType {None = 0,Version,Release,Origin} Type; + enum MatchType {None = 0,Version,Release,Origin, SourceVersion} Type; bool MatchVer(const char *A,std::string B,bool Prefix) APT_PURE; static bool ExpressionMatches(const char *pattern, const char *string); diff --git a/apt-pkg/versionscript.in b/apt-pkg/versionscript.in new file mode 100644 index 0000000..c133534 --- /dev/null +++ b/apt-pkg/versionscript.in @@ -0,0 +1,22 @@ +APTPKG_@MAJOR@ +{ +global: + *; +local: + extern "C++" { + std::*; + typeinfo?for?std::*; + vtable?for?std::*; + typeinfo?name?for?std::*; + guard?variable?for?std::*; + void?std::*; + bool?std::*; + *std::__do_uninit_copy*; + typeinfo?for?__gnu_cxx::*; + vtable?for?__gnu_cxx::*; + typeinfo?name?for?__gnu_cxx::*; + guard?variable?for?__gnu_cxx::*; + __gnu_cxx::*; + int?__gnu_cxx::*; + }; +}; diff --git a/apt-private/acqprogress.cc b/apt-private/acqprogress.cc index 1f5acdd..b8b540e 100644 --- a/apt-private/acqprogress.cc +++ b/apt-private/acqprogress.cc @@ -9,6 +9,7 @@ // Include files /*{{{*/ #include +#include #include #include #include @@ -122,39 +123,63 @@ void AcqTextStatus::Fail(pkgAcquire::ItemDesc &Itm) AssignItemID(Itm); clearLastLine(); - bool ShowErrorText = true; + bool ShowErrorText = false; 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; + if (not Itm.Owner->ErrorText.empty()) + { + if (_config->FindB("Acquire::Progress::Ignore::ShowErrorText", false)) + ShowErrorText = true; + else + { + if (auto const ignored = IgnoredErrorTexts.find(Itm.Owner->ID); ignored != IgnoredErrorTexts.end()) + { + if (std::find(ignored->second.begin(), ignored->second.end(), Itm.Owner->ErrorText) == ignored->second.end()) + ignored->second.emplace_back(Itm.Owner->ErrorText); + } + else + IgnoredErrorTexts.emplace(Itm.Owner->ID, std::vector{Itm.Owner->ErrorText}); + } + } } 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()); + ShowErrorText = true; } - if (ShowErrorText) + if (ShowErrorText && not Itm.Owner->ErrorText.empty()) { - 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; + auto const printErrorText = [](std::ostream &out, std::string_view errortext) { + while (not errortext.empty()) + { + auto const line_end = errortext.find_first_of("\n\r"); + out << "\n " << errortext.substr(0, line_end); + if (line_end == std::string_view::npos) + break; + errortext.remove_prefix(line_end); + auto const line_start = errortext.find_first_not_of("\n\r"); + if (line_start == std::string_view::npos) + break; + errortext.remove_prefix(line_start); + } + }; + if (auto const ignored = IgnoredErrorTexts.find(Itm.Owner->ID); ignored != IgnoredErrorTexts.end()) + { + for (auto const &text : ignored->second) + printErrorText(out, text); + if (std::find(ignored->second.begin(), ignored->second.end(), Itm.Owner->ErrorText) == ignored->second.end()) + printErrorText(out, Itm.Owner->ErrorText); } - 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); + else + printErrorText(out, Itm.Owner->ErrorText); } - out << std::endl; + out << '\n' << std::flush; Update = true; } @@ -281,14 +306,14 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) // Draw the current status if (_config->FindB("Apt::Color", false) == true) - out << _config->Find("APT::Color::Yellow"); + out << APT::Configuration::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; + out << APT::Configuration::color("Neutral") << std::flush; LastLineLength = Line.length(); Update = false; diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h index 87b957e..a26047f 100644 --- a/apt-private/acqprogress.h +++ b/apt-private/acqprogress.h @@ -14,6 +14,8 @@ #include #include +#include +#include class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus { @@ -22,22 +24,22 @@ class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus size_t LastLineLength; unsigned long ID; unsigned long Quiet; + std::unordered_map> IgnoredErrorTexts; APT_HIDDEN void clearLastLine(); APT_HIDDEN void AssignItemID(pkgAcquire::ItemDesc &Itm); public: - - virtual bool ReleaseInfoChanges(metaIndex const * const LastRelease, metaIndex const * const CurrentRelease, std::vector &&Changes) APT_OVERRIDE; - 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; + bool ReleaseInfoChanges(metaIndex const *LastRelease, metaIndex const *CurrentRelease, std::vector &&Changes) override; + bool MediaChange(std::string Media, std::string Drive) override; + void IMSHit(pkgAcquire::ItemDesc &Itm) override; + void Fetch(pkgAcquire::ItemDesc &Itm) override; + void Done(pkgAcquire::ItemDesc &Itm) override; + void Fail(pkgAcquire::ItemDesc &Itm) override; + void Start() override; + void Stop() override; + + bool Pulse(pkgAcquire *Owner) override; AcqTextStatus(std::ostream &out, unsigned int &ScreenWidth,unsigned int const Quiet); }; diff --git a/apt-private/private-cachefile.cc b/apt-private/private-cachefile.cc index d46f2ac..96e45be 100644 --- a/apt-private/private-cachefile.cc +++ b/apt-private/private-cachefile.cc @@ -46,7 +46,7 @@ void SortedPackageUniverse::LazyInit() const 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 )); + std::stable_sort(GrpList.begin(), GrpList.end(), [&](auto && l, auto && r) { return SortPackagesByName(Owner, l, r); }); List.reserve(Owner->Head().PackageCount); for (auto G : GrpList) { diff --git a/apt-private/private-cacheset.h b/apt-private/private-cacheset.h index e8dba5a..8878780 100644 --- a/apt-private/private-cacheset.h +++ b/apt-private/private-cacheset.h @@ -68,6 +68,7 @@ class Matcher { public: virtual bool operator () (const pkgCache::PkgIterator &/*P*/) { return true;} + virtual ~Matcher() = default; }; // FIXME: add default argument for OpProgress (or overloaded function) @@ -85,9 +86,9 @@ 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; + pkgCache::VerIterator canNotGetVersion(enum CacheSetHelper::VerSelector select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override; + void canNotFindVersion(enum CacheSetHelper::VerSelector select, APT::VersionContainerInterface *vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override; + pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) override; CacheSetHelperVirtuals(bool const ShowErrors = true, GlobalError::MsgType const &ErrorType = GlobalError::NOTICE); }; @@ -107,20 +108,20 @@ class CacheSetHelperAPTGet : public APT::CacheSetHelper { explicit CacheSetHelperAPTGet(std::ostream &out); - virtual void showPackageSelection(pkgCache::PkgIterator const &Pkg, enum PkgSelector const select, std::string const &pattern) APT_OVERRIDE; + void showPackageSelection(pkgCache::PkgIterator const &Pkg, enum PkgSelector select, std::string const &pattern) override; void showTaskSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern); void showFnmatchSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern); void showRegExSelection(pkgCache::PkgIterator const &Pkg, std::string const &pattern); - void showVersionSelection(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver, enum VerSelector const select, std::string const &pattern) APT_OVERRIDE; + void showVersionSelection(pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver, enum VerSelector select, std::string const &pattern) override; bool showVirtualPackageErrors(pkgCacheFile &Cache); - pkgCache::VerIterator canNotGetVersion(enum VerSelector const select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; - void canNotFindVersion(enum VerSelector const select, APT::VersionContainerInterface * const vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) APT_OVERRIDE; + pkgCache::VerIterator canNotGetVersion(enum VerSelector select, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override; + void canNotFindVersion(enum VerSelector select, APT::VersionContainerInterface *vci, pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) override; pkgCache::VerIterator canNotFindCandidateVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg); pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg); pkgCache::VerIterator canNotFindVersionNumber(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg, std::string const &verstr); pkgCache::VerIterator canNotFindVersionRelease(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg, std::string const &verstr); - virtual pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) APT_OVERRIDE; + pkgCache::PkgIterator canNotFindPkgName(pkgCacheFile &Cache, std::string const &str) override; APT::VersionSet tryVirtualPackage(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg, CacheSetHelper::VerSelector const select); diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index 8cc4c38..e16aa72 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -184,17 +184,19 @@ static bool addArgumentsAPTGet(std::vector &Args, char const 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('V',"verbose-versions", "APT::Get::Show-Versions",0); + addArg(0, "list-columns", "APT::Get::List-Columns", 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, "strict-pinning", "APT::Solver::Strict-Pinning", 0); addArg(0, "planner", "APT::Planner", CommandLine::HasArg); + addArg(0, "comment", "APT::History::Comment", CommandLine::HasArg); addArg('U', "update", "APT::Update", 0); if (CmdMatches("upgrade")) { - _error->Warning(_("Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' may result in incomplete upgrades.")); - addArg(0, "new-pkgs", "APT::Get::Upgrade-Allow-New", + addArg(0, "new-pkgs", "APT::Get::Upgrade-Allow-New", CommandLine::Boolean); } } @@ -230,6 +232,7 @@ static bool addArgumentsAPTGet(std::vector &Args, char const 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, "strict-pinning", "APT::Solver::Strict-Pinning", 0); if (CmdMatches("build-dep")) { addArg(0,"arch-only","APT::Get::Arch-Only",0); @@ -246,10 +249,8 @@ static bool addArgumentsAPTGet(std::vector &Args, char const } else if (CmdMatches("clean", "autoclean", "auto-clean", "distclean", "dist-clean", "check", "download", "changelog") || CmdMatches("markauto", "unmarkauto")) // deprecated commands - ; - else if (CmdMatches("moo")) - addArg(0, "color", "APT::Moo::Color", 0); - + { + } if (CmdMatches("install", "reinstall", "remove", "purge", "upgrade", "dist-upgrade", "dselect-upgrade", "autoremove", "auto-remove", "autopurge", "check", "clean", "autoclean", "auto-clean", "distclean", "dist-clean", @@ -353,11 +354,15 @@ static bool addArgumentsAPT(std::vector &Args, char const * c 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); + addArg('t', "target-release", "APT::Default-Release", CommandLine::HasArg); + addArg('t', "default-release", "APT::Default-Release", CommandLine::HasArg); + addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg); } else if (CmdMatches("show") || CmdMatches("info")) { addArg('a', "all-versions", "APT::Cache::AllVersions", 0); addArg('f', "full", "APT::Cache::ShowFull", 0); + addArg('S', "snapshot", "APT::Snapshot", CommandLine::HasArg); } else if (addArgumentsAPTGet(Args, Cmd) || addArgumentsAPTCache(Args, Cmd)) { @@ -409,7 +414,9 @@ std::vector getCommandArgs(APT_CMD const Program, char const addArg('h', "help", "help", 0); addArg('v', "version", "version", 0); // general options + addArg(0, "color", "APT::Color", 0); addArg('q', "quiet", "quiet", CommandLine::IntLevel); + addArg(0, "audit", "APT::Audit", 0); addArg('q', "silent", "quiet", CommandLine::IntLevel); addArg('c', "config-file", 0, CommandLine::ConfigFile); addArg('o', "option", 0, CommandLine::ArbItem); @@ -480,11 +487,16 @@ static bool ShowCommonHelp(APT_CMD const Binary, CommandLine &CmdL, std::vector< /*}}}*/ static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/ { - std::string const binary = flNotDir(Binary); + auto const binary = flNotDir(Binary); + if (binary == "apt-cdrom" || binary == "apt-config") + { + _config->CndSet("Binary::apt-cdrom::APT::Internal::OpProgress::EraseLines", false); + } if (binary == "apt" || binary == "apt-config") { - if (getenv("NO_COLOR") == nullptr) - _config->CndSet("Binary::apt::APT::Color", true); + if (getenv("NO_COLOR") == nullptr && getenv("APT_NO_COLOR") == nullptr) + _config->CndSet("Binary::apt::APT::Color", true); + _config->CndSet("Binary::apt::APT::Output-Version", 30); _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); @@ -497,6 +509,7 @@ static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/ _config->CndSet("Binary::apt::APT::Keep-Downloaded-Packages", false); _config->CndSet("Binary::apt::APT::Get::Update::InteractiveReleaseInfoChanges", true); _config->CndSet("Binary::apt::APT::Cmd::Pattern-Only", true); + _config->CndSet("Binary::apt::Pager", true); if (isatty(STDIN_FILENO)) _config->CndSet("Binary::apt::Dpkg::Lock::Timeout", -1); @@ -509,7 +522,7 @@ static void BinarySpecificConfiguration(char const * const Binary) /*{{{*/ /*}}}*/ static void BinaryCommandSpecificConfiguration(char const * const Binary, char const * const Cmd)/*{{{*/ { - std::string const binary = flNotDir(Binary); + auto const binary = flNotDir(Binary); if ((binary == "apt" || binary == "apt-get") && CmdMatches("upgrade", "dist-upgrade", "full-upgrade")) { //FIXME: the option is documented to apply only for install/remove, so @@ -575,6 +588,12 @@ std::vector ParseCommandLine(CommandLine &CmdL, APT_CMD c _error->Warning(_("--force-yes is deprecated, use one of the options starting with --allow instead.")); } + if (not _config->FindB("APT::Solver::Strict-Pinning", true) && _config->Find("APT::Solver", "internal") == "internal") + { + _config->Set("APT::Solver", "3.0"); + _error->Notice("Automatically enabled --solver 3.0 for --no-strict-pinning"); + } + // 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)) @@ -597,11 +616,13 @@ unsigned short DispatchCommandLine(CommandLine &CmdL, std::vectorPendingError(); - if (_config->FindI("quiet",0) > 0) + if (_config->FindB("APT::Audit")) + _error->DumpErrors(GlobalError::AUDIT); + else if (_config->FindI("quiet",0) > 0) _error->DumpErrors(); else - _error->DumpErrors(GlobalError::DEBUG); - if (returned == false) + _error->DumpErrors(GlobalError::NOTICE); + if (returned == false || std::cout.bad() || std::cerr.bad() || std::clog.bad()) return 100; return Errors == true ? 100 : 0; } diff --git a/apt-private/private-download.cc b/apt-private/private-download.cc index 3f473b8..e3d4252 100644 --- a/apt-private/private-download.cc +++ b/apt-private/private-download.cc @@ -197,7 +197,8 @@ bool DoDownload(CommandLine &CmdL) pkgAcquire::Item *I = new pkgAcqArchive(&Fetcher, SrcList, &Recs, *Ver, storefile[i]); if (storefile[i].empty()) continue; - std::string const filename = cwd + flNotDir(storefile[i]); + auto filename = cwd; + filename += flNotDir(storefile[i]); storefile[i].assign(filename); I->DestFile.assign(filename); } @@ -357,7 +358,7 @@ bool DoDistClean(CommandLine &) class LogCleaner : public pkgArchiveCleaner { protected: - virtual void Erase(int const dirfd, char const * const File, std::string const &Pkg, std::string const &Ver,struct stat const &St) APT_OVERRIDE + void Erase(int const dirfd, char const * const File, std::string const &Pkg, std::string const &Ver,struct stat const &St) override { c1out << "Del " << Pkg << " " << Ver << " [" << SizeToStr(St.st_size) << "B]" << std::endl; diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index aba12f4..c619aa4 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -27,7 +28,10 @@ #include #include #include +#include #include +#include +#include #include #include @@ -42,7 +46,7 @@ /*}}}*/ class pkgSourceList; -bool CheckNothingBroken(CacheFile &Cache) /*{{{*/ +static bool CheckNothingBroken(std::ostream &out, CacheFile &Cache) /*{{{*/ { // Now we check the state of the packages, if (Cache->BrokenCount() == 0) @@ -52,11 +56,11 @@ bool CheckNothingBroken(CacheFile &Cache) /*{{{*/ if (_error->PendingError() && _config->Find("APT::Solver") == "dump") return false; - c1out << - _("Some packages could not be installed. This may mean that you have\n" + out << _("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; + "or been moved out of Incoming.") + << std::endl; /* if (Packages == 1) { @@ -68,15 +72,82 @@ bool CheckNothingBroken(CacheFile &Cache) /*{{{*/ } */ - c1out << _("The following information may help to resolve the situation:") << std::endl; - c1out << std::endl; - ShowBroken(c1out,Cache,false); + out << _("The following information may help to resolve the situation:") << std::endl; + out << std::endl; + ShowBroken(out, Cache, false); if (_error->PendingError() == true) return false; else return _error->Error(_("Broken packages")); +} +bool CheckNothingBroken(CacheFile &Cache) +{ + return CheckNothingBroken(c1out, Cache); } /*}}}*/ +// WriteApportReport - Write an apport bug report /*{{{*/ +// --------------------------------------------------------------------- +static void WriteApportReport(pkgCacheFile &Cache, std::string &title, std::vector const &errors, int mode, bool distUpgrade) +{ + auto dumpfile = flCombine(_config->FindDir("Dir::Log"), "edsp.log.zst"); + auto crashfile = flCombine(_config->FindDir("Dir::Apport", "/var/crash"), "apt-edsp." + std::to_string(getuid()) + ".crash"); + auto apt = Cache->FindPkg("apt"); + if (access(flNotFile(dumpfile).c_str(), W_OK) != 0 || access(flNotFile(crashfile).c_str(), W_OK) != 0) + return; + OpTextProgress Progress(*_config); + Progress.OverallProgress(0, 100, 50, _("Writing error report")); + FileFd edspDump(dumpfile, + FileFd::Exclusive | FileFd::Create | FileFd::WriteOnly | FileFd::BufferedWrite, + FileFd::Extension); + int edspFlags = 0; + if (mode || distUpgrade) + edspFlags |= EDSP::Request::UPGRADE_ALL; + if (mode & APT::Upgrade::FORBID_REMOVE_PACKAGES) + edspFlags |= EDSP::Request::FORBID_REMOVE; + if (mode & APT::Upgrade::FORBID_INSTALL_NEW_PACKAGES) + edspFlags |= EDSP::Request::FORBID_NEW_INSTALL; + + EDSP::WriteRequest(Cache, edspDump, edspFlags, &Progress); + EDSP::WriteLimitedScenario(Cache, edspDump, &Progress); + edspDump.Close(); + + Progress.OverallProgress(50, 100, 50, _("Writing error report")); + + std::ofstream crash(crashfile, std::ios::out | std::ios::trunc); + chmod(crashfile.c_str(), 0600); + time_t now = time(NULL); + char ctime_buf[26]; // need at least 26 bytes according to ctime(3) + crash << "ProblemType: AptSolver\n" + << "Architecture: " << _config->Find("APT::Architecture") << "\n" + << "Date: " << ctime_r(&now, ctime_buf) + << "Package: apt " << (apt.end() || apt.CurrentVer().end() ? "" : apt.CurrentVer().VerStr()) << "\n" + << "Title: " << title << "\n" + << "SourcePackage: apt\n"; + + if (not errors.empty()) + { + crash << "ErrorMessage:\n"; + for (auto &error : errors) + { + crash << " " << SubstVar(SubstVar(APT::String::Strip(error), "\n\n", "\n.\n"), "\n", "\n ") << "\n"; + } + } + + std::ifstream toCopy(edspDump.Name()); + std::ostringstream readStream; + readStream << toCopy.rdbuf(); + const auto base64 = Base64Encode(readStream.str()); + if (not base64.empty()) + { + crash << "AptSolverDump:\n"; + // Print the base64, with line wrapping, indented by one space; substr(i, 76) + // returns at most 76 characters or as many as are left. + for (size_t i=0; i < base64.size(); i += 76) + crash << " " << std::string_view{base64}.substr(i, 76) << "\n"; + } + crash.close(); +} + // InstallPackages - Actually download and install the packages /*{{{*/ // --------------------------------------------------------------------- /* This displays the informative messages describing what is going to @@ -139,8 +210,10 @@ struct WarnUsrMerge { } }; #endif +static void ShowWeakDependencies(CacheFile &Cache); bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, bool ShwKept, bool Ask, bool Safety, std::string const &Hook, CommandLine const &CmdL) { + auto outVer = _config->FindI("APT::Output-Version"); #ifdef REQUIRE_MERGED_USR WarnUsrMerge warnUsrMerge(Cache); #endif @@ -203,38 +276,46 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo std::swap(NewHeldBackPackages, HeldBackPackages); } else - return _error->Error(_("Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?")); + return _error->Error(_("Unable to fetch some archives, maybe run apt update or try with --fix-missing?")); } Fetcher.Shutdown(); if (_error->PendingError() == true) return false; } - APT::PackageVector PhasingPackages; - APT::PackageVector NotPhasingHeldBackPackages; - for (auto const &Pkg : HeldBackPackages) - { - if (Cache->PhasingApplied(Pkg)) - PhasingPackages.push_back(Pkg); - else - NotPhasingHeldBackPackages.push_back(Pkg); - } - // Show all the various warning indicators - ShowDel(c1out,Cache); + if (_config->FindI("APT::Output-Version") < 30) + ShowDel(c1out,Cache); + if (_config->FindI("APT::Output-Version") >= 30 && _config->FindB("APT::Get::Show-Upgraded",true) == true) + ShowUpgraded(c1out,Cache); ShowNew(c1out,Cache); + if (_config->FindI("APT::Output-Version") >= 30) + ShowWeakDependencies(Cache); if (ShwKept == true) { + APT::PackageVector PhasingPackages; + APT::PackageVector NotPhasingHeldBackPackages; + for (auto const &Pkg : HeldBackPackages) + { + if (Cache->PhasingApplied(Pkg)) + PhasingPackages.push_back(Pkg); + else + NotPhasingHeldBackPackages.push_back(Pkg); + } + ShowPhasing(c1out, Cache, PhasingPackages); ShowKept(c1out, Cache, NotPhasingHeldBackPackages); if (not PhasingPackages.empty() && not NotPhasingHeldBackPackages.empty()) _error->Notice("Some packages may have been kept back due to phasing."); } bool const Hold = not ShowHold(c1out,Cache); - if (_config->FindB("APT::Get::Show-Upgraded",true) == true) + if (_config->FindI("APT::Output-Version") < 30 && _config->FindB("APT::Get::Show-Upgraded",true) == true) ShowUpgraded(c1out,Cache); bool const Downgrade = !ShowDowngraded(c1out,Cache); + // Show removed packages last + if (_config->FindI("APT::Output-Version") >= 30) + ShowDel(c1out,Cache); bool Essential = false; if (_config->FindB("APT::Get::Download-Only",false) == false) Essential = !ShowEssential(c1out,Cache); @@ -312,27 +393,88 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo 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"), + ioprintf(c1out,outVer < 30 ? _("Need to get %sB/%sB of archives.\n") : _(" Download size: %sB / %sB\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"), + ioprintf(c1out,outVer < 30 ? _("Need to get %sB of archives.\n") : _(" Download size: %sB\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()); + if (outVer < 30) + ioprintf(c1out, _("After this operation, %sB of additional disk space will be used.\n"), + SizeToStr(Cache->UsrSize()).c_str()); + else + { + struct statvfs st; + if (statvfs(_config->FindDir("Dir::Usr").c_str(), &st) == 0) + { + struct statvfs st_boot; + unsigned long long BootSize = 0; + unsigned long long InitrdSize = 0; + if (statvfs(_config->FindDir("Dir::Boot").c_str(), &st_boot) == 0 && st_boot.f_fsid != st.f_fsid) + BootSize = Cache->BootSize(false); + else + InitrdSize = Cache->BootSize(true); /* initrd only, adding to /usr space */ + + ioprintf(c1out, " "); + // 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, _("Space needed: %sB / %sB available\n"), + SizeToStr(Cache->UsrSize() + InitrdSize).c_str(), SizeToStr((st.f_bsize * st.f_bavail)).c_str()); + + if (Cache->UsrSize() > 0 && static_cast(Cache->UsrSize()) > (st.f_bsize * st.f_bavail)) + { + // 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 + _error->Warning(_("More space needed than available: %sB > %sB, installation may fail"), + SizeToStr(Cache->UsrSize()).c_str(), + SizeToStr((st.f_bsize * st.f_bavail)).c_str()); + } + if (BootSize != 0) + { + bool Unicode = strcmp(nl_langinfo(CODESET), "UTF-8") == 0; + ioprintf(c1out, Unicode ? " └─ " : " - "); + // 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 - + // The first %s is the location of the boot directory (determined from Dir::Boot), + // and it tells the space being needed there. + // (We have two spaces to align with parent "space needed:"for /boot) + ioprintf(c1out, _("in %s: %sB / %sB available\n"), + _config->FindFile("Dir::Boot").c_str(), SizeToStr(BootSize).c_str(), SizeToStr((st_boot.f_bsize * st_boot.f_bavail)).c_str()); + if (BootSize > (st_boot.f_bsize * st_boot.f_bavail)) + // 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 + // The first %s is the location of the boot directory (determined from Dir::Boot) + _error->Warning(_("More space needed in %s than available: %sB > %sB, installation may fail"), + _config->FindFile("Dir::Boot").c_str(), + SizeToStr(BootSize).c_str(), + SizeToStr((st_boot.f_bsize * st_boot.f_bavail)).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, " "); + ioprintf(c1out, _("Space needed: %sB\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"), + ioprintf(c1out,outVer < 30 ? _("After this operation, %sB disk space will be freed.\n") : _(" Freed space: %sB\n"), SizeToStr(-1*Cache->UsrSize()).c_str()); + if (outVer >= 30) + ioprintf(c1out,"\n"); if (DownloadAllowed) if (CheckFreeSpaceBeforeDownload(_config->FindDir("Dir::Cache::Archives"), (FetchBytes - FetchPBytes)) == false) return false; @@ -368,65 +510,12 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo if (_config->FindI("quiet",0) < 2 && _config->FindB("APT::Get::Assume-Yes",false) == false) { - std::vector dangerousPackages; - if (_config->FindB("APT::Get::AutomaticRemove", false)) - { - // Define the list of dangerous package name prefixes - const char* dangerousPrefixes[] = { - "deepin-", "dde-", "linux-headers-", "linux-image-", - "systemd", "xserver-", "nvidia-", "mesa-" - }; - const size_t prefixCount = sizeof(dangerousPrefixes) / sizeof(dangerousPrefixes[0]); - - for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); !Pkg.end(); ++Pkg) - { - if (!Cache[Pkg].Delete()) - continue; // Only check packages marked for deletion - - const char* pkgName = Pkg.Name(); - for (size_t i = 0; i < prefixCount; ++i) - { - // Check if the package name prefix matches the dangerous list - if (strncmp(pkgName, dangerousPrefixes[i], strlen(dangerousPrefixes[i])) == 0) - { - dangerousPackages.push_back(pkgName); - break; - } - } - } - } - - if (!dangerousPackages.empty()) - { - std::string text = _("The current uninstallation operation involves system-critical packages. Continuing may cause system instability."); - text += "\n"; - text += _("The following are critical system packages:"); - text += "\n"; - - for (const auto& pkg : dangerousPackages) { - text += " • "; - text += pkg; - text += "\n"; - } - - text += _("Do you want to continue?"); - - std::string formattedPrompt = "\033[31m"; - formattedPrompt += text; - formattedPrompt += "\033[0m"; - if (YnPrompt(formattedPrompt.c_str()) == false) - { - c2out << _("Abort.") << std::endl; - exit(1); - } - } - else - { - if (YnPrompt(_("Do you want to continue?")) == false) - { - c2out << _("Abort.") << std::endl; - exit(1); - } + // YnPrompt shows all warnings before prompting, so ask stronger and default to N if we have any. + auto Default = outVer < 30 ? true : _error->empty(); + if (not YnPrompt(outVer < 30 ? _("Do you want to continue?") : (Default ? _("Continue?") : _("Continue anyway?")), Default)) + { + c2out << _("Abort.") << std::endl; + exit(1); } } } @@ -457,7 +546,7 @@ bool InstallPackages(CacheFile &Cache, APT::PackageVector &HeldBackPackages, boo } 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?")); + return _error->Error(_("Unable to fetch some archives, maybe run apt update or try with --fix-missing?")); if (Transient == true && Failed == true) return _error->Error(_("--fix-missing and media swapping is not currently supported")); @@ -600,12 +689,14 @@ bool DoAutomaticRemove(CacheFile &Cache) 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) + auto const PkgCand = Cache[Pkg].CandidateVerIter(Cache); + if (unlikely(PkgCand.end())) + continue; + std::vector> too; + too.emplace_back(*Pkg, PkgCand.VerStr()); + for (pkgCache::PrvIterator Prv = PkgCand.ProvidesList(); not Prv.end(); ++Prv) + too.emplace_back(Prv.ParentPkg(), Prv.ProvideVersion()); + for (auto const &[P, PVerStr] : too) { for (pkgCache::DepIterator R = P.RevDependsList(); R.end() == false; ++R) @@ -630,6 +721,29 @@ bool DoAutomaticRemove(CacheFile &Cache) } else // ignore dependency from a non-candidate version continue; + if (R->Version != 0) + { + if (not Cache->VS().CheckDep(PVerStr, R->CompareOp, R.TargetVer())) + continue; + } + // ignore new providers if we have installed providers + if (Pkg->CurrentVer == 0) + { + std::unique_ptr VList(R.AllTargets()); + bool has_installed_alt_prov = false; + for (pkgCache::Version **V = VList.get(); *V != 0; ++V) + { + pkgCache::VerIterator Ver(Cache, *V); + auto const P = Ver.ParentPkg(); + if (not P.end() && P->CurrentVer != 0 && Cache[P].InstallVer == *V) + { + has_installed_alt_prov = true; + break; + } + } + if (has_installed_alt_prov) + 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); @@ -664,6 +778,16 @@ bool DoAutomaticRemove(CacheFile &Cache) // if we don't remove them, we should show them! if (doAutoRemove == false && autoRemoveCount != 0) { + std::string note; + 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; + } + strprintf(note, P_("Use '%s' to remove it.", "Use '%s' to remove them.", autoRemoveCount), autocmd.c_str()); if (smallList == false) { // trigger marking now so that the package list is correct @@ -673,21 +797,14 @@ bool DoAutomaticRemove(CacheFile &Cache) "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)); + &PrettyFullName, CurrentVersion(&Cache), "", note); } 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; + c1out << note << std::endl; } - ioprintf(c1out, P_("Use '%s' to remove it.", "Use '%s' to remove them.", autoRemoveCount), autocmd.c_str()); - c1out << std::endl; } return true; } @@ -787,85 +904,176 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vectorFindB("APT::Get::AutoSolving", true) == true) - { - InstallAction.propagateReleaseCandidateSwitching(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; - - if (distUpgradeMode && _config->Find("Binary") == "apt") - _config->CndSet("APT::Get::AutomaticRemove::Kernels", _config->FindB("APT::Get::AutomaticRemove", true)); - - 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); - - SortedPackageUniverse Universe(Cache); - for (auto const &Pkg: Universe) - if (Pkg->CurrentVer != 0 && not Cache[Pkg].Upgrade() && not Cache[Pkg].Delete() && - UpgradablePackages.find(Pkg) != UpgradablePackages.end()) - HeldBackPackages.push_back(Pkg); - - return true; + bool const distUpgradeMode = strcmp(CmdL.FileList[0], "dist-upgrade") == 0 || strcmp(CmdL.FileList[0], "full-upgrade") == 0; + + { + 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); + } + + { + APT::CacheSetHelper helper; + helper.PackageFrom(APT::CacheSetHelper::PATTERN, &UpgradablePackages, Cache, "?upgradable"); + } + + // Record the state before we call the solver. + pkgDepCache::Transaction transaction(Cache, pkgDepCache::Transaction::Behavior::COMMIT); + auto runTheSolver = [&](std::ostream &out) -> bool + { + if (Fix != NULL && _config->FindB("APT::Get::AutoSolving", true) == true) + { + InstallAction.propagateReleaseCandidateSwitching(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) + { + out << _("You might want to run 'apt --fix-broken install' to correct these.") << std::endl; + ShowBroken(out, 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); + + if (distUpgradeMode && _config->Find("Binary") == "apt") + _config->CndSet("APT::Get::AutomaticRemove::Kernels", _config->FindB("APT::Get::AutomaticRemove", true)); + + 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(out, Cache) == false) + return false; + + return true; + }; + + std::ostringstream out; + _error->PushToStack(); + auto res = runTheSolver(out); + + // 3.0 solver is a bit more strict and applies the rules to user provided arguments as well, so if you provide + // a removal request, but don't allow removals, it fails; or if you install something conflicting with an installed + // package during an `upgrade` run, that's the same problem. So if an upgrade restriction is set and we have + // arguments specified, don't try solver3. + auto invalidCombinations = UpgradeMode && (not verset[MOD_REMOVE].empty() || not verset[MOD_INSTALL].empty()); + // Fallback to 3.0 if we don't get a result or apport is installed + if (not invalidCombinations && _config->Find("APT::Solver", "internal") == "internal" && (not res || (not Cache->FindPkg("apport").end() && Cache->FindPkg("apport")->CurrentVer))) + { + bool isUpgrade = distUpgradeMode || UpgradeMode != APT::Upgrade::ALLOW_EVERYTHING; + auto internalBroken = Cache->BrokenCount(); + auto internalDel = Cache->DelCount(); + auto internalInst = Cache->InstCount(); + auto internalUpgrade = Cache->UpgradeCount(); + + // Create a nested transaction. When leaving this scope, we are back to the 'internal' result. + pkgDepCache::Transaction solver3(Cache, pkgDepCache::Transaction::Behavior::ROLLBACK); + transaction.temporaryRollback(); // Rollback to before internal solver made changes + + std::vector errors; + _error->PushToStack(); + _config->Set("APT::Solver", "3.0"); + _config->CndSet("APT::Solver::RemoveManual", "true"); // otherwise we are always "worse" + std::ofstream solver3out; // empty out stream... + bool solver3Res = runTheSolver(solver3out); + + std::string str; + while (not _error->empty()) + if (_error->PopMessage(str)) + errors.push_back(str); + _config->Set("APT::Solver", "internal"); + _error->RevertToStack(); + + // Cost factors to compare two solutions + auto solver3Cost = std::make_tuple(Cache->DelCount(), isUpgrade ? -Cache->UpgradeCount() : 0, Cache->InstCount() - Cache->UpgradeCount(), Cache->UpgradeCount()); + auto internalCost = std::make_tuple(internalDel, isUpgrade ? -internalUpgrade : 0, internalInst - internalUpgrade, internalUpgrade); + + // An error summary for apport. + std::string error; + if (solver3Res && Cache->BrokenCount()) + { + error = "Internal error: The 3.0 solver produced a broken cache"; + } + else if (not solver3Res || Cache->BrokenCount() || not errors.empty()) + { + if (res && not internalBroken) + error = "Failure: The 3.0 solver did not find a result"; + } + else if (not res) + { + // Commit the changes from the 3.0 solver. This in turn commits the 3.0 transaction into the internal + // transaction which sounds a bit awkward, but that's the way it goes: commit() is just delete the + // transaction stage so it can't rollback. + _error->Discard(); + _error->Audit(_("Result calculated by the 3.0 solver.")); + solver3.commit(); + res = true; + } + else if (solver3Cost > internalCost) + { + error = "Failure: The 3.0 solver produced a worse result"; + } + + if (res && not error.empty() && not Cache->FindPkg("apport").end() && Cache->FindPkg("apport")->CurrentVer) + { + pkgDepCache::Transaction dumpTransaction(Cache, pkgDepCache::Transaction::Behavior::ROLLBACK); + transaction.temporaryRollback(); // Rollback to before internal solver made changes so we can dump the OG request + WriteApportReport(Cache, error, errors, UpgradeMode, distUpgradeMode); + } + + if (not res && not errors.empty() && not _config->FindB("quiet::NoSolver3Explanation", false)) + _error->Error("The following information from --solver 3.0 may provide additional context:\n%s", APT::String::Join(errors, "\n").c_str()); + } + // If the 3.0 solver could not recover either, abort. + _error->MergeWithStack(); + if (not res) + { + c1out << out.str() << std::flush; + 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); + + SortedPackageUniverse Universe(Cache); + for (auto const &Pkg : Universe) + if (Pkg->CurrentVer != 0 && not Cache[Pkg].Upgrade() && not Cache[Pkg].Delete() && + UpgradablePackages.find(Pkg) != UpgradablePackages.end()) + HeldBackPackages.push_back(Pkg); + + return true; } /*}}}*/ bool AddVolatileSourceFile(pkgSourceList *const SL, PseudoPkg &&pkg, std::vector &VolatileCmdL)/*{{{*/ @@ -937,7 +1145,7 @@ std::vector GetAllPackagesAsPseudo(pkgSourceList *const SL, CommandLi std::vector GetPseudoPackages(pkgSourceList *const SL, CommandLine &CmdL, bool (*Add)(pkgSourceList *const, PseudoPkg &&, std::vector &), std::string const &pseudoArch)/*{{{*/ { std::vector VolatileCmdL; - std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const *const I) { + (void)std::remove_if(CmdL.FileList + 1, CmdL.FileList + 1 + CmdL.FileSize(), [&](char const *const I) { return AddIfVolatile(SL, VolatileCmdL, Add, I, pseudoArch); }); return VolatileCmdL; @@ -958,6 +1166,99 @@ struct PkgIsExtraInstalled { return std::find(verset->begin(), verset->end(), Cand) == verset->end(); } }; +/* Print out a list of suggested and recommended packages */ +static void ShowWeakDependencies(CacheFile &Cache) +{ + std::list Recommends, Suggests, SingleRecommends, SingleSuggests; + SortedPackageUniverse Universe(Cache); + for (auto const &Pkg: Universe) + { + /* Just look at the ones we want to install */ + if ((*Cache)[Pkg].NewInstall() == 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 &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 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 &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); +} + bool DoInstall(CommandLine &CmdL) { CacheFile Cache; @@ -988,101 +1289,14 @@ bool DoInstall(CommandLine &CmdL) /* 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()) + if (_config->FindI("APT::Output-Version") < 30 && Cache->InstCount() != verset[MOD_INSTALL].size()) ShowList(c1out, _("The following additional packages will be installed:"), Universe, PkgIsExtraInstalled(&Cache, &verset[MOD_INSTALL]), - &PrettyFullName, CandidateVersion(&Cache)); + &PrettyFullName, CandidateVersion(&Cache), "action::install-dependencies"); /* Print out a list of suggested and recommended packages */ - { - std::list 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 &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 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 &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); - } + if (_config->FindI("APT::Output-Version") < 30) + ShowWeakDependencies(Cache); RunJsonHook("AptCli::Hooks::Install", "org.debian.apt.hooks.install.pre-prompt", CmdL.FileList, Cache); diff --git a/apt-private/private-json-hooks.cc b/apt-private/private-json-hooks.cc index 5818518..6169488 100644 --- a/apt-private/private-json-hooks.cc +++ b/apt-private/private-json-hooks.cc @@ -350,11 +350,43 @@ static void NotifyHook(std::ostream &os, std::string const &method, const char * jsonWriter.endObject(); // main } +static JsonWriter &BuildOptionsArray(JsonWriter &writer) +{ + const Configuration::Item *Top = _config->Tree(nullptr); + if (Top == 0) + return writer.beginArray().endArray(); + + writer.beginArray(); + do + { + if (not Top->Value.empty()) + writer.beginObject().name("name").value(Top->FullTag()).name("value").value(Top->Value).endObject(); + if (Top->Child != 0) + { + Top = Top->Child; + continue; + } + + while (Top != 0 && Top->Next == 0) + Top = Top->Parent; + if (Top != 0) + Top = Top->Next; + + } while (Top != 0); + + writer.endArray(); + + return writer; +} + /// @brief Build the hello handshake message for 0.1 protocol static std::string BuildHelloMessage() { std::stringstream Hello; - JsonWriter(Hello).beginObject().name("jsonrpc").value("2.0").name("method").value("org.debian.apt.hooks.hello").name("id").value(0).name("params").beginObject().name("versions").beginArray().value("0.1").value("0.2").endArray().endObject().endObject(); + auto writer = JsonWriter(Hello).beginObject().name("jsonrpc").value("2.0").name("method").value("org.debian.apt.hooks.hello").name("id").value(0).name("params").beginObject().name("versions").beginArray().value("0.1").value("0.2").endArray().name("options"); + + BuildOptionsArray(writer); + writer.endObject().endObject(); return Hello.str(); } diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc index eee657c..c5589af 100644 --- a/apt-private/private-list.cc +++ b/apt-private/private-list.cc @@ -63,12 +63,12 @@ class PackageNameMatcher : public Matcher filters.push_back(cachefilter); } } - virtual ~PackageNameMatcher() + ~PackageNameMatcher() override { for(J=filters.begin(); J != filters.end(); ++J) delete *J; } - virtual bool operator () (const pkgCache::PkgIterator &P) APT_OVERRIDE + bool operator()(const pkgCache::PkgIterator &P) override { for(J=filters.begin(); J != filters.end(); ++J) { @@ -131,6 +131,10 @@ bool DoList(CommandLine &Cmd) GetLocalitySortedVersionSet(CacheFile, &bag, matcher, &progress); bool const ShowAllVersions = _config->FindB("APT::Cmd::All-Versions", false); std::map output_map; + + if (not InitOutputPager()) + return false; + for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); ++V) { std::stringstream outs; diff --git a/apt-private/private-main.cc b/apt-private/private-main.cc index a80f03c..7b4f05a 100644 --- a/apt-private/private-main.cc +++ b/apt-private/private-main.cc @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -68,6 +69,8 @@ void CheckIfSimulateMode(CommandLine &CmdL) /*{{{*/ " 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()); + if (_config->FindI("APT::Output-Version") >= 30) + std::cout << std::endl; _config->Set("Debug::NoLocking",true); } } @@ -76,9 +79,11 @@ 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) + if (not IsStdoutAtty() && + _config->FindB("Apt::Cmd::Disable-Script-Warning", false) == false) { + // NOTE: CLI interface is redundant on the I/interface, this is + // intentional to make it easier to read. std::cerr << std::endl << "WARNING: " << flNotDir(argv[0]) << " " << "does not have a stable CLI interface. " diff --git a/apt-private/private-moo.cc b/apt-private/private-moo.cc index 2a9ed93..5eb6db5 100644 --- a/apt-private/private-moo.cc +++ b/apt-private/private-moo.cc @@ -96,7 +96,7 @@ static bool DoMoo2(time_t const timenow) /*{{{*/ return printMooLine(timenow); std::string const moo = getMooLine(timenow); size_t const depth = moo.length()/4; - if (_config->FindB("APT::Moo::Color", false) == false) + if (_config->FindB("APT::Color", false) == false) c1out << OutputInDepth(depth, " ") << " (__) \n" << OutputInDepth(depth, " ") << " _______~(..)~ \n" << diff --git a/apt-private/private-output.cc b/apt-private/private-output.cc index 93b9424..a1105be 100644 --- a/apt-private/private-output.cc +++ b/apt-private/private-output.cc @@ -1,10 +1,12 @@ // Include files /*{{{*/ #include +#include #include #include #include #include +#include #include #include #include @@ -17,11 +19,14 @@ #include #include #include +#include #include #include #include #include #include +#include +#include #include #include @@ -30,6 +35,7 @@ /*}}}*/ using namespace std; +using APT::Configuration::color; std::ostream c0out(0); std::ostream c1out(0); @@ -38,6 +44,14 @@ std::ofstream devnull("/dev/null"); unsigned int ScreenWidth = 80 - 1; /* - 1 for the cursor */ +static pid_t Pager = -1; +static constexpr std::array PagerSignalsToHandle = { + SIGINT, + SIGHUP, + SIGTERM, + SIGQUIT, + SIGPIPE, +}; // SigWinch - Window size change signal handler /*{{{*/ // --------------------------------------------------------------------- @@ -53,9 +67,174 @@ static void SigWinch(int) #endif } /*}}}*/ + +bool IsStdoutAtty() +{ + static bool is = isatty(STDOUT_FILENO); + return is; +} + +static void WaitPager() +{ + if (Pager != -1) + { + c0out.flush(); + c1out.flush(); + c2out.flush(); + std::cerr.flush(); + std::cout.flush(); + fflush(stdout); + fflush(stderr); + close(STDOUT_FILENO); + close(STDERR_FILENO); + waitpid(Pager, nullptr, 0); + Pager = -1; + } +} + +static void SignalPager(int signo) +{ + if (Pager != -1) + { + // We can't flush from inside the signal handler. + close(STDOUT_FILENO); + close(STDERR_FILENO); + waitpid(Pager, nullptr, 0); + Pager = -1; + for (auto signalToHandle : PagerSignalsToHandle) + signal(signalToHandle, SIG_DFL); + raise(signo); + } +} + +static std::string DeterminePager() +{ + if (not IsStdoutAtty() || not _config->FindB("Pager", false)) + return ""; + if (auto pager = getenv("APT_PAGER"); pager) + return pager; + if (auto pager = getenv("PAGER"); pager) + return pager; + return DEFAULT_PAGER; +} + +bool InitOutputPager() +{ + // InitOutputPager() behaves like a singleton, do not run twice- + static bool alreadyRan = false; + if (alreadyRan) + return true; + alreadyRan = true; + + auto pager = DeterminePager(); + if (pager.empty() || pager == "cat") + return true; + + auto pagerEnv = VectorizeString(PAGER_ENV, '\n'); + + int pipefds[2] = {-1, -1}; + int notifyPipe[2] = {-1, -1}; + + DEFER([&] () { + close(pipefds[0]); + close(pipefds[1]); + close(notifyPipe[0]); + close(notifyPipe[1]); + }); + + if (pipe(pipefds) || pipe(notifyPipe)) + return _error->Errno("pipe", "Failed to setup pipe"); + + Pager = ExecFork(); + if (Pager < 0) + return _error->Errno("fork", "Failed to fork"); + if (Pager == 0) + { + // Child process + if (dup2(pipefds[0], STDIN_FILENO) == -1) + goto err; + if (dup2(STDOUT_FILENO, STDERR_FILENO) == -1) + goto err; + + for (int sig = 1; sig < NSIG; sig++) + signal(sig, SIG_DFL); + + for (auto &v: pagerEnv) + { + // WARNING: VectorizeString() is not thread-safe, do not call after creating a thread. + auto keyAndValue = VectorizeString(v, '='); + if (keyAndValue.size() != 2) + { + _error->Fatal("Invalid environment string: %s", v.c_str()); + goto err; + } + // NOTE: Must not override user values, so setenv(..., override=0) is used rather than putenv() + setenv(keyAndValue[0].c_str(), keyAndValue[1].c_str(), 0); + } + + { + // If our pager name contains a space we need to invoke it in a shell. Boooo! + char *cmd[] = {(char*)"/bin/sh", (char*)"-c", pager.data(), nullptr}; + constexpr std::string_view allowed_chars{"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" "+-._=/"}; + static_assert(allowed_chars.size() == 26 + 26 + 10 + 6); + if (pager.find_first_not_of(allowed_chars) == pager.npos) + { + cmd[0] = pager.data(); + cmd[1] = nullptr; + } + execvp(cmd[0], cmd); + } + err: + int err = errno; + FileFd::Write(notifyPipe[1], &err, sizeof(err)); + _exit(128); + } + + // Parent process. + + // Figure out if we were able to execvp() the child successfully. To do so, + // read from the notifyPipe. If execvp() was successful, it was closed due + // to CLOEXEC. On failure, our child code writes an errno to it. + _error->PushToStack(); + close(notifyPipe[1]); // Need to close our write end so our read doesn't block + notifyPipe[1] = -1; + if (int err = 0; FileFd::Read(notifyPipe[0], &err, sizeof(err))) { + errno = err; + _error->WarningE("PagerSetup", "Could not execute pager"); + _error->MergeWithStack(); + return true; + } + _error->RevertToStack(); + + // When running a pager, we must not be reading from stdin/tty, so + // let's be safe and open /dev/null in its place. + if (int const nullfd = open("/dev/null", O_RDONLY); nullfd != -1) + { + dup2(nullfd, STDIN_FILENO); + close(nullfd); + } + + // Redirect the output(s) to the pager + if (dup2(pipefds[1], STDOUT_FILENO) == -1) + abort(); + if (isatty(STDERR_FILENO) && dup2(pipefds[1], STDERR_FILENO) == -1) + abort(); + + // From now on, we can't show any progress messages as we are outputting + // to the pager. + _config->CndSet("quiet::NoUpdate", "1"); + + // Setup signal handlers and exit handlers for the pager, such that + // we wait for it. + for (auto signalToHandle : PagerSignalsToHandle) + signal(signalToHandle, SignalPager); + atexit(WaitPager); + + return true; +} bool InitOutput(std::basic_streambuf * const out) /*{{{*/ { - if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1) + if (not IsStdoutAtty() && _config->FindI("quiet", -1) == -1) _config->Set("quiet","1"); c0out.rdbuf(out); @@ -86,7 +265,7 @@ bool InitOutput(std::basic_streambuf * const out) /*{{{*/ SigWinch(0); } - if (isatty(STDOUT_FILENO) == 0 || not _config->FindB("APT::Color", true) || getenv("NO_COLOR") != nullptr) + if (not IsStdoutAtty() || not _config->FindB("APT::Color", true) || getenv("NO_COLOR") != nullptr || getenv("APT_NO_COLOR") != nullptr) { _config->Set("APT::Color", false); _config->Set("APT::Color::Highlight", ""); @@ -94,6 +273,7 @@ bool InitOutput(std::basic_streambuf * const out) /*{{{*/ } else { // Colors _config->CndSet("APT::Color::Highlight", "\x1B[32m"); + _config->CndSet("APT::Color::Bold", "\x1B[1m"); _config->CndSet("APT::Color::Neutral", "\x1B[0m"); _config->CndSet("APT::Color::Red", "\x1B[31m"); @@ -103,6 +283,14 @@ bool InitOutput(std::basic_streambuf * const out) /*{{{*/ _config->CndSet("APT::Color::Magenta", "\x1B[35m"); _config->CndSet("APT::Color::Cyan", "\x1B[36m"); _config->CndSet("APT::Color::White", "\x1B[37m"); + + _config->CndSet("APT::Color::Action::Upgrade", "green"); + _config->CndSet("APT::Color::Action::Install", "green"); + _config->CndSet("APT::Color::Action::Install-Dependencies", "green"); + _config->CndSet("APT::Color::Action::Downgrade", "yellow"); + _config->CndSet("APT::Color::Action::Remove", "red"); + _config->CndSet("APT::Color::Show::Field", "\x1B[1m"); + _config->CndSet("APT::Color::Show::Package", "\x1B[32m"); } return true; @@ -302,8 +490,8 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/ 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, "${color:highlight}", color("Highlight")); + output = SubstVar(output, "${color:neutral}", color("Neutral")); output = SubstVar(output, "${Description}", GetShortDescription(CacheFile, records, P)); if (output.find("${LongDescription}") != string::npos) output = SubstVar(output, "${LongDescription}", GetLongDescription(CacheFile, records, P)); @@ -316,6 +504,83 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, /*{{{*/ out << output; } /*}}}*/ +// ShowWithColumns - Show a list in the style of ls /*{{{*/ +// --------------------------------------------------------------------- +/* This prints out a vector of strings with the given indent and in as + many columns as will fit the screen width. + + The output looks like: + abiword debootstrap gir1.2-upowerglib-1.0 + abiword-common dh-make google-chrome-beta + abiword-plugin-grammar dmeventd gstreamer1.0-clutter-3.0 + binfmt-support dmsetup hostname + console-setup evolution-data-server iproute2 + console-setup-linux evolution-data-server-common + coreutils ffmpeg + */ +struct columnInfo +{ + bool ValidLen; + size_t LineWidth; + vector RemainingWidths; +}; +void ShowWithColumns(ostream &out, vector const &List, size_t Indent, size_t ScreenWidth) +{ + constexpr size_t MinColumnWidth = 2; + constexpr size_t ColumnSpace = 2; + + size_t const ListSize = List.size(); + size_t const MaxScreenCols = (ScreenWidth - Indent) / + MinColumnWidth; + size_t const MaxNumCols = min(MaxScreenCols, ListSize); + + vector ColumnInfo(MaxNumCols); + for (size_t I = 0; I < MaxNumCols; ++I) { + ColumnInfo[I].ValidLen = true; + ColumnInfo[I].LineWidth = (I + 1) * MinColumnWidth; + ColumnInfo[I].RemainingWidths.resize(I + 1, MinColumnWidth); + } + + for (size_t I = 0; I < ListSize; ++I) { + for (size_t J = 0; J < MaxNumCols; ++J) { + auto& Col = ColumnInfo[J]; + if (!Col.ValidLen) + continue; + + size_t Idx = I / ((ListSize + J) / (J + 1)); + size_t RealColLen = List[I].size() + (Idx == J ? 0 : ColumnSpace); + if (Col.RemainingWidths[Idx] < RealColLen) { + Col.LineWidth += RealColLen - Col.RemainingWidths[Idx]; + Col.RemainingWidths[Idx] = RealColLen; + Col.ValidLen = Col.LineWidth < ScreenWidth; + } + } + } + size_t NumCols = MaxNumCols; + while (NumCols > 1 && !ColumnInfo[NumCols - 1].ValidLen) + --NumCols; + + size_t NumRows = ListSize / NumCols + (ListSize % NumCols != 0); + auto const &LineFormat = ColumnInfo[NumCols - 1]; + for (size_t Row = 0; Row < NumRows; ++Row) { + size_t Col = 0; + size_t I = Row; + out << string(Indent, ' '); + while (true) { + out << List[I]; + + size_t CurLen = List[I].size(); + size_t MaxLen = LineFormat.RemainingWidths[Col++]; + I += NumRows; + if (I >= ListSize) + break; + + out << string(MaxLen - CurLen, ' '); + } + out << endl; + } +} + /*}}}*/ // ShowBroken - Debugging aide /*{{{*/ // --------------------------------------------------------------------- /* This prints out the names of all the packages that are broken along @@ -447,8 +712,10 @@ void ShowBroken(ostream &out, CacheFile &Cache, bool const Now) { if (Cache->BrokenCount() == 0) return; - - out << _("The following packages have unmet dependencies:") << endl; + if (_config->FindI("APT::Output-Version") < 30) + out << _("The following packages have unmet dependencies:") << endl; + else + out << _("Unsatisfied dependencies:") << endl; SortedPackageUniverse Universe(Cache); for (auto const &Pkg: Universe) ShowBrokenPackage(out, &Cache, Pkg, Now); @@ -458,7 +725,10 @@ void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now) if (Cache->BrokenCount() == 0) return; - out << _("The following packages have unmet dependencies:") << endl; + if (_config->FindI("APT::Output-Version") < 30) + out << _("The following packages have unmet dependencies:") << endl; + else + out << _("Unsatisfied dependencies:") << endl; APT::PackageUniverse Universe(Cache); for (auto const &Pkg: Universe) ShowBrokenPackage(out, &Cache, Pkg, Now); @@ -468,17 +738,33 @@ void ShowBroken(ostream &out, pkgCacheFile &Cache, bool const Now) 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(); }, + if (_config->FindI("APT::Output-Version") < 30) { + ShowList(out,_("The following NEW packages will be installed:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall(); }, + &PrettyFullName, + CandidateVersion(&Cache), + "action::install"); + return; + } + + ShowList(out,_("Installing:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall() && (Cache[Pkg].Flags & pkgCache::Flag::Auto) == 0; }, + &PrettyFullName, + CandidateVersion(&Cache), + "action::install"); + ShowList(out,_("Installing dependencies:"), Universe, + [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].NewInstall() && Cache[Pkg].Flags & pkgCache::Flag::Auto;}, &PrettyFullName, - CandidateVersion(&Cache)); + CandidateVersion(&Cache), + "action::install-dependencies"); } /*}}}*/ // ShowDel - Show packages to delete /*{{{*/ void ShowDel(ostream &out,CacheFile &Cache) { SortedPackageUniverse Universe(Cache); - ShowList(out,_("The following packages will be REMOVED:"), Universe, + auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be REMOVED:") : _("REMOVING:"); + ShowList(out,title, Universe, [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Delete(); }, [&Cache](pkgCache::PkgIterator const &Pkg) { @@ -487,14 +773,18 @@ void ShowDel(ostream &out,CacheFile &Cache) str.append("*"); return str; }, - CandidateVersion(&Cache)); + CurrentVersion(&Cache), + "action::remove"); } /*}}}*/ // ShowPhasing - Show packages kept due to phasing /*{{{*/ void ShowPhasing(ostream &out, CacheFile &Cache, APT::PackageVector const &HeldBackPackages) { SortedPackageUniverse Universe(Cache); - ShowList(out, _("The following upgrades have been deferred due to phasing:"), HeldBackPackages, + auto title = _config->FindI("APT::Output-Version") < 30 + ? _("The following upgrades have been deferred due to phasing:") + : _("Not upgrading yet due to phasing:"); + ShowList(out, title, HeldBackPackages, &AlwaysTrue, &PrettyFullName, CurrentToCandidateVersion(&Cache)); @@ -504,7 +794,8 @@ void ShowPhasing(ostream &out, CacheFile &Cache, APT::PackageVector const &HeldB void ShowKept(ostream &out,CacheFile &Cache, APT::PackageVector const &HeldBackPackages) { SortedPackageUniverse Universe(Cache); - ShowList(out,_("The following packages have been kept back:"), HeldBackPackages, + auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages have been kept back:") : _("Not upgrading:"); + ShowList(out, title, HeldBackPackages, &AlwaysTrue, &PrettyFullName, CurrentToCandidateVersion(&Cache)); @@ -514,13 +805,15 @@ void ShowKept(ostream &out,CacheFile &Cache, APT::PackageVector const &HeldBackP void ShowUpgraded(ostream &out,CacheFile &Cache) { SortedPackageUniverse Universe(Cache); - ShowList(out,_("The following packages will be upgraded:"), Universe, + auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be upgraded:") : _("Upgrading:"); + ShowList(out, title, Universe, [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Upgrade() == true && Cache[Pkg].NewInstall() == false; }, &PrettyFullName, - CurrentToCandidateVersion(&Cache)); + CurrentToCandidateVersion(&Cache), + "action::upgrade"); } /*}}}*/ // ShowDowngraded - Show downgraded packages /*{{{*/ @@ -529,20 +822,23 @@ void ShowUpgraded(ostream &out,CacheFile &Cache) bool ShowDowngraded(ostream &out,CacheFile &Cache) { SortedPackageUniverse Universe(Cache); - return ShowList(out,_("The following packages will be DOWNGRADED:"), Universe, + auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following packages will be DOWNGRADED:") : _("DOWNGRADING:"); + return ShowList(out, title, Universe, [&Cache](pkgCache::PkgIterator const &Pkg) { return Cache[Pkg].Downgrade() == true && Cache[Pkg].NewInstall() == false; }, &PrettyFullName, - CurrentToCandidateVersion(&Cache)); + CurrentToCandidateVersion(&Cache), + "action::downgrade"); } /*}}}*/ // 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, + auto title = _config->FindI("APT::Output-Version") < 30 ? _("The following held packages will be changed:") : _("Changing held packages:"); + return ShowList(out, title, Universe, [&Cache](pkgCache::PkgIterator const &Pkg) { return Pkg->SelectedState == pkgCache::State::Hold && @@ -621,7 +917,7 @@ bool ShowEssential(ostream &out,CacheFile &Cache) } 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); + pkglist, &AlwaysTrue, withdue, &EmptyString, "action::remove"); } /*}}}*/ // Stats - Show some statistics /*{{{*/ @@ -633,6 +929,7 @@ void Stats(ostream &out, pkgDepCache &Dep, APT::PackageVector const &HeldBackPac unsigned long Downgrade = 0; unsigned long Install = 0; unsigned long ReInstall = 0; + auto outVer = _config->FindI("APT::Output-Version"); for (pkgCache::PkgIterator I = Dep.PkgBegin(); I.end() == false; ++I) { if (Dep[I].NewInstall() == true) @@ -649,21 +946,27 @@ void Stats(ostream &out, pkgDepCache &Dep, APT::PackageVector const &HeldBackPac if (Dep[I].Delete() == false && (Dep[I].iFlags & pkgDepCache::ReInstall) == pkgDepCache::ReInstall) ReInstall++; } - - ioprintf(out,_("%lu upgraded, %lu newly installed, "), + if (outVer >= 30) { + ioprintf(out, _("Summary:")); + ioprintf(out, "\n "); + } + ioprintf(out,outVer < 30 ? _("%lu upgraded, %lu newly installed, ") : _("Upgrading: %lu, Installing: %lu, "), Upgrade,Install); if (ReInstall != 0) - ioprintf(out,_("%lu reinstalled, "),ReInstall); + ioprintf(out,outVer < 30 ? _("%lu reinstalled, ") : _("Reinstalling: %lu, "),ReInstall); if (Downgrade != 0) - ioprintf(out,_("%lu downgraded, "),Downgrade); + ioprintf(out,outVer < 30 ? _("%lu downgraded, ") : _("Downgrading: %lu, "),Downgrade); - ioprintf(out,_("%lu to remove and %lu not upgraded.\n"), + ioprintf(out, outVer < 30 ? _("%lu to remove and %lu not upgraded.\n") : _("Removing: %lu, Not Upgrading: %lu\n"), Dep.DelCount(), HeldBackPackages.size()); - - if (Dep.BadCount() != 0) + + if (Dep.BadCount() != 0) { + if (outVer >= 30) + ioprintf(out, " "); ioprintf(out,_("%lu not fully installed or removed.\n"), Dep.BadCount()); + } } /*}}}*/ // YnPrompt - Yes No Prompt. /*{{{*/ @@ -676,10 +979,18 @@ bool YnPrompt(char const * const Question, bool const Default, bool const ShowGl // if we ask interactively, show warnings/notices before the question if (ShowGlobalErrors == true && AssumeYes == false && AssumeNo == false) { - if (_config->FindI("quiet",0) > 0) + if (_config->FindB("APT::Audit")) + _error->DumpErrors(c2o, GlobalError::AUDIT); + else if (_config->FindI("quiet",0) > 0) _error->DumpErrors(c2o); else - _error->DumpErrors(c2o, GlobalError::DEBUG); + _error->DumpErrors(c2o, GlobalError::NOTICE); + } + // ignore pending input on terminal + if (not AssumeYes && not AssumeNo && isatty(STDIN_FILENO) == 1) + { + tcflush(STDIN_FILENO, TCIFLUSH); + std::cin.clear(); } c2o << Question << std::flush; @@ -726,9 +1037,10 @@ bool YnPrompt(char const * const Question, bool const Default, bool const ShowGl char response[1024] = ""; std::cin.getline(response, sizeof(response)); - if (!std::cin) return false; + if (isatty(STDIN_FILENO) == 0) + c1o << response << '\n'; if (strlen(response) == 0) return Default; @@ -760,13 +1072,21 @@ std::string PrettyFullName(pkgCache::PkgIterator const &Pkg) { return Pkg.FullName(true); } +std::string CurrentVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg) +{ + return (*Cache)[Pkg].CurVersion; +} +std::function CurrentVersion(pkgCacheFile * const Cache) +{ + return [=](pkgCache::PkgIterator const &i) { return CurrentVersion(Cache, i); }; +} std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg) { return (*Cache)[Pkg].CandVersion; } std::function CandidateVersion(pkgCacheFile * const Cache) { - return std::bind(static_cast(&CandidateVersion), Cache, std::placeholders::_1); + return [=](pkgCache::PkgIterator const &i) { return CandidateVersion(Cache, i); }; } std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg) { @@ -782,7 +1102,7 @@ std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgI } std::function CurrentToCandidateVersion(pkgCacheFile * const Cache) { - return std::bind(static_cast(&CurrentToCandidateVersion), Cache, std::placeholders::_1); + return [=](pkgCache::PkgIterator const &i) { return CurrentToCandidateVersion(Cache, i); }; } bool AlwaysTrue(pkgCache::PkgIterator const &) { diff --git a/apt-private/private-output.h b/apt-private/private-output.h index c3e73d5..ebc8408 100644 --- a/apt-private/private-output.h +++ b/apt-private/private-output.h @@ -1,6 +1,7 @@ #ifndef APT_PRIVATE_OUTPUT_H #define APT_PRIVATE_OUTPUT_H +#include #include #include #include @@ -10,6 +11,7 @@ #include #include #include +#include // forward declaration class pkgCacheFile; @@ -17,7 +19,6 @@ class CacheFile; class pkgDepCache; class pkgRecords; - APT_PUBLIC extern std::ostream c0out; APT_PUBLIC extern std::ostream c1out; APT_PUBLIC extern std::ostream c2out; @@ -25,6 +26,8 @@ APT_PUBLIC extern std::ofstream devnull; APT_PUBLIC extern unsigned int ScreenWidth; APT_PUBLIC bool InitOutput(std::basic_streambuf * const out = std::cout.rdbuf()); +[[nodiscard]] APT_PUBLIC bool InitOutputPager(); +APT_PUBLIC bool IsStdoutAtty(); void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, pkgCache::VerIterator const &V, std::ostream &out, @@ -35,16 +38,25 @@ void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, APT_PUBLIC void ShowBroken(std::ostream &out, CacheFile &Cache, bool const Now); APT_PUBLIC void ShowBroken(std::ostream &out, pkgCacheFile &Cache, bool const Now); +APT_PUBLIC void ShowWithColumns(std::ostream &out, const std::vector &List, size_t Indent, size_t ScreenWidth); + template bool ShowList(std::ostream &out, std::string const &Title, Container const &cont, PredicateC Predicate, DisplayP PkgDisplay, - DisplayV VerboseDisplay) + DisplayV VerboseDisplay, + std::string colorName = "", + std::string Note = "") { size_t const ScreenWidth = (::ScreenWidth > 3) ? ::ScreenWidth - 3 : 0; int ScreenUsed = 0; bool const ShowVersions = _config->FindB("APT::Get::Show-Versions", false); + bool const ListColumns = _config->FindB("APT::Get::List-Columns", _config->FindI("APT::Output-Version") >= 30); bool printedTitle = false; + std::vector PackageList; + + auto setColor = APT::Configuration::color(colorName); + auto resetColor = not setColor.empty() ? APT::Configuration::color("neutral") : ""; for (auto const &Pkg: cont) { @@ -59,7 +71,7 @@ template bool if (ShowVersions == true) { - out << std::endl << " " << PkgDisplay(Pkg); + out << std::endl << " " << setColor << PkgDisplay(Pkg) << resetColor; std::string const verbose = VerboseDisplay(Pkg); if (verbose.empty() == false) out << " (" << verbose << ")"; @@ -67,24 +79,39 @@ template bool else { std::string const PkgName = PkgDisplay(Pkg); - if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth) + if (ListColumns) + PackageList.push_back(PkgName); + else { - out << std::endl << " "; - ScreenUsed = 0; + if (ScreenUsed == 0 || (ScreenUsed + PkgName.length()) >= ScreenWidth) + { + out << std::endl + << " "; + ScreenUsed = 0; + } + else if (ScreenUsed != 0) + { + out << " "; + ++ScreenUsed; + } + out << setColor << PkgName << resetColor; + ScreenUsed += PkgName.length(); } - else if (ScreenUsed != 0) - { - out << " "; - ++ScreenUsed; - } - out << PkgName; - ScreenUsed += PkgName.length(); } } if (printedTitle == true) { out << std::endl; + if (ListColumns && not PackageList.empty()) { + out << setColor; + ShowWithColumns(out, PackageList, 2, ScreenWidth); + out << resetColor; + } + if (not Note.empty()) + out << Note << std::endl; + if (_config->FindI("APT::Output-Version") >= 30) + out << std::endl; return false; } return true; @@ -107,6 +134,8 @@ APT_PUBLIC bool YnPrompt(char const *const Question, bool Default = true); bool YnPrompt(char const * const Question, bool const Default, bool const ShowGlobalErrors, std::ostream &c1o, std::ostream &c2o); APT_PUBLIC std::string PrettyFullName(pkgCache::PkgIterator const &Pkg); +std::string CurrentVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); +std::function CurrentVersion(pkgCacheFile * const Cache); std::string CandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); std::function CandidateVersion(pkgCacheFile * const Cache); std::string CurrentToCandidateVersion(pkgCacheFile * const Cache, pkgCache::PkgIterator const &Pkg); diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc index 19a3bf0..d6654eb 100644 --- a/apt-private/private-search.cc +++ b/apt-private/private-search.cc @@ -169,6 +169,9 @@ static bool FullTextSearch(CommandLine &CmdL) /*{{{*/ APT_FREE_PATTERNS(); progress.Done(); + if (not InitOutputPager()) + return false; + // FIXME: SORT! and make sorting flexible (alphabetic, by pkg status) // output the sorted map std::map::const_iterator K; diff --git a/apt-private/private-show.cc b/apt-private/private-show.cc index cefbd9b..3e969ab 100644 --- a/apt-private/private-show.cc +++ b/apt-private/private-show.cc @@ -1,6 +1,7 @@ // Includes /*{{{*/ #include +#include #include #include #include @@ -33,6 +34,8 @@ #include /*}}}*/ +using APT::Configuration::color; + pkgRecords::Parser &LookupParser(pkgRecords &Recs, pkgCache::VerIterator const &V, pkgCache::VerFileIterator &Vf) /*{{{*/ { Vf = V.FileList(); @@ -218,6 +221,10 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/ // Check and load the package list file pkgCache::PkgFileIterator I = Vf.File(); + // Extract the policy object for use later + pkgDepCache::Policy *Policy = CacheFile.GetPolicy(); + if (Policy == nullptr) + return false; // find matching sources.list metaindex pkgSourceList *SrcList = CacheFile.GetSourceList(); pkgIndexFile *Index; @@ -271,7 +278,8 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/ 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("Package", color("Show::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)); @@ -279,10 +287,18 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/ 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)); + if (_config->FindB("APT::Cache::ShowFull", false)) + { + RW.push_back(pkgTagSection::Tag::Rewrite("APT-Pin", std::to_string(Policy->GetPriority(V)))); + if (Policy->GetCandidateVer(V.ParentPkg()) == V) + RW.push_back(pkgTagSection::Tag::Rewrite("APT-Candidate", "yes")); + if (auto Release = I.RelStr(); not I.Flagged(pkgCache::Flag::NotSource) && not Release.empty()) + RW.push_back(pkgTagSection::Tag::Rewrite("APT-Release", Release)); + } FileFd stdoutfd; if (stdoutfd.OpenDescriptor(STDOUT_FILENO, FileFd::WriteOnly, false) == false || - Tags.Write(stdoutfd, TFRewritePackageOrder, RW) == false || stdoutfd.Close() == false) + Tags.Write(stdoutfd, pkgTagSection::WRITE_HUMAN, TFRewritePackageOrder, RW) == false || stdoutfd.Close() == false) return _error->Error("Internal Error, Unable to parse a package record"); // write the description @@ -291,7 +307,7 @@ static bool DisplayRecordV2(pkgCacheFile &CacheFile, pkgRecords &Recs, /*{{{*/ if (Desc.end() == false) { pkgRecords::Parser &P = Recs.Lookup(Desc.FileList()); - out << "Description: " << P.LongDesc(); + out << color("Show::Field", "Description: ") << P.LongDesc(); } // write a final newline (after the description) @@ -347,6 +363,10 @@ bool ShowPackage(CommandLine &CmdL) /*{{{*/ int const ShowVersion = _config->FindI("APT::Cache::Show::Version", 1); pkgRecords Recs(CacheFile); + + if (not InitOutputPager()) + return false; + for (APT::VersionList::const_iterator Ver = verset.begin(); Ver != verset.end(); ++Ver) { pkgCache::VerFileIterator Vf; @@ -437,19 +457,30 @@ bool ShowSrcPackage(CommandLine &CmdL) /*{{{*/ if (_error->PendingError() == true) return false; + if (not InitOutputPager()) + return false; + bool found = false; // avoid showing identical records std::set seen; for (const char **I = CmdL.FileList + 1; *I != 0; I++) { + const char *pkgname = *I; SrcRecs.Restart(); pkgSrcRecords::Parser *Parse; bool found_this = false; - while ((Parse = SrcRecs.Find(*I,false)) != 0) { + bool only_source = _config->FindB("APT::Cache::Only-Source", false); + if (APT::String::Startswith(pkgname, "src:")) + { + only_source = true; + pkgname += 4; + } + while ((Parse = SrcRecs.Find(pkgname, false)) != 0) + { // SrcRecs.Find() will find both binary and source names - if (_config->FindB("APT::Cache::Only-Source", false) == true) - if (Parse->Package() != *I) + if (only_source) + if (Parse->Package() != pkgname) continue; std::string sha1str = Sha1FromString(Parse->AsStr()); if (std::find(seen.begin(), seen.end(), sha1str) == seen.end()) @@ -484,6 +515,9 @@ bool Policy(CommandLine &CmdL) if (unlikely(Plcy == nullptr)) return false; + if (not InitOutputPager()) + return false; + // Print out all of the package files if (CmdL.FileList[1] == 0) { diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc index 9b9409c..ac52de9 100644 --- a/apt-private/private-source.cc +++ b/apt-private/private-source.cc @@ -77,7 +77,14 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name, std::string ArchTag = ""; std::string RelTag = _config->Find("APT::Default-Release"); std::string TmpSrc = Name; + bool MatchSrcOnly = _config->FindB("APT::Get::Only-Source"); + // Check if we should look by source package + if (APT::String::Startswith(TmpSrc, "src:")) + { + MatchSrcOnly = true; + TmpSrc = TmpSrc.substr(4); + } // extract release size_t found = TmpSrc.find_last_of("/"); if (found != std::string::npos) @@ -103,7 +110,6 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name, /* 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); @@ -417,7 +423,7 @@ bool DoSource(CommandLine &CmdL) 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); + std::string localFile{flNotDir(I->Path)}; if (FileExists(localFile) == true) if(I->Hashes.VerifyFile(localFile) == true) { diff --git a/apt-private/private-sources.cc b/apt-private/private-sources.cc index a7d003f..9e6deb1 100644 --- a/apt-private/private-sources.cc +++ b/apt-private/private-sources.cc @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -15,6 +16,7 @@ #include #include +#include #include #include #include @@ -22,6 +24,8 @@ #include +using namespace std::literals; + /* 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 @@ -40,8 +44,6 @@ bool EditSources(CommandLine &CmdL) 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"); } @@ -103,3 +105,222 @@ bool EditSources(CommandLine &CmdL) return res; } /*}}}*/ + +template +static auto contains(T const &container, V const &value) -> bool +{ + return std::find(container.begin(), container.end(), value) != container.end(); +} +static auto merge(std::vector &a, std::vector const &b) +{ + for (auto const &e : b) + if (not contains(a, e)) + a.push_back(e); +} + +static bool Modernize(std::string const &filename) /*{{{*/ +{ + auto isMain = filename == _config->FindFile("Dir::Etc::SourceList"); + auto simulate = _config->FindB("APT::Get::Simulate"); + + std::cerr << "Modernizing " << filename << "...\n"; + pkgSourceList list; + if (not list.Read(filename)) + return false; + + struct Entry + { + std::set types; + std::vector uris; + std::vector suites; + std::vector components; + std::string signedBy; + std::map options; + std::string origin; + bool merged = false; + + auto Merge(Entry &other) -> bool + { + auto howManyDifferent = (types != other.types) + (uris != other.uris) + (suites != other.suites) + (components != other.components); + if (howManyDifferent > 1) + return false; + if (options != other.options) + return false; + if (origin != other.origin) + return false; + if (signedBy.empty() && not other.signedBy.empty() && (uris != other.uris || suites != other.suites)) + return false; + if (not signedBy.empty() && not other.signedBy.empty() && signedBy != other.signedBy) + return false; + + types.insert(other.types.begin(), other.types.end()); + merge(uris, other.uris); + merge(suites, other.suites); + merge(components, other.components); + if (signedBy.empty()) + signedBy = other.signedBy; + + other.merged = true; + return true; + } + }; + std::vector entries; + for (auto const &meta : list) + { + Entry e; + + e.uris.push_back(meta->GetURI()); + e.suites.push_back(meta->GetDist()); + for (auto const &t : meta->GetIndexTargets()) + { + e.types.insert(t.Option(IndexTarget::TARGET_OF)); + if (not contains(e.components, t.Option(IndexTarget::COMPONENT))) + e.components.push_back(t.Option(IndexTarget::COMPONENT)); + } + + if (meta->IsTrustedSet()) + e.options["Trusted"] = "yes"; + + std::string err; + e.signedBy = meta->GetSignedBy(); + meta->Load(&err); + if (e.signedBy.empty() && not meta->GetOrigin().empty()) + { + std::string dir = _config->FindDir("Dir") + std::string{"usr/share/keyrings/"}; + std::string keyring = std::regex_replace(meta->GetOrigin(), std::regex(" "), "-") + "-archive-keyring.gpg"; + std::transform(keyring.begin(), keyring.end(), keyring.begin(), tolower); + if (FileExists(dir + keyring)) + e.signedBy = dir + keyring; + } + if (auto k = _config->FindDir("Dir::Etc::trustedparts") += flNotDir(std::regex_replace(filename, std::regex("\\.list$"), ".gpg")); FileExists(k)) + e.signedBy = k; + if (auto k = _config->FindDir("Dir::Etc::trustedparts") += flNotDir(std::regex_replace(filename, std::regex("\\.list$"), ".asc")); FileExists(k)) + e.signedBy = k; + + if (isMain && not meta->GetOrigin().empty()) + { + constexpr auto bad = "\\|{}[]<>\"^~_=!@#$%^&*"sv; + e.origin = meta->GetOrigin(); + std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), tolower); + std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), [](char c) -> char + { return isspace(c) ? '-' : c; }); + std::transform(e.origin.begin(), e.origin.end(), e.origin.begin(), [bad](char c) -> char + { return bad.find(c) != bad.npos ? '-' : c; }); + std::replace(e.origin.begin(), e.origin.end(), '/', '-'); + } + + entries.push_back(std::move(e)); + } + + for (bool merged = false; merged;) + { + merged = false; + for (auto it = entries.begin(); it != entries.end(); ++it) + { + for (auto it2 = it + 1; it2 != entries.end(); ++it2) + if (not it2->merged) + merged |= it->Merge(*it2); + } + } + + std::map streams; + for (auto const &e : entries) + { + std::string outname; + if (not isMain) + outname = std::regex_replace(filename, std::regex("\\.list$"), ".sources"); + else if (e.origin.empty()) + outname = _config->FindDir("Dir::Etc::SourceParts") + "moved-from-main.sources"; + else + outname = _config->FindDir("Dir::Etc::SourceParts") + (e.origin) + ".sources"; + + if (auto it = streams.find(outname); not simulate && it == streams.end()) + { + std::cerr << "- Writing " << outname << "\n"; + streams[outname].open(outname, std::ios::app); + } + auto &out = simulate ? std::cout : streams[outname]; + if (not out) + _error->Warning("Cannot open %s for writing.", outname.c_str()); + if (e.merged) + continue; + + if (out.tellp() != 0) + out << "\n"; + + if (simulate) + out << "# Would write to: " << outname << "\n"; + if (isMain) + out << "# Modernized from " << filename << "\n"; + out << "Types:"; + for (auto const &t : e.types) + out << " " << t; + out << "\n"; + out << "URIs: " << APT::String::Join(e.uris, " ") << "\n"; + out << "Suites: " << APT::String::Join(e.suites, " ") << "\n"; + out << "Components: " << APT::String::Join(e.components, " ") << "\n"; + out << "Signed-By: " << e.signedBy << "\n"; + for (auto const &[key, value] : e.options) + out << key << ": " << value << "\n"; + if (e.signedBy.empty()) + _error->Warning("Could not determine Signed-By for URIs: %s, Suites: %s", APT::String::Join(e.uris, " ").c_str(), APT::String::Join(e.suites, " ").c_str()); + } + + if (not simulate && rename(filename.c_str(), (filename + ".bak").c_str()) != 0) + _error->WarningE("rename", "Could not rename %s", filename.c_str()); + + _error->DumpErrors(); + std::cerr << "\n"; + return true; +} + /*}}}*/ +bool ModernizeSources(CommandLine &) /*{{{*/ +{ + auto main = _config->FindFile("Dir::Etc::SourceList"); + auto parts = _config->FindDir("Dir::Etc::SourceParts"); + std::vector files; + if (FileExists(main)) + files.push_back(main); + for (auto const &I : GetListOfFilesInDir(parts, std::vector{"list", "sources"}, true)) + if (APT::String::Endswith(I, ".list")) + files.push_back(I); + if (files.empty()) + { + std::cout << "All sources are modern.\n"; + return true; + } + + // TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set + auto no = _("N"); + + std::cout << "The following files need modernizing:\n"; + for (auto const &I : files) + std::cout << " - " << I << "\n"; + std::cout << "\n" + << "Modernizing will replace .list files with the new .sources format,\n" + << "add Signed-By values where they can be determined automatically,\n" + << "and save the old files into .list.bak files.\n" + << "\n" + << "This command supports the 'signed-by' and 'trusted' options. If you\n" + << "have specified other options inside [] brackets, please transfer them\n" + << "manually to the output files; see sources.list(5) for a mapping.\n" + << "\n" + << "For a simulation, respond " << no << " in the following prompt.\n"; + + std::string prompt; + strprintf(prompt, _("Rewrite %zu sources?"), files.size()); + if (YnPrompt(prompt.c_str(), true) == false) + { + _config->Set("APT::Get::Simulate", true); + std::cout << "Simulating only..." << std::endl; + // Make it visible. + usleep(100 * 1000); + } + + bool good = true; + for (auto const &I : files) + good = good && Modernize(I); + + return good; +} + /*}}}*/ diff --git a/apt-private/private-sources.h b/apt-private/private-sources.h index 0c42190..0f1e89a 100644 --- a/apt-private/private-sources.h +++ b/apt-private/private-sources.h @@ -6,5 +6,6 @@ class CommandLine; APT_PUBLIC bool EditSources(CommandLine &CmdL); +APT_PUBLIC bool ModernizeSources(CommandLine &CmdL); #endif diff --git a/apt-private/private-update.cc b/apt-private/private-update.cc index cc0753c..9896196 100644 --- a/apt-private/private-update.cc +++ b/apt-private/private-update.cc @@ -21,32 +21,11 @@ #include #include -#include #include /*}}}*/ // DoUpdate - Update the package lists /*{{{*/ -static bool isDebianBookwormRelease(pkgCache::RlsFileIterator const &RlsFile) -{ - std::tuple const affected[] = { - {"Debian", "Debian", "bookworm"}, - {"Debian", "Debian", "sid"}, - }; - if (RlsFile.end() || RlsFile->Origin == nullptr || RlsFile->Label == nullptr || RlsFile->Codename == nullptr) - return false; - std::tuple const release{RlsFile.Origin(), RlsFile.Label(), RlsFile.Codename()}; - return std::find(std::begin(affected), std::end(affected), release) != std::end(affected); -} -static void suggestDebianNonFreeFirmware(char const *const repo, char const *const val, - char const *const from, char const *const to) -{ - // Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc - _error->Notice(_("Repository '%s' changed its '%s' value from '%s' to '%s'"), repo, val, from, to); - std::string notes; - strprintf(notes, "https://www.debian.org/releases/bookworm/%s/release-notes/ch-information.html#non-free-split", _config->Find("APT::Architecture").c_str()); - _error->Notice(_("More information about this can be found online in the Release notes at: %s"), notes.c_str()); -} bool DoUpdate(CommandLine &CmdL) { if (CmdL.FileSize() != 1) @@ -79,7 +58,7 @@ bool DoUpdate() pkgAcquire::UriIterator I = Fetcher.UriBegin(); for (; I != Fetcher.UriEnd(); ++I) { - std::string FileName = flNotDir(I->Owner->DestFile); + auto FileName = flNotDir(I->Owner->DestFile); if(compExt.empty() == false && APT::String::Endswith(FileName, compExt)) FileName = FileName.substr(0, FileName.size() - compExt.size() - 1); @@ -125,125 +104,42 @@ bool DoUpdate() } } - if (_config->FindB("APT::Get::Update::SourceListWarnings::NonFreeFirmware", SLWarnings)) + if (_config->FindB("APT::Get::Update::SourceListWarnings::SignedBy", SLWarnings)) { - // If a Debian source has a non-free component, suggest adding non-free-firmware - bool found_affected_release = false; - bool found_non_free = false; - bool found_non_free_firmware = false; + bool modernize = false; for (auto *S : *List) { - if (not isDebianBookwormRelease(S->FindInCache(Cache, false))) - continue; + URI uri(S->GetURI()); - for (auto PkgFile = Cache.GetPkgCache()->FileBegin(); not PkgFile.end(); ++PkgFile) + if (not S->HasFlag(metaIndex::Flag::DEB822)) { - if (PkgFile.Flagged(pkgCache::Flag::NoPackages)) - continue; - found_affected_release = true; - const auto * const comp = PkgFile.Component(); - if (comp == nullptr) - continue; - if (strcmp(comp, "non-free") == 0) - found_non_free = true; - else if (strcmp(comp, "non-free-firmware") == 0) - { - found_non_free_firmware = true; - break; - } + // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list + _error->Audit(_("The %s entry for '%s' should be upgraded to deb822 .sources"), + "sources.list(5)", URI::ArchiveOnly(uri).c_str()); } - if (found_non_free_firmware) - break; - } - if (not found_non_free_firmware && found_non_free && found_affected_release) - { - /* See if a well-known firmware package is installable from this codename - if so, we likely operate with new apt on an old snapshot not supporting non-free-firmware */ - bool suggest_non_free_firmware = true; - if (auto const Grp = Cache.GetPkgCache()->FindGrp("firmware-linux-nonfree"); not Grp.end()) + if (S->GetSignedBy().empty()) { - for (auto Pkg = Grp.PackageList(); not Pkg.end() && suggest_non_free_firmware; Pkg = Grp.NextPkg(Pkg)) + if (S->HasFlag(metaIndex::Flag::DEB822)) { - for (auto Ver = Pkg.VersionList(); not Ver.end(); ++Ver) - { - if (not Ver.Downloadable()) - continue; - for (auto VerFile = Ver.FileList(); not VerFile.end(); ++VerFile) - { - auto const PkgFile = VerFile.File(); - if (PkgFile.end()) - continue; - if (not isDebianBookwormRelease(PkgFile.ReleaseFile())) - continue; - suggest_non_free_firmware = false; - break; - } - if (not suggest_non_free_firmware) - break; - } + // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list + _error->Notice(_("Missing Signed-By in the %s entry for '%s'"), + "sources.list(5)", URI::ArchiveOnly(uri).c_str()); } - } - if (suggest_non_free_firmware) - suggestDebianNonFreeFirmware("Debian bookworm", "non-free component", "non-free", "non-free non-free-firmware"); - } - - if (not found_non_free_firmware && not found_non_free && found_affected_release) - { - /* Try to notify users who have installed firmware packages at some point, but - have not enabled non-free currently – they might want to opt into updates now */ - APT::StringView const affected_pkgs[] = { - "amd64-microcode", "atmel-firmware", "bluez-firmware", "dahdi-firmware-nonfree", - "firmware-amd-graphics", "firmware-ast", "firmware-atheros", "firmware-bnx2", - "firmware-bnx2x", "firmware-brcm80211", "firmware-cavium", "firmware-intel-sound", - "firmware-intelwimax", "firmware-ipw2x00", "firmware-ivtv", "firmware-iwlwifi", - "firmware-libertas", "firmware-linux", "firmware-linux-nonfree", "firmware-misc-nonfree", - "firmware-myricom", "firmware-netronome", "firmware-netxen", "firmware-qcom-media", - "firmware-qcom-soc", "firmware-qlogic", "firmware-realtek", "firmware-realtek-rtl8723cs-bt", - "firmware-samsung", "firmware-siano", "firmware-sof-signed", "firmware-ti-connectivity", - "firmware-zd1211", "intel-microcode", "midisport-firmware", "raspi-firmware", - }; - bool suggest_non_free_firmware = false; - for (auto pkgname : affected_pkgs) - { - auto const Grp = Cache.GetPkgCache()->FindGrp(pkgname); - if (Grp.end()) - continue; - for (auto Pkg = Grp.PackageList(); not Pkg.end(); Pkg = Grp.NextPkg(Pkg)) + else { - auto const Ver = Pkg.CurrentVer(); - if (Ver.end() || Ver.Downloadable()) - continue; - bool another = false; - for (auto V = Pkg.VersionList(); not V.end(); ++V) - if (V.Downloadable()) - { - another = true; - break; - } - if (another) - continue; - suggest_non_free_firmware = true; - break; + // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list + _error->Audit(_("Missing Signed-By in the %s entry for '%s'"), + "sources.list(5)", URI::ArchiveOnly(uri).c_str()); + modernize = true; } - if (suggest_non_free_firmware) - break; } - if (suggest_non_free_firmware) - suggestDebianNonFreeFirmware("Debian bookworm", "firmware component", "non-free", "non-free-firmware"); } - } - - if (_config->FindB("APT::Get::Update::SourceListWarnings::SignedBy", SLWarnings)) - { - for (auto *S : *List) + if (modernize) { - if (not S->HasFlag(metaIndex::Flag::DEB822) || not S->GetSignedBy().empty()) - continue; - - URI uri(S->GetURI()); - // TRANSLATOR: the first is manpage reference, the last the URI from a sources.list - _error->Notice(_("Missing Signed-By in the %s entry for '%s'"), - "sources.list(5)", URI::ArchiveOnly(uri).c_str()); + _error->Audit(_("Consider migrating all sources.list(5) entries to the deb822 .sources format")); + _error->Audit(_("The deb822 .sources format supports both embedded as well as external OpenPGP keys")); + _error->Audit(_("See apt-secure(8) for best practices in configuring repository signing.")); + _error->Notice(_("Some sources can be modernized. Run 'apt modernize-sources' to do so.")); } } @@ -266,7 +162,11 @@ bool DoUpdate() if (upgradable == 0) c1out << _("All packages are up to date.") << std::endl; else - ioprintf(c1out, msg, upgradable); + { + c1out << _config->Find("APT::Color::Bold"); + ioprintf(c1out, msg, upgradable); + c1out << _config->Find("APT::Color::Neutral"); + } RunScripts("APT::Update::Post-Invoke-Stats"); } diff --git a/cmdline/CMakeLists.txt b/cmdline/CMakeLists.txt index 91bf9bb..4c5e85a 100644 --- a/cmdline/CMakeLists.txt +++ b/cmdline/CMakeLists.txt @@ -11,14 +11,6 @@ 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) @@ -46,14 +38,11 @@ set_target_properties(apt-internal-planner # 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-helper apt-extracttemplates 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_links(${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}) +add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/solvers apt solver3) diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index 7fdd4df..d8e9e7e 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -87,9 +87,10 @@ static bool DumpPackage(CommandLine &CmdL) 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 << " Description Language: " << D.LanguageCode() << '\n'; + for (auto DF = D.FileList(); not DF.end(); ++DF) + cout << " File: " << DF.File().FileName() << '\n'; + cout << " MD5: " << D.md5() << '\n'; } cout << endl; } @@ -238,6 +239,8 @@ static bool Stats(CommandLine &CmdL) cout << _(" Mixed virtual packages: ") << NVirt << endl; cout << _(" Missing: ") << Missing << endl; + cout << _("Total distinct source versions: ") << Cache->Head().SourceVersionCount << " (" << SizeToStr(Cache->Head().SourceVersionCount * Cache->Head().SourceVersionSz) << ')' << endl; + cout << _("Total distinct versions: ") << Cache->Head().VersionCount << " (" << SizeToStr(Cache->Head().VersionCount*Cache->Head().VersionSz) << ')' << endl; cout << _("Total distinct descriptions: ") << Cache->Head().DescriptionCount << " (" << @@ -265,8 +268,8 @@ static bool Stats(CommandLine &CmdL) stritems.insert(V->VerStr); if (V->Section != 0) stritems.insert(V->Section); - stritems.insert(V->SourcePkgName); - stritems.insert(V->SourceVerStr); + // FIXME: Count the source versions + stritems.insert(V.SourceVersion()->VerStr); for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; ++D) { if (D->Version != 0) @@ -316,18 +319,19 @@ static bool Stats(CommandLine &CmdL) 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)); + APT_CACHESIZE(GroupCount, GroupSz) + + APT_CACHESIZE(PackageCount, PackageSz) + + APT_CACHESIZE(VersionCount, VersionSz) + + APT_CACHESIZE(SourceVersionCount, SourceVersionSz) + + 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 @@ -464,7 +468,6 @@ static bool DumpAvail(CommandLine &) 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, Cache->PkgFileP + (*J)->File); @@ -472,40 +475,23 @@ static bool DumpAvail(CommandLine &) 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; + + pkgTagFile tagsfile(&PkgF, Cache->HeaderP->MaxVerFileSize); + pkgTagSection Tags; + for (; *J != 0; J++) { if (Cache->PkgFileP + (*J)->File != 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) + const pkgCache::VerFile &VF = **J; + if (not tagsfile.Jump(Tags, VF.Offset)) 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) + if (not Tags.Write(stdoutfd, NULL, RW) || + not stdoutfd.Write("\n", 1)) { _error->Error("Internal Error, Unable to parse a package record"); break; @@ -513,18 +499,24 @@ static bool DumpAvail(CommandLine &) } else { - if (stdoutfd.Write(Buffer + Jitter, VF.Size + 1) == false) + char const *Start, *Stop; + Tags.GetSection(Start, Stop); + for (; Start < Stop; --Stop) + if (std::string_view{"\n\r"}.find(*(Stop - 1)) == std::string_view::npos) + break; + if (not stdoutfd.Write(Start, Stop - Start) || + not stdoutfd.Write("\n\n", 2)) + { + _error->Error("Internal Error, Unable to parse a package record"); break; + } } - - Pos = VF.Offset + VF.Size; } - if (_error->PendingError() == true) + if (_error->PendingError()) break; } - delete [] Buffer; delete [] VFList; return !_error->PendingError(); } diff --git a/cmdline/apt-cdrom.cc b/cmdline/apt-cdrom.cc index 94202d9..13d8753 100644 --- a/cmdline/apt-cdrom.cc +++ b/cmdline/apt-cdrom.cc @@ -44,12 +44,12 @@ class pkgCdromTextStatus : public pkgCdromStatus /*{{{*/ OpTextProgress Progress; void Prompt(const char *Text); string PromptLine(const char *Text); - bool AskCdromName(string &name) APT_OVERRIDE; + bool AskCdromName(string &name) override; public: - virtual void Update(string text, int current) APT_OVERRIDE; - virtual bool ChangeCdrom() APT_OVERRIDE; - virtual OpProgress* GetOpProgress() APT_OVERRIDE; + void Update(string text, int current) override; + bool ChangeCdrom() override; + OpProgress* GetOpProgress() override; }; void pkgCdromTextStatus::Prompt(const char *Text) diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc index 3e59035..05142d9 100644 --- a/cmdline/apt-dump-solver.cc +++ b/cmdline/apt-dump-solver.cc @@ -17,6 +17,7 @@ #include +#include #include #include #include @@ -134,10 +135,10 @@ int main(int argc,const char *argv[]) /*{{{*/ return WriteError("ERR_READ_ERROR", out, stdoutfd, Solver); } - std::unique_ptr Buf(new char[APT_BUFFER_SIZE]); + std::array Buf; unsigned long long ToRead = 0; do { - if (input.Read(Buf.get(), APT_BUFFER_SIZE, &ToRead) == false) + if (input.Read(Buf.data(), Buf.size(), &ToRead) == false) { std::ostringstream out; out << "Writing EDSP solver input to file '" << filename << "' failed as reading from stdin failed!\n"; @@ -145,9 +146,9 @@ int main(int argc,const char *argv[]) /*{{{*/ } if (ToRead == 0) break; - if (forward.IsOpen() && forward.Failed() == false && forward.Write(Buf.get(),ToRead) == false) + if (forward.IsOpen() && forward.Failed() == false && forward.Write(Buf.data(),ToRead) == false) forward.Close(); - if (dump.IsOpen() && dump.Failed() == false && dump.Write(Buf.get(),ToRead) == false) + if (dump.IsOpen() && dump.Failed() == false && dump.Write(Buf.data(),ToRead) == false) dump.Close(); } while (true); input.Close(); diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index a578fa8..1354928 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -1,14 +1,14 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + APT Extract Templates - Program to extract debconf config and template files - This is a simple program to extract config and template information + 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 /*{{{*/ @@ -75,7 +75,7 @@ DebFile::~DebFile() string DebFile::GetInstalledVer(const string &package) { pkgCache::PkgIterator Pkg = Cache->FindPkg(package); - if (Pkg.end() == false) + if (Pkg.end() == false) { pkgCache::VerIterator V = Pkg.CurrentVer(); if (V.end() == false) @@ -120,8 +120,8 @@ bool DebFile::DoItem(Item &I, int &Fd) Config = new char[I.Size+1]; Config[I.Size] = 0; Which = IsConfig; - Fd = -2; - } + Fd = -2; + } else if (strcmp(I.Name, "templates") == 0) { delete [] Template; @@ -129,8 +129,8 @@ bool DebFile::DoItem(Item &I, int &Fd) Template[I.Size] = 0; Which = IsTemplate; Fd = -2; - } - else + } + else { // Ignore it Fd = -1; @@ -171,7 +171,7 @@ bool DebFile::ParseInfo() if (Section.Scan(Control, ControlLen) == false) return false; - Package = Section.Find(pkgTagSection::Key::Package).to_string(); + Package = Section.Find(pkgTagSection::Key::Package); Version = GetInstalledVer(Package); const char *Start, *Stop; @@ -210,7 +210,7 @@ bool DebFile::ParseInfo() if (Start == Stop) break; } } - + return true; } /*}}}*/ @@ -249,7 +249,7 @@ static void WriteConfig(const DebFile &file) if (templatefile.empty() == true || configscript.empty() == true) return; - cout << file.Package << " " << file.Version << " " + cout << file.Package << " " << file.Version << " " << templatefile << " " << configscript << endl; } /*}}}*/ @@ -257,7 +257,7 @@ static void WriteConfig(const DebFile &file) // --------------------------------------------------------------------- /* */ static bool Go(CommandLine &CmdL) -{ +{ // Initialize the apt cache MMap *Map = 0; pkgSourceList List; @@ -303,17 +303,17 @@ static bool Go(CommandLine &CmdL) if (file.PreDepVer != "" && DebFile::Cache->VS->CheckDep(debconfver.c_str(), file.PreDepOp,file.PreDepVer.c_str() - ) == false) + ) == false) continue; WriteConfig(file); } } - + delete Map; delete DebFile::Cache; - + return !_error->PendingError(); } /*}}}*/ diff --git a/cmdline/apt-extracttemplates.h b/cmdline/apt-extracttemplates.h index bbd926e..e0451ec 100644 --- a/cmdline/apt-extracttemplates.h +++ b/cmdline/apt-extracttemplates.h @@ -24,10 +24,10 @@ class DebFile : public pkgDirStream 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; + ~DebFile() override; + bool DoItem(Item &I, int &fd) override; + bool Process(pkgDirStream::Item &I, const unsigned char *data, + unsigned long long size, unsigned long long pos) override; bool Go(); bool ParseInfo(); diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 2828ad6..ae23563 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -263,6 +263,8 @@ static bool DoIndexTargets(CommandLine &CmdL) if (ReleaseInfo) { AddOptions.insert(std::make_pair("TRUSTED", ((*S)->IsTrusted() ? "yes" : "no"))); + if (not (*S)->GetSignedBy().empty()) + AddOptions.insert(std::make_pair("SIGNED_BY", SubstVar(SubstVar(APT::String::Strip((*S)->GetSignedBy()), "\n\n", "\n.\n"), "\n", "\n "))); pkgCache::RlsFileIterator const RlsFile = (*S)->FindInCache(*Cache, false); if (RlsFile.end()) continue; diff --git a/cmdline/apt-helper.cc b/cmdline/apt-helper.cc index f48cb29..4404259 100644 --- a/cmdline/apt-helper.cc +++ b/cmdline/apt-helper.cc @@ -201,7 +201,37 @@ static bool DoCatFile(CommandLine &CmdL) /*{{{*/ return true; } /*}}}*/ +static bool DoHashFile(CommandLine &CmdL) /*{{{*/ +{ + FileFd fd; + + if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false) + return false; + for (size_t i = 1; CmdL.FileList[i] != NULL; ++i) + { + std::string const name = CmdL.FileList[i]; + Hashes hashes; + + 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 (hashes.AddFD(fd) == false) + return false; + for (auto hs : hashes.GetHashStringList()) + std::cout << hs.toStr() << std::endl; + std::cout << std::endl; + } + return true; +} + /*}}}*/ static pid_t ExecuteProcess(const char *Args[]) /*{{{*/ { pid_t pid = ExecFork(); @@ -310,16 +340,17 @@ static bool ShowHelp(CommandLine &) /*{{{*/ static std::vector 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")}, - {"wait-online", &DoWaitOnline, _("wait for system to be online")}, - {"drop-privs", &DropPrivsAndRun, _("drop privileges before running given command")}, - {"analyze-pattern", &AnalyzePattern, _("analyse a pattern")}, - {"analyse-pattern", &AnalyzePattern, nullptr}, - {"quote-string", &DoQuoteString, nullptr}, - {nullptr, nullptr, nullptr}}; + {"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")}, + {"hash-file", &DoHashFile, _("hash file")}, + {"auto-detect-proxy", &DoAutoDetectProxy, _("detect proxy using apt.conf")}, + {"wait-online", &DoWaitOnline, _("wait for system to be online")}, + {"drop-privs", &DropPrivsAndRun, _("drop privileges before running given command")}, + {"analyze-pattern", &AnalyzePattern, _("analyse a pattern")}, + {"analyse-pattern", &AnalyzePattern, nullptr}, + {"quote-string", &DoQuoteString, nullptr}, + {nullptr, nullptr, nullptr}}; } /*}}}*/ int main(int argc,const char *argv[]) /*{{{*/ diff --git a/cmdline/apt-internal-planner.cc b/cmdline/apt-internal-planner.cc index c77997a..b850ed6 100644 --- a/cmdline/apt-internal-planner.cc +++ b/cmdline/apt-internal-planner.cc @@ -51,7 +51,7 @@ static bool ShowHelp(CommandLine &) /*{{{*/ return true; } /*}}}*/ -APT_NORETURN static void DIE(std::string const &message) { /*{{{*/ +[[noreturn]] static void DIE(std::string const &message) { /*{{{*/ std::cerr << "ERROR: " << message << std::endl; _error->DumpErrors(std::cerr); exit(EXIT_FAILURE); @@ -68,17 +68,17 @@ class PMOutput: public pkgPackageManager /*{{{*/ bool const Debug; protected: - virtual bool Install(PkgIterator Pkg,std::string) APT_OVERRIDE + bool Install(PkgIterator Pkg,std::string /*filename*/) 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 + bool Configure(PkgIterator Pkg) 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 + bool Remove(PkgIterator Pkg, bool /*Purge*/) override { //std::cerr << "REMOVE: " << APT::PrettyPkg(&Cache, Pkg) << " " << std::endl; return EDSP::WriteSolutionStanza(output, "Remove", Pkg.CurrentVer()); diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc index 094ed18..ceedd96 100644 --- a/cmdline/apt-internal-solver.cc +++ b/cmdline/apt-internal-solver.cc @@ -51,7 +51,7 @@ static bool ShowHelp(CommandLine &) /*{{{*/ return true; } /*}}}*/ -APT_NORETURN static void DIE(std::string const &message) { /*{{{*/ +[[noreturn]] static void DIE(std::string const &message) { /*{{{*/ std::cerr << "ERROR: " << message << std::endl; _error->DumpErrors(std::cerr); exit(EXIT_FAILURE); @@ -119,7 +119,10 @@ int main(int argc,const char *argv[]) /*{{{*/ _config->Set("Debug::EDSP::WriteSolution", true); _config->Set("APT::System", "Debian APT solver interface"); - _config->Set("APT::Solver", "internal"); + if (strcmp(basename(argv[0]), "solver3") == 0) + _config->Set("APT::Solver", "3.0"); + else if (_config->Find("APT::Solver") != "3.0") + _config->Set("APT::Solver", "internal"); _config->Set("edsp::scenario", "/nonexistent/stdin"); _config->Clear("Dir::Log"); FileFd output; diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in deleted file mode 100644 index 0752272..0000000 --- a/cmdline/apt-key.in +++ /dev/null @@ -1,847 +0,0 @@ -#!/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 "$@"; } - -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 all >/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" -} - -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 # required by policy, see #747320 -} - -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 usable 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 -} - -is_supported_keyring() { - # empty files are always supported - if ! test -s "$1"; then - return 0 - fi - local FILEEXT="${1##*.}" - if [ "$FILEEXT" = 'gpg' ]; then - # 0x98, 0x99 and 0xC6 via octal as hex isn't supported by dashs printf - if printf '\231' | cmp -s -n 1 - "$1"; then - true - elif printf '\230' | cmp -s -n 1 - "$1"; then - true - elif printf '\306' | cmp -s -n 1 - "$1"; then - true - else - apt_warn "The key(s) in the keyring $1 are ignored as the file has an unsupported filetype." - return 1 - fi - elif [ "$FILEEXT" = 'asc' ]; then - true #dearmor_filename will deal with them - else - # most callers ignore unsupported extensions silently - apt_warn "The key(s) in the keyring $1 are ignored as the file has an unsupported filename extension." - return 1 - fi - return 0 -} - -foreach_keyring_do() { - local ACTION="$1" - shift - # if a --keyring was given, just work on this one - if [ -n "$FORCED_KEYRING" ]; then - $ACTION "$FORCED_KEYRING" "$@" - else - # otherwise all known keyrings are up for inspection - if accessible_file_exists "$TRUSTEDFILE" && is_supported_keyring "$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" && is_supported_keyring "$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 '{ gsub(/\r/,"") } -/^-----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 - add the key contained in ('-' for stdin)" - echo " apt-key del - remove the key " - echo " apt-key export - output the key " - 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 - if [ -z "$FORCED_KEYRING" -o "$FORCED_KEYRING" = '/dev/null' ]; then - TRUSTEDFILE="$1" - FORCED_KEYRING="$1" - elif [ "$TRUSTEDFILE" = "$FORCED_KEYRING" ]; then - create_gpg_home - FORCED_KEYRING="${GPGHOMEDIR}/mergedkeyrings.gpg" - echo -n '' > "$FORCED_KEYRING" - chmod 0644 -- "$FORCED_KEYRING" - catfile "$TRUSTEDFILE" "$FORCED_KEYRING" - catfile "$1" "$FORCED_KEYRING" - else - catfile "$1" "$FORCED_KEYRING" - fi - ;; - --keyid) - shift - if [ -n "$FORCED_KEYID" ]; then - apt_error 'Specifying --keyid multiple times is not supported' - exit 1 - fi - 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) - if [ "$APT_KEY_NO_LEGACY_KEYRING" ]; then - TRUSTEDFILE="/dev/null" - fi -fi - -command="$1" -if [ -z "$command" ]; then - usage - exit 1 -fi -shift - -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 -E -q 'gpg|gnupg'; then - cat >&2 < "${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})" - fi - - echo >&2 "Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))." -} - -warn_outside_maintscript() { - # In del, we want to warn in interactive use, but not inside maintainer - # scripts, so as to give people a chance to migrate keyrings. - # - # FIXME: We should always warn starting in 2022. - if [ -z "$DPKG_MAINTSCRIPT_PACKAGE" ]; then - echo >&2 "Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))." - 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 - warn_outside_maintscript - 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) - warn_on_script_usage - 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='' - ASSERT_PUBKEY_ALGO='' - eval $(apt-config shell GPGV Apt::Key::gpgvcommand ASSERT_PUBKEY_ALGO Apt::Key::assert-pubkey-algo) - 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 - GPGV_ARGS="" - if [ "$ASSERT_PUBKEY_ALGO" ]; then - test="$(LC_ALL=C.UTF-8 "$GPGV" --assert-pubkey-algo 2>&1 || :)" - case "$test" in - *"missing argument"*) - GPGV_ARGS="--assert-pubkey-algo=$ASSERT_PUBKEY_ALGO" - ;; - *[Ii]"nvalid option"*"assert-pubkey-algo"*) - ;; - *) - apt_warn "Unknown response from gpgv to --assert-pubkey-algo check: $test" - ;; - esac - 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" $GPGV_ARGS --homedir "${GPGHOMEDIR}" --keyring "$(dearmor_filename "${FORCED_KEYRING}")" --ignore-time-conflict "$@" - else - "$GPGV" $GPGV_ARGS --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 index 33716bb..180247c 100644 --- a/cmdline/apt-mark.cc +++ b/cmdline/apt-mark.cc @@ -139,40 +139,6 @@ static bool DoMarkAuto(CommandLine &CmdL) return true; } /*}}}*/ -// helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/ -// FIXME: Copied verbatim from apt-pkg/depcache.cc -static bool ConfigValueInSubTree(const char* SubTree, std::string_view const needle) -{ - if (needle.empty()) - return false; - Configuration::Item const *Opts = _config->Tree(SubTree); - if (Opts != nullptr && Opts->Child != nullptr) - { - Opts = Opts->Child; - for (; Opts != nullptr; Opts = Opts->Next) - { - if (Opts->Value.empty()) - continue; - if (needle == Opts->Value) - return true; - } - } - return false; -} -static bool SectionInSubTree(char const * const SubTree, std::string_view Needle) -{ - if (ConfigValueInSubTree(SubTree, Needle)) - return true; - auto const sub = Needle.rfind('/'); - if (sub == std::string_view::npos) - { - std::string special{"/"}; - special.append(Needle); - return ConfigValueInSubTree(SubTree, special); - } - return ConfigValueInSubTree(SubTree, Needle.substr(sub + 1)); -} - /*}}}*/ /* DoMinimize - minimize manually installed {{{*/ /* Traverses dependencies of meta packages and marks them as manually * installed. */ @@ -192,7 +158,7 @@ static bool DoMinimize(CommandLine &CmdL) auto ver = pkg.CurrentVer(); return ver.end() == false && ((*DepCache)[pkg].Flags & pkgCache::Flag::Auto) == 0 && ver->Section != 0 && - SectionInSubTree("APT::Never-MarkAuto-Sections", ver.Section()); + _config->SectionInSubTree("APT::Never-MarkAuto-Sections", ver.Section()); }; APT::PackageSet roots; diff --git a/cmdline/apt-sortpkgs.cc b/cmdline/apt-sortpkgs.cc index acbb283..8442a95 100644 --- a/cmdline/apt-sortpkgs.cc +++ b/cmdline/apt-sortpkgs.cc @@ -1,13 +1,13 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + 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 /*{{{*/ @@ -46,7 +46,7 @@ struct PkgName /*{{{*/ string Arch; unsigned long Offset; unsigned long Length; - + inline int Compare3(const PkgName &x) const { int A = stringcasecmp(Name,x.Name); @@ -58,7 +58,7 @@ struct PkgName /*{{{*/ } 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;}; @@ -73,7 +73,7 @@ static bool DoIt(string InFile) pkgTagFile Tags(&Fd); if (_error->PendingError() == true) return false; - + // Parse. vector List; pkgTagSection Section; @@ -83,28 +83,28 @@ static bool DoIt(string InFile) while (Tags.Step(Section) == true) { PkgName Tmp; - - /* Fetch the name, auto-detecting if this is a source file or a + + /* Fetch the name, auto-detecting if this is a source file or a package file */ - Tmp.Name = Section.Find(pkgTagSection::Key::Package).to_string(); - Tmp.Ver = Section.Find(pkgTagSection::Key::Version).to_string(); - Tmp.Arch = Section.Find(pkgTagSection::Key::Architecture).to_string(); - + Tmp.Name = Section.Find(pkgTagSection::Key::Package); + Tmp.Ver = Section.Find(pkgTagSection::Key::Version); + Tmp.Arch = Section.Find(pkgTagSection::Key::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()); diff --git a/cmdline/apt.cc b/cmdline/apt.cc index ef58bce..a876085 100644 --- a/cmdline/apt.cc +++ b/cmdline/apt.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -53,6 +54,20 @@ static bool ShowHelp(CommandLine &) /*{{{*/ return true; } /*}}}*/ + +static bool DoWhy(CommandLine &CmdL) /*{{{*/ +{ + pkgCacheFile CacheFile; + APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1); + bool const decision = strcmp(CmdL.FileList[0], "why") == 0; + if (pkgset.size() != 1) + return _error->PendingError() ? false : _error->Error("Only a single argument is supported at this time."); + if (unlikely(not CacheFile.BuildDepCache())) + return false; + for (auto pkg : pkgset) + std::cout << APT::Solver::InternalCliWhy(CacheFile, pkg, decision) << std::flush; + return not _error->PendingError(); +} static std::vector GetCommands() /*{{{*/ { // advanced commands are left undocumented on purpose @@ -78,8 +93,11 @@ static std::vector GetCommands() /*{{{*/ // misc {"edit-sources", &EditSources, _("edit the source information file")}, + {"modernize-sources", &ModernizeSources, _("modernize .list files to .sources files")}, {"moo", &DoMoo, nullptr}, {"satisfy", &DoBuildDep, _("satisfy dependency strings")}, + {"why", &DoWhy, _("produce a reason trace for the current state of the package")}, + {"why-not", &DoWhy, _("produce a reason trace for the current state of the package")}, // for compat with muscle memory {"dist-upgrade", &DoDistUpgrade, nullptr}, diff --git a/completions/bash/apt b/completions/bash/apt index 59a8eaa..9881d5c 100644 --- a/completions/bash/apt +++ b/completions/bash/apt @@ -48,6 +48,7 @@ _apt() "clean" "autoclean" "download" "changelog" "moo" + "modernize-sources" "depends" "rdepends" "policy") @@ -73,7 +74,7 @@ _apt() case ${command-} in install|reinstall|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove|autopurge) COMPREPLY=( $( compgen -W '--show-progress - --fix-broken --purge --verbose-versions --auto-remove + --fix-broken --purge --verbose-versions --no-list-columns --auto-remove -s --simulate --dry-run --download --fix-missing @@ -81,7 +82,7 @@ _apt() --ignore-hold --force-yes --trivial-only - --reinstall --solver + --reinstall --solver --no-strict-pinning -t --target-release'"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) ) return 0 ;; @@ -151,7 +152,7 @@ _apt() -s --simulate --dry-run -P --build-profiles -t --target-release - --purge --solver + --purge --solver --no-strict-pinning '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) ) return 0 ;; diff --git a/debian/NEWS b/debian/NEWS index 749ee47..812e95e 100644 --- a/debian/NEWS +++ b/debian/NEWS @@ -1,3 +1,59 @@ +apt (2.9.24) unstable; urgency=medium + + /etc/apt/trusted.gpg is no longer trusted. Setting the Dir::Etc::trusted + option manually continues to work for some more time. + + sources.list(5) entries without the Signed-By field are deprecated; + migrate any legacy entries to the deb822 .sources format. See the + apt-secure(8) manual page for best practices for signer configuration. + This deprecates the /etc/apt/trusted.gpg.d directory. + + -- Julian Andres Klode Tue, 21 Jan 2025 12:17:36 +0100 + +apt (2.9.19) unstable; urgency=medium + + This release switches to OpenSSL for hashing and TLS, replacing the + GnuTLS and gcrypt libraries. + + This release switches to Sequoia for OpenPGP verification on supported + Debian platforms. A Sequoia policy override enabling SHA1 self-signatures + until 2026 is included. To override the policy, the following environment + variables and files are considered: + + * The APT_SEQUOIA_CRYPTO_POLICY environment variable, and failing that: + - /etc/crypto-policies/back-ends/apt-sequoia.config, + - /var/lib/crypto-config/profiles/current/apt-sequoia.config + * The SEQUOIA_CRYPTO_POLICY environment variable, and failing that: + - /etc/crypto-policies/back-ends/sequoia.config + - /var/lib/crypto-config/profiles/current/sequoia.config + + -- Julian Andres Klode Mon, 23 Dec 2024 12:16:22 +0100 + +apt (2.9.15) unstable; urgency=medium + + This release stops using apt-key to verify the signatures. + Final call to stop using it before it's gone next week. + + Please note that due to the switch to internal verification, APT now + has the same requirements on files in trusted.gpg.d as for other .d + directories: Only alphanumerical characters, '_', '-', ':' and '.' + are supported, other characters such as '@' cause the file to silently + be ignored. + + -- Julian Andres Klode Thu, 28 Nov 2024 19:31:24 +0100 + +apt (2.9.11) unstable; urgency=medium + + The ftp, rsh, and ssh methods have been removed. They have been unsupported + and disabled since 1.8. Please, migrate to http(s) instead, or contribute + an sftp method. + + If you need ad hoc access to a remote repository, you can usually run + `python3 -m http.server` on that machine and use SSH port forwarding to + run HTTP over SSH. + + -- Julian Andres Klode Thu, 07 Nov 2024 14:02:07 +0100 + apt (2.5.2) unstable; urgency=medium Installing or upgrading a binary package now upgrades other binaries from diff --git a/debian/apt-utils.install b/debian/apt-utils.install index 9b304e5..6c2978a 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1,4 +1,3 @@ -usr/bin/apt-extracttemplates usr/bin/apt-ftparchive usr/bin/apt-sortpkgs usr/lib/apt/planners/ diff --git a/debian/apt-utils.links b/debian/apt-utils.links new file mode 100644 index 0000000..1324afc --- /dev/null +++ b/debian/apt-utils.links @@ -0,0 +1,2 @@ +../lib/apt/apt-extracttemplates usr/bin/apt-extracttemplates + diff --git a/debian/apt.install b/debian/apt.install index 767623a..40bcfcf 100644 --- a/debian/apt.install +++ b/debian/apt.install @@ -1,16 +1,17 @@ debian/*.service /usr/lib/systemd/system/ debian/*.timer /usr/lib/systemd/system/ debian/apt.systemd.daily usr/lib/apt +debian/default-sequoia.config usr/share/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/apt-extracttemplates usr/lib/apt/methods/ usr/lib/apt/planners/dump usr/lib/apt/solvers/dump diff --git a/debian/apt.manpages b/debian/apt.manpages index 80dbabd..582c145 100644 --- a/debian/apt.manpages +++ b/debian/apt.manpages @@ -2,7 +2,6 @@ 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-patterns.* @@ -15,7 +14,6 @@ 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-patterns.* diff --git a/debian/changelog b/debian/changelog index f1c4fdf..67c00b7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,33 +1,968 @@ -apt (2.8.0deepin4) unstable; urgency=medium +apt (3.1.3) experimental; urgency=medium - * optimize prompt translation files. - * add reminders for uninstalled packages. + [ Biswapriyo Nath ] + * Include standard headers to fix clang compiler error - -- lhdjply Mon, 23 Jun 2025 17:23:10 +0800 + [ Julian Andres Klode ] + * Fix stuck acquire queues on partial server errors (LP: #2003851) + * tls: Do not trigger assertion after closing connection (Closes: #1107827) + * German translation update (Closes: #1106116) + + [ Américo Monteiro ] + * Portuguese manpages translation update (Closes: #1103640) + + [ bubub ] + * French manpages translation update (Closes: #1103760) + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1104312) + * Dutch manpages translation update (Closes: #1104313) + + [ Miroslav Kure ] + * Czech program translation update (Closes: #1106155) + + -- Julian Andres Klode Tue, 24 Jun 2025 19:31:28 +0200 + +apt (3.1.2) experimental; urgency=medium + + * solver3: Avoid FTBFS with g++ 14.2 on arm{el,hf} + + -- Julian Andres Klode Tue, 10 Jun 2025 21:16:14 +0200 + +apt (3.1.1) experimental; urgency=medium + + * Bump CMAKE_CXX_STANDARD to 23 and fix code + * solver3: Assume manual packages. This orders all the manually + installed packages by preference (as we do for providers), + and ensures that we will not remove manual packages if we + do not need to. + * solver3: Merge intersecting dependencies (LP: #2111792) + When seeing dependencies on the same package, such as + Depends: a (>= 1), a (<< 2) + merge them into a single depends so that both of them + are satisfied by the same package, rather than say + Package: a-0, Provides: a (= 0) - satisfies a (<< 2) + Package: a-2, Provides: a (= 1) - satisfies a (>= 1) + * solver3: Ignore Architecture: all for obsoleted-by. + This avoids a problem in unstable/proposed setups where binaries + are not published together for all architectures, and foo:native + could be considered obsolete because of a newer bar:all. + * solver3: Filter installed Recommends + A currently satisfied Recommends is filtered to the same packages + it is currently satisfied by, ensuring that say, removing a will + not install a `b` to keep a Recommends: a | b satisfied. + * solver3: Minor refactorings + - Remove Work::choice + - solver3: Allow CompareProviders3 with empty package + * solver3: Minor bug fixes + - Handle failed assumption in Pop() + - If no choice was made nothing to invert + (avoid trying to "undo" the root assignment) + - Initialize startTime if not set in Pop() + - solver3: Explicitly declare and define ~Solver + * Avoid cast alignment warning in cache string view + + -- Julian Andres Klode Tue, 10 Jun 2025 17:39:38 +0200 + +apt (3.1.0) experimental; urgency=medium + + [ Julian Andres Klode ] + * debian/NEWS: Document new requirements on trusted.gpg.d (Closes: #1104320) + * test: Fix test-skipped regression in 3.0.1 + * test: Do not use host's sequoia config + * Pass --check to msgfmt and fix broken format strings + * Add 'Include'/'Exclude' options to limit packages used from a repository + 'Include' allows limiting a repository to a allowlist of packages, + 'Exclude' allows removing packages from a repository. + * Introduce apt why, apt why-not + * Update translation templates and merge translations + * Ubuntu: Enable 3.0 solver by default in apt CLI tools + + [ Herman Semenov ] + * apt-pkg: fixed type comparison in 64bit systems using memsize cast + + [ Walter Lozano ] + * Fix error handling with getline + + [ Guillem Jover ] + * dselect: Add https support + * dselect: Pass available file from stdin to dpkg --update-avail + * dselect: Refactor bold printing into its own function + * dselect: Use strict and warnings pragmas + * dselect: Use Term::ANSIColor instead of forking setterm + * dselect: Use qw() instead of lists of quoted strings + * dselect: Replaces obsolete file comment header with copyright and SPDX marker + + [ Simon McVittie ] + * apt_preferences(5): Specify the order in which files are parsed + * sources.list(5): Explicitly say what the precedence order is + + [ Max Coplan ] + * 💬 Recommend use of `apt update` over `apt-get update` + + [ David Kalnischkies ] + * Include everything in our pkg-config autopkgtest + + [ Demi M. Obenour ] + * Fail on stdio errors + + -- Julian Andres Klode Mon, 19 May 2025 19:13:54 +0200 + +apt (3.0.1) unstable; urgency=medium + + [ Laurent Bigonville ] + * Remove boggus option in French manpage translation + + [ Julian Andres Klode ] + * Update Sequoia crypto policy. + Move our cut-offs to February to align with Sequoia, and cut-off more: + - 2024-02: DSA keys retroactively (align with GnuPG config) + - 2026-02: SHA224 hashes + - 2028-02: Brainpool keys (align closer with GnuPG backend) + - 2030-02: RSA2048 keys + These algorithms will not be valid starting on those cut-off dates. + * sqv: Refactor execution of sqv into separate method + * sqv: Warn about signatures that will be rejected by policy within a year + + -- Julian Andres Klode Fri, 25 Apr 2025 23:08:27 +0200 + +apt (3.0.0) unstable; urgency=medium + + [ Julian Andres Klode ] + * And so it begins: Bump the version to 3.0 to mark the start + of a stable series, dedicated to Steve Langasek. + * symbols: Update to 2.9.35 + * solver3: Consider more upgrades more costly when not upgrading + (LP: #2105395) + + [ Frans Spiesschaert ] + * Dutch manpages translation update (Closes: #1100801) + * Dutch program translation update (Closes: #1100807) + + [ Rafael Fontenelle ] + * Brazilian Portuguese program translation update (Closes: #1100964) + + [ Remus-Gabriel Chelu ] + * Romanian program translation update (Closes: #1101535) + + [ Carles Pina i Estany ] + * Catalan program translation update + + [ Helge Kreutzmann ] + * German program translation update (Closes: #1100550) + + [ bubub ] + * French program translation update (Closes: #1100708) + + -- Julian Andres Klode Fri, 04 Apr 2025 22:32:19 +0200 + +apt (2.9.35) unstable; urgency=medium + + * Respect custom LESS/MORE/LV variables (LP: #2103921) + * solver3: Correctly deb822-escape error message in evaluation report + (LP: #2104276) + * pager: Also set SMK in LESS, fix LV=C to be LV=-c (LP: #2104280) + + -- Julian Andres Klode Thu, 27 Mar 2025 22:52:21 +0100 + +apt (2.9.34) unstable; urgency=medium + + [ Julian Andres Klode ] + * Fix uploads to errors.ubuntu.com with whoopsie: + - zstd: The compressor level should be -6, not -19 + - edsp: Add functionality to only write relevant packages + - solver evaluation: write minimized solver dumps + - edsp: Dump minimized Dir::Log::Solver logs + - solver3: Use zstd-compressed, base64-encoded dumps + - solver3: Avoid empty ErrorMessage field in evaluation crash report + * solver3: Only hide ver->pkg clauses, not pkg->ver version selection ones + - previously we hid version information vital to the understanding + - thanks to Helmut Grohne for the report + * solver3: Record manual flag before discovering packages (LP: #2102720) + * solver3: Handle previously satisfied Suggests last and do not install + new packages for Suggests (LP: #2103556) + + [ Johannes Schauer Marin Rodrigues ] + * apt-pkg/solver3.h: avoid static_assert(false) + * cmdline/apt-get.cc: emit Signed-By field and support $(SIGNED_BY) in + apt-get indextargets --format + + [ Christopher Bock ] + * doc/sources.list.5.xml: snapshot infos + + -- Julian Andres Klode Thu, 20 Mar 2025 22:45:30 +0100 + +apt (2.9.33) unstable; urgency=medium + + * 3.0 solver updates: + - Fix detection of satisfied recommends for pkg variables + - Print correct reason when registering dependency + - Correctly determine 'same' or groups (a|c was same as a|b...) + - Fix Recommends/Suggests vs Enhances confusion (LP: #2101800) + - Fix test-resolve-by-keep-new-recommend + * edsp: Set Forbid-New-Install/Forbid-Remove: no if other is set such + that `apt upgrade` dumps are different from `apt-get upgrade` ones + and can be correctly reproduced (as the one in the LP bug above). + * test: Fix some weird editing artefact introduced in 2.9.32 causing + a test to effectively be skipped. + + -- Julian Andres Klode Wed, 12 Mar 2025 19:22:59 +0100 + +apt (2.9.32) unstable; urgency=medium + + * Rewordings and documentation updates: + - Add doc/design/install.md: Installation design + - Replace "GPG error" with "OpenPGP signature verification failed" + * Bug fix: Correctly detect obsolete packages in EDSP + - refactor obsolete checks to use VerFileIterator::Downloadable() + - Consider 0-size debs not downloadable, set a size in EDSP + - edsp: Write 'Size' to the EDSP files + * UX: Produce more human-readable dependency errors in 3.0 solver. + - test: Grep continuation lines in error messages + - solver3: Simplify Var pointer tagging + - solver3: cleanup operators for Var + - solver3: Support pretty printing clauses + - solver3: Verbose error messages + The output now has multiple lines, prints the underlying concrete + dependency (foo Depends bar), and prints paths not taken. + * Bug fixes: + - solver3: bestReason: Only find actual assignments [i.e. when the + path to a decision is determined for printing, we sometimes picked + assignments with the wrong polarity, e.g. when determining "why not foo" + in "foo Conflicts mail-transport-agent" we might have picked a + decision "not exim4" rather than a choice "postfix"]. + - solver3: Do not prefer new installs over manually installed obsoletes. + (LP: #2100247) - We still try dependencies with obsolete packages + last, even if manual, so a "Depends: new" is processed before + "Depends: new | obsolete" either way. + * Feature: Introduce transaction support and upgrade count for pkgDepCache. + - Introduce pkgDepCache::Transaction for transactional depcache updates + - depcache: Add a new UpgradeCount() member + * Feature: Fall back to the 3.0 solver if internal failed, or apport is + installed. + - Evaluate and fall back to the 3.0 solver + - Print --solver 3.0 explanation if both internal and it failed + * Both features have been shipped for several weeks in Ubuntu already and + received minor bug fixes and additional test cases. + + -- Julian Andres Klode Sun, 09 Mar 2025 18:19:14 +0100 + +apt (2.9.31) unstable; urgency=medium + + [ Julian Andres Klode ] + * edsp: Use buffered writes for EDSP dumps + * strutl: Add missing #include [gcc 15] (Closes: #1096322) + * refactor: Deduplicate and Move SectionInSubTree to Configuration + * solver3: Fix test-apt-move-and-forget-manual-sections + * solver3: Fix error stack handling + * test: Improve output cleaning for solver progress + * Fix crash in VersionExtra using --with-source etc (Closes: #1098702) + * test-apt-ftparchive-cachedb: Avoid race condition in test case + + [ Miroslav Kure ] + * Czech program translation update (Closes: #1095976) + + [ Helge Kreutzmann ] + * German program translation update (Closes: #1098456) + * German manpage translation update (Closes: #1099118) + + [ David Kalnischkies ] + * apt-ftparchive: Do not output locale dependent dsc file size + + [ Алексей Шилин ] + * Russian translation update (Closes: #1098937) + + -- Julian Andres Klode Fri, 28 Feb 2025 17:49:31 +0100 + +apt (2.9.30) unstable; urgency=medium + + * Upload libapt-pkg 7.0 ABI transition to unstable: + - Use smart pointers in a whole bunch of places (probably only an API break) + - Add a version script to hide any standard library symbols + - Remove the functions marked as deprecated, such as PrintStatus and _strtabexpand + - Introduce SourceVersion objects in the cache + - Migrate from APT::StringView to std::string view and change a bunch of + functions from std::string to std::string_view. + Thanks to наб for the merge requests, very appreciated, that was a lot + of busywork. + Several other changes were already queued in the previous releases in + #ifdef, please have a look at them. + + -- Julian Andres Klode Sun, 16 Feb 2025 17:58:07 +0100 + +apt (2.9.29) unstable; urgency=medium + + [ Helge Kreutzmann ] + * German program translation update (Closes: #1052411) + * German program translation update (Closes: #1095681) + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1095409) + * Dutch manpages translation update (Closes: #1095411) + + [ Jean-Pierre Giraud ] + * French manpage translation update (Closes: #1088326, #1050876) + + [ Arnaud Rebillout ] + * test: Fix skipping test cases + + [ Peter Krefting ] + * Swedish program translation update (Closes: #1070029) + + [ Julian Andres Klode ] + * Add DepIterator::IsSatisfied(PkgIterator) + * test: Support comments in --skip/--only files + * Major 3.0 solver update, improving version selection, unit propagation, + and as a result significantly performance (2x for apt-tests). Also new: + - Phased updates are now supported + - The number of broken test cases is down from 31 to 9 + - dist-upgrade now installs Essential packages + - The order of alternatives in or groups is now better preserved + - Recommends for upgrades of installed dependencies are now upgraded + to Depends if they are new or previously satisfied; to avoid breaking + Recommends or introducing unsatisfied Recommends in an upgrade. + - A time out of 10s has been added that is checked whenever the solver + backtracks to prevent practically infinite runtime. + + -- Julian Andres Klode Fri, 14 Feb 2025 19:42:43 +0100 + +apt (2.9.28) unstable; urgency=medium + + [ Julian Andres Klode ] + * modernize-sources: Avoid opening /dev/stdout for simulate + * dpkg: Pass --admindir if a different one is specified; fixes issue + where foreign architectures from the host were used when Dir is set. + * Various updates to the '3.0' solver: Particularly it now has a clause + database for reals rather than rediscovering clauses when backtracking. + - refactor: Drop unused code, annotate [[nodiscard]] and const, simplify, + extract functions, and particularly introduce the Clause class. + - algorithm: Simplify work ordering. This may cause some changes in + how dependencies are resolved. + - algorithm: Replace PropagateInstall() with Discover() and then + propagate based on the stored clauses. Clauses are discovered + from package dependencies and persistent, i.e. they have no + decision level associated. Discovery is incremental so far. + - algorithm: Support comparing packages and versions, such that + we can store both package and version variables in a clause. + - algorithm: Use a package clause for optional roots. This allows + deciding to keep an automatically installed package installed, + without having to decide the version (and hence enqueue common + dependencies first). + - performance: Cache calls to policy. + - performance: Cache all configuration calls + - performance: Point to stored clauses, do not copy them + - performance: Avoid std::vector for statically sized arrays. Due + to adding libstdc++ assertions, vector range checks accounted + for up to 20% of solver runtime. + + [ Christopher Bock ] + * completion: Add modernize-sources (Closes: #1094904) + * edit-sources: don't force .list + + -- Julian Andres Klode Fri, 07 Feb 2025 21:00:48 +0100 + +apt (2.9.27) unstable; urgency=medium + + [ Julian Andres Klode ] + * Symbols: Update for 2.9.23/2.9.25 + * Updates for the '3.0' solver: + - Soft unit propagation for optional items + - Do not accidentally solve new Recommends before hard dependencies + - Use a propagation queue instead of recursively propagating facts + * Correctly calculate kernel size in /boot (Closes: #1085184) + * Measure BootSize as integer + + [ Boyuan Yang ] + * po/zh_CN.po: Refresh Simplified Chinese translation for apt + + [ Rafael Fontenelle ] + * Brazilian Portuguese program translation update (Closes: #1092563) + + [ David Kalnischkies ] + * Cleanups and fixes for cache counters/size fields: + - Do not overflow ver/desc<->file relation counters + - Drop unused description size info from binary cache + - Drop unused version stanza size info from binary cache + - Do not create descriptions structs for each architecture + - Record all available sources for descriptions + - Include Extra in the size counted for Version struct + + [ Samuel Thibault ] + * Also support debian-ports modernization + + -- Julian Andres Klode Mon, 03 Feb 2025 13:44:58 +0100 + +apt (2.9.26) unstable; urgency=medium + + [ Sam Hartman ] + * Fix regression that prevented sending intermediate client certificates + + [ Andreas Rönnquist ] + * apt-secure manual page is in manual section 8 -apt (2.8.0deepin3) unstable; urgency=medium + [ Julian Andres Klode ] + * apt: Introduce the modernize-sources command + * Make notices about .list sources without signed-by less obnoxious + You get a single line telling you about modernize-sources now, unless + you run --audit (or have deb822 files without Signed-By). + * Documentation updates: + - Deprecate legacy one-line-style format harder. Removal not before 2029. + - Set signed-by/Signed-By in sources.list(5) short examples for Debian, Ubuntu + - Update Debian, Ubuntu example default sources to best practices: + We now ship debian.sources/ubuntu.sources instead of sources.list + - Update codenames for trixie, plucky as stable + + -- Julian Andres Klode Tue, 28 Jan 2025 19:49:53 +0100 + +apt (2.9.25) unstable; urgency=medium + + * sqv, gpgv: Do not fail if Dir::Etc::Trusted is set and trusted.gpg.d is missing + + -- Julian Andres Klode Wed, 22 Jan 2025 11:07:01 +0100 + +apt (2.9.24) unstable; urgency=medium + + * gitlab-ci: Use platform: linux/i386 instead of i386/debian image + * Warn about missing Signed-By in .list format, this deprecates + /etc/apt/trusted.gpg.d. + * Remove superseded warning about trusted.gpg fallback + * Unset Dir::Etc::trusted, this removes /etc/apt/trusted.gpg from + the trusted path. + + -- Julian Andres Klode Tue, 21 Jan 2025 12:17:24 +0100 + +apt (2.9.23) unstable; urgency=high + + [ David Kalnischkies ] + * Write Pre-Depends with a dash again in EDSP (Closes: #1093254) + * Grep for more evil in test as a signature can contain evil + + [ Julian Andres Klode ] + * Workaround gcc 14.2.0-9 regression in no-tree-slp-vectorize on Graviton; + this prevented https connections from working. - * add a prompt for uninstalling critical system packages + -- Julian Andres Klode Fri, 17 Jan 2025 20:37:48 +0100 - -- lhdjply Mon, 23 Jun 2025 12:01:10 +0800 +apt (2.9.22) unstable; urgency=medium -apt (2.8.0deepin2) unstable; urgency=medium + [ Balint Reczey ] + * apt-pkg/deb/debsystem.cc: Fall back to "dpkg" when Dir::Bin::dpkg is not found - * add a warning regarding `apt upgrade' usage. + [ Julian Andres Klode ] + * debian/changelog: v3 signature packet, not v3 subkey + * Ensure we can build with APT_PKG_ABI > 601 + * ssl: Set an error when we receive SSL_ERROR_SYSCALL + * ssl: Explictly return -1 (error) or 0 (server closed connection) + * abicheck: Add some workarounds to avoid errors + * t/i/test-method-gpgv-legacy-keyring: Switch to http, extend + * proxy: Avoids triggering bounds check in std::string_view + * methods/connect: Avoid unused argument warning - -- LiChengGang Mon, 29 Jul 2024 17:16:50 +0800 + [ David Kalnischkies ] + * Resolve autopkgtest failures caused by dpkg >= 1.22.12 (Closes: #1092090) + * Try stomping a little less on global macro namespace + * Add pkgCache::{Priority,DepType}_NoL10n to avoid duplication + * Replaces macros with C++ attributes: APT_OVERRIDE, APT_ARRAY_SIZE, APT_NORETURN, + APT_DEPRECATED, APT_UNUSED, APT_MUSTCHECK, APT_IGNORE_DEPRECATED + * Drop SourceListWarnings::NonFreeFirmware messages + * Remove leftovers of the apt-key removal + * Move apt-extractexamples desc line from apt-utils to apt (Closes: #1091344) + * Remove leftovers from ftp and rsh/ssh methods removal + * Change multi sources.list entry example from FTP to HTTPS -apt (2.8.0deepin1) unstable; urgency=medium + [ Sergio Durigan Junior ] + * d/t/control: Don't depend on gdb-minimal. - * Revert 64-bit time_t transition changes. - * Do not conflicts against libnettle8 (<< 3.9.1-2.2~). - juliank: it is one of the t64 workarounds to force libnettle8t64 to be - installed and apt to be upgraded rather than both being kept back - * Apply deepin changes. + -- Julian Andres Klode Tue, 14 Jan 2025 18:33:08 +0100 - -- Tianyu Chen Mon, 06 May 2024 14:34:27 +0800 +apt (2.9.21) unstable; urgency=medium -apt (2.8.0) noble; urgency=medium + [ Simon McVittie ] + * sources.list(5): Suggest VENDOR.sources for new systems + + [ Guillem Jover ] + * Remove non-US leftovers in code and documentation + * Remove obsolete references to ftp://ftp.debian.org + * Use deb.debian.org instead of ftp.debian.org URLs + + [ Julian Andres Klode ] + * Extend v3 signature packet expiry to 2026, owing to OBS use + * sqv: Avoid propagating errors between files (Closes: #1091679) + * http: seccomp: Allow reading directories (Closes: #1091351) + * test: Check "${METHODSDIR}/sqv" not "/usr/bin/sqv" + * Unfuzzy documentation translations + * Run update-po4a + + -- Julian Andres Klode Wed, 01 Jan 2025 22:48:55 +0100 + +apt (2.9.20) unstable; urgency=medium + + * symbols: Merge 2.9.19 and fix version for InsertErrno + * Re-include std:: symbols in the symbols file as optional again + + -- Julian Andres Klode Sat, 28 Dec 2024 22:59:50 +0100 + +apt (2.9.19) unstable; urgency=medium + + * Replace GnuTLS and gcrypt with OpenSSL + * Replace GnuPG with Sequoia on supported Debian platforms + - methods: Add new sqv method + - debian: Add default policy to allow SHA-1 self-signatures until 2026 + - debian: Plug sqv into the package build + * Smaller bits: + - apt-helper: Add a hash-file helper to debug file hashing + - Use sq in the test suite, remove apt-key + - abicheck: Add symbol-merge.py helper + - Symbols: Merge stable, noble, testing, unstable + + -- Julian Andres Klode Mon, 23 Dec 2024 12:16:19 +0100 + +apt (2.9.18) unstable; urgency=medium + + * Fix out-of-bounds read in `apt show :` (Closes: #1090068) + * Introduce git-like automatic pager for apt(8), emulating git behavior. + It is enabled for the show, list, search, policy, showsrc commands. + The pager can be set using APT_PAGER or PAGER and defaults to `pager` + * Add initial pinning information to apt show --full. + The fields `APT-Pin`, `APT-Candidate`, and `APT-Release` provide + pinning information. It is not yet possible to see multiple sources, + and the per-source pinning is not shown. + * gpgv: Extract VerifyDetachedSignatureFile() + + -- Julian Andres Klode Thu, 19 Dec 2024 18:38:04 +0100 + +apt (2.9.17) unstable; urgency=medium + + * solver3: + - Fix intransitivity of version comparison on upgrade, this + means no-strict-pinning gets the correct order now. + - Add a missing debug level check + - Reject all non-candidates outright for strict pinning + * gpgv: Merge all keyrings into a single one again. This fixes + issues with arbitrary gpgv restrictions, such as strange + filenames or more than 40 keys + * Stop installing apt-key, make it a test suite helper + - gpgv: Drop references to apt-key + - Remove the apt-key manual page and add documentation to apt-secure + + -- Julian Andres Klode Sat, 07 Dec 2024 17:12:51 +0100 + +apt (2.9.16) unstable; urgency=medium + + * Avoid extension check for .gpg in Signed-By keyrings (Closes: #1088656) + A warning for extensions other than .pgp and .gpg will be introduced at + a later point, but not now as we try to be bug compatible. + + -- Julian Andres Klode Fri, 29 Nov 2024 09:45:11 +0100 + +apt (2.9.15) unstable; urgency=medium + + [ David Kalnischkies ] + * Collect unprinted Ign errors for display in Err output + + [ Julian Andres Klode ] + * Stop using apt-key for signature verification + - test-apt-cdrom: Hande assert-pubkey-algo like other gpgv messages + - Fix accidental ABI break in debListParser::ParseDepends + - tagfile: Avoid uninitialized variable warnings + - gpgv: Generalize apt_error to apt_msg(), add apt_warning() + - Do not implode key file name vector for calling gpgv + - apt-key: Only cat supported keyrings into the merged one + - apt-key: Temporarily accept 'pub' as an extension for binary gpg keys + - gpgv: Explictly pass all the keyrings to gpgv from apt + - gpgv: Use std::string instead of const char * + - strutl: Add Base64Decode + - gpgv: Verify keyrings and dearmor outside apt-key + - Directly call gpgv instead of apt-key + - gpgv: Add direct support for --assert-pubkey-algo + - fileutl: Use execvp() in Popen() instead of execv() + - Detect working gpgv using gpgv --dump-options + + -- Julian Andres Klode Thu, 28 Nov 2024 19:33:03 +0100 + +apt (2.9.14) unstable; urgency=medium + + [ Julian Andres Klode ] + * test: Do not fail if valgrind is not available + * test: Handle gpgv-sq differeces and test with it + * apt-key: Prefer gpgv-sq if installed + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1087458) + * Dutch manpages translation update (Closes: #1087461) + + [ Алексей Шилин ] + * Russian program translation update (Closes: #1087804) + + [ Luca Vercelli ] + * Italian program translation update (Closes: #1081992) + + [ David Kalnischkies ] + * Fixes for several compile-time warnings: + - Acknowledge non-erase usage of remove_if for volatile sources + - Fix expired std::string usage in APT::StringView testcase + - Add a virtual destructor to private CacheSet Matcher + - Avoid unnormalized paths for CMake install destinations + - Tag hidden acquire classes as final for devirtualization + * Support uncompressed indexes from partial file:/ mirrors, and + other fixes for the acquire system: + - Show hashes calculated by main thread in error messages + - Alternatively calculate alternative file hashes in file method + - Rewrite hidden config option checker for more patterns + - Allow AutoDetectProxy to work with more than just http(s) + - Do not assume mirror-URIs end in a filename causing a hang + - Do not change UsedMirror on local copy of InRelease + - Clear previous ignored errors before processing acquire item again + - Never consider file/copy/cdrom sources bad sites due to errors + - Allow HashSum mismatches to fallback to other mirrors + - Look at non by-hash paths in copy and file methods + + -- Julian Andres Klode Fri, 22 Nov 2024 17:13:23 +0100 + +apt (2.9.13) unstable; urgency=medium + + * Add a --comment option to record Comment: in history + * Hardening: Add -Wp,-D_GLIBCXX_ASSERTIONS to CXXFLAGS to enable bounds + checking for all STL containers. + * patterns: Avoid out-of-bounds std::string_view read. + We only pass NUL-terminated strings to the function, and the code expects + that but we pass through an interface which doesn't guarantee that, so + we trigger an index < size() assertion when accessing the terminating + NUL byte when compiled with -Wp,-D_GLIBCXX_ASSERTIONS. + * ftparchive: Remove fixed size buffers on trusted inputs (LP: #2087848) + - ftparchive: override: Remove fixed-size line buffers in override files + - ftparchive: cachedb: Remove 600-byte key (and hence file path) limit + - ftparchive: writer: Remove line length limit on file lists + * tests: Temporarily disable valgrind-if-available on armhf and ppc64el + to avoid having to wait for a new valgrind without those architectures + + -- Julian Andres Klode Wed, 20 Nov 2024 15:59:46 +0100 + +apt (2.9.12) unstable; urgency=medium + + [ наб ] + * More refactorings for string_view + * Provide a DEFER() macro for cleanup of local variables + + [ Julian Andres Klode ] + * string_view: Include missing headers, fixes rust-rust-apt failure + * Handle Retry-After by default + + [ Felix Moessbauer ] + * http: use Retry-After HTTP header to optimize retries + * http: add test for Retry-After handling + + -- Julian Andres Klode Mon, 18 Nov 2024 15:03:10 +0100 + +apt (2.9.11) unstable; urgency=medium + + [ Julian Andres Klode ] + * Various refactorings to the 3.0 solver + * Remove ftp, rsh, ssh methods (disabled since 1.8) + * Apply messaging fixes from Robert Krátký + * Fix keeping back removals of obsolete packages (LP: #2078720) + * Return an error if ResolveByKeep() is unsuccessful (LP: #2078720) + * Move apt-extracttemplates to /usr/lib/apt in 'apt' package + * json: Add "options" array to JSON hooks; adjust test cases accordingly + + [ наб ] + * Refactor buffers into std::array and bump sizes, improving performance: + - Bump various buffer sizes to the default APT_BUFFER_SIZE + - Turn char[APT_BUFFER_SIZE] buffers into std::array + - Turn std::unique_ptr>(APT_BUFFER_SIZE) buffers into std::array + - dpkgpm: use sysconf(_SC_GETPW_R_SIZE_MAX)-sized + growing buffer for getpwuid_r() instead of 255 + - dpkgpm: use std::array for I/O copy buffers + * File reading changes, fixing static line size limitations: + - dpkgpm: lift out CopyIndented() and make_unique_*() for FILEs; use getline() for reading lines instead of 1k buffer + - dpkgpm: use getline() for Apport var/crash lines + - dpkgpm: fdopen() failing doesn't close the fd + * Only run valgrind in tests if valgrind available on host + * ReportMirrorFailureToCentral: fix use-after-free + * Non-functional changes: + - Replace constant-size never-reallicated getservbyport_r() std::vector buffer with std::array + - FileFd::Open: don't needlessly copy filename in three-arg constructor + - Replace std::bind with lambdas + - Turn unique_ptr into real deleter types (warnings now, UB in C++20) + - dpkgpm: append ":$printarchitecture" instead of ':'+${#printarchitecture} to package name + - Prepare for APT::StringView -> std::string_view + + [ Américo Monteiro ] + * Portuguese manpages translation update (Closes: #1086336) + + [ Miroslav Kure ] + * Czech program translation update (Closes: #1087220) + + -- Julian Andres Klode Thu, 14 Nov 2024 18:29:35 +0100 + +apt (2.9.10) unstable; urgency=medium + + [ Rafael Marian ] + * Fixed missing spaces in apt-mark(8) (Closes: #959854) + * Update manual link in apt-secure(8) (Closes: #1050616) + * Fix misspeling in italian apt --help (Closes: #967973) + + [ David Kalnischkies ] + * Ignore pending input before confirmation prompts (Closes: #1082956) + * Show prompt reply if input is from non-terminal + + [ Julian Andres Klode ] + * extracttar: Move large buffer to heap for valgrind + + [ Christopher Bock ] + * apt-patterns(7): document recommends + + [ Raziel Anarki ] + * Support --target-release in `apt list` + + -- Julian Andres Klode Tue, 22 Oct 2024 18:47:04 +0200 + +apt (2.9.9) unstable; urgency=medium + + [ Chongyun Lee ] + * Fix compilation error with clang/libc++ 18 + + [ Julian Andres Klode ] + * Implement 'Pin: source-version ' + * Fix buffer overflow, stack overflow, exponential complexity in + apt-ftparchive Contents generation (LP: #2083697) + - ftparchive: Mystrdup: Add safety check and bump buffer size + - ftparchive: contents: Avoid exponential complexity and overflows + - test framework: Improve valgrind support + - test: Check that apt-ftparchive handles deep paths + + [ Remus-Gabriel Chelu ] + * Romanian program translation update (Closes: #1080210) + + -- Julian Andres Klode Thu, 17 Oct 2024 09:41:18 +0200 + +apt (2.9.8) unstable; urgency=medium + + [ Aristo Chen ] + * Do not return error if `Signed-By` value in source list is empty + + [ Carles Pina i Estany ] + * Update Catalan translation + + [ Julian Andres Klode ] + * Fix obsoleted-by handling for experimental in 3.0 solver + + -- Julian Andres Klode Mon, 12 Aug 2024 16:12:43 +0200 + +apt (2.9.7) unstable; urgency=medium + + [ sid ] + * Show installed version (not candidate version) while removing a package + + [ David Kalnischkies ] + * Parse snapshot option for apt show/list (Closes: #1075819) + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1075874) + * Dutch manpages translation update (Closes: #1075875) + + [ Michał Kułach ] + * Polish program translation update (Closes: #1075975) + + [ Julian Andres Klode ] + * worker: Add an audit level to log audit messages + * gpgv: Add a LaterWorthless level, a SoonWorthless but at 'audit' level + * gpgv: Add IsAssertedPubKeyAlgo() function + * Only revoke weak RSA keys for now, add 'next' and 'future' levels + (LP: #2073126) + * solver3: Refactor Reason.Pkg()/Reason.Ver() use with iterator + * Add note that redundant 'CLI interface' is intentional + + -- Julian Andres Klode Tue, 30 Jul 2024 13:19:24 +0900 + +apt (2.9.6) unstable; urgency=medium + + * solver3: Do not accidentally promote Replaces and Enhances to + dependencies; this fixes a regression in 2.9.5 when we added + code to promote currently satisfied Suggests to Depends. + * solver3: Unmark packages before setting any in ToDepCache + * solver3: Refactor (rewrite) FromDepCache() (Closes: #1071519) + This was intended to not have any behavioural changes, but verifying + the things that changed actually showed that they fixed subtle bugs. + * solver3: Consider packages as obsolete and not versions; this makes things + a bit easier to reason about. + * solver3: Only demote obsolete packages in choices for upgrades; this + fixes packages being needlessly replaced in apt install. + + -- Julian Andres Klode Tue, 02 Jul 2024 22:20:36 +0200 + +apt (2.9.5) unstable; urgency=medium + + [ Julian Andres Klode ] + * CI: Set /bin/sh shell for travis user, so flock -c works + * Fix test cases for non-amd64 architectures + * edsp: Parse source version from the Source-Version field + * Check gpgv --dump-options for --assert-pubkey-algo support. + Thanks to Justus Winter for the idea + * Make the failure mode for non-executable tests stronger + * solver3: Do not dump sizes that are clearly pointers + * solver3: Group work items + * solver3: Remove no longer necessary comparisons + * solver3: Order obsolete choices last + + [ Noah Meyerhans ] + * Fix spelling of @SNAPSHOTID@ in apt.conf.5.xml (Closes: #1072189) + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1072493) + * Dutch manpages translation update (Closes: #1072494) + + -- Julian Andres Klode Thu, 13 Jun 2024 21:04:40 +0200 + +apt (2.9.4) unstable; urgency=medium + + [ David Kalnischkies ] + * Fix accidental silencing of output differences in tests + * Do not mark new if we have already installed providers + * Do not save new if we have already installed providers (Closes: #839546) + * Deal better with spurious spaces in arch restrictions (Closes: #1071219) + + [ Julian Andres Klode ] + * pkgcachegen: Do not try to chmod or write to /dev/null (LP: #2067138) + * test: Show statistics for parallel tests too + * test: Run working tests against the 3.0 solver, and adjust as many as possible + (more bug fixes in a further release) + - test: Temporarily ignore autoremovable lists for solver3 + - test: Support the 3.0 solver in most existing test cases + * Various improvements to the 3.0 solver: + - edsp: solver3: Show some progress + - solver3: Implement APT::Solver::RemoveManual to allow removing manual packages + - solver3: Promote satisfied Suggests to Recommends + - solver3: Solve optional dependencies before optional packages + - solver3: Try candidate before installed version on upgrade + - solver3: Use stable sort + - solver3: Actually restore unsolved items rather than solved ones + - solver3: Fix translations of removals for marked install + + -- Julian Andres Klode Sat, 25 May 2024 10:58:49 +0200 + +apt (2.9.3) unstable; urgency=medium + + [ Julian Andres Klode ] + * Initial implementation ("alpha") of the 3.0 solver: + This new solver is available using the --solver 3.0 option. + Highlights: + - Fully backtracking solver, think DPLL without pure literal elimination + - Manually installed packages are not offered up for removal + - New --no-strict-pinning option allows APT to fallback to non-candidate + versions, e.g. apt install --no-strict-pinning foo/experimental installs + foo from experimental and will switch dependencies where needed. + - Autoremove is more aggressive and only keeps the strongest automatically + installed package. For example, gcc- will now be offered for + removal and no longer kept around due libtool Depends: gcc | c-compiler + and gcc- Provides: c-compiler, as `gcc` is already satisfied. + Caveats right now: + - Test suite is not yet passing + - The list of automatically removable packages is not displayed + when automatically installed packages are not removed + - Error information gets lost on backtracking (see Debug::APT::Solver=2) + - Error information is just rendered as A -> B implication graphs, + with some nodes perhaps containing a "not". + - The logic for replacing obsolete manually installed packages with + new replacement packages (think Conflits/Replaces/Provides) is not + yet implemented. + - Conflict-driven clause learning is not implemented, so backtracking + is technically pretty inefficient. + * Solver3 integration fixes: + - test: Ignore progress output in comparing output.. + - test-allow-scores-for-all-dependency-types: Adjust for solver3 + - EDSP: Add "solver3" alias for apt-internal-solver + * UI work: + - Highlight essential removals with action::remove color + - The text of notices and audits shall not be bold + - Separate columns by 2 spaces in lists (Closes: #1070064) + * Support src:name shortcuts in showsrc, source, build-dep commands + + [ David Kalnischkies ] + * Do not ignore if a cmake execute_process fails + * Avoid figuring which kept pkgs are phased if we don't display it + * Match version constraints before saving garbage packages + * Do not upgrade rev-deps ear-marked for removal + * Drop sudo-related envvars in testing framework + * Add test for dealing with unsat Suggests promoted to Recommends + * Allow parsing an empty Provides line (Closes: #1069874) + + [ Frans Spiesschaert ] + * Dutch program translation update (Closes: #1070142) + * Dutch manpages translation update (Closes: #1070143) + + -- Julian Andres Klode Tue, 14 May 2024 13:01:31 +0200 + +apt (2.9.2) unstable; urgency=medium + + [ Julian Andres Klode ] + * Output customization and color refactoring: + - Also respect an APT_NO_COLOR variable + - Add a --color, --no-color option + - Add APT::Configuration::color helper to colorize things + - Use APT::Configuration::color to apply color to output + - Configure individual action colors using APT::Color::Action + - apt.conf(5): Document the APT::Color scope + * Introduce the new --audit error level + - Add an "audit" error level, and change the default to notice + - Add an --audit option to switch on audit logging + - Add an audit message for missing InRelease files + * Change the rendering for notices, warnings, errors: + - i18n: Use Error:/Warning:/Notice: instead of E:/W:/N: + - Render notices without (yellow) color, just in bold + - Keep the entire error/warning/notice message bold + * Other UI changes: + - apt update: Show upgradable package count in bold + - show: Highlight field names and colorize package name + - Remove spurious newline inside `apt autoremove` message + - Insert blank line following simulation note + - Show "Upgrading:" before other sections + - Only erase OpProgress lines in output version 3.0 + * Test fixes: + - test: configuration: color: reset _config after tests + - build: test: Silence warnings in GTest code + + [ Miroslav Kure ] + * Czech program translation update (Closes: #1068943) + + [ Boyuan Yang ] + * Simplified Chinese program translation update (Closes: #1069118) + + [ David Kalnischkies ] + * Allow no spaces for the last dependency in ParseDepends, too (LP: #2061834) + + -- Julian Andres Klode Mon, 22 Apr 2024 19:36:30 +0200 + +apt (2.9.1) unstable; urgency=medium + + [ Julian Andres Klode ] + * Further UX improvements for apt(8) + - Estimate free space and issue warnings if exceeded, incl. /boot + + Rename "Installed size:" to "Space needed:" + + Space needed: Show space available in /usr + + Show space estimate for /boot, if separate; or estimate initrd for /usr + + Add warnings if space estimate exceeds free space + - Show downgrades as yellow + - Use "Continue anyway?" if a warning is queued, and default to N + - Use unicode install progress bar on UTF-8 locales + * Hide some of the output formatting and details from translatable strings, + do expect some more translation churn in upcoming uploads. + + [ Rafael ] + * Remove duplicate sentence "Changing held packages:" + + -- Julian Andres Klode Sun, 14 Apr 2024 18:45:28 +0200 + +apt (2.9.0) unstable; urgency=medium + + * Welcome to the APT 3.0 development series. It has a new UI for + apt(8). It has colors, columnar display, some more padding, and + shows removals last (Closes: #755088), making the output more + easy to quickly scan. + + [ David Kalnischkies ] + * Avoid subshell hiding failure report from testfilestats + * Ignore umask of leftover diff_Index in failed pdiff test + * Fix and unfuzzy previous VCG/Graphviz URI change [ Julian Andres Klode ] * Revert "Temporarily downgrade key assertions to "soon worthless"" @@ -35,19 +970,19 @@ apt (2.8.0) noble; urgency=medium launchpad PPAs time to be fixed, but warnings are not safe: Untrusted keys could be hiding on your system, but just not used at the moment. Hence revert this so we get the errors we - want. (LP: #2060721) - * Branch off the stable 2.8.y branch for noble: - - CI: Test in ubuntu:noble images for 2.8.y - - debian/gbp.conf: Point at the 2.8.y branch - - [ David Kalnischkies ] - * Test suite fixes: - - Avoid subshell hiding failure report from testfilestats - - Ignore umask of leftover diff_Index in failed pdiff test - * Documentation translation fixes: - - Fix and unfuzzy previous VCG/Graphviz URI change - - -- Julian Andres Klode Tue, 16 Apr 2024 16:59:14 +0200 + want. + This reverts commit 66998ed3d299bede651ad40368bdb270f5f5b0f9. (LP: #2060721) + * columnar: Fix floating point exception (list is empty if -V) + * OpProgress: Erase lines when done + * apt: Introduce the new terse apt output format 3.0 + * Show Recommends/Suggests for upgrades too, move them down + * Only show Recommends/Suggests for new installs, not upgrades + * Use the same words for the summary + + [ Christian Blichmann ] + * Columnar output for package lists similar to 'ls' + + -- Julian Andres Klode Fri, 12 Apr 2024 20:17:34 +0200 apt (2.7.14) unstable; urgency=medium diff --git a/debian/control b/debian/control index 7096ee0..a3e4c45 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,8 @@ Uploaders: Michael Vogt , David Kalnischkies Rules-Requires-Root: no Standards-Version: 4.1.1 -Build-Depends: cmake (>= 3.4), +Build-Depends: dpkg-dev (>= 1.22.5) , + cmake (>= 3.4), debhelper-compat (= 12), docbook-xml , docbook-xsl , @@ -16,8 +17,7 @@ Build-Depends: cmake (>= 3.4), googletest | libgtest-dev , libbz2-dev, libdb-dev, - libgnutls28-dev (>= 3.4.6), - libgcrypt20-dev, + libssl-dev, liblz4-dev (>= 0.0~r126), liblzma-dev, libseccomp-dev (>= 2.4.2) [amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x hppa powerpc powerpcspe ppc64 x32], @@ -28,6 +28,7 @@ Build-Depends: cmake (>= 3.4), ninja-build, pkg-config, po4a (>= 0.34-2) , + sqv (>= 1.3.0) [amd64 arm64 armel armhf i386 mips64el ppc64el riscv64 s390x hurd-amd64 hurd-i386 loong64 powerpc ppc64 sparc64] | gpgv, triehash, xsltproc , zlib1g-dev @@ -38,8 +39,8 @@ Vcs-Browser: https://salsa.debian.org/apt-team/apt Package: apt Architecture: any Depends: base-passwd (>= 3.6.1) | adduser, - gpgv, - libapt-pkg6.0 (>= ${binary:Version}), + ${openpgp:Depends}, + libapt-pkg7.0 (>= ${binary:Version}), ${apt:keyring}, ${misc:Depends}, ${shlibs:Depends} @@ -47,7 +48,7 @@ Replaces: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~) Breaks: apt-transport-https (<< 1.5~alpha4~), apt-utils (<< 1.3~exp2~), aptitude (<< 0.8.10) -Conflicts: apt-verify +Conflicts: apt-verify, libnettle8 (<< 3.9.1-2.2~) Provides: apt-transport-https (= ${binary:Version}) Recommends: ca-certificates Suggests: apt-doc, @@ -68,9 +69,10 @@ Description: commandline package manager 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 is used by debconf to prompt for configuration + questions before installation. -Package: libapt-pkg6.0 +Package: libapt-pkg7.0 Architecture: any Multi-Arch: same Priority: optional @@ -78,8 +80,9 @@ Pre-Depends: ${misc:Pre-Depends} Depends: ${misc:Depends}, ${shlibs:Depends} Breaks: appstream (<< 0.9.0-3~), apt (<< 1.6~), aptitude (<< 0.8.9), libapt-inst1.5 (<< 0.9.9~), dpkg (<< 1.20.8) Recommends: apt (>= ${binary:Version}) +Conflicts: libnettle8 (<< 3.9.1-2.2~) Section: libs -Provides: libapt-pkg (= ${binary:Version}) +Provides: ${t64: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. @@ -92,8 +95,8 @@ Description: package management runtime library 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(s), rsh as well as an interface to add more transports like + * providing different transports to retrieve data over cdrom and + http(s) as well as an interface to add more transports like tor+http(s) (apt-transport-tor). Package: apt-doc @@ -143,8 +146,6 @@ 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. diff --git a/debian/copyright b/debian/copyright index 21b874f..0f0e3f6 100644 --- a/debian/copyright +++ b/debian/copyright @@ -16,11 +16,8 @@ Comment: for the project has always been GPL-2+, so we cannot be sure that contributors meant to grant additional permissions. . - Translation files are considered to generally be GPL-2+, - but they also include strings used by methods/rsh.cc which appears to be GPL-2. - As the translations are split into separate domains later on, - these strings are not loaded by library users outside of apt - (they are in the 'apt' translation domain). + Translation files are also considered to generally be GPL-2+, + but they might include strings used in code with other licenses. . The apt-pkg/contrib/fileutl.cc file states "RunScripts()" is "GPLv2". We believe that this was not meant to exclude later versions of the GPL, @@ -52,22 +49,9 @@ Copyright: 1997-1999 Jason Gunthorpe and others 2014 Anthony Towns License: GPL-2+ -Files: methods/rsh.cc -Copyright: 2000 Ben Collins -License: GPL-2 -Comment: - This file stated: - Licensed under the GNU General Public License v2 [no exception clauses] - . - We believe that this was intended to be not a statement against future - versions of the GPL, but meant to exclude the Qt license exception in - place in APT until that time. - . - We received permission from Ben in 2021 to relicense under GPL-2+, - contributions from Adam Heath and Daniel Hartwig may still have to - be considered GPL-2 for the time being. - . - Other contributions are GPL-2+ +Files: methods/connect.c +Copyright: Copyright (c) 1996 - 2023, Daniel Stenberg, , and many contributors +License: GPL-2+ and curl Files: CMake/FindBerkeley.cmake Copyright: 2006, Alexander Dymo, @@ -153,3 +137,20 @@ License: GPL-2+ Comment: On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: curl + Permission to use, copy, modify, and distribute this software for any purpose + with or without fee is hereby granted, provided that the above copyright + notice and this permission notice appear in all copies. + . + 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 OF THIRD PARTY RIGHTS. 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. + . + Except as contained in this notice, the name of a copyright holder shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in this Software without prior written authorization of the copyright holder. diff --git a/debian/default-sequoia.config b/debian/default-sequoia.config new file mode 100644 index 0000000..0bb0b9c --- /dev/null +++ b/debian/default-sequoia.config @@ -0,0 +1,18 @@ +# Default APT Sequoia configuration. To overwrite, consider copying this +# to /etc/crypto-policies/back-ends/apt-sequoia.config and modify the +# desired values. +[asymmetric_algorithms] +dsa2048 = 2024-02-01 +dsa3072 = 2024-02-01 +dsa4096 = 2024-02-01 +brainpoolp256 = 2028-02-01 +brainpoolp384 = 2028-02-01 +brainpoolp512 = 2028-02-01 +rsa2048 = 2030-02-01 + +[hash_algorithms] +sha1.second_preimage_resistance = 2026-02-01 # Extend the expiry for legacy repositories +sha224 = 2026-02-01 + +[packets] +signature.v3 = 2026-02-01 # Extend the expiry diff --git a/debian/gbp.conf b/debian/gbp.conf index 332a876..a0312de 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -3,7 +3,7 @@ ;preexport = ./prepare-release pre-export prebuild = ./prepare-release pre-build postbuild = ./prepare-release post-build -debian-branch = 2.8.y +debian-branch = main debian-tag = %(version)s export-dir = ../build-area sign-tags = True diff --git a/debian/libapt-pkg6.0.symbols b/debian/libapt-pkg6.0.symbols deleted file mode 100644 index e12f98d..0000000 --- a/debian/libapt-pkg6.0.symbols +++ /dev/null @@ -1,1382 +0,0 @@ -libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER# -* Build-Depends-Package: libapt-pkg-dev - TFRewritePackageOrder@APTPKG_6.0 0.8.0 - TFRewriteSourceOrder@APTPKG_6.0 0.8.0 - (c++)"FileExists(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"IdentCdrom(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&, unsigned int)@APTPKG_6.0" 0.8.0 - (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@APTPKG_6.0" 0.8.0 - (c++)"MountCdrom(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"ParseCWord(char const*&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"ReadPinDir(pkgPolicy&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"RunScripts(char const*)@APTPKG_6.0" 0.8.0 - (c++)"SafeGetCWD[abi:cxx11]()@APTPKG_6.0" 0.8.0 - (c++)"QuoteString(std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_6.0" 0.8.0 - (c++)"ReadPinFile(pkgPolicy&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@APTPKG_6.0" 0.8.0 - (c++)"SetNonBlock(int, bool)@APTPKG_6.0" 0.8.0 - (c++)"flExtension(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"Base64Encode(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"ReadMessages(int, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_6.0" 0.8.0 - (c++)"SetCloseExec(int, bool)@APTPKG_6.0" 0.8.0 - (c++)"StringToBool(std::__cxx11::basic_string, std::allocator > const&, int)@APTPKG_6.0" 0.8.0 - (c++)"UnmountCdrom(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"_GetErrorObj()@APTPKG_6.0" 0.8.0 - (c++)"Base256ToNum(char const*, unsigned long long&, unsigned int)@APTPKG_6.0" 1.0.5 - (c++)"pkgFixBroken(pkgDepCache&)@APTPKG_6.0" 0.8.0 - (c++)"DeQuoteString(__gnu_cxx::__normal_iterator, std::allocator > > const&, __gnu_cxx::__normal_iterator, std::allocator > > const&)@APTPKG_6.0" 0.8.0 - (c++)"DeQuoteString(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"OutputInDepth[abi:cxx11](unsigned long, char const*)@APTPKG_6.0" 0.8.0 - (c++)"ReadConfigDir(Configuration&, std::__cxx11::basic_string, std::allocator > const&, bool const&, unsigned int const&)@APTPKG_6.0" 0.8.0 - (c++)"URItoFileName(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"UTF8ToCodeset(char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator >*)@APTPKG_6.0" 0.8.0 - (c++)"pkgInitConfig(Configuration&)@APTPKG_6.0" 0.8.0 - (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@APTPKG_6.0" 0.8.0 - (c++)"safe_snprintf(char*, char*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@APTPKG_6.0" 0.8.0 - (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"ParseQuoteWord(char const*&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"ReadConfigFile(Configuration&, std::__cxx11::basic_string, std::allocator > const&, bool const&, unsigned int const&)@APTPKG_6.0" 0.8.0 - (c++)"TokSplitString(char, char*, char**, unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"pkgApplyStatus(pkgDepCache&)@APTPKG_6.0" 0.8.0 - (c++)"CheckDomainList(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"CreateDirectory(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"DirectoryExists(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"VectorizeString(std::__cxx11::basic_string, std::allocator > const&, char const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@APTPKG_6.0" 0.8.0 - (c++)"pkgMinimizeUpgrade(pkgDepCache&)@APTPKG_6.0" 0.8.0 - (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool const&, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"WaitFd(int, bool, unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"GetLock(std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_6.0" 0.8.0 - (c++)"Hex2Num(APT::StringView, unsigned char*, unsigned int)@APTPKG_6.0" 1.9~ - (c++)"CopyFile(FileFd&, FileFd&)@APTPKG_6.0" 0.8.0 - (c++)"ExecFork()@APTPKG_6.0" 0.8.0 - (c++)"ExecWait(int, char const*, bool)@APTPKG_6.0" 0.8.0 - (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@APTPKG_6.0" 0.8.0 - (c++)"SubstVar(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"SubstVar(std::__cxx11::basic_string, std::allocator >, SubstVar const*)@APTPKG_6.0" 0.8.0 - (c++)"flNoLink(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"flNotDir(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"ioprintf(std::basic_ostream >&, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"IsMounted(std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"LookupTag(std::__cxx11::basic_string, std::allocator > const&, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"SizeToStr[abi:cxx11](double)@APTPKG_6.0" 0.8.0 - (c++)"TimeToStr[abi:cxx11](unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"_strstrip(char*)@APTPKG_6.0" 0.8.0 - (c++)"flCombine(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"flNotFile(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@APTPKG_6.0" 0.8.0 - (c++)"stringcmp(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"strprintf(std::__cxx11::basic_string, std::allocator >&, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"HashString::SupportedHashes()@APTPKG_6.0" 0.8.0 - (c++)"HashString::_SupportedHashes@APTPKG_6.0" 0.8.0 - (c++)"HashString::HashString(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"HashString::HashString(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"HashString::HashString()@APTPKG_6.0" 0.8.0 - (c++)"OpProgress::CheckChange(float)@APTPKG_6.0" 0.8.0 - (c++)"OpProgress::OpProgress()@APTPKG_6.0" 0.8.0 - (c++)"SourceCopy::~SourceCopy()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqFile::~pkgAcqFile()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::FetchNeeded()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::TotalNeeded()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::MethodConfig::MethodConfig()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::PartialPresent()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Add(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Run(int)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Bump()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Item::Finished()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Item::~Item()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Clean(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Bump()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Cycle()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Startup()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::FindItem(std::__cxx11::basic_string, std::allocator >, pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::Shutdown(bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Queue::~Queue()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::UriEnd()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::OutFdReady()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::MediaChange(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::RunMessages()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Capabilities(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::ReadMessages()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::MethodFailure()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::SendConfiguration()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Pulse()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Start()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::ItemDone()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Construct()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::InFdReady()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Worker::~Worker()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::Shutdown()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::UriBegin()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::GetConfig(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::QueueName(std::__cxx11::basic_string, std::allocator >, pkgAcquire::MethodConfig const*&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::pkgAcquire()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquire::~pkgAcquire()@APTPKG_6.0" 0.8.0 - (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgRecords::pkgRecords(pkgCache&)@APTPKG_6.0" 0.8.0 - (c++)"pkgRecords::~pkgRecords()@APTPKG_6.0" 0.8.0 - (c++)"pkgTagFile::Step(pkgTagSection&)@APTPKG_6.0" 0.8.0 - (c++)"pkgTagFile::~pkgTagFile()@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::Parse(int, char const**)@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::~CommandLine()@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::DumpErrors(std::basic_ostream >&, GlobalError::MsgType const&, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::PopMessage(std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::PushToStack()@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::RevertToStack()@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::MergeWithStack()@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Debug(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Errno(char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Error(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Fatal(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::DebugE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::FatalE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Notice(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Discard()@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::NoticeE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::Warning(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::WarningE(char const*, char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::GlobalError()@APTPKG_6.0" 0.8.0 - (c++)"PackageCopy::~PackageCopy()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::ActionGroup::release()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::ActionGroup::~ActionGroup()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::readStateFile(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::GetRootSetFunc()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkFollowsSuggests()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkFollowsRecommends()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Init(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Update(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Update(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::Sweep()@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDepCache::~pkgDepCache()@APTPKG_6.0" 0.8.0 - (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.9.11~ - (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgSimulate::~pkgSimulate()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::FetchResult::FetchResult()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Configuration(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Log(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Run(bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Fail(std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Fail(bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Status(char const*, ...)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::Redirect(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::MediaFail(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqMethod::~pkgAcqMethod()@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::Open(OpProgress*, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::Close()@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::pkgCacheFile()@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheFile::~pkgCacheFile()@APTPKG_6.0" 0.8.0 - (c++)"pkgIndexFile::Type::GlobalList@APTPKG_6.0" 0.8.0 - (c++)"pkgIndexFile::Type::GlobalListLen@APTPKG_6.0" 0.8.0 - (c++)"pkgIndexFile::Type::GetType(char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgIndexFile::Type::Type()@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::OrderUnpack(std::__cxx11::basic_string, std::allocator >*)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::OrderCritical()@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::OrderConfigure()@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DoRun()@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::WipeFlags(unsigned long)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgOrderList::~pkgOrderList()@APTPKG_6.0" 0.8.0 - (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Set(char const*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Set(char const*, int const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Dump(std::basic_ostream >&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&, int const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::CndSet(char const*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Lookup(char const*, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Configuration(Configuration::Item const*)@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Configuration()@APTPKG_6.0" 0.8.0 - (c++)"Configuration::~Configuration()@APTPKG_6.0" 0.8.0 - (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@APTPKG_6.0" 0.8.0 - (c++)"debListParser::GetPrio(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqArchive::Finished()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqArchive::QueueNext()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcqArchive::~pkgAcqArchive()@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::Type::GlobalList@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::Type::GlobalListLen@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::Type::GetType(char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::ReadMainList()@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::Reset()@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::pkgSourceList()@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::~pkgSourceList()@APTPKG_6.0" 0.8.0 - (c++)"pkgSrcRecords::Find(char const*, bool const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgSrcRecords::Restart()@APTPKG_6.0" 0.8.0 - (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@APTPKG_6.0" 0.8.0 - (c++)"pkgSrcRecords::~pkgSrcRecords()@APTPKG_6.0" 0.8.0 - (c++)"pkgTagSection::TrimRecord(bool, char const*&)@APTPKG_6.0" 0.8.0 - (c++)"pkgTagSection::Trim()@APTPKG_6.0" 0.8.0 - (c++)"OpTextProgress::Done()@APTPKG_6.0" 0.8.0 - (c++)"OpTextProgress::Write(char const*)@APTPKG_6.0" 0.8.0 - (c++)"OpTextProgress::Update()@APTPKG_6.0" 0.8.0 - (c++)"OpTextProgress::OpTextProgress(Configuration&)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::ExpressionMatches(std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::MatchVer(char const*, std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersionMatch::pkgVersionMatch(std::__cxx11::basic_string, std::allocator >, pkgVersionMatch::MatchType)@APTPKG_6.0" 0.8.0 - (c++)"TranslationsCopy::CopyTranslations(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquireStatus::Stop()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquireStatus::Start()@APTPKG_6.0" 0.8.0 - (c++)"pkgAcquireStatus::pkgAcquireStatus()@APTPKG_6.0" 0.8.0 - (c++)"pkgArchiveCleaner::Go(std::__cxx11::basic_string, std::allocator >, pkgCache&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::FixMissing()@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::ConfigureAll()@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::OrderInstall()@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::CreateOrderList()@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgPackageManager::~pkgPackageManager()@APTPKG_6.0" 0.8.0 - (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgProblemResolver::~pkgProblemResolver()@APTPKG_6.0" 0.8.0 - (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"debVersioningSystem::UpstreamVersion[abi:cxx11](char const*)@APTPKG_6.0" 0.8.0 - (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@APTPKG_6.0" 0.8.0 - (c++)"debVersioningSystem::debVersioningSystem()@APTPKG_6.0" 0.8.0 - (c++)"pkgUdevCdromDevices::Scan()@APTPKG_6.0" 0.8.0 - (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@APTPKG_6.0" 0.8.0 - (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@APTPKG_6.0" 0.8.0 - (c++)"pkgVersioningSystem::GlobalList@APTPKG_6.0" 0.8.0 - (c++)"pkgVersioningSystem::GlobalListLen@APTPKG_6.0" 0.8.0 - (c++)"pkgVersioningSystem::GetVS(char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgVersioningSystem::pkgVersioningSystem()@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::Configuration::checkArchitecture(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"APT::CacheSetHelper::~CacheSetHelper()@APTPKG_6.0" 0.8.0 - (c++)"URI::NoUserPassword(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"URI::CopyFrom(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"URI::SiteOnly(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.0 - (c++)"URI::operator std::__cxx11::basic_string, std::allocator >()@APTPKG_6.0" 0.8.0 - (c++)"FileFd::Size()@APTPKG_6.0" 0.8.0 - (c++)"FileFd::Sync()@APTPKG_6.0" 0.8.0 - (c++)"FileFd::Tell()@APTPKG_6.0" 0.8.0 - (c++)"FileFd::Close()@APTPKG_6.0" 0.8.0 - (c++)"FileFd::~FileFd()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::CompTypeDeb(unsigned char)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::DepIterator::operator++()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::GrpIterator::operator++()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::PkgIterator::operator++()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::PkgFileIterator::RelStr[abi:cxx11]()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::ReMap(bool const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::Header::Header()@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::DepType(unsigned char)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::FindGrp(APT::StringView)@APTPKG_6.0" 1.9~ - (c++)"pkgCache::FindPkg(APT::StringView)@APTPKG_6.0" 1.9~ - (c++)"pkgCache::FindPkg(APT::StringView, APT::StringView)@APTPKG_6.0" 1.9~ - (c++)"pkgCache::CompType(unsigned char)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::Priority(unsigned char)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::pkgCache(MMap*, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::~pkgCache()@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::DropRepeats(std::vector, std::allocator >, std::allocator, std::allocator > > >&, char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::FindPackages(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::__cxx11::basic_string, std::allocator >&, pkgCdromStatus*, unsigned int)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::WriteDatabase(Configuration&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::DropBinaryArch(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::WriteSourceList(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::ReduceSourcelist(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::Add(pkgCdromStatus*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::Ident(std::__cxx11::basic_string, std::allocator >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0 - (c++)"pkgCdrom::Score(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::CopyPackages(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::ReconstructChop(unsigned long&, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::ReconstructPrefix(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::ConvertToSourceList(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::ChopDirs(std::__cxx11::basic_string, std::allocator >, unsigned int)@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::GrabFirst(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&, unsigned int)@APTPKG_6.0" 0.8.0 - (c++)"SigVerify::CopyAndVerify(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >, std::vector, std::allocator >, std::allocator, std::allocator > > >)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::DoTerminalPty(int)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::WriteHistoryTag(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::Reset()@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::DoStdin(int)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::OpenLog()@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::CloseLog()@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgDPkgPM::~pkgDPkgPM()@APTPKG_6.0" 0.8.0 - (c++)"pkgPolicy::InitDefaults()@APTPKG_6.0" 0.8.0 - (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.0 - (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, short)@APTPKG_6.0" 0.8.0 - (c++)"pkgPolicy::pkgPolicy(pkgCache*)@APTPKG_6.0" 0.8.0 - (c++)"pkgPolicy::~pkgPolicy()@APTPKG_6.0" 0.8.0 - (c++)"pkgSystem::GlobalList@APTPKG_6.0" 0.8.0 - (c++)"pkgSystem::GlobalListLen@APTPKG_6.0" 0.8.0 - (c++)"pkgSystem::GetSystem(char const*)@APTPKG_6.0" 0.8.0 - (c++)"HashString::VerifyFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_6.0" 0.8.0 - (c++)"HashString::empty() const@APTPKG_6.0" 0.8.0 - (c++)"HashString::toStr[abi:cxx11]() const@APTPKG_6.0" 0.8.0 - (c++)"CommandLine::FileSize() const@APTPKG_6.0" 0.8.0 - (c++)"GlobalError::empty(GlobalError::MsgType const&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgIndexFile::FindInCache(pkgCache&) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Find[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Item::FullTag[abi:cxx11](Configuration::Item const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::FindB(char const*, bool const&) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::FindI(char const*, int const&) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::Exists(char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::FindAny[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::FindDir[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::FindFile[abi:cxx11](char const*, char const*) const@APTPKG_6.0" 0.8.0 - (c++)"Configuration::ExistsAny(char const*) const@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::Type::FixupURI(std::__cxx11::basic_string, std::allocator >&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgTagSection::Find(APT::StringView, char const*&, char const*&) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::Find(APT::StringView, unsigned int&) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::FindI(APT::StringView, long) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::Find(APT::StringView) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::FindULL(APT::StringView, unsigned long long const&) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::FindFlag(APT::StringView, unsigned long&, unsigned long) const@APTPKG_6.0" 1.9~ - (c++)"pkgCache::DepIterator::AllTargets() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::DepIterator::IsCritical() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::GrpIterator::FindPkg(APT::StringView) const@APTPKG_6.0" 1.9~ - (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::PkgIterator::CurVersion() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::PkgIterator::State() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::NewestFile() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::Downloadable() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::TranslatedDescription() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::RelStr[abi:cxx11]() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::VerIterator::Automatic() const@APTPKG_6.0" 0.8.0 - (c++)"pkgCache::sHash(APT::StringView) const@APTPKG_6.0" 1.9~ - (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@APTPKG_6.0" 0.8.0 - (c++)"metaIndex::GetURI[abi:cxx11]() const@APTPKG_6.0" 0.8.0 - (c++)"metaIndex::GetDist[abi:cxx11]() const@APTPKG_6.0" 0.8.0 - (c++)"metaIndex::GetType() const@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for OpProgress@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for SourceCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcqFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcquire@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for PackageCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDepCache@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgSimulate@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcqMethod@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgCacheFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgIndexFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcqArchive@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgTagSection@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for OpTextProgress@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcquireStatus@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgPackageManager@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for debVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for FileFd@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgCache@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for IndexCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for metaIndex@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDPkgPM@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgPolicy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgAcquire::Item@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDepCache::Policy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgSimulate::Policy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgIndexFile::Type@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgSourceList::Type@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for APT::CacheSetHelper@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgCache::Namespace@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for OpProgress@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for SourceCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcqFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcquire@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for PackageCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDepCache@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgSimulate@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcqMethod@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgCacheFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgIndexFile@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcqArchive@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgTagSection@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for OpTextProgress@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcquireStatus@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgPackageManager@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for debVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for FileFd@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgCache@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for IndexCopy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for metaIndex@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDPkgPM@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgPolicy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgSystem@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgAcquire::Item@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDepCache::Policy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgSimulate::Policy@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgIndexFile::Type@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgSourceList::Type@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for APT::CacheSetHelper@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgCache::Namespace@APTPKG_6.0" 0.8.0 - (c++)"vtable for OpProgress@APTPKG_6.0" 0.8.0 - (c++)"vtable for SourceCopy@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcqFile@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcquire@APTPKG_6.0" 0.8.0 - (c++)"vtable for PackageCopy@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDepCache@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgSimulate@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcqMethod@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgCacheFile@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgIndexFile@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcqArchive@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgTagSection@APTPKG_6.0" 0.8.0 - (c++)"vtable for OpTextProgress@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcquireStatus@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgPackageManager@APTPKG_6.0" 0.8.0 - (c++)"vtable for debVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgUdevCdromDevices@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgVersioningSystem@APTPKG_6.0" 0.8.0 - (c++)"vtable for FileFd@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgCache@APTPKG_6.0" 0.8.0 - (c++)"vtable for IndexCopy@APTPKG_6.0" 0.8.0 - (c++)"vtable for metaIndex@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDPkgPM@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgPolicy@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgSystem@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgAcquire::Item@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDepCache::InRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDepCache::DefaultRootSetFunc@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDepCache::Policy@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgSimulate::Policy@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgIndexFile::Type@APTPKG_6.0" 0.8.0 - (c++)"vtable for Configuration::MatchAgainstConfig@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgSourceList::Type@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgSrcRecords::Parser@APTPKG_6.0" 0.8.0 - (c++)"vtable for APT::CacheSetHelper@APTPKG_6.0" 0.8.0 - _config@APTPKG_6.0 0.8.0 - _system@APTPKG_6.0 0.8.0 - debVS@APTPKG_6.0 0.8.0 - pkgLibVersion@APTPKG_6.0 0.8.0 - pkgVersion@APTPKG_6.0 0.8.0 - (c++)"pkgAcquireStatus::~pkgAcquireStatus()@APTPKG_6.0" 0.8.0 - (c++)"IndexCopy::~IndexCopy()@APTPKG_6.0" 0.8.0 - (c++)"pkgArchiveCleaner::~pkgArchiveCleaner()@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgArchiveCleaner@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgArchiveCleaner@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgArchiveCleaner@APTPKG_6.0" 0.8.0 -### architecture specific: va_list - (arch=armel armhf arm64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@APTPKG_6.0" 0.8.15~exp1 - (arch=i386 hurd-i386 kfreebsd-i386 ppc64 ppc64el|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@APTPKG_6.0" 0.8.15~exp1 - (arch=hppa ia64 mips mipsel mips64el sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@APTPKG_6.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_6.0" 0.8.15~exp1 - (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@APTPKG_6.0" 0.8.15~exp1 - (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@APTPKG_6.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_6.0" 0.8.11.4 - (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=arm64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned long&)@APTPKG_6.0" 0.8.11.4 - (arch=alpha|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@APTPKG_6.0" 0.8.11.4 - (arch=powerpc powerpcspe x32|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@APTPKG_6.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_6.0" 0.8.11.4 - (arch=hppa mips mipsel sparc|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=ia64 sparc64 mips64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@APTPKG_6.0" 0.8.11.4 - (arch=sh4|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=ppc64 ppc64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@APTPKG_6.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_6.0" 0.8.11.4 - (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=arm64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4 - (arch=alpha|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@APTPKG_6.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_6.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_6.0" 0.8.11.4 - (arch=hppa mips mipsel sparc|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=ia64 sparc64 mips64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@APTPKG_6.0" 0.8.11.4 1 - (arch=sh4|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@APTPKG_6.0" 0.8.11.4 - (arch=ppc64 ppc64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@APTPKG_6.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_6.0" 0.8.0 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el s390 s390x sparc64 ppc64 ppc64el|c++)"_strtabexpand(char*, unsigned long)@APTPKG_6.0" 0.8.0 -### architecture specific: time_t - (arch=!x32|c++)"FTPMDTMStrToTime(char const*, long&)@APTPKG_6.0" 0.8.0 - (arch=x32|c++)"FTPMDTMStrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0 - (arch=x32|c++)"RFC1123StrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0 - (arch=!x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string, std::allocator > const&, long&)@APTPKG_6.0" 1.9.0 - (arch=x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string, std::allocator > const&, long long&)@APTPKG_6.0" 1.9.0 -### architecture specific: mode_t - (arch=!kfreebsd-i386 !kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned int)@APTPKG_6.0" 1.1~exp9 - (arch=kfreebsd-i386 kfreebsd-amd64|c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned short)@APTPKG_6.0" 1.1~exp9 -### - (c++)"CreateAPTDirectoryIfNeeded(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.2 - (c++)"FileFd::FileSize()@APTPKG_6.0" 0.8.8 - (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@APTPKG_6.0" 0.8.11 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::list, std::allocator > >&)@APTPKG_6.0" 0.8.11 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.11 - (c++)"RealFileExists(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.11 - (c++)"StripEpoch(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.11 - (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@APTPKG_6.0" 0.8.11 - (c++)"FindMountPointForDevice[abi:cxx11](char const*)@APTPKG_6.0" 0.8.12 - (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@APTPKG_6.0" 0.8.12 - (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@APTPKG_6.0" 0.8.12 - (c++)"APT::Configuration::getCompressors(bool)@APTPKG_6.0" 0.8.12 - (c++)"APT::Configuration::getCompressorExtensions[abi:cxx11]()@APTPKG_6.0" 0.8.12 - (c++)"pkgCache::DepIterator::IsNegative() const@APTPKG_6.0" 0.8.15~exp1 - (c++)"Configuration::CndSet(char const*, int)@APTPKG_6.0" 0.8.15.3 - (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.15.3 - (c++)"DeEscapeString(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.15.4 - (c++)"GetModificationTime(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.15.6 - (c++)"pkgSourceList::GetLastModifiedTime()@APTPKG_6.0" 0.8.15.6 - (c++)"pkgCacheFile::RemoveCaches()@APTPKG_6.0" 0.8.15.7 - (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@APTPKG_6.0" 0.8.15.7 -### external dependency resolver ### - (c++)"EDSP::ApplyRequest(std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > > const&, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > > const&, pkgDepCache&)@APTPKG_6.0" 0.8.16~exp2 - (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@APTPKG_6.0" 0.8.16~exp2 - (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_6.0" 0.8.16~exp6 -### generalisation of checksums (with lfs) -- mostly api-compatible available (without sha512 in previous versions) -### large file support - available in older api-compatible versions without lfs ### - (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@APTPKG_6.0" 0.8.16~exp6 - (c++)"OpProgress::SubProgress(unsigned long long, std::__cxx11::basic_string, std::allocator > const&, float)@APTPKG_6.0" 0.8.16~exp6 - (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.16~exp6 - (c++)"OpProgress::Progress(unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"SourceCopy::GetFile(std::__cxx11::basic_string, std::allocator >&, unsigned long long&)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgAcquire::UriIterator::~UriIterator()@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgAcquire::MethodConfig::~MethodConfig()@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgTagFile::Offset()@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"PackageCopy::GetFile(std::__cxx11::basic_string, std::allocator >&, unsigned long long&)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgTagSection::~pkgTagSection()@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@APTPKG_6.0" 0.8.16~exp6 - (c++)"FileFd::Seek(unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"FileFd::Skip(unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"FileFd::Write(void const*, unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"FileFd::Truncate(unsigned long long)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgTagFile@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgTagFile@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6 - (c++)"typeinfo name for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgTagFile@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgSrcRecords@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgAcquire::UriIterator@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgAcquire::MethodConfig@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgAcquire::Queue@APTPKG_6.0" 0.8.16~exp6 - (c++)"vtable for pkgAcquire::Worker@APTPKG_6.0" 0.8.16~exp6 -### remove deprecated parameter - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.16~exp6 - (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@APTPKG_6.0" 0.8.16~exp6 -### used internally by public interfaces - if you use them directly, you can keep the pieces -### orderlist rework: the touched methods are protected - (c++)"pkgPackageManager::SigINTStop@APTPKG_6.0" 0.8.16~exp14 - (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@APTPKG_6.0" 0.8.16~exp14 - (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@APTPKG_6.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_6.0" 0.8.16~exp9 - (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@APTPKG_6.0" 0.8.16~exp9 - (c++)"FileFd::ModificationTime()@APTPKG_6.0" 0.8.16~exp9 - (c++)"FileFd::Open(std::__cxx11::basic_string, std::allocator >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_6.0" 0.8.16~exp9 - (c++)"FileFd::Open(std::__cxx11::basic_string, std::allocator >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@APTPKG_6.0" 0.8.16~exp9 - (c++)"FileFd::ReadLine(char*, unsigned long long)@APTPKG_6.0" 0.8.16~exp9 -### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper) - (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo name for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo name for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9 - (c++)"vtable for APT::PackageContainerInterface@APTPKG_6.0" 0.8.16~exp9 - (c++)"vtable for APT::VersionContainerInterface@APTPKG_6.0" 0.8.16~exp9 -### rework of the packagemanager rework - (c++)"APT::Progress::PackageManagerFancy::HandleSIGWINCH(int)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::~PackageManagerFancy()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::PackageManagerFancy()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::SetupTerminalScrollArea(int)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::Stop()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManager::~PackageManager()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::ConffilePrompt(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Error(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StartDpkg()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Stop()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressDeb822Fd::WriteToStatusFd(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFactory()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::ConffilePrompt(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::Error(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::~PackageManagerProgressFd()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::PackageManagerProgressFd(int)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::StartDpkg()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::Stop()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerProgressFd::WriteToStatusFd(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManager::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerText::~PackageManagerText()@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerText::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::String::Strip(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.9.13~exp1 - (c++)"pkgDPkgPM::BuildPackagesProgressMap()@APTPKG_6.0" 0.9.13~exp1 - (c++)"pkgDPkgPM::DoDpkgStatusFd(int)@APTPKG_6.0" 0.9.13~exp1 - (c++)"pkgDPkgPM::ProcessDpkgStatusLine(char*)@APTPKG_6.0" 0.9.13~exp1 - (c++)"pkgDPkgPM::StartPtyMagic()@APTPKG_6.0" 0.9.13~exp1 - (c++)"pkgDPkgPM::StopPtyMagic()@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo name for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo name for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo name for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo name for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1 - (c++)"typeinfo name for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1 - (c++)"vtable for APT::Progress::PackageManager@APTPKG_6.0" 0.9.13~exp1 - (c++)"vtable for APT::Progress::PackageManagerFancy@APTPKG_6.0" 0.9.13~exp1 - (c++)"vtable for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_6.0" 0.9.13~exp1 - (c++)"vtable for APT::Progress::PackageManagerProgressFd@APTPKG_6.0" 0.9.13~exp1 - (c++)"vtable for APT::Progress::PackageManagerText@APTPKG_6.0" 0.9.13~exp1 - (c++)"APT::Progress::PackageManagerFancy::instances@APTPKG_6.0" 0.9.14.2 - (c++)"APT::Progress::PackageManagerFancy::Start(int)@APTPKG_6.0" 0.9.14.2 -### install foo.deb support - (c++)"flAbsPath(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp1 - (c++)"metaIndex::~metaIndex()@APTPKG_6.0" 1.1~exp1 -### CacheFilter functors - (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@APTPKG_6.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_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::~ANDMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::Matcher::~Matcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::NOTMatcher::NOTMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::NOTMatcher::~NOTMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::OR(APT::CacheFilter::Matcher*)@APTPKG_6.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_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::~ORMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::ORMatcher::ORMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::PackageIsNewInstall::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::PackageIsNewInstall::~PackageIsNewInstall()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile*)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::PackageMatcher::~PackageMatcher()@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::CacheFilter::TrueMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo name for APT::CacheFilter::TrueMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::ANDMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::FalseMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::Matcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::NOTMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::ORMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::PackageIsNewInstall@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::PackageMatcher@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_6.0" 1.1~exp4 - (c++)"vtable for APT::CacheFilter::TrueMatcher@APTPKG_6.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_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::PackageContainerInterface::FromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::PackageContainerInterface::FromName(pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::PackageContainerInterface::FromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::PackageContainerInterface::FromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&, bool)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++|optional=inline)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++)"APT::PackageContainerInterface::FromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&, APT::CacheSetHelper&)@APTPKG_6.0" 0.8.16~exp9 -# (c++)"APT::PackageContainerInterface::FromGroup(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper&)@APTPKG_6.0" 0.9.7 -# (c++)"APT::PackageContainerInterface::FromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper&)@APTPKG_6.0" 0.9.11 - (c++)"APT::CacheSetHelper::canNotFindFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::canNotFindPackage(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::canNotFindVersion(APT::CacheSetHelper::VerSelector, APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::canNotGetCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::canNotGetInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::canNotGetVersion(APT::CacheSetHelper::VerSelector, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFrom(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromPackageName(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::PackageFromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const&, APT::CacheSetHelper::PkgSelector, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::CacheSetHelper::VerSelector, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp4 - (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&, bool)@APTPKG_6.0" 1.1~exp4 - (c++)"typeinfo for APT::PackageContainer, std::allocator > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo for APT::PackageContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo for APT::VersionContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo name for APT::PackageContainer, std::allocator > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo name for APT::PackageContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo name for APT::VersionContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"vtable for APT::PackageContainer, std::allocator > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"vtable for APT::PackageContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"vtable for APT::VersionContainer > >@APTPKG_6.0" 0.8.16~exp9 - (c++)"typeinfo for APT::VersionContainer > >@APTPKG_6.0" 1.1~exp15 - (c++)"typeinfo name for APT::VersionContainer > >@APTPKG_6.0" 1.1~exp15 - (c++)"vtable for APT::VersionContainer > >@APTPKG_6.0" 1.1~exp15 -### all the hashes are belong to us - (c++)"Hashes::GetHashStringList()@APTPKG_6.0" 1.1~exp1 - (c++)"Hashes::Hashes()@APTPKG_6.0" 1.1~exp1 - (c++)"Hashes::~Hashes()@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::find(char const*) const@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::push_back(HashString const&)@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::supported(char const*)@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::usable() const@APTPKG_6.0" 1.1~exp1 - (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_6.0" 1.1~exp1 - (c++)"HashString::operator==(HashString const&) const@APTPKG_6.0" 1.1~exp1 - (c++)"HashString::operator!=(HashString const&) const@APTPKG_6.0" 1.1~exp1 - (c++)"pkgAcqArchive::IsTrusted() const@APTPKG_6.0" 1.1~exp1 - (c++)"pkgAcqFile::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp1 - (c++)"pkgAcqMethod::DropPrivsOrDie()@APTPKG_6.0" 1.1~exp1 - (c++)"pkgAcquire::Item::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp1 - (c++)"pkgAcquire::Item::IsTrusted() const@APTPKG_6.0" 1.1~exp1 - (c++)"typeinfo for Hashes@APTPKG_6.0" 1.1~exp1 - (c++)"typeinfo name for Hashes@APTPKG_6.0" 1.1~exp1 - (c++)"vtable for Hashes@APTPKG_6.0" 1.1~exp1 -### more transactional update - (c++)"pkgAcquire::GetLock(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"pkgAcquire::Item::Dequeue()@APTPKG_6.0" 1.1~exp4 - (c++)"pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc&)@APTPKG_6.0" 1.1~exp4 - (c++)"pkgAcquire::Item::SetActiveSubprocess(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp4 - (c++)"pkgDepCache::MarkAndSweep()@APTPKG_6.0" 1.1~exp4 - (c++)"pkgDepCache::MarkAndSweep(pkgDepCache::InRootSetFunc&)@APTPKG_6.0" 1.1~exp4 -### mixed stuff - (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_6.0" 0.8.16~exp13 - (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@APTPKG_6.0" 0.8.16~exp10 - (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@APTPKG_6.0" 0.8.16~exp10 - (c++)"FileFd::Write(int, void const*, unsigned long long)@APTPKG_6.0" 0.8.16~exp14 - (c++)"_strrstrip(char*)@APTPKG_6.0" 0.9.7.9~exp2 - (c++)"SplitClearSignedFile(std::__cxx11::basic_string, std::allocator > const&, FileFd*, std::vector, std::allocator >, std::allocator, std::allocator > > >*, FileFd*)@APTPKG_6.0" 0.9.7.9~exp2 - (c++)"OpenMaybeClearSignedFile(std::__cxx11::basic_string, std::allocator > const&, FileFd&)@APTPKG_6.0" 0.9.7.9~exp2 - (c++)"Configuration::Dump(std::basic_ostream >&, char const*, char const*, bool)@APTPKG_6.0" 0.9.3 - (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@APTPKG_6.0" 0.9.3 - (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_6.0" 0.9.7 - (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@APTPKG_6.0" 0.9.7 - (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.9.7 - (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@APTPKG_6.0" 0.9.7 - (c++)"APT::Configuration::checkLanguage(std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_6.0" 0.9.7.5 - (c++)"pkgCdrom::DropTranslation(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_6.0" 0.9.7.5 - (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@APTPKG_6.0" 0.9.8 - (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@APTPKG_6.0" 0.9.8 - (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.9.9.1 - (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 0.9.9.1 - (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@APTPKG_6.0" 0.9.9.1 - (c++)"pkgCache::VerIterator::MultiArchType() const@APTPKG_6.0" 0.9.9.1 - (c++)"AutoDetectProxy(URI&)@APTPKG_6.0" 0.9.10 - (c++)"CommandLine::GetCommand(CommandLine::Dispatch const*, unsigned int, char const* const*)@APTPKG_6.0" 0.9.11 - (c++)"CommandLine::MakeArgs(char, char const*, char const*, unsigned long)@APTPKG_6.0" 0.9.11 - (c++)"Configuration::Clear()@APTPKG_6.0" 0.9.11 - (c++)"Glob(std::__cxx11::basic_string, std::allocator > const&, int)@APTPKG_6.0" 0.9.11 - (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@APTPKG_6.0" 0.9.11 - (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@APTPKG_6.0" 0.9.11 - (c++)"pkgTagSection::pkgTagSection()@APTPKG_6.0" 0.9.11 - (c++)"strv_length(char const**)@APTPKG_6.0" 0.9.11 - (c++)"StringSplit(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, unsigned int)@APTPKG_6.0" 0.9.11.3 - (c++)"pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState)@APTPKG_6.0" 0.9.12 - (c++)"APT::String::Endswith(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 0.9.13.1 - (c++)"ExecFork(std::set, std::allocator >)@APTPKG_6.0" 0.9.13.1 - (c++)"MergeKeepFdsFromConfiguration(std::set, std::allocator >&)@APTPKG_6.0" 0.9.13.1 - (c++)"HashString::FromFile(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.13.1 - (c++)"HashString::GetHashForFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_6.0" 0.9.13.1 - (c++)"GetTempDir[abi:cxx11]()@APTPKG_6.0" 0.9.14.2 - (c++)"APT::Configuration::getBuildProfiles[abi:cxx11]()@APTPKG_6.0" 0.9.16 - (c++)"APT::Configuration::getBuildProfilesString[abi:cxx11]()@APTPKG_6.0" 0.9.16 - (c++)"Rename(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 0.9.16 - (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_6.0" 1.0 - (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@APTPKG_6.0" 1.0 - (c++)"APT::Progress::PackageManagerFancy::GetTextProgressStr[abi:cxx11](float, int)@APTPKG_6.0" 1.0 - (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@APTPKG_6.0" 1.0.4 - (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@APTPKG_6.0" 1.0.4 - (c++)"pkgSrcRecords::Step()@APTPKG_6.0" 1.0.4 - (c++)"pkgDPkgPM::SetupSlavePtyMagic()@APTPKG_6.0" 1.0.8 - (c++)"HashStringList::find(char const*) const@APTPKG_6.0" 1.0.9.4 - (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_6.0" 1.0.9.4 - (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_6.0" 1.0.9.4 - (c++)"HashStringList::push_back(HashString const&)@APTPKG_6.0" 1.0.9.4 - (c++)"HashStringList::supported(char const*)@APTPKG_6.0" 1.0.9.4 - (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_6.0" 1.0.9.4 - (c++)"HashString::operator==(HashString const&) const@APTPKG_6.0" 1.0.9.4 - (c++)"HashString::operator!=(HashString const&) const@APTPKG_6.0" 1.0.9.4 - (c++)"APT::Progress::PackageManager::PackageManager()@APTPKG_6.0" 1.1~exp1 - (c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1 - (c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1 - (c++)"pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)@APTPKG_6.0" 1.1~exp1 - (c++)"pkgTagFile::Init(FileFd*, unsigned long long)@APTPKG_6.0" 1.1~exp1 - (c++)"pkgTagSection::Count() const@APTPKG_6.0" 1.1~exp1 - (c++)"pkgTagSection::Exists(APT::StringView) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::FindB(APT::StringView, bool) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::Scan(char const*, unsigned long, bool)@APTPKG_6.0" 1.1~exp1 - (c++)"StartsWithGPGClearTextSignature(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp1 - (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode, bool, bool)@APTPKG_6.0" 1.9.0~ - (c++)"APT::String::Startswith(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp2 - (c++)"APT::Upgrade::Upgrade(pkgDepCache&, int, OpProgress*)@APTPKG_6.0" 1.1~exp4 - (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@APTPKG_6.0" 1.1~exp4 - (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@APTPKG_6.0" 1.1~exp4 - (c++)"DropPrivileges()@APTPKG_6.0" 1.1~exp4 - (c++)"FileFd::FileFd(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned long)@APTPKG_6.0" 1.1~exp4 - (c++)"metaIndex::metaIndex(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@APTPKG_6.0" 1.1~exp9 -### ABI 5 changed so much (+ abicxx11 transition) - (c++)"APT::CacheSetHelper::CacheSetHelper(bool, GlobalError::MsgType)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::Configuration::getArchitectures[abi:cxx11](bool const&)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::Configuration::getCompressionTypes[abi:cxx11](bool const&)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.9.11~ - (c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageUniverse::PackageUniverse(pkgCache*)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::PackageUniverse::PackageUniverse(pkgCacheFile*)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::Progress::PackageManagerText::PackageManagerText()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::VersionContainerInterface::FromDependency(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::DepIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.1~exp9 - (c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_6.0" 1.1~exp9 - (c++)"APT::VersionContainerInterface::VersionContainerInterface(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.9.11~ - (c++)"CommandLine::CommandLine()@APTPKG_6.0" 1.1~exp9 - (c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string, std::allocator > const&, bool) const@APTPKG_6.0" 1.1~exp9 - (c++)"debDscFileIndex::CreateSrcParser() const@APTPKG_6.0" 1.1~exp9 - (c++)"debDscFileIndex::~debDscFileIndex()@APTPKG_6.0" 1.1~exp9 - (c++)"debDscFileIndex::debDscFileIndex(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"debDscFileIndex::GetType() const@APTPKG_6.0" 1.1~exp9 - (c++)"ExecGPGV(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, int const&, int*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"FileFd::FileFd()@APTPKG_6.0" 1.1~exp9 - (c++)"FileFd::FileFd(int, bool)@APTPKG_6.0" 1.1~exp9 - (c++)"FileFd::FileFd(int, unsigned int, FileFd::CompressMode)@APTPKG_6.0" 1.1~exp9 - (c++)"FileFd::FileFd(std::__cxx11::basic_string, std::allocator >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_6.0" 1.1~exp9 - (c++)"GetTempFile(std::__cxx11::basic_string, std::allocator > const&, bool, FileFd*)@APTPKG_6.0" 1.1~exp9 - (c++)"Hashes::AddFD(FileFd&, unsigned long long)@APTPKG_6.0" 1.1~exp9 - (c++)"Hashes::AddFD(int, unsigned long long)@APTPKG_6.0" 1.1~exp9 - (c++)"Hashes::Add(unsigned char const*, unsigned long long)@APTPKG_6.0" 1.1~exp9 - (c++)"Hashes::Hashes(HashStringList const&)@APTPKG_6.0" 1.1~exp9 - (c++)"Hashes::Hashes(unsigned int)@APTPKG_6.0" 1.1~exp9 - (c++)"HashStringList::FileSize() const@APTPKG_6.0" 1.1~exp9 - (c++)"HashStringList::FileSize(unsigned long long)@APTPKG_6.0" 1.1~exp9 - (c++)"IndexCopy::IndexCopy()@APTPKG_6.0" 1.1~exp9 - (c++)"IndexTarget::Format(std::__cxx11::basic_string, std::allocator >) const@APTPKG_6.0" 1.1~exp9 - (c++)"IndexTarget::IndexTarget(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool, bool, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"IndexTarget::Option[abi:cxx11](IndexTarget::OptionKeys) const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::CheckDist(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::Describe[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::Exists(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::FindInCache(pkgCache&, bool) const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetCodename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetDate() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetExpectedDist[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetLoadedSuccessfully() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetSignedBy[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetSuite[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetSupportsAcquireByHash() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetTrusted() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::GetValidUntil() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::Lookup(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::MetaKeys[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"metaIndex::swapLoad(metaIndex*)@APTPKG_6.0" 1.1~exp9 - (c++)"PackageCopy::PackageCopy()@APTPKG_6.0" 1.1~exp9 - (c++)"PackageCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::DescURI[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::GetFinalFilename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::HashesRequired() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqArchive::ShortDesc[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::~pkgAcqChangelog()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::RlsFileIterator const&, char const*, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::VerIterator const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, std::__cxx11::basic_string, std::allocator > const&, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::RlsFileIterator const&, char const*, char const*, char const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::URI(std::__cxx11::basic_string, std::allocator > const&, char const*, char const*, char const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqChangelog::URITemplate[abi:cxx11](pkgCache::RlsFileIterator const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqFile::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqFile::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqFile::HashesRequired() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, unsigned long long, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqMethod::FetchItem::FetchItem()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqMethod::FetchItem::~FetchItem()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcqMethod::FetchResult::~FetchResult()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::GetFinalFilename[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::GetItemDesc()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::GetOwner() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::HashSum[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::Item(pkgAcquire*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::Rename(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::ShortDesc[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::Start(std::__cxx11::basic_string, std::allocator > const&, unsigned long long)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Item::VerifyDone(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Queue::QItem::Custom600Headers[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Queue::QItem::GetExpectedHashes() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Queue::QItem::GetMaximumSize() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Queue::QItem::SyncDestinationFiles() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::Queue::Queue(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgArchiveCleaner::pkgArchiveCleaner()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCache::DepIterator::IsImplicit() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCacheFile::pkgCacheFile(pkgDepCache*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCache::RlsFileIterator::RelStr[abi:cxx11]()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCdrom::~pkgCdrom()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCdrom::pkgCdrom()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCdromStatus::~pkgCdromStatus()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgCdromStatus::pkgCdromStatus()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexFile::FindInCache(pkgCache&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexFile::~pkgDebianIndexFile()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexFile::pkgDebianIndexFile(bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::ArchiveURI(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::Describe[abi:cxx11](bool) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::Exists() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::GetProgressDescription[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::IndexFileName[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::OpenListFile(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::~pkgDebianIndexRealFile()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexRealFile::Size() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::ArchiveURI(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::Describe[abi:cxx11](bool) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::Exists() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::GetProgressDescription[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::IndexFileName[abi:cxx11]() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::OpenListFile(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const&, bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDebianIndexTargetFile::Size() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator const&, int, pkgCache::PkgIterator&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgIndexFile::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgIndexFile::~pkgIndexFile()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgIndexFile::pkgIndexFile(bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgIndexFile::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgRecords::Parser::~Parser()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgRecords::Parser::Parser()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::AddVolatileFile(pkgIndexFile*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::GetVolatileFiles() const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::ReadAppend(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::ReadSourceDir(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::Read(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::Type::ParseLine(std::vector >&, char const*, unsigned int, std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::Type::ParseStanza(std::vector >&, pkgTagSection&, unsigned int, FileFd&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::Type::~Type()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::Type::Type(char const*, char const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSrcRecords::Parser::~Parser()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSrcRecords::Parser::Parser(pkgIndexFile const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSystem::~pkgSystem()@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSystem::pkgSystem(char const*, pkgVersioningSystem*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::FindFlag(APT::StringView, unsigned char&, unsigned char) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::FindFlag(unsigned char&, unsigned char, char const*, char const*)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::FindRaw(APT::StringView) const@APTPKG_6.0" 1.9~ - (c++)"pkgTagSection::Tag::Remove(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::Tag::Rename(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::Tag::Rewrite(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgTagSection::Write(FileFd&, char const* const*, std::vector > const&) const@APTPKG_6.0" 1.1~exp9 - (c++)"pkgVersioningSystem::~pkgVersioningSystem()@APTPKG_6.0" 1.1~exp9 - (c++)"SigVerify::~SigVerify()@APTPKG_6.0" 1.1~exp9 - (c++)"SigVerify::SigVerify()@APTPKG_6.0" 1.1~exp9 - (c++)"SourceCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"SourceCopy::SourceCopy()@APTPKG_6.0" 1.1~exp9 - (c++)"TranslationsCopy::~TranslationsCopy()@APTPKG_6.0" 1.1~exp9 - (c++)"TranslationsCopy::TranslationsCopy()@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for debDscFileIndex@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgCdrom@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgCdromStatus@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgOrderList@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgProblemResolver@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgRecords@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for pkgSourceList@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for SigVerify@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo for TranslationsCopy@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for debDscFileIndex@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgCdrom@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgCdromStatus@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgOrderList@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgProblemResolver@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgRecords@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for pkgSourceList@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for SigVerify@APTPKG_6.0" 1.1~exp9 - (c++)"typeinfo name for TranslationsCopy@APTPKG_6.0" 1.1~exp9 - (c++)"URI::ArchiveOnly(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for APT::PackageUniverse@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for debDscFileIndex@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgAcqChangelog@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgAcqMethod::FetchItem@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgAcqMethod::FetchResult@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgCdrom@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgCdromStatus@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgDebianIndexFile@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgDebianIndexRealFile@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgDebianIndexTargetFile@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgDepCache::ActionGroup@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgOrderList@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgProblemResolver@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgRecords@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for pkgSourceList@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for SigVerify@APTPKG_6.0" 1.1~exp9 - (c++)"vtable for TranslationsCopy@APTPKG_6.0" 1.1~exp9 -### ABI 6 - (c++)"APT::CacheFilter::ParsePattern(APT::StringView, pkgCacheFile*)@APTPKG_6.0" 1.9.11~ - (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.9.11~ - (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.9.11~ - (c++)"APT::String::DisplayLength(APT::StringView)@APTPKG_6.0" 1.9.11~ - (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_6.0" 1.9.11~ - (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(APT::StringView) const@APTPKG_6.0" 1.9.11~ - (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_6.0" 1.9.11~ - (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_6.0" 1.9.11~ - (c++)"pkgDebianIndexFile::Merge(pkgCacheGenerator&, OpProgress*)@APTPKG_6.0" 1.9.11~ - (c++)"metaIndex::Merge(pkgCacheGenerator&, OpProgress*) const@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo for APT::PackageContainer > >@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo name for APT::PackageContainer > >@APTPKG_6.0" 1.9.11~ - (c++)"vtable for APT::PackageContainer > >@APTPKG_6.0" 1.9.11~ - (c++)"pkgDepCache::CheckConsistency(char const*)@APTPKG_6.0" 2.1.5~ -### dpkg selection state changer & general dpkg interfacing - (c++)"APT::StateChanges::clear()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::empty() const@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Error()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Hold()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Hold(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Install()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Install(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::operator=(APT::StateChanges&&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Purge()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Purge(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Remove()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Remove(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Save(bool)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::~StateChanges()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::StateChanges()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::StateChanges(APT::StateChanges&&)@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Unhold()@APTPKG_6.0" 1.1~exp15 - (c++)"APT::StateChanges::Unhold(pkgCache::VerIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"metaIndex::IsArchitectureSupported(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.1~exp15 -### misc stuff - (c++)"RemoveFile(char const*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp15 - (c++)"pkgOrderList::OrderCompareA(pkgCache::Package*, pkgCache::Package*)@APTPKG_6.0" 1.1~exp15 - (c++)"pkgOrderList::OrderCompareB(pkgCache::Package*, pkgCache::Package*)@APTPKG_6.0" 1.1~exp15 - (c++)"CommandLine::DispatchArg(CommandLine::Dispatch const*, bool)@APTPKG_6.0" 1.1~exp15 - (c++)"Configuration::MoveSubTree(char const*, char const*)@APTPKG_6.0" 1.1~exp15 - (c++)"GetTempDir(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp15 - (c++)"HashString::usable() const@APTPKG_6.0" 1.1~exp15 - (c++)"IndexTarget::OptionBool(IndexTarget::OptionKeys) const@APTPKG_6.0" 1.1~exp12 - (c++)"pkgDepCache::GetCandidateVersion(pkgCache::PkgIterator const&)@APTPKG_6.0" 1.1~exp15 - (c++)"pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_6.0" 1.1~exp15 - (c++)"pkgPackageManager::CheckRBreaks(pkgCache::PkgIterator const&, pkgCache::DepIterator, char const*)@APTPKG_6.0" 1.1~exp11 - (c++)"pkgPolicy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_6.0" 1.1~exp9 - (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.1~exp15 - (c++)"pkgVersionMatch::VersionMatches(pkgCache::VerIterator)@APTPKG_6.0" 1.1~exp9 - (c++)"GetSrvRecords(std::__cxx11::basic_string, std::allocator >, int, std::vector >&)@APTPKG_6.0" 1.1~exp15 - (c++)"GetSrvRecords(std::__cxx11::basic_string, std::allocator >, std::vector >&)@APTPKG_6.0" 1.1~exp15 - (c++)"PopFromSrvRecs(std::vector >&)@APTPKG_6.0" 1.1~exp15 - (c++)"SrvRec::operator==(SrvRec const&) const@APTPKG_6.0" 1.1~exp15 - (c++)"debDscFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.1.4 - (c++)"debDscFileIndex::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.1.4 - (c++)"debDscFileIndex::GetIndexFlags() const@APTPKG_6.0" 1.1.4 - (c++)"FileFd::Flush()@APTPKG_6.0" 1.1.9 - (c++)"metaIndex::IsArchitectureAllSupportedFor(IndexTarget const&) const@APTPKG_6.0" 1.1.9 - (c++)"pkgTagFile::Init(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_6.0" 1.2~exp1 - (c++)"pkgTagFile::pkgTagFile(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_6.0" 1.2~exp1 -### symbol versioning: - APTPKG_6.0@APTPKG_6.0 1.1~exp9 -### gcc artifacts - (c++|optional=std)"void std::vector >::emplace_back(char const*&&)@APTPKG_6.0" 1.1~exp9 -# (c++|optional=std)"void std::vector >::emplace_back(pkgCache::RlsFileIterator*&&)@APTPKG_6.0" 1.1~exp9 - (c++|optional=std)"void std::vector >::emplace_back(pkgDPkgPM::Item&&)@APTPKG_6.0" 1.1~exp9 - (c++|optional=std)"void std::vector >::emplace_back(pkgTagSection::Tag&&)@APTPKG_6.0" 1.1~exp9 - (c++|optional=std)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back, std::allocator > >(std::__cxx11::basic_string, std::allocator >&&)@APTPKG_6.0" 1.1~exp9 -### try to ignore std:: template instances - (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@APTPKG_6.0$" 0.8.0 - (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@APTPKG_6.0$" 0.8.0 - (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@APTPKG_6.0$" 0.8.0 - (c++|regex|optional=std)"^(void |DiffInfo\* |)std::_.*@APTPKG_6.0$" 0.8.0 - (c++|regex|optional=std)"^__gnu_cxx::__[^ ]+<.*@APTPKG_6.0$" 0.8.0 -### - (c++)"debStringPackageIndex::~debStringPackageIndex()@APTPKG_6.0" 1.2.2 - (c++)"debStringPackageIndex::debStringPackageIndex(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.2.2 - (c++)"debStringPackageIndex::GetArchitecture[abi:cxx11]() const@APTPKG_6.0" 1.2.2 - (c++)"debStringPackageIndex::GetComponent[abi:cxx11]() const@APTPKG_6.0" 1.2.2 - (c++)"debStringPackageIndex::GetIndexFlags() const@APTPKG_6.0" 1.2.2 - (c++)"debStringPackageIndex::GetType() const@APTPKG_6.0" 1.2.2 - (c++)"pkgCacheFile::AddIndexFile(pkgIndexFile*)@APTPKG_6.0" 1.2.2 - (c++)"typeinfo for debStringPackageIndex@APTPKG_6.0" 1.2.2 - (c++)"typeinfo name for debStringPackageIndex@APTPKG_6.0" 1.2.2 - (c++)"vtable for debStringPackageIndex@APTPKG_6.0" 1.2.2 - (c++)"operator<<(std::basic_ostream >&, APT::PrettyDep const&)@APTPKG_6.0" 1.3~exp1 - (c++)"operator<<(std::basic_ostream >&, APT::PrettyPkg const&)@APTPKG_6.0" 1.3~exp1 - (c++)"EDSP::ReadRequest(int, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > >&, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > >&, unsigned int&)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, unsigned int, OpProgress*)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string, std::allocator > const&, FileFd&)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, std::vector > const&, OpProgress*)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteProgress(unsigned short, char const*, FileFd&)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteRequest(pkgDepCache&, FileFd&, unsigned int, OpProgress*)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_6.0" 1.3~exp2 - (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_6.0" 1.3~exp2 - (c++)"int __gnu_cxx::__stoa(long (*)(char const*, char**, int), char const*, char const*, unsigned long*, int)@APTPKG_6.0" 1.3~exp2 - (c++)"EIPP::ApplyRequest(std::__cxx11::list, std::allocator >, EIPP::PKG_ACTION>, std::allocator, std::allocator >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_6.0" 1.3~rc2 - (c++)"EIPP::ReadRequest(int, std::__cxx11::list, std::allocator >, EIPP::PKG_ACTION>, std::allocator, std::allocator >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_6.0" 1.3~rc2 - (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_6.0" 1.3~rc2 - (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector, std::allocator >, std::allocator, std::allocator > > >*)@APTPKG_6.0" 1.3~rc2 - (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > >*)@APTPKG_6.0" 1.3~rc2 - (c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_6.0" 1.3~rc2 - (c++)"void std::shuffle<__gnu_cxx::__normal_iterator > >, std::linear_congruential_engine&>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::linear_congruential_engine&)@APTPKG_6.0" 1.3~rc2 - (c++)"void std::vector >::emplace_back(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&&)@APTPKG_6.0" 1.3~rc2 - (c++)"void std::vector >::emplace_back(pkgDPkgPM::Item::Ops&&, pkgCache::PkgIterator&)@APTPKG_6.0" 1.3~rc2 - (c++)"void std::vector, std::allocator > >, std::allocator, std::allocator > > > >::emplace_back, std::allocator > >(pkgDPkgPM::Item*&&, std::__cxx11::basic_string, std::allocator >&&)@APTPKG_6.0" 1.3~rc2 - (c++)"APT::String::Join(std::vector, std::allocator >, std::allocator, std::allocator > > >, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.4~beta4 - (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&, unsigned int&, bool const&, bool const&, bool const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.4~beta3 - (c++)"debListParser::ParseDepends(char const*, char const*, APT::StringView&, APT::StringView&, unsigned int&, bool, bool, bool, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.9.0~ - (c++|optional=std)"void std::vector, std::allocator >, std::allocator, std::allocator > > >::emplace_back(char const (&) [4])@APTPKG_6.0" 1.4~beta4 - (c++)"FileFd::ReadLine(std::__cxx11::basic_string, std::allocator >&)@APTPKG_6.0" 1.5~beta2~ - (c++)"MaybeAddAuth(FileFd&, URI&)@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::GetDefaultPin() const@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::GetLabel[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::GetOrigin[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::GetReleaseNotes[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::GetVersion[abi:cxx11]() const@APTPKG_6.0" 1.5~beta2~ - (c++)"metaIndex::HasSupportForComponent(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_6.0" 1.5~beta2~ - (c++)"pkgAcquireStatus::ReleaseInfoChanges(metaIndex const*, metaIndex const*, std::vector >&&)@APTPKG_6.0" 1.5~beta2~ - (c++)"RemoveFileAt(char const*, int, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_6.0" 1.5~beta2~ - (c++|optional=std)"void std::vector >::emplace_back(pkgAcquireStatus::ReleaseInfoChange&&)@APTPKG_6.0" 1.5~beta2~ - (c++)"pkgAcqMethod::FetchItem::Proxy[abi:cxx11]()@APTPKG_6.0" 1.6~alpha1~ -# gcc-8 artifacts - (c++|optional=std)"pkgAcqMethod::SendMessage(std::__cxx11::basic_string, std::allocator > const&, std::unordered_map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >&&)@APTPKG_6.0" 1.7.0~alpha3~ - (c++)"APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(pkgCache*, bool)@APTPKG_6.0" 2.1.16 - (c++)"ExtractTar::Done()@APTPKG_6.0" 1.1~exp12 - (c++)"ExtractTar::Go(pkgDirStream&)@APTPKG_6.0" 0.8.0 - (c++)"ExtractTar::StartGzip()@APTPKG_6.0" 0.8.0 - (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.0.5 - (c++)"ExtractTar::~ExtractTar()@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::GotoMember(char const*)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::CheckMember(char const*)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTPKG_6.0" 0.9.15.4 - (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTPKG_6.0" 1.0.5 - (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0 - (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTPKG_6.0" 1.0.5 - (c++)"debDebFile::debDebFile(FileFd&)@APTPKG_6.0" 0.8.0 - (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTPKG_6.0" 0.8.0 - (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTPKG_6.0" 0.8.0 - (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTPKG_6.0" 0.8.0 - (c++)"ARArchive::LoadHeaders()@APTPKG_6.0" 0.8.0 - (c++)"ARArchive::ARArchive(FileFd&)@APTPKG_6.0" 0.8.0 - (c++)"ARArchive::~ARArchive()@APTPKG_6.0" 0.8.0 - (c++)"ARArchive::FindMember(char const*) const@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for ExtractTar@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for pkgDirStream@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0 - (c++)"typeinfo for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for ExtractTar@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for pkgDirStream@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0 - (c++)"typeinfo name for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0 - (c++)"vtable for ExtractTar@APTPKG_6.0" 0.8.0 - (c++)"vtable for pkgDirStream@APTPKG_6.0" 0.8.0 - (c++)"vtable for debDebFile::ControlExtract@APTPKG_6.0" 0.8.0 - (c++)"vtable for debDebFile::MemControlExtract@APTPKG_6.0" 0.8.0 -### phased update API - (c++)"pkgCache::VerIterator::IsSecurityUpdate() const@APTPKG_6.0" 2.7.11 - (c++)"pkgDepCache::PhasingApplied(pkgCache::PkgIterator) const@APTPKG_6.0" 2.7.11 - (c++)"pkgProblemResolver::KeepPhasedUpdates()@APTPKG_6.0" 2.7.11 -### gcc artifacts - (c++|optional=std)"void std::__cxx11::basic_string, std::allocator >::_M_construct(char const*, char const*, std::forward_iterator_tag)@APTPKG_6.0" 1.7.0~alpha3~ - (c++|optional=std)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~ - (c++|optional=std)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~ - (c++|optional=std)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~ - (c++|optional=std)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~ -### Internal functions needed for testing purposes - (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string, std::allocator >)@APTPKG_6.0" 1.9.11~ - (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_6.0" 1.9.11~ - (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~ - (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~ - (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~ - (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~ - (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~ - (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~ diff --git a/debian/libapt-pkg6.0.install b/debian/libapt-pkg7.0.install similarity index 100% rename from debian/libapt-pkg6.0.install rename to debian/libapt-pkg7.0.install diff --git a/debian/libapt-pkg7.0.symbols b/debian/libapt-pkg7.0.symbols new file mode 100644 index 0000000..cb857b1 --- /dev/null +++ b/debian/libapt-pkg7.0.symbols @@ -0,0 +1,1326 @@ +libapt-pkg.so.7.0 libapt-pkg7.0 #MINVER# +* Build-Depends-Package: libapt-pkg-dev + TFRewritePackageOrder@APTPKG_7.0 0.8.0 + TFRewriteSourceOrder@APTPKG_7.0 0.8.0 + (c++)"FileExists(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"IdentCdrom(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&, unsigned int)@APTPKG_7.0" 0.8.0 + (c++)"ListUpdate(pkgAcquireStatus&, pkgSourceList&, int)@APTPKG_7.0" 0.8.0 + (c++)"MountCdrom(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"ParseCWord(char const*&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"ReadPinDir(pkgPolicy&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"RunScripts(char const*)@APTPKG_7.0" 0.8.0 + (c++)"SafeGetCWD[abi:cxx11]()@APTPKG_7.0" 0.8.0 + (c++)"QuoteString(std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_7.0" 0.8.0 + (c++)"ReadPinFile(pkgPolicy&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"RegexChoice(RxChoiceList*, char const**, char const**)@APTPKG_7.0" 0.8.0 + (c++)"SetNonBlock(int, bool)@APTPKG_7.0" 0.8.0 + (c++)"flExtension(std::basic_string_view >)@APTPKG_7.0" 0.8.0 + (c++)"Base64Encode(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"ReadMessages(int, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_7.0" 0.8.0 + (c++)"SetCloseExec(int, bool)@APTPKG_7.0" 0.8.0 + (c++)"StringToBool(std::__cxx11::basic_string, std::allocator > const&, int)@APTPKG_7.0" 0.8.0 + (c++)"UnmountCdrom(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"_GetErrorObj()@APTPKG_7.0" 0.8.0 + (c++)"Base256ToNum(char const*, unsigned long long&, unsigned int)@APTPKG_7.0" 1.0.5 + (c++)"pkgFixBroken(pkgDepCache&)@APTPKG_7.0" 0.8.0 + (c++)"DeQuoteString(__gnu_cxx::__normal_iterator, std::allocator > > const&, __gnu_cxx::__normal_iterator, std::allocator > > const&)@APTPKG_7.0" 0.8.0 + (c++)"DeQuoteString(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"OutputInDepth[abi:cxx11](unsigned long, char const*)@APTPKG_7.0" 0.8.0 + (c++)"ReadConfigDir(Configuration&, std::__cxx11::basic_string, std::allocator > const&, bool const&, unsigned int const&)@APTPKG_7.0" 0.8.0 + (c++)"URItoFileName(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"UTF8ToCodeset(char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator >*)@APTPKG_7.0" 0.8.0 + (c++)"pkgInitConfig(Configuration&)@APTPKG_7.0" 0.8.0 + (c++)"pkgInitSystem(Configuration&, pkgSystem*&)@APTPKG_7.0" 0.8.0 + (c++)"safe_snprintf(char*, char*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"stringcasecmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@APTPKG_7.0" 0.8.0 + (c++)"stringcasecmp(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"ParseQuoteWord(char const*&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"ReadConfigFile(Configuration&, std::__cxx11::basic_string, std::allocator > const&, bool const&, unsigned int const&)@APTPKG_7.0" 0.8.0 + (c++)"TokSplitString(char, char*, char**, unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"pkgApplyStatus(pkgDepCache&)@APTPKG_7.0" 0.8.0 + (c++)"CheckDomainList(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"CreateDirectory(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"DirectoryExists(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"VectorizeString[abi:cxx11](std::basic_string_view > const&, char const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgPrioSortList(pkgCache&, pkgCache::Version**)@APTPKG_7.0" 0.8.0 + (c++)"pkgMinimizeUpgrade(pkgDepCache&)@APTPKG_7.0" 0.8.0 + (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > > const&, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool const&, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"WaitFd(int, bool, unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"GetLock(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 0.8.0 + (c++)"Hex2Num(std::basic_string_view >, unsigned char*, unsigned int)@APTPKG_7.0" 1.9~ + (c++)"CopyFile(FileFd&, FileFd&)@APTPKG_7.0" 0.8.0 + (c++)"ExecFork()@APTPKG_7.0" 0.8.0 + (c++)"ExecWait(int, char const*, bool)@APTPKG_7.0" 0.8.0 + (c++)"StrToNum(char const*, unsigned long&, unsigned int, unsigned int)@APTPKG_7.0" 0.8.0 + (c++)"SubstVar[abi:cxx11](std::basic_string_view > const&, std::basic_string_view > const&, std::basic_string_view > const&)@APTPKG_7.0" 0.8.0 + (c++)"SubstVar(std::__cxx11::basic_string, std::allocator >, SubstVar const*)@APTPKG_7.0" 0.8.0 + (c++)"flNoLink(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"flNotDir(std::basic_string_view >)@APTPKG_7.0" 0.8.0 + (c++)"ioprintf(std::basic_ostream >&, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"IsMounted(std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"LookupTag(std::__cxx11::basic_string, std::allocator > const&, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"SizeToStr[abi:cxx11](double)@APTPKG_7.0" 0.8.0 + (c++)"TimeToStr[abi:cxx11](unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"_strstrip(char*)@APTPKG_7.0" 0.8.0 + (c++)"flCombine(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"flNotFile(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"stringcmp(__gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >, __gnu_cxx::__normal_iterator, std::allocator > >)@APTPKG_7.0" 0.8.0 + (c++)"stringcmp(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"strprintf(std::__cxx11::basic_string, std::allocator >&, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"HashString::SupportedHashes()@APTPKG_7.0" 0.8.0 + (c++)"HashString::_SupportedHashes@APTPKG_7.0" 0.8.0 + (c++)"HashString::HashString(std::basic_string_view >)@APTPKG_7.0" 0.8.0 + (c++)"HashString::HashString(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"HashString::HashString()@APTPKG_7.0" 0.8.0 + (c++)"OpProgress::CheckChange(float)@APTPKG_7.0" 0.8.0 + (c++)"OpProgress::OpProgress()@APTPKG_7.0" 0.8.0 + (c++)"SourceCopy::~SourceCopy()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqFile::~pkgAcqFile()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::FetchNeeded()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::TotalNeeded()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::MethodConfig::MethodConfig()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::PartialPresent()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Add(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Add(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Run(int)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Bump()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Item::Finished()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Item::~Item()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Clean(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Bump()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Cycle()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Dequeue(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Startup()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::FindItem(std::__cxx11::basic_string, std::allocator >, pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::ItemDone(pkgAcquire::Queue::QItem*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::Shutdown(bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Queue::~Queue()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Remove(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Remove(pkgAcquire::Worker*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::RunFds(fd_set*, fd_set*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::SetFds(int&, fd_set*, fd_set*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::UriEnd()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::OutFdReady()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::MediaChange(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::RunMessages()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Capabilities(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::ReadMessages()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::MethodFailure()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::SendConfiguration()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Pulse()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Start()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::ItemDone()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Construct()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::InFdReady()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Worker(pkgAcquire::MethodConfig*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::Worker(pkgAcquire::Queue*, pkgAcquire::MethodConfig*, pkgAcquireStatus*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Worker::~Worker()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Dequeue(pkgAcquire::Item*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Enqueue(pkgAcquire::ItemDesc&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::Shutdown()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::UriBegin()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::GetConfig(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::QueueName(std::__cxx11::basic_string, std::allocator >, pkgAcquire::MethodConfig const*&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::pkgAcquire(pkgAcquireStatus*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::pkgAcquire()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquire::~pkgAcquire()@APTPKG_7.0" 0.8.0 + (c++)"pkgRecords::Lookup(pkgCache::VerFileIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgRecords::Lookup(pkgCache::DescFileIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgRecords::pkgRecords(pkgCache&)@APTPKG_7.0" 0.8.0 + (c++)"pkgRecords::~pkgRecords()@APTPKG_7.0" 0.8.0 + (c++)"pkgTagFile::Step(pkgTagSection&)@APTPKG_7.0" 0.8.0 + (c++)"pkgTagFile::~pkgTagFile()@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::SaveInConfig(unsigned int const&, char const* const*)@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::Parse(int, char const**)@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::~CommandLine()@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::DumpErrors(std::basic_ostream >&, GlobalError::MsgType const&, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::PopMessage(std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::InsertErrno(GlobalError::MsgType const&, char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::PushToStack()@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::RevertToStack()@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::MergeWithStack()@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Debug(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Errno(char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Error(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Fatal(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::DebugE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::FatalE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Insert(GlobalError::MsgType const&, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Notice(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Discard()@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::NoticeE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::Warning(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::WarningE(char const*, char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::GlobalError()@APTPKG_7.0" 0.8.0 + (c++)"PackageCopy::~PackageCopy()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::IsDeleteOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkDelete(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::StateCache::Update(pkgCache::PkgIterator, pkgCache&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::ActionGroup::release()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::ActionGroup::ActionGroup(pkgDepCache&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::ActionGroup::~ActionGroup()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::IsInstallOk(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkInstall(pkgCache::PkgIterator const&, bool, unsigned long, bool, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::SetReInstall(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::BuildGroupOrs(pkgCache::VerIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::readStateFile(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::GetRootSetFunc()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::writeStateFile(OpProgress*, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkFollowsSuggests()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkFollowsRecommends()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Init(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Policy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Update(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Update(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::MarkRequired(pkgDepCache::InRootSetFunc&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::Sweep()@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDepCache::~pkgDepCache()@APTPKG_7.0" 0.8.0 + (c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_7.0" 1.9.11~ + (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgSimulate::~pkgSimulate()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::FetchResult::FetchResult()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Configuration(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Log(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Run(bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Fail(std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Fail(bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Status(char const*, ...)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::URIDone(pkgAcqMethod::FetchResult&, pkgAcqMethod::FetchResult*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::Redirect(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::URIStart(pkgAcqMethod::FetchResult&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::MediaFail(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::pkgAcqMethod(char const*, unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqMethod::~pkgAcqMethod()@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::BuildCaches(OpProgress*, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::BuildPolicy(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::BuildDepCache(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::BuildSourceList(OpProgress*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::Open(OpProgress*, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::Close()@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::pkgCacheFile()@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheFile::~pkgCacheFile()@APTPKG_7.0" 0.8.0 + (c++)"pkgIndexFile::Type::GlobalList@APTPKG_7.0" 0.8.0 + (c++)"pkgIndexFile::Type::GlobalListLen@APTPKG_7.0" 0.8.0 + (c++)"pkgIndexFile::Type::GetType(char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgIndexFile::Type::Type()@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::VisitRDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::OrderUnpack(std::__cxx11::basic_string, std::allocator >*)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepConfigure(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepUnPackDep(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepUnPackPre(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepUnPackCrit(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepUnPackPreD(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::OrderCritical()@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::VisitProvides(pkgCache::DepIterator, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::OrderConfigure()@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::VisitRProvides(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::VerIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DoRun()@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::Score(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::AddLoop(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::FileCmp(pkgCache::PkgIterator, pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::CheckDep(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::DepRemove(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::IsMissing(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::VisitDeps(bool (pkgOrderList::*)(pkgCache::DepIterator), pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::WipeFlags(unsigned long)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::pkgOrderList(pkgDepCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgOrderList::~pkgOrderList()@APTPKG_7.0" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::MatchAgainstConfig(char const*)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::~MatchAgainstConfig()@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Set(char const*, std::basic_string_view > const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Set(char const*, int const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Dump(std::basic_ostream >&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&, int const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Clear(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::CndSet(char const*, std::basic_string_view > const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Lookup(char const*, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Lookup(Configuration::Item*, char const*, unsigned long const&, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Configuration(Configuration::Item const*)@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Configuration()@APTPKG_7.0" 0.8.0 + (c++)"Configuration::~Configuration()@APTPKG_7.0" 0.8.0 + (c++)"debListParser::ConvertRelation(char const*, unsigned int&)@APTPKG_7.0" 0.8.0 + (c++)"debListParser::GetPrio(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqArchive::Finished()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqArchive::QueueNext()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcqArchive::~pkgAcqArchive()@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::Type::GlobalList@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::Type::GlobalListLen@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::Type::GetType(char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::ReadMainList()@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::Reset()@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::pkgSourceList()@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::~pkgSourceList()@APTPKG_7.0" 0.8.0 + (c++)"pkgSrcRecords::Find(char const*, bool const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgSrcRecords::Parser::BuildDepType(unsigned char const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgSrcRecords::Restart()@APTPKG_7.0" 0.8.0 + (c++)"pkgSrcRecords::pkgSrcRecords(pkgSourceList&)@APTPKG_7.0" 0.8.0 + (c++)"pkgSrcRecords::~pkgSrcRecords()@APTPKG_7.0" 0.8.0 + (c++)"pkgTagSection::TrimRecord(bool, char const*&)@APTPKG_7.0" 0.8.0 + (c++)"pkgTagSection::Trim()@APTPKG_7.0" 0.8.0 + (c++)"OpTextProgress::Done()@APTPKG_7.0" 0.8.0 + (c++)"OpTextProgress::Write(char const*)@APTPKG_7.0" 0.8.0 + (c++)"OpTextProgress::Update()@APTPKG_7.0" 0.8.0 + (c++)"OpTextProgress::OpTextProgress(Configuration&)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::ExpressionMatches(char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::ExpressionMatches(std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::Find(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::MatchVer(char const*, std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersionMatch::pkgVersionMatch(std::__cxx11::basic_string, std::allocator >, pkgVersionMatch::MatchType)@APTPKG_7.0" 0.8.0 + (c++)"TranslationsCopy::CopyTranslations(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquireStatus::Stop()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquireStatus::Start()@APTPKG_7.0" 0.8.0 + (c++)"pkgAcquireStatus::pkgAcquireStatus()@APTPKG_7.0" 0.8.0 + (c++)"pkgArchiveCleaner::Go(std::__cxx11::basic_string, std::allocator >, pkgCache&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::FixMissing()@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::GetArchives(pkgAcquire*, pkgSourceList*, pkgRecords*)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::SmartRemove(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::ConfigureAll()@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::OrderInstall()@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::CreateOrderList()@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::pkgPackageManager(pkgDepCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgPackageManager::~pkgPackageManager()@APTPKG_7.0" 0.8.0 + (c++)"pkgProblemResolver::pkgProblemResolver(pkgDepCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgProblemResolver::~pkgProblemResolver()@APTPKG_7.0" 0.8.0 + (c++)"debVersioningSystem::CmpFragment(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"debVersioningSystem::DoCmpVersion(char const*, char const*, char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"debVersioningSystem::UpstreamVersion[abi:cxx11](char const*)@APTPKG_7.0" 0.8.0 + (c++)"debVersioningSystem::CheckDep(char const*, int, char const*)@APTPKG_7.0" 0.8.0 + (c++)"debVersioningSystem::debVersioningSystem()@APTPKG_7.0" 0.8.0 + (c++)"pkgUdevCdromDevices::Scan()@APTPKG_7.0" 0.8.0 + (c++)"pkgUdevCdromDevices::pkgUdevCdromDevices()@APTPKG_7.0" 0.8.0 + (c++)"pkgUdevCdromDevices::~pkgUdevCdromDevices()@APTPKG_7.0" 0.8.0 + (c++)"pkgVersioningSystem::GlobalList@APTPKG_7.0" 0.8.0 + (c++)"pkgVersioningSystem::GlobalListLen@APTPKG_7.0" 0.8.0 + (c++)"pkgVersioningSystem::GetVS(char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgVersioningSystem::pkgVersioningSystem()@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::Configuration::checkArchitecture(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"APT::CacheSetHelper::~CacheSetHelper()@APTPKG_7.0" 0.8.0 + (c++)"URI::NoUserPassword(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"URI::CopyFrom(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"URI::SiteOnly(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.0 + (c++)"URI::operator std::__cxx11::basic_string, std::allocator >()@APTPKG_7.0" 0.8.0 + (c++)"FileFd::Size()@APTPKG_7.0" 0.8.0 + (c++)"FileFd::Sync()@APTPKG_7.0" 0.8.0 + (c++)"FileFd::Tell()@APTPKG_7.0" 0.8.0 + (c++)"FileFd::Close()@APTPKG_7.0" 0.8.0 + (c++)"FileFd::~FileFd()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::CompTypeDeb(unsigned char)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::DepIterator::GlobOr(pkgCache::DepIterator&, pkgCache::DepIterator&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::DepIterator::operator++()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::GrpIterator::operator++()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::PkgIterator::operator++()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::PkgFileIterator::RelStr[abi:cxx11]()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::ReMap(bool const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::Header::Header()@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::DepType(unsigned char)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::FindGrp(std::basic_string_view >)@APTPKG_7.0" 1.9~ + (c++)"pkgCache::FindPkg(std::basic_string_view >)@APTPKG_7.0" 1.9~ + (c++)"pkgCache::FindPkg(std::basic_string_view >, std::basic_string_view >)@APTPKG_7.0" 1.9~ + (c++)"pkgCache::CompType(unsigned char)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::Priority(unsigned char)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::pkgCache(MMap*, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::~pkgCache()@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::DropRepeats(std::vector, std::allocator >, std::allocator, std::allocator > > >&, char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::FindPackages(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::__cxx11::basic_string, std::allocator >&, pkgCdromStatus*, unsigned int)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::WriteDatabase(Configuration&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::DropBinaryArch(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::WriteSourceList(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::ReduceSourcelist(std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::Add(pkgCdromStatus*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::Ident(std::__cxx11::basic_string, std::allocator >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0 + (c++)"pkgCdrom::Score(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::CopyPackages(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, pkgCdromStatus*)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::ReconstructChop(unsigned long&, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::ReconstructPrefix(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::ConvertToSourceList(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::ChopDirs(std::__cxx11::basic_string, std::allocator >, unsigned int)@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::GrabFirst(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >&, unsigned int)@APTPKG_7.0" 0.8.0 + (c++)"SigVerify::CopyAndVerify(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std::vector, std::allocator >, std::allocator, std::allocator > > >, std::vector, std::allocator >, std::allocator, std::allocator > > >)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::DoTerminalPty(int)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::WriteHistoryTag(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::WriteApportReport(char const*, char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::RunScriptsWithPkgs(char const*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::Reset()@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::Remove(pkgCache::PkgIterator, bool)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::DoStdin(int)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::Install(pkgCache::PkgIterator, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::OpenLog()@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::CloseLog()@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::Configure(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::pkgDPkgPM(pkgDepCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgDPkgPM::~pkgDPkgPM()@APTPKG_7.0" 0.8.0 + (c++)"pkgPolicy::InitDefaults()@APTPKG_7.0" 0.8.0 + (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.0 + (c++)"pkgPolicy::CreatePin(pkgVersionMatch::MatchType, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, short)@APTPKG_7.0" 0.8.0 + (c++)"pkgPolicy::pkgPolicy(pkgCache*)@APTPKG_7.0" 0.8.0 + (c++)"pkgPolicy::~pkgPolicy()@APTPKG_7.0" 0.8.0 + (c++)"pkgSystem::GlobalList@APTPKG_7.0" 0.8.0 + (c++)"pkgSystem::GlobalListLen@APTPKG_7.0" 0.8.0 + (c++)"pkgSystem::GetSystem(char const*)@APTPKG_7.0" 0.8.0 + (c++)"HashString::VerifyFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_7.0" 0.8.0 + (c++)"HashString::empty() const@APTPKG_7.0" 0.8.0 + (c++)"HashString::toStr[abi:cxx11]() const@APTPKG_7.0" 0.8.0 + (c++)"CommandLine::FileSize() const@APTPKG_7.0" 0.8.0 + (c++)"GlobalError::empty(GlobalError::MsgType const&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgIndexFile::FindInCache(pkgCache&) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::MatchAgainstConfig::Match(char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Find[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Item::FullTag[abi:cxx11](Configuration::Item const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::FindB(char const*, bool const&) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::FindI(char const*, int const&) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::Exists(char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::FindAny[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::FindDir[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::FindFile[abi:cxx11](char const*, char const*) const@APTPKG_7.0" 0.8.0 + (c++)"Configuration::ExistsAny(char const*) const@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::GetIndexes(pkgAcquire*, bool) const@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::Type::FixupURI(std::__cxx11::basic_string, std::allocator >&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgSourceList::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgTagSection::Find(std::basic_string_view >, char const*&, char const*&) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::Find(std::basic_string_view >, unsigned int&) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::FindI(std::basic_string_view >, long) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::Find(std::basic_string_view >) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::FindULL(std::basic_string_view >, unsigned long long const&) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::FindFlag(std::basic_string_view >, unsigned long&, unsigned long) const@APTPKG_7.0" 1.9~ + (c++)"pkgCache::DepIterator::AllTargets() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::DepIterator::IsCritical() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::DepIterator::SmartTargetPkg(pkgCache::PkgIterator&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::GrpIterator::FindPreferredPkg(bool const&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::GrpIterator::FindPkg(std::basic_string_view >) const@APTPKG_7.0" 1.9~ + (c++)"pkgCache::GrpIterator::NextPkg(pkgCache::PkgIterator const&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::PkgIterator::CurVersion() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::PkgIterator::State() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::CompareVer(pkgCache::VerIterator const&) const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::NewestFile() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::Downloadable() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::TranslatedDescription() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::RelStr[abi:cxx11]() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::Automatic() const@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::sHash(std::basic_string_view >) const@APTPKG_7.0" 1.9~ + (c++)"pkgCache::Header::CheckSizes(pkgCache::Header&) const@APTPKG_7.0" 0.8.0 + (c++)"metaIndex::GetURI[abi:cxx11]() const@APTPKG_7.0" 0.8.0 + (c++)"metaIndex::GetDist[abi:cxx11]() const@APTPKG_7.0" 0.8.0 + (c++)"metaIndex::GetType() const@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for OpProgress@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for SourceCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcqFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcquire@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for PackageCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDepCache@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgSimulate@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcqMethod@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgCacheFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgIndexFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcqArchive@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgTagSection@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for OpTextProgress@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcquireStatus@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgPackageManager@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for debVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for FileFd@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgCache@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for IndexCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for metaIndex@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDPkgPM@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgPolicy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgAcquire::Item@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDepCache::Policy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgSimulate::Policy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgIndexFile::Type@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgSourceList::Type@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for APT::CacheSetHelper@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgCache::Namespace@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for OpProgress@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for SourceCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcqFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcquire@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for PackageCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDepCache@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgSimulate@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcqMethod@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgCacheFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgIndexFile@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcqArchive@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgTagSection@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for OpTextProgress@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcquireStatus@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgPackageManager@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for debVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for FileFd@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgCache@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for IndexCopy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for metaIndex@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDPkgPM@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgPolicy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgSystem@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgAcquire::Item@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDepCache::Policy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgSimulate::Policy@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgIndexFile::Type@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgSourceList::Type@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for APT::CacheSetHelper@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgCache::Namespace@APTPKG_7.0" 0.8.0 + (c++)"vtable for OpProgress@APTPKG_7.0" 0.8.0 + (c++)"vtable for SourceCopy@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcqFile@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcquire@APTPKG_7.0" 0.8.0 + (c++)"vtable for PackageCopy@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDepCache@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgSimulate@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcqMethod@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgCacheFile@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgIndexFile@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcqArchive@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgTagSection@APTPKG_7.0" 0.8.0 + (c++)"vtable for OpTextProgress@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcquireStatus@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgPackageManager@APTPKG_7.0" 0.8.0 + (c++)"vtable for debVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgUdevCdromDevices@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgVersioningSystem@APTPKG_7.0" 0.8.0 + (c++)"vtable for FileFd@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgCache@APTPKG_7.0" 0.8.0 + (c++)"vtable for IndexCopy@APTPKG_7.0" 0.8.0 + (c++)"vtable for metaIndex@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDPkgPM@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgPolicy@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgSystem@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgAcquire::Item@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDepCache::InRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDepCache::DefaultRootSetFunc@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDepCache::Policy@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgSimulate::Policy@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgIndexFile::Type@APTPKG_7.0" 0.8.0 + (c++)"vtable for Configuration::MatchAgainstConfig@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgSourceList::Type@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgSrcRecords::Parser@APTPKG_7.0" 0.8.0 + (c++)"vtable for APT::CacheSetHelper@APTPKG_7.0" 0.8.0 + _config@APTPKG_7.0 0.8.0 + _system@APTPKG_7.0 0.8.0 + debVS@APTPKG_7.0 0.8.0 + pkgLibVersion@APTPKG_7.0 0.8.0 + pkgVersion@APTPKG_7.0 0.8.0 + (c++)"pkgAcquireStatus::~pkgAcquireStatus()@APTPKG_7.0" 0.8.0 + (c++)"IndexCopy::~IndexCopy()@APTPKG_7.0" 0.8.0 + (c++)"pkgArchiveCleaner::~pkgArchiveCleaner()@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgArchiveCleaner@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgArchiveCleaner@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgArchiveCleaner@APTPKG_7.0" 0.8.0 + (c++)"ChangeOwnerAndPermissionOfFile(char const*, char const*, char const*, char const*, unsigned int)@APTPKG_7.0" 1.1~exp9 + (c++)"CreateAPTDirectoryIfNeeded(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.2 + (c++)"FileFd::FileSize()@APTPKG_7.0" 0.8.8 + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@APTPKG_7.0" 0.8.11 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::list, std::allocator > >&)@APTPKG_7.0" 0.8.11 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.11 + (c++)"RealFileExists(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.11 + (c++)"StripEpoch(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.11 + (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@APTPKG_7.0" 0.8.11 + (c++)"FindMountPointForDevice[abi:cxx11](char const*)@APTPKG_7.0" 0.8.12 + (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@APTPKG_7.0" 0.8.12 + (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@APTPKG_7.0" 0.8.12 + (c++)"APT::Configuration::getCompressors(bool)@APTPKG_7.0" 0.8.12 + (c++)"APT::Configuration::getCompressorExtensions[abi:cxx11]()@APTPKG_7.0" 0.8.12 + (c++)"pkgCache::DepIterator::IsNegative() const@APTPKG_7.0" 0.8.15~exp1 + (c++)"Configuration::CndSet(char const*, int)@APTPKG_7.0" 0.8.15.3 + (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@APTPKG_7.0" 0.8.15.3 + (c++)"DeEscapeString(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.15.4 + (c++)"GetModificationTime(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.15.6 + (c++)"pkgSourceList::GetLastModifiedTime()@APTPKG_7.0" 0.8.15.6 + (c++)"pkgCacheFile::RemoveCaches()@APTPKG_7.0" 0.8.15.7 + (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@APTPKG_7.0" 0.8.15.7 + (c++)"EDSP::ApplyRequest(std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > > const&, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > > const&, pkgDepCache&)@APTPKG_7.0" 0.8.16~exp2 + (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@APTPKG_7.0" 0.8.16~exp2 + (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@APTPKG_7.0" 0.8.16~exp6 + (c++)"OpProgress::SubProgress(unsigned long long, std::__cxx11::basic_string, std::allocator > const&, float)@APTPKG_7.0" 0.8.16~exp6 + (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"OpProgress::Progress(unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"SourceCopy::GetFile(std::__cxx11::basic_string, std::allocator >&, unsigned long long&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgAcquire::UriIterator::~UriIterator()@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgAcquire::MethodConfig::~MethodConfig()@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgTagFile::Offset()@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"PackageCopy::GetFile(std::__cxx11::basic_string, std::allocator >&, unsigned long long&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgTagSection::~pkgTagSection()@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@APTPKG_7.0" 0.8.16~exp6 + (c++)"FileFd::Seek(unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"FileFd::Skip(unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"FileFd::Write(void const*, unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"FileFd::Truncate(unsigned long long)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgTagFile@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgTagFile@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgTagFile@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgSrcRecords@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::UriIterator@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::MethodConfig@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::Queue@APTPKG_7.0" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::Worker@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@APTPKG_7.0" 0.8.16~exp6 + (c++)"pkgPackageManager::SigINTStop@APTPKG_7.0" 0.8.16~exp14 + (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@APTPKG_7.0" 0.8.16~exp14 + (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@APTPKG_7.0" 0.8.16~exp14 + (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@APTPKG_7.0" 0.8.16~exp9 + (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@APTPKG_7.0" 0.8.16~exp9 + (c++)"FileFd::ModificationTime()@APTPKG_7.0" 0.8.16~exp9 + (c++)"FileFd::Open(std::__cxx11::basic_string, std::allocator >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_7.0" 0.8.16~exp9 + (c++)"FileFd::Open(std::__cxx11::basic_string, std::allocator >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@APTPKG_7.0" 0.8.16~exp9 + (c++)"FileFd::ReadLine(char*, unsigned long long)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list > const&, APT::CacheSetHelper&)@APTPKG_7.0" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"typeinfo for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"typeinfo name for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"vtable for APT::VersionContainerInterface@APTPKG_7.0" 0.8.16~exp9 + (c++)"APT::Progress::PackageManagerFancy::HandleSIGWINCH(int)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::~PackageManagerFancy()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::PackageManagerFancy()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::SetupTerminalScrollArea(int)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::Stop()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManager::~PackageManager()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::ConffilePrompt(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Error(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::~PackageManagerProgressDeb822Fd()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::PackageManagerProgressDeb822Fd(int)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StartDpkg()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::Stop()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressDeb822Fd::WriteToStatusFd(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFactory()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::ConffilePrompt(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::Error(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::~PackageManagerProgressFd()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::PackageManagerProgressFd(int)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::StartDpkg()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::Stop()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerProgressFd::WriteToStatusFd(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManager::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerText::~PackageManagerText()@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerText::StatusChanged(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned int, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::String::Strip(std::basic_string_view >)@APTPKG_7.0" 0.9.13~exp1 + (c++)"pkgDPkgPM::BuildPackagesProgressMap()@APTPKG_7.0" 0.9.13~exp1 + (c++)"pkgDPkgPM::DoDpkgStatusFd(int)@APTPKG_7.0" 0.9.13~exp1 + (c++)"pkgDPkgPM::ProcessDpkgStatusLine(char*)@APTPKG_7.0" 0.9.13~exp1 + (c++)"pkgDPkgPM::StartPtyMagic()@APTPKG_7.0" 0.9.13~exp1 + (c++)"pkgDPkgPM::StopPtyMagic()@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo name for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo name for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo name for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo name for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1 + (c++)"typeinfo name for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1 + (c++)"vtable for APT::Progress::PackageManager@APTPKG_7.0" 0.9.13~exp1 + (c++)"vtable for APT::Progress::PackageManagerFancy@APTPKG_7.0" 0.9.13~exp1 + (c++)"vtable for APT::Progress::PackageManagerProgressDeb822Fd@APTPKG_7.0" 0.9.13~exp1 + (c++)"vtable for APT::Progress::PackageManagerProgressFd@APTPKG_7.0" 0.9.13~exp1 + (c++)"vtable for APT::Progress::PackageManagerText@APTPKG_7.0" 0.9.13~exp1 + (c++)"APT::Progress::PackageManagerFancy::instances@APTPKG_7.0" 0.9.14.2 + (c++)"APT::Progress::PackageManagerFancy::Start(int)@APTPKG_7.0" 0.9.14.2 + (c++)"flAbsPath(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp1 + (c++)"metaIndex::~metaIndex()@APTPKG_7.0" 1.1~exp1 + (c++)"APT::CacheFilter::ANDMatcher::AND(APT::CacheFilter::Matcher*)@APTPKG_7.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_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::ANDMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::~ANDMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ANDMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::FalseMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::Matcher::~Matcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::NOTMatcher::NOTMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::NOTMatcher::~NOTMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::NOTMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::OR(APT::CacheFilter::Matcher*)@APTPKG_7.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_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*, APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::ORMatcher(APT::CacheFilter::Matcher*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::~ORMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::ORMatcher::ORMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::PackageIsNewInstall::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::PackageIsNewInstall::~PackageIsNewInstall()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::PackageIsNewInstall::PackageIsNewInstall(pkgCacheFile*)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::PackageMatcher::~PackageMatcher()@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::PackageNameMatchesFnmatch(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheFilter::TrueMatcher::operator()(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4 + (c++)"typeinfo name for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::ANDMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::FalseMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::Matcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::NOTMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::ORMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::PackageArchitectureMatchesSpecification@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::PackageIsNewInstall@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::PackageMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::PackageNameMatchesFnmatch@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::PackageNameMatchesRegEx@APTPKG_7.0" 1.1~exp4 + (c++)"vtable for APT::CacheFilter::TrueMatcher@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotFindFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotFindPackage(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotFindVersion(APT::CacheSetHelper::VerSelector, APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotGetCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotGetInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::canNotGetVersion(APT::CacheSetHelper::VerSelector, pkgCacheFile&, pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFrom(APT::CacheSetHelper::PkgSelector, APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::__cxx11::list > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromPackageName(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromString(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::PackageFromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::showFnmatchSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::showPackageSelection(pkgCache::PkgIterator const&, APT::CacheSetHelper::PkgSelector, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::CacheSetHelper::showVersionSelection(pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::CacheSetHelper::VerSelector, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp4 + (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator >, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&, bool)@APTPKG_7.0" 1.1~exp4 + (c++)"Hashes::GetHashStringList()@APTPKG_7.0" 1.1~exp1 + (c++)"Hashes::Hashes()@APTPKG_7.0" 1.1~exp1 + (c++)"Hashes::~Hashes()@APTPKG_7.0" 1.1~exp1 + (c++)"HashStringList::find(char const*) const@APTPKG_7.0" 1.0.9.4 + (c++)"HashStringList::operator==(HashStringList const&) const@APTPKG_7.0" 1.0.9.4 + (c++)"HashStringList::operator!=(HashStringList const&) const@APTPKG_7.0" 1.0.9.4 + (c++)"HashStringList::push_back(HashString const&)@APTPKG_7.0" 1.0.9.4 + (c++)"HashStringList::supported(char const*)@APTPKG_7.0" 1.0.9.4 + (c++)"HashStringList::usable() const@APTPKG_7.0" 1.1~exp1 + (c++)"HashStringList::VerifyFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_7.0" 1.0.9.4 + (c++)"HashString::operator==(HashString const&) const@APTPKG_7.0" 1.0.9.4 + (c++)"HashString::operator!=(HashString const&) const@APTPKG_7.0" 1.0.9.4 + (c++)"pkgAcqArchive::IsTrusted() const@APTPKG_7.0" 1.1~exp1 + (c++)"pkgAcqFile::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp1 + (c++)"pkgAcqMethod::DropPrivsOrDie()@APTPKG_7.0" 1.1~exp1 + (c++)"pkgAcquire::Item::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp1 + (c++)"pkgAcquire::Item::IsTrusted() const@APTPKG_7.0" 1.1~exp1 + (c++)"typeinfo for Hashes@APTPKG_7.0" 1.1~exp1 + (c++)"typeinfo name for Hashes@APTPKG_7.0" 1.1~exp1 + (c++)"vtable for Hashes@APTPKG_7.0" 1.1~exp1 + (c++)"pkgAcquire::GetLock(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"pkgAcquire::Item::Dequeue()@APTPKG_7.0" 1.1~exp4 + (c++)"pkgAcquire::Item::QueueURI(pkgAcquire::ItemDesc&)@APTPKG_7.0" 1.1~exp4 + (c++)"pkgAcquire::Item::SetActiveSubprocess(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp4 + (c++)"pkgDepCache::MarkAndSweep()@APTPKG_7.0" 1.1~exp4 + (c++)"pkgDepCache::MarkAndSweep(pkgDepCache::InRootSetFunc&)@APTPKG_7.0" 1.1~exp4 + (c++)"GetListOfFilesInDir(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 0.8.16~exp13 + (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@APTPKG_7.0" 0.8.16~exp10 + (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@APTPKG_7.0" 0.8.16~exp10 + (c++)"FileFd::Write(int, void const*, unsigned long long)@APTPKG_7.0" 0.8.16~exp14 + (c++)"_strrstrip(char*)@APTPKG_7.0" 0.9.7.9~exp2 + (c++)"SplitClearSignedFile(std::__cxx11::basic_string, std::allocator > const&, FileFd*, std::vector, std::allocator >, std::allocator, std::allocator > > >*, FileFd*)@APTPKG_7.0" 0.9.7.9~exp2 + (c++)"OpenMaybeClearSignedFile(std::__cxx11::basic_string, std::allocator > const&, FileFd&)@APTPKG_7.0" 0.9.7.9~exp2 + (c++)"Configuration::Dump(std::basic_ostream >&, char const*, char const*, bool)@APTPKG_7.0" 0.9.3 + (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@APTPKG_7.0" 0.9.3 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::PackageArchitectureMatchesSpecification(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::~PackageArchitectureMatchesSpecification()@APTPKG_7.0" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.9.7 + (c++)"APT::CacheFilter::PackageArchitectureMatchesSpecification::operator()(char const* const&)@APTPKG_7.0" 0.9.7 + (c++)"APT::Configuration::checkLanguage(std::__cxx11::basic_string, std::allocator >, bool)@APTPKG_7.0" 0.9.7.5 + (c++)"pkgCdrom::DropTranslation(std::vector, std::allocator >, std::allocator, std::allocator > > >&)@APTPKG_7.0" 0.9.7.5 + (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PrvIterator const&) const@APTPKG_7.0" 0.9.8 + (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@APTPKG_7.0" 0.9.8 + (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.9.9.1 + (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 0.9.9.1 + (c++)"pkgDPkgPM::SendPkgsInfo(_IO_FILE*, unsigned int const&)@APTPKG_7.0" 0.9.9.1 + (c++)"pkgCache::VerIterator::MultiArchType() const@APTPKG_7.0" 0.9.9.1 + (c++)"AutoDetectProxy(URI&)@APTPKG_7.0" 0.9.10 + (c++)"CommandLine::GetCommand(CommandLine::Dispatch const*, unsigned int, char const* const*)@APTPKG_7.0" 0.9.11 + (c++)"CommandLine::MakeArgs(char, char const*, char const*, unsigned long)@APTPKG_7.0" 0.9.11 + (c++)"Configuration::Clear()@APTPKG_7.0" 0.9.11 + (c++)"Glob(std::__cxx11::basic_string, std::allocator > const&, int)@APTPKG_7.0" 0.9.11 + (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@APTPKG_7.0" 0.9.11 + (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@APTPKG_7.0" 0.9.11 + (c++)"pkgTagSection::pkgTagSection()@APTPKG_7.0" 0.9.11 + (c++)"strv_length(char const**)@APTPKG_7.0" 0.9.11 + (c++)"StringSplit[abi:cxx11](std::basic_string_view > const&, std::basic_string_view > const&, unsigned int)@APTPKG_7.0" 0.9.11.3 + (c++)"pkgAcquire::Item::RenameOnError(pkgAcquire::Item::RenameOnErrorState)@APTPKG_7.0" 0.9.12 + (c++)"APT::String::Endswith(std::basic_string_view > const&, std::basic_string_view > const&)@APTPKG_7.0" 0.9.13.1 + (c++)"ExecFork(std::set, std::allocator >)@APTPKG_7.0" 0.9.13.1 + (c++)"MergeKeepFdsFromConfiguration(std::set, std::allocator >&)@APTPKG_7.0" 0.9.13.1 + (c++)"HashString::FromFile(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 0.9.13.1 + (c++)"HashString::GetHashForFile(std::__cxx11::basic_string, std::allocator >) const@APTPKG_7.0" 0.9.13.1 + (c++)"GetTempDir[abi:cxx11]()@APTPKG_7.0" 0.9.14.2 + (c++)"APT::Configuration::getBuildProfiles[abi:cxx11]()@APTPKG_7.0" 0.9.16 + (c++)"APT::Configuration::getBuildProfilesString[abi:cxx11]()@APTPKG_7.0" 0.9.16 + (c++)"Rename(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 0.9.16 + (c++)"pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(pkgCache::PkgIterator const&, bool, unsigned long, bool)@APTPKG_7.0" 1.0 + (c++)"APT::Progress::PackageManagerFancy::GetTerminalSize()@APTPKG_7.0" 1.0 + (c++)"APT::Progress::PackageManagerFancy::GetTextProgressStr[abi:cxx11](float, int)@APTPKG_7.0" 1.0 + (c++)"EDSP::ExecuteSolver(char const*, int*, int*, bool)@APTPKG_7.0" 1.0.4 + (c++)"pkgPackageManager::EarlyRemove(pkgCache::PkgIterator, pkgCache::DepIterator const*)@APTPKG_7.0" 1.0.4 + (c++)"pkgSrcRecords::Step()@APTPKG_7.0" 1.0.4 + (c++)"pkgDPkgPM::SetupSlavePtyMagic()@APTPKG_7.0" 1.0.8 + (c++)"APT::Progress::PackageManager::PackageManager()@APTPKG_7.0" 1.1~exp1 + (c++)"pkgDPkgPM::Go(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1 + (c++)"pkgPackageManager::DoInstall(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1 + (c++)"pkgPackageManager::DoInstallPostFork(APT::Progress::PackageManager*)@APTPKG_7.0" 1.1~exp1 + (c++)"pkgTagFile::Init(FileFd*, unsigned long long)@APTPKG_7.0" 1.1~exp1 + (c++)"pkgTagSection::Count() const@APTPKG_7.0" 1.1~exp1 + (c++)"pkgTagSection::Exists(std::basic_string_view >) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::FindB(std::basic_string_view >, bool) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::Scan(char const*, unsigned long, bool)@APTPKG_7.0" 1.1~exp1 + (c++)"StartsWithGPGClearTextSignature(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp1 + (c++)"Popen(char const**, FileFd&, int&, FileFd::OpenMode, bool, bool)@APTPKG_7.0" 1.9.0~ + (c++)"APT::String::Startswith(std::basic_string_view > const&, std::basic_string_view > const&)@APTPKG_7.0" 1.1~exp2 + (c++)"APT::Upgrade::Upgrade(pkgDepCache&, int, OpProgress*)@APTPKG_7.0" 1.1~exp4 + (c++)"pkgProblemResolver::Resolve(bool, OpProgress*)@APTPKG_7.0" 1.1~exp4 + (c++)"pkgProblemResolver::ResolveByKeep(OpProgress*)@APTPKG_7.0" 1.1~exp4 + (c++)"DropPrivileges()@APTPKG_7.0" 1.1~exp4 + (c++)"FileFd::FileFd(std::__cxx11::basic_string, std::allocator >, unsigned int, unsigned long)@APTPKG_7.0" 1.1~exp4 + (c++)"metaIndex::metaIndex(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, char const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgTagSection::Get(char const*&, char const*&, unsigned int) const@APTPKG_7.0" 1.1~exp9 + (c++)"APT::CacheSetHelper::CacheSetHelper(bool, GlobalError::MsgType)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::Configuration::getArchitectures[abi:cxx11](bool const&)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::Configuration::getCompressionTypes[abi:cxx11](bool const&)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::PackageContainerInterface const&)@APTPKG_7.0" 1.9.11~ + (c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageUniverse::PackageUniverse(pkgCache*)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::PackageUniverse::PackageUniverse(pkgCacheFile*)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::Progress::PackageManagerText::PackageManagerText()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::VersionContainerInterface::FromDependency(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::DepIterator const&, APT::CacheSetHelper::VerSelector, APT::CacheSetHelper&)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_7.0" 1.1~exp9 + (c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_7.0" 1.1~exp9 + (c++)"APT::VersionContainerInterface::VersionContainerInterface(APT::VersionContainerInterface const&)@APTPKG_7.0" 1.9.11~ + (c++)"CommandLine::CommandLine()@APTPKG_7.0" 1.1~exp9 + (c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string, std::allocator > const&, bool) const@APTPKG_7.0" 1.1~exp9 + (c++)"debDscFileIndex::CreateSrcParser() const@APTPKG_7.0" 1.1~exp9 + (c++)"debDscFileIndex::~debDscFileIndex()@APTPKG_7.0" 1.1~exp9 + (c++)"debDscFileIndex::debDscFileIndex(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"debDscFileIndex::GetType() const@APTPKG_7.0" 1.1~exp9 + (c++)"ExecGPGV(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, int const&, int*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"FileFd::FileFd()@APTPKG_7.0" 1.1~exp9 + (c++)"FileFd::FileFd(int, bool)@APTPKG_7.0" 1.1~exp9 + (c++)"FileFd::FileFd(int, unsigned int, FileFd::CompressMode)@APTPKG_7.0" 1.1~exp9 + (c++)"FileFd::FileFd(std::__cxx11::basic_string, std::allocator >, unsigned int, FileFd::CompressMode, unsigned long)@APTPKG_7.0" 1.1~exp9 + (c++)"GetTempFile(std::__cxx11::basic_string, std::allocator > const&, bool, FileFd*)@APTPKG_7.0" 1.1~exp9 + (c++)"Hashes::AddFD(FileFd&, unsigned long long)@APTPKG_7.0" 1.1~exp9 + (c++)"Hashes::AddFD(int, unsigned long long)@APTPKG_7.0" 1.1~exp9 + (c++)"Hashes::Add(unsigned char const*, unsigned long long)@APTPKG_7.0" 1.1~exp9 + (c++)"Hashes::Hashes(HashStringList const&)@APTPKG_7.0" 1.1~exp9 + (c++)"Hashes::Hashes(unsigned int)@APTPKG_7.0" 1.1~exp9 + (c++)"HashStringList::FileSize() const@APTPKG_7.0" 1.1~exp9 + (c++)"HashStringList::FileSize(unsigned long long)@APTPKG_7.0" 1.1~exp9 + (c++)"IndexCopy::IndexCopy()@APTPKG_7.0" 1.1~exp9 + (c++)"IndexTarget::Format(std::__cxx11::basic_string, std::allocator >) const@APTPKG_7.0" 1.1~exp9 + (c++)"IndexTarget::IndexTarget(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool, bool, std::map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::less, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"IndexTarget::Option[abi:cxx11](IndexTarget::OptionKeys) const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::CheckDist(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::Describe[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::Exists(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::FindInCache(pkgCache&, bool) const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetCodename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetDate() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetExpectedDist[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetLoadedSuccessfully() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetSignedBy[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetSuite[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetSupportsAcquireByHash() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetTrusted() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::GetValidUntil() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::Lookup(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::MetaKeys[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"metaIndex::swapLoad(metaIndex*)@APTPKG_7.0" 1.1~exp9 + (c++)"PackageCopy::PackageCopy()@APTPKG_7.0" 1.1~exp9 + (c++)"PackageCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::DescURI[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::GetFinalFilename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::HashesRequired() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqArchive::ShortDesc[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::~pkgAcqChangelog()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::RlsFileIterator const&, char const*, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, pkgCache::VerIterator const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::pkgAcqChangelog(pkgAcquire*, std::__cxx11::basic_string, std::allocator > const&, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::RlsFileIterator const&, char const*, char const*, char const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::URI[abi:cxx11](pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::URI(std::__cxx11::basic_string, std::allocator > const&, char const*, char const*, char const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqChangelog::URITemplate[abi:cxx11](pkgCache::RlsFileIterator const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqFile::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqFile::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqFile::HashesRequired() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, unsigned long long, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqMethod::FetchItem::FetchItem()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqMethod::FetchItem::~FetchItem()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcqMethod::FetchResult::~FetchResult()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::Done(std::__cxx11::basic_string, std::allocator > const&, HashStringList const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::Failed(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::GetFinalFilename[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::GetItemDesc()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::GetOwner() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::HashSum[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::Item(pkgAcquire*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::Rename(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::ShortDesc[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::Start(std::__cxx11::basic_string, std::allocator > const&, unsigned long long)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Item::VerifyDone(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire::MethodConfig const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Queue::QItem::Custom600Headers[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Queue::QItem::GetExpectedHashes() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Queue::QItem::GetMaximumSize() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Queue::QItem::SyncDestinationFiles() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::Queue::Queue(std::__cxx11::basic_string, std::allocator > const&, pkgAcquire*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgAcquire::UriIterator::UriIterator(pkgAcquire::Queue*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgArchiveCleaner::pkgArchiveCleaner()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCache::DepIterator::IsImplicit() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCacheFile::pkgCacheFile(pkgDepCache*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCache::PkgIterator::FullName[abi:cxx11](bool const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCache::RlsFileIterator::RelStr[abi:cxx11]()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCdrom::~pkgCdrom()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCdrom::pkgCdrom()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCdromStatus::~pkgCdromStatus()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgCdromStatus::pkgCdromStatus()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexFile::FindInCache(pkgCache&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexFile::~pkgDebianIndexFile()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexFile::pkgDebianIndexFile(bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::ArchiveURI(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::Describe[abi:cxx11](bool) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::Exists() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::GetProgressDescription[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::IndexFileName[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::OpenListFile(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::~pkgDebianIndexRealFile()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::pkgDebianIndexRealFile(std::__cxx11::basic_string, std::allocator > const&, bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexRealFile::Size() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::ArchiveURI(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::Describe[abi:cxx11](bool) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::Exists() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::GetProgressDescription[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::IndexFileName[abi:cxx11]() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::OpenListFile(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::~pkgDebianIndexTargetFile()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::pkgDebianIndexTargetFile(IndexTarget const&, bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDebianIndexTargetFile::Size() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator const&, int, pkgCache::PkgIterator&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDepCache::DependencyState(pkgCache::DepIterator const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDepCache::Policy::IsImportantDep(pkgCache::DepIterator const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDepCache::UpdateVerState(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgDepCache::VersionState(pkgCache::DepIterator, unsigned char, unsigned char, unsigned char) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgIndexFile::ArchiveInfo[abi:cxx11](pkgCache::VerIterator const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgIndexFile::~pkgIndexFile()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgIndexFile::pkgIndexFile(bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgIndexFile::SourceInfo[abi:cxx11](pkgSrcRecords::Parser const&, pkgSrcRecords::File const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgRecords::Parser::~Parser()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgRecords::Parser::Parser()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::AddVolatileFile(pkgIndexFile*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::GetVolatileFiles() const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::ReadAppend(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::ReadSourceDir(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::Read(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::Type::ParseLine(std::vector >&, char const*, unsigned int, std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::Type::ParseStanza(std::vector >&, pkgTagSection&, unsigned int, FileFd&)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::Type::~Type()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::Type::Type(char const*, char const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSrcRecords::Parser::~Parser()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSrcRecords::Parser::Parser(pkgIndexFile const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSystem::~pkgSystem()@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSystem::pkgSystem(char const*, pkgVersioningSystem*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgTagSection::FindFlag(std::basic_string_view >, unsigned char&, unsigned char) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::FindFlag(unsigned char&, unsigned char, char const*, char const*)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgTagSection::FindRaw(std::basic_string_view >) const@APTPKG_7.0" 1.9~ + (c++)"pkgTagSection::Tag::Remove(std::basic_string_view >)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgTagSection::Tag::Rename(std::basic_string_view >, std::basic_string_view >)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgTagSection::Tag::Rewrite(std::basic_string_view >, std::basic_string_view >)@APTPKG_7.0" 2.9.27+exp1 + (c++)"pkgTagSection::Write(FileFd&, char const* const*, std::vector > const&) const@APTPKG_7.0" 1.1~exp9 + (c++)"pkgVersioningSystem::~pkgVersioningSystem()@APTPKG_7.0" 1.1~exp9 + (c++)"SigVerify::~SigVerify()@APTPKG_7.0" 1.1~exp9 + (c++)"SigVerify::SigVerify()@APTPKG_7.0" 1.1~exp9 + (c++)"SourceCopy::RewriteEntry(FileFd&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"SourceCopy::SourceCopy()@APTPKG_7.0" 1.1~exp9 + (c++)"TranslationsCopy::~TranslationsCopy()@APTPKG_7.0" 1.1~exp9 + (c++)"TranslationsCopy::TranslationsCopy()@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for debDscFileIndex@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgCdrom@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgCdromStatus@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgOrderList@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgProblemResolver@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgRecords@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for pkgSourceList@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for SigVerify@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo for TranslationsCopy@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for debDscFileIndex@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgCdrom@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgCdromStatus@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgOrderList@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgProblemResolver@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgRecords@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for pkgSourceList@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for SigVerify@APTPKG_7.0" 1.1~exp9 + (c++)"typeinfo name for TranslationsCopy@APTPKG_7.0" 1.1~exp9 + (c++)"URI::ArchiveOnly(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for APT::PackageUniverse@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for debDscFileIndex@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgAcqChangelog@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgAcqMethod::FetchItem@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgAcqMethod::FetchResult@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgCdrom@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgCdromStatus@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgDebianIndexFile@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgDebianIndexRealFile@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgDebianIndexTargetFile@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgDepCache::ActionGroup@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgOrderList@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgProblemResolver@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgRecords@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for pkgSourceList@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for SigVerify@APTPKG_7.0" 1.1~exp9 + (c++)"vtable for TranslationsCopy@APTPKG_7.0" 1.1~exp9 + (c++)"APT::CacheFilter::ParsePattern(std::basic_string_view >, pkgCacheFile*)@APTPKG_7.0" 1.9.11~ + (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.9.11~ + (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.9.11~ + (c++)"APT::String::DisplayLength(std::basic_string_view >)@APTPKG_7.0" 1.9.11~ + (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_7.0" 1.9.11~ + (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(std::basic_string_view >) const@APTPKG_7.0" 1.9.11~ + (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_7.0" 1.9.11~ + (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_7.0" 1.9.11~ + (c++)"pkgDebianIndexFile::Merge(pkgCacheGenerator&, OpProgress*)@APTPKG_7.0" 1.9.11~ + (c++)"metaIndex::Merge(pkgCacheGenerator&, OpProgress*) const@APTPKG_7.0" 1.9.11~ + (c++)"pkgDepCache::CheckConsistency(char const*)@APTPKG_7.0" 2.1.5~ + (c++)"APT::StateChanges::clear()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::empty() const@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Error()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Hold()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Hold(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Install()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Install(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::operator=(APT::StateChanges&&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Purge()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Purge(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Remove()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Remove(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Save(bool)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::~StateChanges()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::StateChanges()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::StateChanges(APT::StateChanges&&)@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Unhold()@APTPKG_7.0" 1.1~exp15 + (c++)"APT::StateChanges::Unhold(pkgCache::VerIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"metaIndex::IsArchitectureSupported(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.1~exp15 + (c++)"RemoveFile(char const*, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp15 + (c++)"pkgOrderList::OrderCompareA(pkgCache::Package*, pkgCache::Package*)@APTPKG_7.0" 1.1~exp15 + (c++)"pkgOrderList::OrderCompareB(pkgCache::Package*, pkgCache::Package*)@APTPKG_7.0" 1.1~exp15 + (c++)"CommandLine::DispatchArg(CommandLine::Dispatch const*, bool)@APTPKG_7.0" 1.1~exp15 + (c++)"Configuration::MoveSubTree(char const*, char const*)@APTPKG_7.0" 1.1~exp15 + (c++)"GetTempDir(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp15 + (c++)"HashString::usable() const@APTPKG_7.0" 1.1~exp15 + (c++)"IndexTarget::OptionBool(IndexTarget::OptionKeys) const@APTPKG_7.0" 1.1~exp12 + (c++)"pkgDepCache::GetCandidateVersion(pkgCache::PkgIterator const&)@APTPKG_7.0" 1.1~exp15 + (c++)"pkgDepCache::Policy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_7.0" 1.1~exp15 + (c++)"pkgPackageManager::CheckRBreaks(pkgCache::PkgIterator const&, pkgCache::DepIterator, char const*)@APTPKG_7.0" 1.1~exp11 + (c++)"pkgPolicy::GetPriority(pkgCache::VerIterator const&, bool)@APTPKG_7.0" 1.1~exp9 + (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.1~exp15 + (c++)"pkgVersionMatch::VersionMatches(pkgCache::VerIterator)@APTPKG_7.0" 1.1~exp9 + (c++)"GetSrvRecords(std::__cxx11::basic_string, std::allocator >, int, std::vector >&)@APTPKG_7.0" 1.1~exp15 + (c++)"GetSrvRecords(std::__cxx11::basic_string, std::allocator >, std::vector >&)@APTPKG_7.0" 1.1~exp15 + (c++)"PopFromSrvRecs(std::vector >&)@APTPKG_7.0" 1.1~exp15 + (c++)"SrvRec::operator==(SrvRec const&) const@APTPKG_7.0" 1.1~exp15 + (c++)"debDscFileIndex::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.1.4 + (c++)"debDscFileIndex::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.1.4 + (c++)"debDscFileIndex::GetIndexFlags() const@APTPKG_7.0" 1.1.4 + (c++)"FileFd::Flush()@APTPKG_7.0" 1.1.9 + (c++)"metaIndex::IsArchitectureAllSupportedFor(IndexTarget const&) const@APTPKG_7.0" 1.1.9 + (c++)"pkgTagFile::Init(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_7.0" 1.2~exp1 + (c++)"pkgTagFile::pkgTagFile(FileFd*, pkgTagFile::Flags, unsigned long long)@APTPKG_7.0" 1.2~exp1 + APTPKG_7.0@APTPKG_7.0 1.1~exp9 + (c++)"debStringPackageIndex::~debStringPackageIndex()@APTPKG_7.0" 1.2.2 + (c++)"debStringPackageIndex::debStringPackageIndex(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.2.2 + (c++)"debStringPackageIndex::GetArchitecture[abi:cxx11]() const@APTPKG_7.0" 1.2.2 + (c++)"debStringPackageIndex::GetComponent[abi:cxx11]() const@APTPKG_7.0" 1.2.2 + (c++)"debStringPackageIndex::GetIndexFlags() const@APTPKG_7.0" 1.2.2 + (c++)"debStringPackageIndex::GetType() const@APTPKG_7.0" 1.2.2 + (c++)"pkgCacheFile::AddIndexFile(pkgIndexFile*)@APTPKG_7.0" 1.2.2 + (c++)"typeinfo for debStringPackageIndex@APTPKG_7.0" 1.2.2 + (c++)"typeinfo name for debStringPackageIndex@APTPKG_7.0" 1.2.2 + (c++)"vtable for debStringPackageIndex@APTPKG_7.0" 1.2.2 + (c++)"operator<<(std::basic_ostream >&, APT::PrettyDep const&)@APTPKG_7.0" 1.3~exp1 + (c++)"operator<<(std::basic_ostream >&, APT::PrettyPkg const&)@APTPKG_7.0" 1.3~exp1 + (c++)"EDSP::ReadRequest(int, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > >&, std::__cxx11::list, std::allocator >, std::allocator, std::allocator > > >&, unsigned int&)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, unsigned int, OpProgress*)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteError(char const*, std::__cxx11::basic_string, std::allocator > const&, FileFd&)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, std::vector > const&, OpProgress*)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteProgress(unsigned short, char const*, FileFd&)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteRequest(pkgDepCache&, FileFd&, unsigned int, OpProgress*)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_7.0" 1.3~exp2 + (c++)"EDSP::WriteSolutionStanza(FileFd&, char const*, pkgCache::VerIterator const&)@APTPKG_7.0" 1.3~exp2 + (c++)"EIPP::ApplyRequest(std::__cxx11::list, std::allocator >, EIPP::PKG_ACTION>, std::allocator, std::allocator >, EIPP::PKG_ACTION> > >&, pkgDepCache&)@APTPKG_7.0" 1.3~rc2 + (c++)"EIPP::ReadRequest(int, std::__cxx11::list, std::allocator >, EIPP::PKG_ACTION>, std::allocator, std::allocator >, EIPP::PKG_ACTION> > >&, unsigned int&)@APTPKG_7.0" 1.3~rc2 + (c++)"FileFd::Read(int, void*, unsigned long long, unsigned long long*)@APTPKG_7.0" 1.3~rc2 + (c++)"pkgSourceList::AddVolatileFiles(CommandLine&, std::vector, std::allocator >, std::allocator, std::allocator > > >*)@APTPKG_7.0" 1.3~rc2 + (c++)"pkgSourceList::AddVolatileFile(std::__cxx11::basic_string, std::allocator > const&, std::vector, std::allocator >, std::allocator, std::allocator > > >*)@APTPKG_7.0" 1.3~rc2 + (c++)"APT::String::Join(std::vector, std::allocator >, std::allocator, std::allocator > > >, std::basic_string_view > const&)@APTPKG_7.0" 1.4~beta4 + (c++)"debListParser::ParseDepends(char const*, char const*, std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&, unsigned int&, bool const&, bool const&, bool const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.4~beta3 + (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string_view >&, std::basic_string_view >&, unsigned int&, bool, bool, bool, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 2.9.17 + (c++)"FileFd::ReadLine(std::__cxx11::basic_string, std::allocator >&)@APTPKG_7.0" 1.5~beta2~ + (c++)"MaybeAddAuth(FileFd&, URI&)@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::GetDefaultPin() const@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::GetLabel[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::GetOrigin[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::GetReleaseNotes[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::GetVersion[abi:cxx11]() const@APTPKG_7.0" 1.5~beta2~ + (c++)"metaIndex::HasSupportForComponent(std::__cxx11::basic_string, std::allocator > const&) const@APTPKG_7.0" 1.5~beta2~ + (c++)"pkgAcquireStatus::ReleaseInfoChanges(metaIndex const*, metaIndex const*, std::vector >&&)@APTPKG_7.0" 1.5~beta2~ + (c++)"RemoveFileAt(char const*, int, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 1.5~beta2~ + (c++)"pkgAcqMethod::FetchItem::Proxy[abi:cxx11]()@APTPKG_7.0" 1.6~alpha1~ + (c++)"pkgAcqMethod::SendMessage(std::__cxx11::basic_string, std::allocator > const&, std::unordered_map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >&&)@APTPKG_7.0" 1.7.0~alpha3~ + (c++)"APT::KernelAutoRemoveHelper::GetProtectedKernelsFilter(pkgCache*, bool)@APTPKG_7.0" 2.1.16 + (c++)"ExtractTar::Done()@APTPKG_7.0" 1.1~exp12 + (c++)"ExtractTar::Go(pkgDirStream&)@APTPKG_7.0" 0.8.0 + (c++)"ExtractTar::StartGzip()@APTPKG_7.0" 0.8.0 + (c++)"ExtractTar::ExtractTar(FileFd&, unsigned long long, std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.0.5 + (c++)"ExtractTar::~ExtractTar()@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::GotoMember(char const*)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::CheckMember(char const*)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::ExtractTarMember(pkgDirStream&, char const*)@APTPKG_7.0" 0.9.15.4 + (c++)"debDebFile::ExtractArchive(pkgDirStream&)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long long)@APTPKG_7.0" 1.0.5 + (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0 + (c++)"debDebFile::MemControlExtract::Process(pkgDirStream::Item&, unsigned char const*, unsigned long long, unsigned long long)@APTPKG_7.0" 1.0.5 + (c++)"debDebFile::debDebFile(FileFd&)@APTPKG_7.0" 0.8.0 + (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@APTPKG_7.0" 0.8.0 + (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@APTPKG_7.0" 0.8.0 + (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@APTPKG_7.0" 0.8.0 + (c++)"ARArchive::LoadHeaders()@APTPKG_7.0" 0.8.0 + (c++)"ARArchive::ARArchive(FileFd&)@APTPKG_7.0" 0.8.0 + (c++)"ARArchive::~ARArchive()@APTPKG_7.0" 0.8.0 + (c++)"ARArchive::FindMember(char const*) const@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for ExtractTar@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for pkgDirStream@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0 + (c++)"typeinfo for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for ExtractTar@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for pkgDirStream@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0 + (c++)"typeinfo name for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0 + (c++)"vtable for ExtractTar@APTPKG_7.0" 0.8.0 + (c++)"vtable for pkgDirStream@APTPKG_7.0" 0.8.0 + (c++)"vtable for debDebFile::ControlExtract@APTPKG_7.0" 0.8.0 + (c++)"vtable for debDebFile::MemControlExtract@APTPKG_7.0" 0.8.0 + (c++)"pkgCache::VerIterator::IsSecurityUpdate() const@APTPKG_7.0" 2.7.11 + (c++)"pkgDepCache::PhasingApplied(pkgCache::PkgIterator) const@APTPKG_7.0" 2.7.11 + (c++)"pkgProblemResolver::KeepPhasedUpdates()@APTPKG_7.0" 2.7.11 + (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string, std::allocator >)@APTPKG_7.0" 1.9.11~ + (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_7.0" 1.9.11~ + (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~ + (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~ + (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_7.0" 1.9.11~ + (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_7.0" 1.9.11~ + (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_7.0" 1.9.11~ + (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_7.0" 1.9.11~ + (c++)"pkgDepCache::DecreaseActionGroupLevel()@APTPKG_7.0" 2.6.1 + (c++)"pkgDepCache::IncreaseActionGroupLevel()@APTPKG_7.0" 2.6.1 + (c++)"pkgCacheFile::InhibitActionGroups(bool)@APTPKG_7.0" 2.6.1 + (c++)"pkgVersionMatch::FileMatch(pkgCache::RlsFileIterator const&)@APTPKG_7.0" 2.6.1 + (c++)"APT::CacheSetHelper::setLastVersionMatcher(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.6.1 + (c++)"APT::CacheSetHelper::canNotGetVerFromRelease(pkgCacheFile&, pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.6.1 + (c++)"APT::CacheSetHelper::canNotGetVerFromVersionNumber(pkgCacheFile&, pkgCache::PkgIterator const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.6.1 + (c++)"APT::Progress::PackageManagerFancy::SIGWINCH_flag@APTPKG_7.0" 2.6.1 + (c++)"APT::Progress::PackageManagerFancy::SIGWINCH_orig@APTPKG_7.0" 2.6.1 + (c++)"APT::Progress::PackageManagerFancy::Pulse()@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::Find(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::Find(pkgTagSection::Key, char const*&, char const*&) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::Find(pkgTagSection::Key, unsigned int&) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindB(pkgTagSection::Key, bool) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindI(pkgTagSection::Key, long) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::Exists(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindRaw(pkgTagSection::Key) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindULL(pkgTagSection::Key, unsigned long long const&) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindFlag(pkgTagSection::Key, unsigned char&, unsigned char) const@APTPKG_7.0" 2.6.1 + (c++)"pkgTagSection::FindFlag(pkgTagSection::Key, unsigned long&, unsigned long) const@APTPKG_7.0" 2.6.1 + (c++)"APT::CacheSetHelper::getLastVersionMatcher[abi:cxx11]() const@APTPKG_7.0" 2.6.1 + (c++)"pkgAcquire::CleanLists(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.7.14 + (c++)"APT::Configuration::checkUsrMerged()@APTPKG_7.0" 2.7.14 + (c++)"APT::Configuration::isChroot()@APTPKG_7.0" 2.7.14 + (c++)"metaIndex::HasFlag(metaIndex::Flag) const@APTPKG_7.0" 2.7.14 + (c++)"Base64Decode[abi:cxx11](std::basic_string_view >)@APTPKG_7.0" 2.9.17 + (c++)"IsAssertedPubKeyAlgo(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.9.17 + (c++)"ExecGPGV(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&, int const&, int*, std::vector, std::allocator >, std::allocator, std::allocator > > > const&)@APTPKG_7.0" 2.9.17 + (c++)"GlobalError::Audit(char const*, ...)@APTPKG_7.0" 2.9.17 + (c++)"GlobalError::AuditE(char const*, char const*, ...)@APTPKG_7.0" 2.9.17 + (c++)"pkgDepCache::BootSize(bool)@APTPKG_7.0" 2.9.17 + (c++)"pkgAcqMethod::FailWithContext(std::__cxx11::basic_string, std::allocator >, bool, std::unordered_map, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::hash, std::allocator > >, std::equal_to, std::allocator > >, std::allocator, std::allocator > const, std::__cxx11::basic_string, std::allocator > > > >&)@APTPKG_7.0" 2.9.17 + (c++)"APT::Configuration::color(std::__cxx11::basic_string, std::allocator > const&, std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.9.17 + (c++)"APT::Internal::FindGPGV[abi:cxx11](bool)@APTPKG_7.0" 2.9.17 + (c++)"pkgTagSection::Write(FileFd&, pkgTagSection::WriteFlags, char const* const*, std::vector > const&) const@APTPKG_7.0" 2.9.17 + (c++)"VerifyDetachedSignatureFile(std::__cxx11::basic_string, std::allocator > const&)@APTPKG_7.0" 2.9.19 + (c++)"pkgCache::DepType_NoL10n(unsigned char)@APTPKG_7.0" 2.9.23 + (c++)"pkgCache::Priority_NoL10n(unsigned char)@APTPKG_7.0" 2.9.23 + (c++)"metaIndex::Load(std::__cxx11::basic_string, std::allocator >*)@APTPKG_7.0" 2.9.29+exp1 + (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::PkgIterator const&) const@APTPKG_7.0" 2.9.29+exp1 + (c++)"pkgDepCache::Transaction::temporaryRollback()@APTPKG_7.0" 2.9.35 + (c++)"pkgDepCache::Transaction::commit()@APTPKG_7.0" 2.9.35 + (c++)"pkgDepCache::Transaction::rollback()@APTPKG_7.0" 2.9.35 + (c++)"pkgDepCache::Transaction::Transaction(pkgDepCache&, pkgDepCache::Transaction::Behavior)@APTPKG_7.0" 2.9.35 + (c++)"pkgDepCache::Transaction::~Transaction()@APTPKG_7.0" 2.9.35 + (c++)"pkgDepCache::UpgradeCount()@APTPKG_7.0" 2.9.35 + (c++)"Configuration::SectionInSubTree(char const*, std::basic_string_view >)@APTPKG_7.0" 2.9.35 + (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, FileFd&, OpProgress*)@APTPKG_7.0" 2.9.35 + (arch=!armel !armhf|c++)"RFC1123StrToTime(std::__cxx11::basic_string, std::allocator > const&, long&)@APTPKG_7.0" 1.9.0 + (arch=!armel !armhf|c++)"TimeRFC1123[abi:cxx11](long, bool)@APTPKG_7.0" 1.3~rc2 + (arch=i386|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@APTPKG_7.0" 0.8.11.4 + (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@APTPKG_7.0" 0.8.11.4 + (arch=arm64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=amd64 s390x|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=mips64el riscv64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=ppc64el|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=i386|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@APTPKG_7.0" 0.8.11.4 + (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@APTPKG_7.0" 0.8.11.4 + (arch=arm64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=amd64 s390x|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=mips64el riscv64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=ppc64el|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@APTPKG_7.0" 0.8.11.4 + (arch=armel armhf|c++)"RFC1123StrToTime(std::__cxx11::basic_string, std::allocator > const&, long long&)@APTPKG_7.0" 1.9.0 + (arch=armel armhf|c++)"TimeRFC1123[abi:cxx11](long long, bool)@APTPKG_7.0" 2.7.14 + (c++)"APT::Solver::InternalCliWhy[abi:cxx11](pkgDepCache&, pkgCache::PkgIterator, bool)@APTPKG_7.0" 3.1.0~ +# Optional C++ standard library symbols +# These are inlined libstdc++ symbols and not supposed to be part of our ABI +# but we cannot stop stuff from linking against it, sigh. diff --git a/debian/rules b/debian/rules index 56b4a98..55d5e5e 100755 --- a/debian/rules +++ b/debian/rules @@ -31,7 +31,7 @@ override_dh_install-arch: install -m 644 debian/apt.conf.autoremove debian/apt/etc/apt/apt.conf.d/01autoremove override_dh_gencontrol: - dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)" + dh_gencontrol -- -Vapt:keyring="$(shell ./vendor/getinfo keyring-package)" -Vopenpgp:Depends="$(shell test -e /usr/bin/sqv && echo "sqv (>= 1.3.0)" || echo gpgv)" override_dh_installcron: dh_installcron --name=apt-compat diff --git a/debian/tests/control b/debian/tests/control index d2b2e32..9f094a8 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -4,8 +4,12 @@ Depends: libapt-pkg-dev, pkg-config, g++ Tests: run-tests Restrictions: allow-stderr -Depends: @, @builddeps@, dpkg (>= 1.20.8), fakeroot, wget, stunnel4, lsof, db-util, - gnupg (>= 2) | gnupg2, gnupg1 | gnupg (<< 2), - gpgv (>= 2) | gpgv2, gpgv1 | gpgv (<< 2), +Depends: @, @builddeps@, dpkg (>= 1.20.8), expect, fakeroot, wget, stunnel4, lsof, db-util, + gpgv, + gpgv-sq, + sq (>= 0.40), + sqv, + moreutils, + jq, libfile-fcntllock-perl, python3-apt, aptitude, - valgrind, gdb-minimal | gdb + valgrind-if-available [!armhf !ppc64el], gdb diff --git a/debian/tests/pkg-config-test b/debian/tests/pkg-config-test old mode 100644 new mode 100755 index e074b16..a11ab4d --- a/debian/tests/pkg-config-test +++ b/debian/tests/pkg-config-test @@ -1,6 +1,28 @@ #!/bin/sh set -e +BUILDDIR="$(readlink -f "$(dirname "$0")")/../../build" +if [ -z "$AUTOPKGTEST_TMP" ]; then + if [ -f "${BUILDDIR}/apt-pkg/apt-pkg.pc" ]; then + if [ -n "$PKG_CONFIG_PATH" ]; then + PKG_CONFIG_PATH="${BUILDDIR}/apt-pkg:${PKG_CONFIG_PATH}" + else + PKG_CONFIG_PATH="${BUILDDIR}/apt-pkg" + fi + export PKG_CONFIG_PATH + echo 'Using PKG_CONFIG_PATH:' "$PKG_CONFIG_PATH" + fi +fi + +INCDIR="$(pkg-config --variable=includedir apt-pkg)" +if [ -z "$AUTOPKGTEST_TMP" ]; then + if [ -d "${BUILDDIR}/include/apt-pkg" ]; then + INCDIR="${BUILDDIR}/include" + CPPFLAGS="${CPPFLAGS} -I${INCDIR}" + fi +fi +echo 'Using include dir:' "$INCDIR" + if [ -z "$AUTOPKGTEST_TMP" ]; then WORKDIR='' cleanup() { @@ -14,8 +36,11 @@ else cd "$AUTOPKGTEST_TMP" fi -cat >pkgconfigtest.cc < +find "${INCDIR}/apt-pkg" -name '*.h' -type f \ + ! -name 'debsrcrecords.h' \ + ! -name 'header-is-private.h' ! -name 'cachefilter-patterns.h' ! -name 'tagfile-keys.h' \ + -printf '#include \n' > pkgconfigtest.cc +cat >>pkgconfigtest.cc < int main() @@ -25,8 +50,35 @@ int main() } EOF -g++ -Wall -Wextra -o pkgconfigtest pkgconfigtest.cc `pkg-config --cflags --libs apt-pkg` -echo 'build: OK' -test -x pkgconfigtest -./pkgconfigtest -echo 'run: OK' +FAILURE_COUNT=0 +runwithstatus() { + echo -n "${1}: " + local OKAY="$2" + local FAIL="$3" + shift 3 + if "$@"; then + if [ -n "$OKAY" ]; then echo "$OKAY"; fi + else + FAILURE_COUNT=$(($FAILURE_COUNT + 1)) + if [ -n "$FAIL" ]; then echo "$FAIL"; fi + fi +} + +runcompilerwithstandard() { + local COMPILER="$1" + shift + if ! command -v "$COMPILER" >/dev/null; then + echo "SKIP testing with compiler $COMPILER as it is not available!" + return + fi + for CPPSTD in "$@"; do + runwithstatus "build $COMPILER ${CPPSTD:-default}" 'OK' '' "$COMPILER" -Wall -Wextra ${CPPFLAGS} ${CPPSTD} -o pkgconfigtest pkgconfigtest.cc `pkg-config --cflags --libs apt-pkg` + if [ -x pkgconfigtest ]; then + runwithstatus "run $COMPILER ${CPPSTD:-default}" '' 'FAILED' ./pkgconfigtest + rm pkgconfigtest + fi + done +} +runcompilerwithstandard 'g++' '-std=c++23' '-std=c++20' '-std=c++17' '' + +exit $FAILURE_COUNT diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 72a1fed..2df0ce7 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -22,13 +22,14 @@ set(ENTITIES apt-verbatim.ent ../vendor/${CURRENT_VENDOR}/apt-vendor.ent ) +set(USR_SHARE_DOC "${CMAKE_INSTALL_DATAROOTDIR}/doc") if(WITH_DOC OR WITH_DOC_GUIDES) add_docbook(apt-doc HTML TEXT ALL DOCUMENTS guide.dbk offline.dbk - INSTALL ${CMAKE_INSTALL_DOCDIR}/../apt-doc + INSTALL ${USR_SHARE_DOC}/apt-doc LINGUAS ${LINGUAS} TRANSLATED_ENTITIES ${TRANSLATED_ENTITIES} DEPENDS ${ENTITIES} @@ -40,7 +41,7 @@ add_docbook(libapt-pkg-doc HTML TEXT ALL dpkg-tech.dbk files.dbk method.dbk - INSTALL ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc + INSTALL ${USR_SHARE_DOC}/libapt-pkg-doc LINGUAS ${LINGUAS} TRANSLATED_ENTITIES ${TRANSLATED_ENTITIES} DEPENDS ${ENTITIES} @@ -65,7 +66,7 @@ add_custom_target(apt-doxygen ALL ) install(DIRECTORY ${PROJECT_BINARY_DIR}/doc/doxygen/html - DESTINATION ${CMAKE_INSTALL_DOCDIR}/../libapt-pkg-doc + DESTINATION ${USR_SHARE_DOC}/libapt-pkg-doc PATTERN "*.map" EXCLUDE PATTERN "*.md5" EXCLUDE ) @@ -83,7 +84,6 @@ add_docbook(apt-man MANPAGE ALL 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-patterns.7.xml diff --git a/doc/acquire-additional-files.md b/doc/acquire-additional-files.md index 5b0335b..5253e37 100644 --- a/doc/acquire-additional-files.md +++ b/doc/acquire-additional-files.md @@ -214,7 +214,8 @@ information about all files downloaded (aka: you will see *Packages*, 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. +uppercase, hyphens replaced with underscores and wrapped in `$()`, as in +the configuration file. To get all the filenames of all *Translation-en* files you can e.g. call: @@ -235,8 +236,8 @@ creates and calling `GetIndexTargets()` on them. See the source code of 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 +also removes the *Codename*, *Suite*, *Version*, *Origin*, *Label*, *Trusted*, +and *Signed-By* 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 @@ -251,6 +252,8 @@ 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. +* `Signed-By`: The path to the OpenPGP keyring or an ASCII-armored embedded + OpenPGP certificate. The latter is DEB822-multi-line encoded. * `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. diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index da1e919..e5bc0fc 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; - 2024-03-12T00:00:00Z + 2025-06-10T00:00:00Z @@ -410,6 +410,17 @@ Configuration Item: APT::Get::Show-Versions. + + Display package lists without arranging them in columns. By + default, package lists are printed in the style of the "ls" command. + Configuration Item: APT::Get::List-Columns. + + + + Add the given value to the Comment: field in history.log + Configuration Item: APT::History::Comment. + + This option controls the architecture packages are built for diff --git a/doc/apt-key.8.xml b/doc/apt-key.8.xml deleted file mode 100644 index c6c2d19..0000000 --- a/doc/apt-key.8.xml +++ /dev/null @@ -1,246 +0,0 @@ - - %aptent; - %aptverbatiment; - %aptvendor; -]> - - - - &apt-author.jgunthorpe; - &apt-author.team; - &apt-email; - &apt-product; - - 2024-02-20T00:00:00Z - - - - apt-key - 8 - APT - - - - - apt-key - Deprecated APT key management utility - - - &synopsis-command-apt-key; - - Description - - apt-key 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. - - - Use of apt-key is deprecated, except for the use of - apt-key del in maintainer scripts to remove existing - keys from the main keyring. - If such usage of apt-key is desired the additional - installation of the GNU Privacy Guard suite (packaged in - gnupg) is required. - - - apt-key(8) will last be available in Debian 12 and Ubuntu 24.04. - - - -Supported keyring files -apt-key supports only the binary OpenPGP format (also known as "GPG key - public ring") in files with the "gpg" 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 gpg --export. - -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 "asc" extension instead which can be - created with gpg --armor --export. - - - -Commands - - (deprecated) - - - 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 - - from standard input. - - - It is critical that keys added manually via apt-key are - verified to belong to the owner of the repositories they claim to be for - otherwise the &apt-secure; infrastructure is completely undermined. - - - Note: Instead of using this command a keyring - should be placed directly in the /etc/apt/trusted.gpg.d/ - directory with a descriptive name and either "gpg" or - "asc" as file extension. - - - - - (mostly deprecated) - - - - Remove a key from the list of trusted keys. - - - - - - - (deprecated) - - - - Output the key &synopsis-param-keyid; to standard output. - - - - - - - (deprecated) - - - - Output all trusted keys to standard output. - - - - - - - , (deprecated) - - - - List trusted keys with fingerprints. - - - - - - - (deprecated) - - - Pass advanced options to gpg. With adv --recv-key you - can e.g. download key from keyservers directly into the trusted set of - keys. Note that there are no checks performed, so it is - easy to completely undermine the &apt-secure; infrastructure if used without - care. - - - - - - (deprecated) - - - 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 archive-keyring package of your - distribution, e.g. the &keyring-package; package in &keyring-distro;. - - - 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 - /etc/apt/trusted.gpg.d/ directory directly as this - avoids a dependency on gnupg and it is easier to manage - keys by simply adding and removing files for maintainers and users alike. - - - - - (deprecated) - - - - Perform an update working similarly to the update 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 - update instead, but Ubuntu's APT does. - - - - - - - - - Options -Note that options need to be defined before the commands described in the previous section. - - (deprecated) - 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 trusted.gpg file as well as on all parts in the - trusted.gpg.d directory, though trusted.gpg - is the primary keyring which means that e.g. new keys are added to this one. - - - - - - Deprecation - - Except for using apt-key del in maintainer scripts, the use of apt-key is deprecated. This section shows how to replace existing use of apt-key. - -If your existing use of apt-key add looks like this: -wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add - -Then you can directly replace this with (though note the recommendation below): -wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc -Make sure to use the "asc" extension for ASCII armored -keys and the "gpg" extension for the binary OpenPGP -format (also known as "GPG key public ring"). The binary OpenPGP format works -for all apt versions, while the ASCII armored format works for apt version >= -1.4. -Recommended: Instead of placing keys into the /etc/apt/trusted.gpg.d -directory, you can place them anywhere on your filesystem by using the -Signed-By option in your sources.list and -pointing to the filename of the key. See &sources-list; for details. -Since APT 2.4, /etc/apt/keyrings is provided as the recommended -location for keys not managed by packages. -When using a deb822-style sources.list, and with apt version >= 2.4, the -Signed-By option can also be used to include the full ASCII -armored keyring directly in the sources.list without an -additional file. - - - - - - Files - - - &file-trustedgpg; - - - - - -See Also - -&apt-get;, &apt-secure; - - - - &manbugs; - &manauthor; - - - diff --git a/doc/apt-mark.8.xml b/doc/apt-mark.8.xml index 21a7a7c..b3a11c0 100644 --- a/doc/apt-mark.8.xml +++ b/doc/apt-mark.8.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; - 2018-12-11T00:00:00Z + 2024-09-14T00:00:00Z @@ -151,7 +151,8 @@ See Also - &apt-get;,&aptitude;,&apt-conf; + &apt-get;, &aptitude;, &apt-conf; + Diagnostics diff --git a/doc/apt-patterns.7.xml b/doc/apt-patterns.7.xml index f1cdaf3..40a8dd2 100644 --- a/doc/apt-patterns.7.xml +++ b/doc/apt-patterns.7.xml @@ -13,7 +13,7 @@ &apt-email; &apt-product; - 2024-02-13T00:00:00Z + 2024-10-22T00:00:00Z @@ -175,12 +175,13 @@ ?depends(PATTERN)~DPATTERN ?pre-depends(PATTERN)~DPre-Depends:PATTERN ?suggests(PATTERN)~DSuggests:PATTERN + ?recommends(PATTERN)~DRecommends:PATTERN ?conflicts(PATTERN)~DConflicts:PATTERN ?replaces(PATTERN)~DReplaces:PATTERN ?obsoletes(PATTERN)~DObsoletes:PATTERN ?breaks(PATTERN)~DBreaks:PATTERN ?enhances(PATTERN)~DEnhances:PATTERN - Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ packages matching PATTERN. + Selects versions depending/pre-depending/suggesting/recommending/conflicting/etc on/with/ packages matching PATTERN. ?reverse-depType(PATTERN) diff --git a/doc/apt-secure.8.xml b/doc/apt-secure.8.xml index e334df9..2ae9a46 100644 --- a/doc/apt-secure.8.xml +++ b/doc/apt-secure.8.xml @@ -13,7 +13,7 @@ &apt-email; &apt-product; - 2016-08-06T00:00:00Z + 2024-11-23T00:00:00Z @@ -60,6 +60,40 @@ and &synaptic; support this authentication feature, so this manpage uses APT to refer to them all for simplicity only. + + +User Configuration + + Keys should usually be included inside their corresponding .sources + by embedding the ASCII-armored key in the Signed-By option. + To do so, replace the empty line with a dot, and then indent all lines by two spaces. + See &sources-list; for more information. + + + + Alternatively, keys may be placed in /etc/apt/keyrings for local keys, + or /usr/share/keyrings for keys managed by packages, and then referenced + by Signed-By: /etc/apt/keyrings/example-archive-keyring.asc option in a .sources + file or using deb [signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ... in the legacy + .list format. This may be useful for APT versions prior to 2.4, which do not + support embedded keys. ASCII-armored keys must use an extension of .asc, and + unarmored keys an extension of .gpg. + + + + To generate keys suitable for use in APT using GnuPG, you will need to use the + gpg --export-options export-minimal [--armor] --export command. + Earlier solutions involving --keyring file --import no longer work + with recent GnuPG versions as they use a new internal format ("GPG keybox database"). + + + + Note that a default installation already contains all keys to securely + acquire packages from the default repositories, so managing keys + is only needed if third-party repositories are added. + The extrepo package can be used to manage several + external repositories with ease. + Unsigned Repositories @@ -180,26 +214,6 @@ -User Configuration - - apt-key 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 in &sources-list;. - - Note that a default installation already contains all keys to securely - acquire packages from the default repositories, so fiddling with - apt-key is only needed if third-party repositories are - added. - - 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 apt-key and - then run apt-get update so that apt can download - and verify the InRelease or Release.gpg - files from the archives you have configured. - - Repository Configuration @@ -243,13 +257,13 @@ See Also -&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, +&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-verify;, &gpg; For more background information you might want to review the Debian +url="https://www.debian.org/doc/manuals/securing-debian-manual/ch07">Debian Security Infrastructure chapter of the Securing Debian Manual (also available in the harden-doc package) and the " > - - apt-key - 8 - " -> - apt-secure 8 @@ -274,15 +268,14 @@ "> - + - - - - - - + + + + + - 2024-03-12T00:00:00Z + 2025-06-10T00:00:00Z @@ -121,6 +121,17 @@ + + + These commands print the reasoning path from the solver. They are similar to the equivalent aptitude commands for many use cases, but are different in that they print the actual reason the solver picked rather than the potential strongest path. + The command determines why an installed package is installed. This + provides reasonable feedback as to why an automatically installed package is installed; for a + manually installed package no other reason is given. If the package is not installed, no reason + can be determined. + The command determines why a package was determined to not be installable. This + may not always yield a result, even if a package is uninstallable. + Both commands take a single argument, the name of a package. + (&apt-cache;) can be used to search for the given diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index 2ae569e..22b2752 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -19,7 +19,7 @@ &apt-email; &apt-product; - 2024-02-21T00:00:00Z + 2025-06-10T00:00:00Z @@ -174,6 +174,45 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; + + + This scope defines colors and styles. The basic colors supported are + , + , + , + , + , + , and + . + + + The subscope defines the colors for package lists + in and similar commands. The following options may be set: + , + , + , + , + ; corresponding to their + lists in the &apt; output. + + + Each color may reference one or more other color options by name, relative + to . Their escape sequences will be combined. + + +APT::Color::Bold "\x1B[1m"; +APT::Color::Action::Install "cyan"; +APT::Color::Action::Upgrade "bold action::install"; + + + Colors may be turned on or off completely by setting + to or , by utilizing NO_COLOR + or APT_NO_COLOR environment variables, or using the + , command-line options. + + + + This scope defines which compression formats are supported, how compression @@ -496,47 +535,6 @@ APT::Compressor::rev { manpages respectively. - - - ftp::Proxy sets the default proxy to use for FTP URIs. - It is in the standard form of ftp://[[user][:pass]@]host[:port]/. - Per host proxies can also be specified by using the form - ftp::Proxy::<host> with the special keyword DIRECT - meaning to use no proxies. If no one of the above settings is specified, - ftp_proxy environment variable - will be used. To use an FTP - proxy you will have to set the ftp::ProxyLogin 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 $(PROXY_USER), - $(PROXY_PASS), $(SITE_USER), - $(SITE_PASS), $(SITE) and - $(SITE_PORT). - - The option timeout sets the timeout timer used by the method; - this value applies to the connection as well as the data timeout. - - 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). - - It is possible to proxy FTP over HTTP by setting the ftp_proxy - 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. - - The setting ForceExtended controls the use of RFC2428 - EPSV and EPRT 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. - - For URIs using the cdrom method, the only configurable @@ -720,7 +718,7 @@ APT::Compressor::rev { or Acquire::Snapshots::URI::Override::Origin::ORIGIN. The value should be a normal URI to a directory, except that the snapshot ID replaced with the - placeholder @SNAPSHOTID. + placeholder @SNAPSHOTID@. The special value 'no' is available for this option indicating that this source cannot be used to acquire snapshots from. Another source will be tried @@ -1017,17 +1015,6 @@ APT::Compressor::rev { - - - - - - Print information related to downloading packages using - FTP. - - - - diff --git a/doc/apt.ent b/doc/apt.ent index a6abb0e..9034d2e 100644 --- a/doc/apt.ent +++ b/doc/apt.ent @@ -48,6 +48,13 @@ + + + Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones. + + + + @@ -70,6 +77,16 @@ + + + + +Turn colors on or off. Colors are on by default on supported terminals for &apt; and +can also be disabled using the NO_COLOR or APT_NO_COLOR environment variables, +or further configured by the configuration option and scope, see &apt-conf; for information on that. + + + "> - - - - diff --git a/doc/apt_preferences.5.xml b/doc/apt_preferences.5.xml index 1b38ae1..ec2a9c5 100644 --- a/doc/apt_preferences.5.xml +++ b/doc/apt_preferences.5.xml @@ -13,7 +13,7 @@ &apt-email; &apt-product; - 2022-01-03T00:00:00Z + 2024-12-24T00:00:00Z @@ -64,7 +64,7 @@ together with other packages from different releases. You have been warned. Note that the files in the /etc/apt/preferences.d -directory are parsed in alphanumeric ascending order and need to obey the +directory need to obey the following naming convention: The files have either no or "pref" as filename extension and only contain alphanumeric, hyphen (-), underscore (_) and period (.) characters. @@ -72,6 +72,19 @@ Otherwise APT will print a notice that it has ignored a file, unless that file matches a pattern in the Dir::Ignore-Files-Silently configuration list - in which case it will be silently ignored. +/etc/apt/preferences +is parsed first, +followed by the files in +/etc/apt/preferences.d +in lexicographic order. +For example, +/etc/apt/preferences.d/00-high-priority.pref, +/etc/apt/preferences.d/50-mid-priority +and +/etc/apt/preferences.d/z-low-priority.pref +would be parsed in that order. + + APT's Default Priority Assignments If there is no preferences file or if there is no entry in the file @@ -213,6 +226,14 @@ Package: perl Pin: version &good-perl;* Pin-Priority: 1001 + +Since 2.9.9, you can also pin by a source version: + +Package: perl +Pin: source-version &good-perl;* +Pin-Priority: 1001 + + The general form assigns a priority to all of the package versions in a diff --git a/doc/design.dbk b/doc/design.dbk index fabc915..2ed3800 100644 --- a/doc/design.dbk +++ b/doc/design.dbk @@ -142,9 +142,9 @@ still satisfied. 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 +mountable CD-ROM drives, HTTP 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 +such as main, contrib, 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. @@ -203,7 +203,7 @@ midst of installation, which may cause havoc on the machine) 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, +sources, allowing them to set up source list details, like http site locations, passwords, etc. Display options may also be set. @@ -216,7 +216,7 @@ 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 +various underlying access modules (http, cdrom mounts, etc) Use a backing store for speed. This may also require downloading the actual package files locally for speed. @@ -308,7 +308,7 @@ set here? 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) +listed first (local file system is better than a remote http site) This module should interact with the user interface module to set and change @@ -318,7 +318,7 @@ information in an on disk data file, to be read on future invocations. -FTP methods +HTTP methods @@ -394,9 +394,9 @@ module to interact with dpkg Data flow and conversions analysis. - ____________ - __\|ftp modules| - / /|___________| + _____________ + __\|http modules| + / /|____________| _ ____________ / ________________ | update | / |mount/local file| |==========================>| module |/_____\| traversals | diff --git a/doc/design/install.md b/doc/design/install.md new file mode 100644 index 0000000..e54cf68 --- /dev/null +++ b/doc/design/install.md @@ -0,0 +1,199 @@ +# Installation design + +## Solution screen + +After calculating the changes to be performed, APT needs to present the solution to the +user. + +### General layout + +The screen is organized as a series of blocks, followed by warnings and notices +and finally a prompt. + + BLOCK + + BLOCK + + W: A warning + Continue? [Y/n] + +Each block is separated by an empty line, and follows one of two schemes: + +1. Title, Details, optional notes + + This block should have a short title describing what is being shown such as + "Installing" or "Summary", and one or more line of details, indented by two + spaces. An optional final line may contain an additional note: + + Title: + Detail + Detail + Notes + + The notes element should be used sparingly, for example, in the autoremove note: + + No longer needed: + package1 package3 + package2 package4 + Use 'apt autoremove' to remove no longer needed packages. + + The note should be a single sentence, with complete punctuation. + + +2. Text blobs are short paragraphs that consist only of informational text. + They may appear before or after the changes lists. + An example would be the "news" inserted by the Ubuntu Pro hooks. + Text blobs should be two-three lines long, and have block style formatting, + with a line length of no more than 79 characters, for example: + + This is an informational blob with no information that appears before + the list of changes. It contains a lot of text saying stuff. + + Installing: + package + + Installing dependencies: + dependency + + This is an important blob with important information that appears + after the list of changes. It contains a lot of text saying stuff. + + Summary: + Upgrading: 0, Installing: 23, Removing: 0, Not Upgrading: 1 + Download size: 6,947 kB + Space needed: 44.7 MB / 16.8 GB available + + Continue? [Y/n] + + They should usually not use any formatting inside the text. + +### Order of blocks; standard set of blocks + +Generally speaking blocks, should be ordered by increasing importance, and +context relevance. For example, while Suggested packages are less important +then the packages being installed, they are Suggested *by* the packages being +installed, so printing them first is awkward. + +The standard blocks and their order are: + +1. 'No longer needed' - list of packages that can be autoremoved, and a note how to do so +1. 'Upgrading' - list of packages being upgraded +1. 'Installing' - a list of packages being installed manually +1. 'Installing dependencies' - a list of packages being installed automatically +1. 'Recommended packages' - a list of Recommends that did not get installed +1. 'Suggested packages' - a list of Suggests that did not get installed (Suggests are not installed by default) +1. 'Not upgrading yet' - a list of packages not yet upgraded due to phasing +1. 'Not upgrading' - a list of packages not being upgraded due to dependency issues +1. 'DOWNGRADING' - a list of packages being downgraded, with emphasis as it is unsupported. +1. 'REMOVING' - a list of packages being removed, with emphasis as removals are dangerous +1. 'REMOVING Essential packages:' - a list of Essential packages being removed and a note that it is dangerous. +1. 'Summary' - contains a summary of the changes to be performed + +Note that blocks that describe an action are given as a progressive verb, whereas non-action +blocks have a non-verb title. + +### Package list layouts + +Package lists can be rendered in one of three formats: + +1. The standard format is a columnar view following ls(1), top to bottom, left to right, + showing only the package names. + If the packages fit in a single line, they are rendered as such. + + Example of multiple lines: + + package1 shortname3 otherpackage5 + longpackagename2 short4 yetanotherpackage6 + + Example for a single line + + package1 longpackagename2 shortname3 + +2. The `-V` format presents one package per line with additional version information, + in one of the following forms: + + name (version) + name (old version => new version) + +3. The classic layout ("wall of text") is a left to right, top to bottom list that + wraps around, with package names separated by spaces: + + package1 longpackagename2 shortname3 + short4 otherpackage5 yetanotherpackage6 + + This is available in the `--no-list-columns` option. + +### Colors and Highlighting of package lists +A solution is essentially a diff to be applied to your system, so we highlight packages +being added as green, and packages being removed as red. +There are a couple more cases of changes calculated, though: + +Packages that are being suggested: They are not installed by default, but you can install +them to enhance the functionality of the packages being installed. +We do not want to specifically highlight those, as it's informational only. +What may be interesting is visually distinguishing Suggests that are not even available +in your configured sources, as that is allowed (e.g. main packages Suggest multiverse, +but multiverse is disabled). + +Recommends that could not be installed: They are similar to Suggests, but normally +installed by default, so seeing this section is a bit unexpected. We do not believe +they warrant further highlighting, as the section appearing is more than enough. + +Upgrades do not change the set of packages installed, but merely their versions, so from +the "present the solution as a diff" approach, it is awkward to present them as green. However, +green is also associated with "good" and upgrades are a normal thing for packages to do, +so highlighting them green is not entirely wrong. + +Not highlighting upgrades would make them look similar to non-change lists, like Suggests +and Recommends that failed to install, which would be confusing to the user because it is +making *some* change. + +Downgrades are the opposite of upgrades, but importantly they are *unsupported*, we do +not ever test them. It makes sense to highlight their unsupportedness, hence we mark +them yellow. + +#### Emphasis in the absence of colors and styles +The headings for removals and downgrades are in upper case to emphasise their +danger. + +### The solution summary + +The summary contains a line with package change counts per category, followed +by the download size, following by any space changes. + + + Summary: + Upgrading: 0, Installing: 23, Removing: 0, Not Upgrading: 1 + Download size: 6,947 kB + Space needed: 44.7 MB / 16.8 GB available + +**Space changes** are listed as one of the following: + +1. The space needed is known, but we can't figure out available space: + + Space needed: 44.7 MB + +2. Space needed and available space in the /usr partition + + Space needed: 44.7 MB / 16.8 GB available + +3. Space needed and available space, with kernels being installed and a separate /boot: + + Space needed: 44.7 MB / 16.8 GB available + └─ in /boot: 110 MB / 533 MB available + +4. Freed space inverts the order of words vs "Space needed" to make the difference more striking: + + Freed space: 44.7 MB + +### Prompting + +The final prompt asks the user if they want to continue by prompting either + + Continue? [Y/n] + +with the default being 'yes' (as indicated by the upper case character), or + + Continue anyway? [y/N] + +with a default of 'no', for example, in the case warnings were shown. diff --git a/doc/examples/CMakeLists.txt b/doc/examples/CMakeLists.txt index 8d9ea06..be638d0 100644 --- a/doc/examples/CMakeLists.txt +++ b/doc/examples/CMakeLists.txt @@ -1,4 +1,4 @@ install(FILES apt.conf configure-index preferences DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples) install(FILES apt-ftparchive.conf ftp-archive.conf - DESTINATION ${CMAKE_INSTALL_DOCDIR}/../apt-utils/examples) + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/apt-utils/examples) diff --git a/doc/examples/configure-index b/doc/examples/configure-index index da4998b..c36f922 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -33,6 +33,7 @@ quiet "" { NoUpdate ""; // never update progress information - included in -q=1 NoProgress ""; // disables the 0% → 100% progress on cache generation and stuff NoStatistic ""; // no "42 kB downloaded" stats in update + NoSolver3Explanation ""; // do not print solver3 explanations when used with internal solver ReleaseInfoChange "" // don't even print the notices if the info change is allowed { Origin ""; @@ -47,6 +48,7 @@ quiet "" { // Options for APT in general APT { + Audit ""; // display audit messages Architecture ""; // debian architecture like amd64, i386, powerpc, armhf, mips, … Architectures ""; // a list of (foreign) debian architectures, defaults to: dpkg --print-foreign-architectures BarbarianArchitectures ""; // a list of architectures considered too foreign to satisfy M-A:foreign @@ -104,6 +106,7 @@ APT Show-Upgraded ""; Show-Versions ""; + List-Columns ""; Upgrade ""; Only-Upgrade ""; Upgrade-Allow-New ""; @@ -130,7 +133,6 @@ APT SourceListWarnings "" { APTAuth ""; - NonFreeFirmware ""; SignedBy ""; }; }; @@ -182,18 +184,16 @@ APT Error-Mode ""; }; - /* define a new supported compressor on the fly - Compressor::rev { - Name "rev"; - Extension ".reversed"; - Binary "rev"; - CompressArg {}; - UncompressArg {}; - Cost "10"; - }; - */ Compressor ""; - Compressor::** ""; + // define a new compressor on the fly, like the super-compressor: /usr/bin/rev + Compressor::* { + Name ""; // rev + Extension ""; // .reversed + Binary ""; // rev + CompressArg ""; // {} + UncompressArg ""; // {} + Cost ""; // 10 + }; Authentication { @@ -247,6 +247,7 @@ Acquire Delay "" { // whether to backoff between retries using the delay: method Maximum ""; // maximum number of seconds to delay an item per retry }; + HandleRetryAfter ""; // whether to respect the wait time of the Retry-After header }; Source-Symlinks ""; ForceHash ""; // hashmethod used for expected hash: sha256, sha1 or md5sum @@ -333,31 +334,6 @@ Acquire 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 "30"; - ConnectionAttemptDelayMsec "250"; - - /* 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 ""; // do auto detection of the cdrom mountpoint @@ -486,6 +462,10 @@ Dir "" { MountPath "/media/apt"; // Media AutoDetect mount path }; + + Boot ""; + Usr ""; + Apport ""; }; // Things that effect the APT dselect method @@ -575,9 +555,11 @@ Debug BuildDeps ""; pkgInitialize ""; // This one will dump the configuration space NoLocking ""; - Acquire::Ftp ""; // Show ftp command traffic Acquire::Http ""; // Show http command traffic Acquire::Https ""; // Show https debug + Acquire::tor ""; + Acquire::tor+http ""; + Acquire::tor+https ""; Acquire::gpgv ""; // Show the gpgv traffic Acquire::cdrom ""; // Show cdrom debug output Acquire::Transaction ""; @@ -598,6 +580,7 @@ Debug SetupAPTPartialDirectory::AssumeGood ""; Locking ""; Phasing ""; + APT::Solver "; }; pkgCacheGen @@ -688,6 +671,7 @@ acquire::*::by-hash ""; // Unsorted options: Some of those are used only internally +pager ""; // true if a pager is to be used help ""; // true if the help message was requested via e.g. --help version ""; // true if the version number was requested via e.g. --version Binary ""; // name of the program run like apt-get, apt-cache, … @@ -715,13 +699,22 @@ apt::hashes::*::untrusted ""; apt::list-cleanup ""; apt::authentication::trustcdrom ""; apt::solver::strict-pinning ""; +apt::solver::enqueue-common-dependencies ""; +apt::solver::defer-version-selection ""; +apt::solver::upgrade ""; +apt::solver::remove ""; +apt::solver::removemanual ""; +apt::solver::install ""; +apt::solver::timeout ""; apt::keep-downloaded-packages ""; apt::solver ""; apt::planner ""; apt::system ""; apt::acquire::translation ""; // deprecated in favor of Acquire::Languages apt::color::highlight ""; +apt::color::bold ""; apt::color::neutral ""; +apt::output-version ""; dpkgpm::reporting-steps ""; @@ -763,6 +756,8 @@ apt::key::masterkeyring ""; apt::key::archivekeyringuri ""; apt::key::net-update-enabled ""; apt::key::assert-pubkey-algo ""; +apt::key::assert-pubkey-algo::next ""; +apt::key::assert-pubkey-algo::future ""; apt::ftparchive::release::patterns ""; apt::ftparchive::release::validtime ""; @@ -803,17 +798,44 @@ acquire::max-pipeline-depth ""; acquire::progress::diffpercent ""; acquire::gzipindexes ""; acquire::indextargets::randomized ""; -acquire::indextargets::deb::** ""; -acquire::indextargets::deb-src::** ""; +acquire::indextargets::* "" { + * { + MetaKey ""; + ShortDescription ""; + Description ""; + flatMetaKey ""; + flatDescription ""; + Identifier ""; + DefaultEnabled ""; + Optional ""; + KeepCompressed ""; + PDiffs ""; + By-Hash ""; + Fallback-Of ""; + CompressionTypes ""; + KeepCompressedAs ""; + }; +}; acquire::progress::ignore::showerrortext ""; acquire::*::dl-limit ""; // catches file: and co which do not have these +acquire::file::dl-limit ""; +acquire::copy::dl-limit ""; +acquire::gpgv::dl-limit ""; +acquire::store::dl-limit ""; +acquire::mirror::dl-limit ""; methods::mirror::problemreporting ""; -acquire::http::proxyautodetect ""; -acquire::http::proxy-auto-detect ""; -acquire::http::proxy::* ""; -acquire::https::proxyautodetect ""; -acquire::https::proxy-auto-detect ""; -acquire::https::proxy::* ""; +acquire::*::proxyautodetect ""; +acquire::file::proxyautodetect ""; +acquire::copy::proxyautodetect ""; +acquire::store::proxyautodetect ""; +acquire::*::proxy-auto-detect ""; +acquire::file::proxy-auto-detect ""; +acquire::copy::proxy-auto-detect ""; +acquire::store::proxy-auto-detect ""; +acquire::file::proxy::* ""; +acquire::copy::proxy::* ""; +acquire::store::proxy::* ""; +acquire::*::proxy::* ""; // Options used by apt-ftparchive dir::archivedir ""; @@ -880,7 +902,13 @@ Rred::f ""; Rred::Compress ""; APT::Internal::OpProgress::Absolute ""; +APT::Internal::OpProgress::EraseLines ""; APT::Color ""; +APT::Color::Show::Field ""; +APT::Color::Show::Package ""; +APT::Color::* ""; update-manager::always-include-phased-updates ""; update-manager::never-include-phased-updates ""; + +apt::history::comment ""; diff --git a/doc/examples/ftp-archive.conf b/doc/examples/ftp-archive.conf index 31ffb24..0908388 100644 --- a/doc/examples/ftp-archive.conf +++ b/doc/examples/ftp-archive.conf @@ -3,9 +3,9 @@ Dir { - ArchiveDir "/srv/ftp.debian.org/ftp/"; - OverrideDir "/srv/ftp.debian.org/scripts/override/"; - CacheDir "/srv/ftp.debian.org/scripts/cache/"; + ArchiveDir "/srv/deb.debian.org/ftp/"; + OverrideDir "/srv/deb.debian.org/scripts/override/"; + CacheDir "/srv/deb.debian.org/scripts/cache/"; }; Default @@ -19,7 +19,7 @@ Default TreeDefault { - Contents::Header "/srv/ftp.debian.org/scripts/masterfiles/Contents.top"; + Contents::Header "/srv/deb.debian.org/scripts/masterfiles/Contents.top"; BinCacheDB "packages-$(ARCH).db"; // These are all defaults and are provided for completeness diff --git a/doc/files.dbk b/doc/files.dbk index 95e6257..ac671fd 100644 --- a/doc/files.dbk +++ b/doc/files.dbk @@ -85,15 +85,12 @@ The var directory structure is as follows: cdrom copy file - ftp gpgv gzip http https lzma rred - rsh - ssh As is specified in the FHS 2.1 /var/lib/apt is used for application data that diff --git a/doc/guide.dbk b/doc/guide.dbk index d2f650a..32674ca 100644 --- a/doc/guide.dbk +++ b/doc/guide.dbk @@ -126,7 +126,7 @@ update. For instance, # apt-get update -Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages +Get http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages Get http://llug.sep.bnl.gov/debian/ testing/contrib Packages Reading Package Lists... Done Building Dependency Tree... Done @@ -223,8 +223,8 @@ use packages on your CD-ROM before downloading from the Internet. For example: file:/mnt/debian, - ftp://ftp.debian.org/debian, - http://ftp.de.debian.org/debian, + https://deb.debian.org/debian, + http://deb.debian.org/debian, URL [http://llug.sep.bnl.gov/debian]: @@ -237,7 +237,7 @@ to get. 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 + tags are typically something like: stable unstable testing Distribution [stable]: @@ -245,10 +245,7 @@ to get. The distribution refers to the Debian version in the archive, stable refers to the latest released version and unstable refers to the developmental -version. non-US 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. +version. Please give the components to get @@ -496,10 +493,10 @@ status messages. # apt-get update -Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages +Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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 diff --git a/doc/json-hooks-protocol.md b/doc/json-hooks-protocol.md index 2d8410c..4dcbced 100644 --- a/doc/json-hooks-protocol.md +++ b/doc/json-hooks-protocol.md @@ -38,13 +38,39 @@ started multiple times. Hooks should thus be stateless. APT performs a call to the method `org.debian.apt.hooks.hello` with the named parameter `versions` containing a list of supported protocol -versions. The hook picks the version it supports. The current version -is `"0.1"`, and support for that version is mandatory. +versions, and an optional `options` array. The hook picks the version it supports. The current version +is `"0.2"`, and support for "0.1" or "0.2" is mandatory. + +The `options` array is an optional list of all options currently set in the apt +configuration object. Note that not all options are present, and the default can vary, +you cannot rely on the default being `true` or `false` for example for a boolean option +-- it depends on the context. + +APT options are internally stored as a tree leading to the awkward situation that a list +item could have a name, e.g. `APT::Architectures "unused" { first "amd64"; "i386"; };`. This will +be represented as + +```json +[ + {"name": "APT::Architectures", "value": "unused"}, + {"name": "APT::Architectures::first", "amd64"}, + {"name": "APT::Architectures::", ""} +] +``` + +To interpret an option name as a list, with trailing `::`, for example, `APT::Architectures`, you +will need to write a function similar to: + +```python +def get_list(options, key): + """key includes trailing ::""" + return [value for name, value in options if name.startswith(key) and "::" not in name[len(key):]] +``` *Example*: 1. APT: - ```{"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1"]}}``` + ```{"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1", "0.2"], "options": [{"name": "APT::Architecture", "value": "amd64"}]}}``` 2. Hook: diff --git a/doc/method.dbk b/doc/method.dbk index ea49c5b..eb4ae40 100644 --- a/doc/method.dbk +++ b/doc/method.dbk @@ -158,7 +158,8 @@ Some examples: file:/var/mirrors/debian/ -ftp://ftp.debian.org/debian +ftp://ftp.example.org/debian +https://deb.debian.org/debian ftp://jgg:MooCow@localhost:21/debian nfs://bigred/var/mirrors/debian rsync://debian.midco.net/debian diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 9299636..331db29 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt-doc 2.8.0\n" +"Project-Id-Version: apt-doc 3.1.3\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-04-16 17:00+0200\n" +"POT-Creation-Date: 2025-06-24 17:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -98,6 +98,19 @@ msgid "" " \n" msgstr "" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" \n" +" \n" +" Show audit (and notice) messages. This overrides the " +"quiet option, but only for notice messages, not progress ones.\n" +" \n" +" \n" +" \n" +msgstr "" + #. type: Plain text #: apt.ent #, no-wrap @@ -135,6 +148,24 @@ msgid "" " \n" " \n" " \n" +msgstr "" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" \n" +" \n" +" \n" +"Turn colors on or off. Colors are on by default on supported " +"terminals for &apt; and\n" +"can also be disabled using the NO_COLOR or " +"APT_NO_COLOR environment variables,\n" +"or further configured by the configuration " +"option and scope, see &apt-conf; for information on that.\n" +" \n" +" \n" +" \n" "\">\n" msgstr "" @@ -494,26 +525,18 @@ msgid "" "generate section --> " msgstr "" -#. type: Plain text -#: apt.ent -msgid "" -" " -msgstr "" - #. type: Content of: -#: 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.8.xml apt-get.8.xml apt-cache.8.xml apt-mark.8.xml apt-secure.8.xml +#: apt-cdrom.8.xml apt-config.8.xml msgid "8" msgstr "" #. type: Content of: -#: 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "" @@ -523,12 +546,11 @@ msgid "command-line interface" msgstr "" #. type: Content of: -#: 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "" @@ -591,7 +613,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "" @@ -662,6 +684,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -745,11 +799,11 @@ msgid "" 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "" @@ -1280,6 +1334,21 @@ msgid "" "<literal>APT::Get::Show-Versions</literal>." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml msgid "" @@ -1624,7 +1693,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "" @@ -2110,251 +2179,6 @@ msgid "" "on error." msgstr "" -#. type: Content of: <refentry><refnamediv><refpurpose> -#: apt-key.8.xml -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -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><term> -#: apt-key.8.xml -msgid "(deprecated)" -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><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -msgid "Deprecation" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add " -"-</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee " -"/etc/apt/trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, " -"<filename>/etc/apt/keyrings</filename> is provided as the recommended " -"location for keys not managed by packages. When using a deb822-style " -"sources.list, and with apt version >= 2.4, the <literal>Signed-By</literal> " -"option can also be used to include the full ASCII armored keyring directly " -"in the <literal>sources.list</literal> without an additional file." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "&apt-get;, &apt-secure;" -msgstr "" - #. type: Content of: <refentry><refnamediv><refpurpose> #: apt-mark.8.xml msgid "show, set and unset various settings for a package" @@ -2431,6 +2255,12 @@ msgid "" "installed packages instead." msgstr "" +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -2484,6 +2314,11 @@ msgid "" "called dpkg selections can be found in &dpkg;." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -2518,6 +2353,56 @@ msgid "" "<literal>APT</literal> to refer to them all for simplicity only." 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 "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: " +"/etc/apt/keyrings/example-archive-keyring.asc</literal> option in a " +"<literal>.sources</literal> file or using <literal>deb " +"[signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ...</literal> in " +"the legacy <literal>.list</literal> format. This may be useful for APT " +"versions prior to 2.4, which do not support embedded keys. ASCII-armored " +"keys must use an extension of <literal>.asc</literal>, and unarmored keys an " +"extension of <literal>.gpg</literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] " +"--export</command> command. Earlier solutions involving <command>--keyring " +"file --import</command> no longer work with recent GnuPG versions as they " +"use a new internal format (\"GPG keybox database\")." +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 managing keys is only " +"needed if third-party repositories are added. The " +"<command>extrepo</command> package can be used to manage several external " +"repositories with ease." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -2677,40 +2562,6 @@ msgid "" "distribution shipped in the repository (as e.g. indicated by the codename)." 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 "Repository Configuration" @@ -2771,15 +2622,15 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &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 " +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/ch07\">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 " @@ -3243,6 +3094,55 @@ msgid "" "--add-architecture</command>." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"This scope defines colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting " +"<option>APT::Color</option> to <option>yes</option> or <option>no</option>, " +"by utilizing <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> " +"environment variables, or using the <option>--color</option>, " +"<option>--no-color</option> command-line options." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -3598,64 +3498,6 @@ msgid "" "&apt-transport-https; manpages respectively." 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::<host></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 "" -"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 "" -"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 @@ -3928,7 +3770,7 @@ msgid "" "or " "<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>. " "The value should be a normal URI to a directory, except that the snapshot ID " -"replaced with the placeholder <literal>@SNAPSHOTID</literal>. The special " +"replaced with the placeholder <literal>@SNAPSHOTID@</literal>. The special " "value '<literal>no</literal>' is available for this option indicating that " "this source cannot be used to acquire snapshots from. Another source will be " "tried if available in this case." @@ -4315,11 +4157,6 @@ msgstr "" 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." @@ -4568,15 +4405,26 @@ msgstr "" #: 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. " +"directory 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><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, " +"<filename>/etc/apt/preferences.d/00-high-priority.pref</filename>, " +"<filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -4826,6 +4674,20 @@ msgid "" "Pin-Priority: 1001\n" msgstr "" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, no-wrap +msgid "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml msgid "" @@ -5651,6 +5513,17 @@ msgid "" "command from another APT front-end)." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -5671,6 +5544,17 @@ msgid "" "case it will be silently ignored." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is " +"<filename>/etc/apt/sources.list.d/<replaceable>vendor</replaceable>.sources</filename>, " +"where <replaceable>vendor</replaceable> is the result of " +"<command>dpkg-vendor --query Vendor | tr A-Z a-z</command>, in deb822-style " +"format. For example, Ubuntu uses " +"<filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -5707,6 +5591,13 @@ msgid "" "multi-architecture support." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before " +"2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -5872,10 +5763,10 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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> @@ -5897,6 +5788,23 @@ msgid "" "versions." msgstr "" +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with " +"<option>Include</option>." +msgstr "" + #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml msgid "" @@ -6030,18 +5938,18 @@ msgid "" "and <filename>/etc/apt/keyrings</filename> for keyrings managed by the " "system operator. If no keyring files are specified the default is the " "<filename>trusted.gpg</filename> keyring and all keyrings in the " -"<filename>trusted.gpg.d/</filename> directory (see <command>apt-key " -"fingerprint</command>). If no fingerprint is specified all keys in the " -"keyrings are selected. A fingerprint will accept also all signatures by a " -"subkey of this key, if this isn't desired an exclamation mark " -"(<literal>!</literal>) can be appended to the fingerprint to disable this " -"behaviour. The option defaults to the value of the option with the same " -"name if set in the previously acquired <filename>Release</filename> file of " -"this repository (only fingerprints can be specified there through). " -"Otherwise all keys in the trusted keyrings are considered valid signers for " -"this repository. The option may also be set directly to an embedded GPG " -"public key block. Special care is needed to encode the empty line with " -"leading spaces and \".\": <placeholder type=\"literallayout\" id=\"0\"/>" +"<filename>trusted.gpg.d/</filename> directory. If no fingerprint is " +"specified all keys in the keyrings are selected. A fingerprint will accept " +"also all signatures by a subkey of this key, if this isn't desired an " +"exclamation mark (<literal>!</literal>) can be appended to the fingerprint " +"to disable this behaviour. The option defaults to the value of the option " +"with the same name if set in the previously acquired " +"<filename>Release</filename> file of this repository (only fingerprints can " +"be specified there through). Otherwise all keys in the trusted keyrings are " +"considered valid signers for this repository. The option may also be set " +"directly to an embedded GPG public key block. Special care is needed to " +"encode the empty line with leading spaces and \".\": <placeholder " +"type=\"literallayout\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -6115,19 +6023,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the " -"<option>--snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -6237,27 +6135,6 @@ msgid "" "source list." msgstr "" -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" @@ -6267,15 +6144,6 @@ msgid "" "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" @@ -6418,14 +6286,14 @@ 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 " +"Uses HTTPS to access the archive at deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6433,7 +6301,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" @@ -6441,16 +6309,16 @@ 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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6458,7 +6326,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" @@ -6520,6 +6388,40 @@ msgid "" "Components: main contrib\n" msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +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" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +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-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -8699,6 +8601,16 @@ msgstr "" msgid "<code>~DSuggests:PATTERN</code>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -8752,7 +8664,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " +"Selects versions " +"depending/pre-depending/suggesting/recommending/conflicting/etc on/with/ " "packages matching PATTERN." msgstr "" @@ -9073,7 +8986,7 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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" @@ -9198,8 +9111,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -9219,7 +9132,7 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\n" "\n" " Distribution [stable]:\n" msgstr "" @@ -9229,11 +9142,7 @@ msgstr "" 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." +"<emphasis>unstable</emphasis> refers to the developmental version." msgstr "" #. type: Content of: <book><chapter><screen> @@ -9625,11 +9534,10 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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 "" diff --git a/doc/po/de.po b/doc/po/de.po index 22f19c4..3e6c0ae 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -2,13 +2,14 @@ # 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-2020. +# Helge Kreutzmann <debian@helgefjell.de>, 2025. # msgid "" msgstr "" -"Project-Id-Version: apt 2.0.1\n" +"Project-Id-Version: apt 2.9.27\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-03-22 10:14+0000\n" -"PO-Revision-Date: 2020-04-04 08:45+0200\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-02-28 15:48+0100\n" "Last-Translator: Chris Leick <c.leick@vollbio.de>\n" "Language-Team: German <debian-l10n-german@lists.debian.org>\n" "Language: de\n" @@ -140,6 +141,24 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Audit- (und Hinweis-)Meldungen anzeigen. Dies setzt die Option »quite« außer Kraft, aber nur für Hinweismeldungen, nicht für Fortschrittsmeldungen.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" + #. type: Plain text #: apt.ent #, no-wrap @@ -183,7 +202,6 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" -"\">\n" msgstr "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -196,6 +214,32 @@ msgstr "" " </para>\n" " </listitem>\n" " </varlistentry>\n" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +"\">\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Farben ein- oder ausschalten. Auf unterstützten Terminals sind Farben für &apt; standardmäßig eingeschaltet\n" +"und können auch mit den Umgebungsvariablen <envar>NO_COLOR</envar> oder <envar>APT_NO_COLOR</envar> ausgeschaltet werden,\n" +"oder weiter mittels der Konfigurationsoption und -geltungsbereich <option>APT::Color</option> konfiguriert werden,\n" +"siehe &apt-conf; für Informationen hierzu.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -412,14 +456,7 @@ msgstr "" #. type: Plain text #: apt.ent -#, fuzzy, 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" +#, 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" @@ -438,6 +475,10 @@ msgstr "" " gespeichert werden.\n" " Konfigurationselement: <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n" " </varlistentry>\n" +" <varlistentry><term><filename>/etc/apt/keyrings/</filename></term>\n" +" <listitem><para>Ort, an dem zusätzliche, mit <literal>Signed-By</literal> zu verwendende Schlüsselbunde gespeichert werden.\n" +" </para></listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -483,8 +524,9 @@ msgid "" "\">\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" +" Die deutsche Übersetzung wurde 2009ff. von Chris Leick\n" +" <email>c.leick@vollbio.de</email> sowie 2025 von Helge Kreutzmann\n" +" <email>debian@helgefjell.de</email> in Zusammenarbeit mit dem\n" " deutschen l10n-Team von Debian\n" " <email>debian-l10n-german@lists.debian.org</email> angefertigt.\n" "\">\n" @@ -513,8 +555,9 @@ 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\">" +"<!-- 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 @@ -527,8 +570,8 @@ 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 " +"<!-- 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\">" @@ -570,8 +613,8 @@ 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\">" +"<!-- 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 @@ -619,26 +662,18 @@ msgid "" "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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -648,12 +683,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Beschreibung" @@ -726,6 +760,8 @@ msgid "" "When a package is supplied as an argument, the package will be installed " "prior to the upgrade action." msgstr "" +"Wenn ein Paket als Argument bereitgestellt wird, dann wird das Paket vor der " +"Upgrade-Aktion installiert." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml @@ -739,7 +775,7 @@ msgstr "" "Upgrade des Systems als Ganzes durchzuführen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -849,6 +885,38 @@ msgstr "" "Beispiel: <literal>apt satisfy \"foo, bar (>= 1.0)\" \"Conflicts: baz, " "fuzz\"</literal>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -886,14 +954,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml -#, fuzzy -#| 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." msgid "" "<option>list</option> is somewhat similar to <command>dpkg-query --list</" "command> in that it can display a list of packages satisfying certain " @@ -905,10 +965,10 @@ 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>)." +"Paketnamen, &apt-patterns; 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><term> #: apt.8.xml @@ -927,17 +987,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-cache;)" msgid "(summarised in &apt-cache;)" -msgstr "(&apt-cache;)" +msgstr "(zusammengefasst in &apt-cache;)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-get;)" msgid "(summarised in &apt-get;)" -msgstr "(&apt-get;)" +msgstr "(zusammengefasst in &apt-get;)" #. type: Content of: <refentry><refsect1><title> #: apt.8.xml @@ -975,11 +1031,11 @@ msgstr "" "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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Siehe auch" @@ -1108,11 +1164,11 @@ msgstr "" "get</command> hat ein »intelligentes« Konfliktauflösungssystem und es wird " "versuchen, Upgrades der wichtigsten Pakete, wenn nötig zu Lasten der weniger " "wichtigen, durchzuführen. Aufgrunddessen könnte der <literal>dist-upgrade</" -"literal>-Befehl einige Pakete entfernen. Die <filename>/etc/apt/sources." -"list</filename>-Datei enthält eine Liste von Orten, von denen gewünschte " -"Paketdateien abgerufen werden. Siehe auch &apt-preferences; für einen " -"Mechanismus zum Außerkraftsetzen der allgemeinen Einstellungen für einzelne " -"Pakete." +"literal>-Befehl einige Pakete entfernen. Die <filename>/etc/apt/" +"sources.list</filename>-Datei enthält eine Liste von Orten, von denen " +"gewünschte Paketdateien abgerufen werden. Siehe auch &apt-preferences; für " +"einen Mechanismus zum Außerkraftsetzen der allgemeinen Einstellungen für " +"einzelne Pakete." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1423,8 +1479,8 @@ msgid "" "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" -"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>" -"> 1.0) | bar (= 2.0), moo\"</literal>" +"Beispiel: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz " +"(>> 1.0) | bar (= 2.0), moo\"</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1445,16 +1501,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml -#, fuzzy -#| msgid "" -#| "<literal>download</literal> will download the given binary package into " -#| "the current directory." msgid "" "<literal>download</literal> will download the given binary package into the " "current directory. The authenticity of the package data is ensured as usual." msgstr "" "<literal>download</literal> wird das angegebene Binärpaket in das aktuelle " -"Verzeichnis herunterladen." +"Verzeichnis herunterladen. Die Authentizität des Pakets wird ganz normal " +"sichergestellt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1502,7 +1555,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml msgid "alias)" -msgstr "" +msgstr "Alias)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1512,6 +1565,11 @@ msgid "" "for example, when finalizing images distributed to users. The release files " "are kept for security reasons, to prevent various types of attacks." msgstr "" +"<literal>distclean</literal> entfernt alle Dateien außer Release, " +"Release.gpg und InRelease unter <filename>&statedir;/lists</filename>. Es " +"kann beispielsweise beim Fertigstellen von Abbildern verwandt werden, die an " +"Benutzer verteilt werden. Die Release-Dateien werden aus Sicherheitsgründen " +"beibehalten, um verschiedene Formen von Angriffen zu verhindern." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1531,6 +1589,9 @@ msgid "" "removes configuration files. This is a shortcut for <literal>autoremove --" "purge</literal>." msgstr "" +"Wie <literal>autoremove</literal>, aber <literal>autopurge</literal> " +"entfernt auch Konfigurationsdateien. Dies ist eine Kurzform für " +"<literal>autoremove --purge</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1617,8 +1678,8 @@ msgid "" "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>." +"may produce an error in some situations. Configuration Item: " +"<literal>APT::Get::Fix-Broken</literal>." msgstr "" "Fehler beheben; versucht ein System von vorhandenen, beschädigten " "Abhängigkeiten zu befreien. Diese Option kann, wenn sie mit " @@ -1652,8 +1713,8 @@ msgstr "" "kann in einigen Situationen zu Fehlern führen. Wenn ein Paket zur " "Installation ausgewählt ist (besonders, wenn es auf der Befehlszeile " "angegeben wurde) und nicht heruntergeladen werden kann, wird es " -"stillschweigend zurückgehalten. Konfigurationselement: <literal>APT::Get::" -"Fix-Missing</literal>." +"stillschweigend zurückgehalten. Konfigurationselement: " +"<literal>APT::Get::Fix-Missing</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1746,11 +1807,11 @@ 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>." +"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>." +"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 @@ -1771,15 +1832,36 @@ msgstr "" "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 "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" +"zeigt Paketlisten an, ohne sie in Spalten anzuordnen. Standardmäßig werden " +"Paketlisten im Stile des Befehls »ls« angeordnet. Konfigurationselement: " +"<literal>APT::Get::List-Columns</literal>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" +"fügt den angegebenen Wert zu dem Feld <literal>Comment:</literal> in " +"history.log hinzu. Konfigurationselement: <literal>APT::History::Comment</" +"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>." +"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 Architektur der durch <command>apt-get source " "--compile</command> gebauten Pakete und wie Cross-Bauabhängigkeiten erfüllt " @@ -1886,8 +1968,8 @@ 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." +"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> @@ -1952,8 +2034,8 @@ msgid "" "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>." +"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 " @@ -1962,8 +2044,8 @@ msgstr "" "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>." +"komprimierte Dateien zu dekomprimieren. Konfigurationselement: " +"<literal>APT::Get::Print-URIs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1994,16 +2076,16 @@ msgid "" "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>." +"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>." +"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 @@ -2014,6 +2096,11 @@ msgid "" "2022 at 03:04:05 UTC. Configuration Item: <literal>APT::Snapshot</literal>; " "see also the &sources-list; manual page." msgstr "" +"Diese Option steuert den für Archive mit <literal>Snapshot: enable</literal> " +"im Quell-Eintrag gewählten Schnappschuss. Beispielsweise wählt <option>-S " +"20220102T030405Z</option> einen Schnappschuss vom 2. Januar 2022 um 03:04:05 " +"UTC. Konfigurationselement: <literal>APT::Snapshot</literal>; siehe auch die " +"Handbuchseite &sources-list;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2062,6 +2149,12 @@ msgid "" "equally to running <command>apt-mark auto</command> for all installed " "packages. Configuration Item: <literal>APT::Get::Mark-Auto</literal>." msgstr "" +"markiert nach erfolgreicher Installation alle frisch installierten Pakete " +"als automatisch installiert, wodurch jedes der Pakete entfernt wird, wenn " +"keine manuell installierten Pakete von diesem Paket abhängen. Die ist zur " +"Ausführung von <command>apt-mark auto</command> für alle installierten " +"Pakete äquivalent. Konfigurationselement: <literal>APT::Get::Mark-Auto</" +"literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2083,8 +2176,8 @@ 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 mehr " -"benötigten abhängigen Pakete. Konfigurationselement: <literal>APT::Get::" -"AutomaticRemove</literal>." +"benötigten abhängigen Pakete. Konfigurationselement: " +"<literal>APT::Get::AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2155,13 +2248,6 @@ msgstr "" #. 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. See also &apt-secure; for details on " -#| "the concept and the implications. Configuration Item: <literal>Acquire::" -#| "AllowInsecureRepositories</literal>." msgid "" "Allow the update command to acquire unverifiable data from configured " "sources. APT will otherwise fail at the update command for repositories " @@ -2169,10 +2255,10 @@ msgid "" "details on the concept and the implications. Configuration Item: " "<literal>Acquire::AllowInsecureRepositories</literal>." msgstr "" -"verbietet dem Befehl »update« das 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 dessen Folgen finden Sie unter &apt-secure;. " +"erlaubt dem Befehl »update« das Beschaffen nicht überprüfbarer Daten von " +"konfigurierten Quellen. APT wird ansonsten beim Befehl »update« für Depots " +"ohne gültige kryptographische Signaturen fehlschlagen. Weitere Einzelheiten " +"über das Konzept und dessen Folgen finden Sie unter &apt-secure;. " "Konfigurationselement: <literal>Acquire::AllowInsecureRepositories</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2208,8 +2294,8 @@ msgstr "" "Felder wie <literal>origin</literal>, <literal>label</literal>, " "<literal>codename</literal>, <literal>suite</literal>, <literal>version</" "literal> und <literal>defaultpin</literal> zu erlauben. Siehe auch &apt-" -"preferences;. Konfigurationselement: <literal>Acquire::" -"AllowReleaseInfoChange</literal>." +"preferences;. Konfigurationselement: " +"<literal>Acquire::AllowReleaseInfoChange</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2224,8 +2310,9 @@ msgstr "" "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 " -"Dokumentationsverzeichnis apt/doc. Konfigurationselemente: <literal>Dpkg::" -"Progress</literal> und <literal>Dpkg::Progress-Fancy</literal>." +"Dokumentationsverzeichnis 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 @@ -2241,12 +2328,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option><replaceable> #: apt-get.8.xml msgid "any" -msgstr "" +msgstr "irgendeiner" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml msgid "Fail the update command if any error occured, even a transient one." msgstr "" +"lässt den Aktualisierungsbefehl fehlschlagen, falls irgendein Fehler " +"auftrat, selbst ein vorübergehender." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2259,6 +2348,14 @@ msgid "" "<option>--snapshot</option> option to make sure the snapshot is present when " "install is being run." msgstr "" +"Führt den Befehl <option>update</option> vor dem angegebenen Befehl aus. " +"Dies wird für die Befehle zur Installation, Entfernung oder der " +"Aktualisierung von Paketen wie <option>install</option>, <option>remove</" +"option>, <option>safe-upgrade</option>, <option>full-upgrade</option> " +"unterstützt. Dies kann nützlich sein um sicherzustellen, dass ein Befehl " +"immer die neuste Version installiert oder, in Kombination mit der Option " +"<option>--snapshot</option>, um sicherzustellen, dass der Schnappschuss " +"vorhanden ist, wenn die Installation ausgeführt wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2268,9 +2365,14 @@ msgid "" "executing the update. Until this is resolved, this is merely syntactic sugar " "for <literal>apt update && apt install</literal>" msgstr "" +"Warnung: Aufgrund technischer Beschränkungen werden individuelle Sperren für " +"die einzelnen Phasen erlangt, daher kann bei einer Installation das Erlangen " +"von Sperren fehlschlagen, nachdem die Aktualisierung erfolgreich ausgeführt " +"wurde. Bis dies behoben wurde, ist dies lediglich syntaktischer Zucker für " +"<literal>apt update && apt install</literal>" #. 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Dateien" @@ -2701,12 +2803,12 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Das gleiche wie <literal>dotty</literal>, nur für xvcg vom <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG-Werkzeug</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG-Werkzeug</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2734,8 +2836,8 @@ msgid "" "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>)." +"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-" @@ -2749,8 +2851,8 @@ msgstr "" #: 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>." +"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 " @@ -2771,8 +2873,8 @@ msgstr "" "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>." +"Paketdateien zu vermeiden. Konfigurationselement: " +"<literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2805,16 +2907,16 @@ msgstr "" 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>." +"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>." +"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 @@ -2886,8 +2988,8 @@ msgstr "" #: 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>." +"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: " @@ -2926,10 +3028,11 @@ msgid "" 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!" +"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 @@ -2971,315 +3074,6 @@ msgstr "" "<command>apt-cache</command> gibt bei normalen Aktionen 0 zurück, dezimal " "100 bei Fehlern." -#. type: Content of: <refentry><refnamediv><refpurpose> -#: apt-key.8.xml -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -msgstr "" - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Supported keyring files" -msgstr "Unterstützte Schlüsselbunddateien" - -#. 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 unterstützt als Voreinstellung für Schlüsselbunddateien nur das " -"binäre OpenPGP-Format (auch als öffentlicher GPG-Schlüsselbund bekannt) in " -"den Dateien mit der Erweiterung »<literal>gpg</literal>«, nicht das " -"Schlüsselkastendatenbankformat, das in neueren &gpg;-Versionen eingeführt " -"wurde. Daher sollten binäre Schlüsselbunddateien, die mit allen APT-" -"Versionen benutzt werden sollen, immer mit <command>gpg --export</command> " -"erstellt werden." - -#. 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 "" -"Falls auf allen Systeme, die den erzeugten Schlüsselbund verwenden sollen, " -"mindestens eine APT-Version >= 1.4 installiert ist, können Sie alternativ " -"das ASCII-geschützte Format mit der Erweiterung »<literal>asc</literal>« " -"verwenden, das mit <command>gpg --armor --export</command> erstellt wird." - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Commands" -msgstr "Befehle" - -#. 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 "" -"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 ausgehöhlt." - -#. 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>Hinweis</emphasis>: Anstatt diesen Befehl zu benutzen, sollte ein " -"Schlüsselbund mit einem aussagekräftigen Namen und entweder »<literal>gpg</" -"literal>« oder »<literal>asc</literal>« als Dateinamenserweiterung direkt im " -"Verzeichnis <filename>/etc/apt/trusted.gpg.d/</filename> abgelegt werden." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml -#, fuzzy -#| msgid "(deprecated)" -msgid "(mostly deprecated)" -msgstr "(missbilligt)" - -#. 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 aus 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 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 auszuhöhlen, falls dies " -"ohne Sorgfalt benutzt wird." - -#. 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 Benutzer " -"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 eine derart gebautes 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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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>, wobei " -"<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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Operation" -msgid "Deprecation" -msgstr "Betrieb" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3291,8 +3085,8 @@ 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</" +"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 " @@ -3390,6 +3184,12 @@ msgstr "" "<literal>showauto</literal> benutzt werden, mit der Änderung, dass es " "stattdessen eine Liste manuell installierter Pakete ausgibt." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Optionen" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3464,6 +3264,11 @@ msgstr "" "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 "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get;, &aptitude;, &apt-conf;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3513,6 +3318,82 @@ msgstr "" "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 "User Configuration" +msgstr "Benutzerkonfiguration" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" +"Schlüssel sollten normalerweise innerhalb ihrer entsprechenden " +"<literal>.sources</literal> aufgenommen werden, indem der ASCII-geschützte " +"Schlüssel in der Option <literal>Signed-By</literal> eingebettet wird. Um " +"dies zu erreichen, ersetzen Sie die leere Zeile durch einen Punkt und rücken " +"Sie dann alle Zeilen mit zwei Leerzeichen ein. Siehe &sources-list; für " +"weitere Informationen." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" +"Alternativ können Schlüssel in <filename>/etc/apt/keyrings</filename> für " +"lokale Schlüssel oder <filename>/usr/share/keyrings</filename> für von " +"Paketen verwaltete Schlüssel abgelegt werden, und dann durch die Option " +"<literal>Signed-By: /etc/apt/keyrings/example-archive-keyring.asc</literal> " +"in einer Datei <literal>.sources</literal> oder mittels <literal>deb [signed-" +"by=/etc/apt/keyrings/example-archive-keyring.asc] …</literal> im veralteten " +"<literal>.list</literal>-Format referenziert werden. Dies ist für APT-" +"Versionen vor 2.4 nützlich, die keine eingebetteten Schlüssel unterstützen. " +"ASCII-geschützte Schlüssel müssen eine Erweiterung <literal>.asc</literal> " +"und ungeschützte Schlüssel eine Erweiterung <literal>.gpg</literal> habe." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" +"Um für APT geeignete Schlüssel mittels GnuPG zu erstellen, müssen Sie den " +"Befehl <command>gpg --export-options export-minimal [--armor] --export</" +"command> verwenden. Ältere Lösungen unter Nutzung von <command>--keyring " +"file --import</command> funktionieren mit neuren GnuPG-Versionen nicht mehr, " +"da diese ein neues internes Format (»GPG-Schlüsselbox-Datenbank«) verwenden." + +#. 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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" +"Beachten Sie, dass eine Standardinstallation bereits alle Schlüssel zum " +"sicheren Beschaffen von Paketen aus den Standarddepots enthält, daher ist " +"das Verwalten von Schlüsseln nur nötig, wenn Drittanbieterdepots hinzugefügt " +"werden. Das Paket <command>extrepo</command> kann zum leichten Verwalten " +"mehrerer externer Depots verwandt werden." + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -3752,57 +3633,6 @@ msgstr "" "Distribution, das im Depot ausgeliefert wird (z.B. durch den Codenamen " "angegeben)." -#. 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 "Repository Configuration" @@ -3832,12 +3662,12 @@ msgstr "" #: 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>." +"clearsign -o InRelease Release</command> and <command>gpg -abs -o " +"Release.gpg Release</command>." msgstr "" "<emphasis>Sie signieren</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." +"<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 @@ -3888,25 +3718,25 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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 das Kapitel " -"<ulink url=\"https://www.debian.org/doc/manuals/securing-debian-howto/" -"ch7\">Die Infrastruktur für Sicherheit in Debian</ulink> des Handbuchs " +"<ulink url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\"> Die Infrastruktur für Sicherheit in Debian</ulink> des Handbuchs " "»Anleitung zum Absichern von Debian« (auch im Paket harden-doc verfügbar) " "und das <ulink url=\"http://www.cryptnet.net/fdp/crypto/strong_distro.html\" " ">Strong Distribution HOWTO</ulink> von V. Alex Brennen lesen." @@ -3994,8 +3824,8 @@ msgstr "" #: 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>." +"<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. " @@ -4010,8 +3840,8 @@ msgid "" 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>." +"angemessen konfiguriert sein. Konfigurationselement: " +"<literal>Acquire::cdrom::mount</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -4029,8 +3859,8 @@ msgstr "" #: 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>." +"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</" @@ -4135,8 +3965,8 @@ 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>." +"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." @@ -4265,9 +4095,9 @@ msgid "" "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." +"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</" @@ -4320,25 +4150,13 @@ msgid "" 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." +"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 -#, fuzzy -#| 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:" msgid "" "Syntactically the configuration language is modeled after what the ISC tools " "such as bind and dhcp use. Lines starting with <literal>//</literal> are " @@ -4356,14 +4174,15 @@ msgstr "" "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:" +"wie bei C/C++-Kommentaren. Zeilen, die mit <literal>#</literal> anfangen, " +"werden auch als Kommentare behandelt. 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 @@ -4576,6 +4395,80 @@ msgstr "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" +"Dieser Geltungsbereich definiert Farben und Stile. Die grundlegenden " +"unterstützten Farben sind <option>red</option>, <option>green</option>, " +"<option>yellow</option>, <option>blue</option>, <option>magenta</option>, " +"<option>cyan</option> und <option>white</option>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" +"Der Teilgeltungsbereich <option>action</option> definiert die Farben für " +"Paketlisten im Befehl <option>install</option> und in ähnlichen Befehlen. " +"Die folgenden Optionen können gesetzt werden: " +"<option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; entsprechend ihrer Listen in " +"der Ausgabe von &apt;." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" +"Jede Farbe kann eine oder mehrere andere Farboptionen über den Namen " +"referenzieren, relativ zu <option>APT::Color</option>. Deren " +"Maskiersequenzen werden kombiniert." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" +"Farben können durch Setzen von <option>APT::Color</option> auf <option>yes</" +"option> oder <option>no</option>, durch Ausnutzen der Umgebungsvariablen " +"<envar>NO_COLOR</envar> oder <envar>APT_NO_COLOR</envar> oder durch " +"Verwendung der Befehlszeilenoptionen <option>--color</option>, <option>--no-" +"color</option> vollständig ein- oder ausgeschaltet werden." + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4655,6 +4548,10 @@ msgid "" "literal>. See also &sources-list;, the <option>--snapshot</option> option " "that sets this value, and <option>Acquire::Snapshots::URI</option> below." msgstr "" +"Schnappschüsse, die für alle mit <literal>Snapshot: yes</literal> " +"konfigurierten Depots verwendet werden. Siehe auch &sources-list;, die " +"Option <option>--snapshot</option>, die diesen Wert setzt und nachfolgende " +"<option>Acquire::Snapshots::URI</option>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4853,13 +4750,12 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml -#, fuzzy -#| msgid "" -#| "Selects packages where the name matches the given regular expression." msgid "Never autoremove packages that match the regular expression(s)." msgstr "" -"wählt Pakete aus, deren Name auf den angegebenen regulären Ausdruck passt." +"entfernt niemals Pakete automatisch, die auf den oder die regulären " +"Ausdrücke passen." +# FIXME No markup for "apt autoremove" or "true"? #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4867,15 +4763,24 @@ msgid "" "true. In case kernels are not protected they are treated as any other " "package." msgstr "" +"Dies Option teilt »apt autoremove« mit, dass Kernel geschützt sind und sie " +"ist standardmäßig »true«. Falls Kernel nicht geschützt sind, werden sie wie " +"jedes andere Paket behandelt." +# FIXME apt → &apt; ? #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" +"Definiert den oder die regulären Ausdrücke für versionierte Kernelpakete. " +"Basierend auf diesen Ausdrücken wird eine Regel in Apt ähnlich zu dem " +"Ausdruck APT::NeverAutoRemove aufgenommen." +# FIXME apt → &apt; ? +# FIXME No markup for "false"? #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4886,6 +4791,12 @@ msgid "" "ignored. If you want only the latest kernel, you should set APT::Protect-" "Kernels to false." msgstr "" +"Hält eine angepasste Anzahl an Kerneln beim automatischen Entfernen und ist " +"standardmäßig 2, was bedeutet, dass zwei Kernel beibehalten werden. Apt wird " +"immer den laufenden Kernel und den neusten beibehalten. Falls der neuste " +"Kernel identisch zum laufenden Kernel ist, wird der zweitneuste Kernel " +"beibehalten. Daher wird ein Wert kleiner als 2 ignoriert. Falls Sie nur den " +"neusten Kernel möchten, sollten Sie APT::Protect-Kernels auf »false« setzen." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml @@ -5120,98 +5031,6 @@ msgstr "" "Protokolle HTTP und HTTPS abwickelt. Sie sind in den Handbuchseiten &apt-" "transport-http; beziehungsweise &apt-transport-https; dokumentiert." -#. 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::<host></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 in der Standardform <literal>ftp://[[Benutzer][:" -"Passwort]@]Rechner[:Port]/</literal> angegeben. Proxys pro Rechner können " -"außerdem in der Form <literal>ftp::Proxy::<Rechner></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 "" -"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 angewendet." - -#. 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 eingestellt werden oder für Verbindungen, die durch " -"einen Proxy oder zu einem 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 " -"RFC-2428-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. Durch Stellen auf »true« wird die " -"Benutzung selbst auf IPv4-Verbindungen erzwungen. Beachten Sie, dass die " -"wenigsten FTP-Server RFC 2428 unterstützen." - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout> #: apt.conf.5.xml #, no-wrap @@ -5415,9 +5234,9 @@ msgid "" "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 " +"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 " @@ -5551,21 +5370,22 @@ msgid "" "<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." +"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 " @@ -5576,95 +5396,64 @@ msgstr "" "<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 einem Bestandteil 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." +"<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 einem Bestandteil 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><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml -#, fuzzy -#| 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." msgid "" "Like changelogs, snapshots can only be acquired if an URI is known from " "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots 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 einem Bestandteil 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." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." +msgstr "" +"Wie Changelogs können Schnappschüsse nur beschafft werden, falls ein URI " +"bekannt ist, von dem sie geholt werden können. Vorzugsweise gibt die Release-" +"Datei ihn in einem »Snapshots«-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::Snapshots::URI::Label::" +"<replaceable>BESCHRIFTUNG</replaceable></literal>- oder " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::" +"<replaceable>BESCHRIFTUNG</replaceable></literal> oder " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>URSPRUNG</" +"replaceable></literal> außer Kraft gesetzt werden. Der Wert sollte ein " +"normaler URI auf ein Verzeichnis sein, außer dass die Schnappschusskennung " +"durch den Platzhalter <literal>@SNAPSHOTID@</literal> ersetzt wird. 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 " +"Schnappschuss-Dateien zu beschaffen. In diesem Fall wird, falls verfügbar, " +"eine andere Quelle ausprobiert." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml @@ -5676,9 +5465,9 @@ msgstr "Programmspezifische Konfiguration" 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>." +"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 bestimmtes Programm zu setzen, " @@ -5793,19 +5582,20 @@ 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." +"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 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." +"Auf 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 @@ -6003,9 +5793,9 @@ msgid "" "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." +"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, " @@ -6067,11 +5857,11 @@ msgid "" 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." +"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 @@ -6225,13 +6015,6 @@ 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." @@ -6252,7 +6035,7 @@ msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" -"gibt Informationen aus, die sich auf das Prüfen kryptografischer Signaturen " +"gibt Informationen aus, die sich auf das Prüfen kryptographischer Signaturen " "mittels <literal>gpg</literal> beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6270,7 +6053,7 @@ 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>-" +"gibt jeden kryptographischen Hash aus, der von den <literal>apt</literal>-" "Bibliotheken generiert wurde." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6308,7 +6091,7 @@ msgid "" "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." +"und kryptographischen Signaturen von heruntergeladenen Dateien beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6353,8 +6136,8 @@ 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." +"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 " @@ -6371,14 +6154,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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 " @@ -6463,8 +6246,8 @@ 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>." +"Print information about the vendors read from <filename>/etc/apt/" +"vendors.list</filename>." msgstr "" "gibt die Informationen über die aus <filename>/etc/apt/vendors.list</" "filename> gelesenen Anbieter aus." @@ -6472,8 +6255,8 @@ 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 " +"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 " @@ -6584,25 +6367,45 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." 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 @@ -6668,12 +6471,6 @@ msgstr "Priorität 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml -#, fuzzy -#| 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." msgid "" "to the versions coming from archives which in their <filename>Release</" "filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" @@ -6684,7 +6481,8 @@ 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." +"<literal>experimental</literal> von Debian, sowie Versionen, die auf diesem " +"System nicht abgestuft sind." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> #: apt_preferences.5.xml @@ -6857,7 +6655,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "Phased Updates" -msgstr "" +msgstr "Abgestufte Aktualisierungen" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6866,7 +6664,11 @@ msgid "" "which can be used to control the rollout of a new version. It is an integer " "between 0 and 100." msgstr "" +"APT versteht ein Feld namens <literal>Phased-Update-Percentage</literal>, " +"das zur Steuerung der Verteilung einer neuen Version verwandt werden kann. " +"Dies ist eine Ganzzahl zwischen 0 und 100." +# FIXME /etc/machine-id → <filename>/etc/machine-id<//filename> ? #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml msgid "" @@ -6877,6 +6679,13 @@ msgid "" "version is pinned to 1, and thus held back. Otherwise, normal policy rules " "apply." msgstr "" +"Um die Eignung eines Systems für die abgestufte Aktualisierung zu bestimmen, " +"wird einem Zufallszahlengenerator der Quellpaketname, die Versionsnummer " +"und /etc/machine-id als als Zufallsstartwert übergeben und dann eine " +"Ganzzahl im Bereich [0, 100] berechnet. Falls diese Ganzzahl größer als " +"<literal>Phased-Update-Percentage</literal> ist, wird die Version auf 1 " +"gepinnt und daher zurückgehalten. Andernfalls gelten die normalen " +"Richtlinien-Regeln." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6887,6 +6696,12 @@ msgid "" "code> or <code>APT::Get::Always-Include-Phased-Updates</code> to true such " "that APT will never/always consider phased updates." msgstr "" +"Falls Sie über mehrere Systeme verfügen, auf denen Sie die gleiche Gruppe an " +"Aktualisierungen erhalten wollen, können Sie <code>APT::Machine-ID</code> " +"auf eine UUID setzen, so dass sie alle gleich abgestuft werden, oder Sie " +"setzen <code>APT::Get::Never-Include-Phased-Updates</code> oder " +"<code>APT::Get::Always-Include-Phased-Updates</code> auf true, so dass APT " +"niemals/immer gestufte Aktualisierungen betrachten wird." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml @@ -6936,6 +6751,23 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "Seit 2.9.9 können Sie auch über Quellversion pinnen:" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, no-wrap +msgid "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" +msgstr "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" + #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml msgid "" @@ -6985,8 +6817,8 @@ msgstr "" "Eine Mahnung zur Vorsicht: Das hier benutzte Schlüsselwort ist " "»<literal>origin</literal>«, was zum Abgleich mit einem Rechnernamen 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." +"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 @@ -7102,7 +6934,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "Matching packages in the Package field" -msgstr "" +msgstr "Übereinstimmungen mit Paketen im Feld Package" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7114,6 +6946,13 @@ msgid "" "expressions and regular expressions can be listed separated by whitespace in " "which case the record will match any of the matched packages." msgstr "" +"Das Feld <literal>Package</literal> legt die Pakete fest, auf denen eine " +"Pinning-Priorität angewandt wird. Das Feld kann entweder einen " +"Binärpaketnamen, einen Quellpaketnamen (mit vorangestelltem »src:«), einen " +"&glob;-Ausdruck oder einen regulären Ausdruck (eingeschlossen in " +"Schrägstriche) enthalten. Mehrere Paketnamen, &glob;- und reguläre Ausdrücke " +"können durch Leerraum getrennt aufgelistet werden. Dann passt der Datensatz " +"auf alle der übereinstimmenden Pakete." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7124,28 +6963,25 @@ msgid "" "by appending the architecture name to the package name, separated by a colon " "character." msgstr "" +"Standardmäßig werden nur Pakete der nativen Architektur verglichen. Um " +"Binärpakete beliebiger Architektur zu vergleichen, fügen Sie die Endung " +"<literal>:any</literal> an den Paketnamen an. Sie können den Vergleich auch " +"auf eine bestimmte Architektur beschränken, indem Sie den Architekturnamen " +"an den Paketnamen, getrennt durch einen Doppelpunkt, anhängen." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml -#, fuzzy -#| 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)." msgid "" "For example, the following example uses a glob expression and a regular " "expression to assign 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)." +"Beispielsweise verwendet das folgende Beispiel einen Glob-Ausdruck und einen " +"regulären Ausdruck, um allen Paketen aus Experimental die Priorität 500 " +"zuzuweisen, 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 @@ -7202,16 +7038,12 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml -#, fuzzy -#| msgid "" -#| "For example, to pin all binaries produced by the apt source package of " -#| "this APT's version to 990, you can do:" msgid "" "To pin all binaries produced by the apt source package of this APT's version " "to 990, you can do:" msgstr "" -"Um zum Beispiel ein Pinning für alle von einem Apt-Quellpaket dieser APT-" -"Version erzeugten Programme auf 990 durchzuführen, können Sie Folgendes tun:" +"Um ein Pinning für alle von einem Apt-Quellpaket dieser APT-Version " +"erzeugten Programme auf 990 durchzuführen, können Sie Folgendes tun:" #. type: Content of: <refentry><refsect1><refsect2><programlisting> #: apt_preferences.5.xml @@ -7257,14 +7089,19 @@ msgstr "" "Pin: version *\n" "Pin-Priority: 990\n" +# FIXME apt → &apt; ? #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" +"Die Endung <literal>:any</literal> stellt sicher, dass Binärpakete von allen " +"Architekturen ausgewählt werden. Ohne diese Endung nimmt Apt implizit die " +"Endung <literal>:native</literal> an, wodurch nur Pakete von der nativen " +"Architektur ausgewählt würden." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml @@ -7436,9 +7273,9 @@ msgstr "Dann:" 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." +"\"<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;</" @@ -7717,12 +7554,12 @@ msgid "" "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." +"<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-" @@ -8071,6 +7908,17 @@ msgstr "" "Quellen werden durch <command>apt-get update</command> (oder einem " "vergleichbaren Befehl einer anderen APT-Oberfläche) beschafft." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -8102,6 +7950,22 @@ msgstr "" "Files-Silently</literal> passt – in diesem Fall wird sie stillschweigend " "ignoriert." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" +"Der empfohlene Dateiname ist <filename>/etc/apt/sources.list.d/" +"<replaceable>Lieferant</replaceable>.sources</filename>, wobei " +"<replaceable>Lieferant</replaceable> das Ergebnis von <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command> im deb822-artigen Format ist. Ubuntu " +"verwendet beispielsweise <filename>/etc/apt/sources.list.d/ubuntu.sources</" +"filename>." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -8160,6 +8024,14 @@ msgstr "" "erwarten, dass Optionen auftauchen, da diese vor der Einführung der " "Unterstützung mehrerer Architekturen nicht üblich waren." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" +"Dieses Format ist veraltet und wird schließlich entfernt, aber frühestens " +"2029." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8348,11 +8220,11 @@ msgstr "" "<literal>Suite</literal> darf 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 " -"erstellen." +"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 erstellen." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml @@ -8409,14 +8281,15 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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\"/>." +"Die Quellen für Ihre Distribution könnten zum Beispiel im veralteten 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 @@ -8448,6 +8321,34 @@ msgstr "" "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>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 durch die Konfigurationsoption " +"<option>APT::Architectures</option> definierten Architekturen." + #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml msgid "" @@ -8459,8 +8360,8 @@ 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 durch die Konfigurationsoption <option>APT::" -"Architectures</option> definierten Architekturen." +"Voreinstellung alle durch die Konfigurationsoption " +"<option>APT::Architectures</option> definierten Architekturen." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8482,21 +8383,22 @@ msgstr "" 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." +"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." +"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 @@ -8632,29 +8534,23 @@ msgid "" " =IE0r\n" " -----END PGP PUBLIC KEY BLOCK-----" msgstr "" +"Types: deb\n" +"URIs: https://deb.debian.org\n" +"Suites: stable\n" +"Components: main contrib non-free non-free-firmware\n" +"Signed-By:\n" +" -----BEGIN PGP PUBLIC KEY BLOCK-----\n" +" .\n" +" mDMEYCQjIxYJKwYBBAHaRw8BAQdAD/P5Nvvnvk66SxBBHDbhRml9ORg1WV5CvzKY\n" +" CuMfoIS0BmFiY2RlZoiQBBMWCgA4FiEErCIG1VhKWMWo2yfAREZd5NfO31cFAmAk\n" +" IyMCGyMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQREZd5NfO31fbOwD6ArzS\n" +" dM0Dkd5h2Ujy1b6KcAaVW9FOa5UNfJ9FFBtjLQEBAJ7UyWD3dZzhvlaAwunsk7DG\n" +" 3bHcln8DMpIJVXht78sL\n" +" =IE0r\n" +" -----END PGP PUBLIC KEY BLOCK-----" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml -#, fuzzy -#| msgid "" -#| "<option>Signed-By</option> (<option>signed-by</option>) is an option to " -#| "require a repository to pass &apt-secure; verification with a certain set " -#| "of keys rather than all trusted keys apt has configured. It is specified " -#| "as a list of absolute paths to keyring files (have to be accessible and " -#| "readable for the <literal>_apt</literal> system user, so ensure everyone " -#| "has read-permissions on the file) and fingerprints of keys to select from " -#| "these keyrings. If no keyring files are specified the default is the " -#| "<filename>trusted.gpg</filename> keyring and all keyrings in the " -#| "<filename>trusted.gpg.d/</filename> directory (see <command>apt-key " -#| "fingerprint</command>). If no fingerprint is specified all keys in the " -#| "keyrings are selected. A fingerprint will accept also all signatures by a " -#| "subkey of this key, if this isn't desired an exclamation mark (<literal>!" -#| "</literal>) can be appended to the fingerprint to disable this " -#| "behaviour. The option defaults to the value of the option with the same " -#| "name if set in the previously acquired <filename>Release</filename> file " -#| "of this repository (only fingerprints can be specified there through). " -#| "Otherwise all keys in the trusted keyrings are considered valid signers " -#| "for this repository." msgid "" "<option>Signed-By</option> (<option>signed-by</option>) is an option to " "require a repository to pass &apt-secure; verification with a certain set of " @@ -8667,18 +8563,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) ist eine Option, die " "erfordert, dass ein Depot die &apt-secure;-Prüfung mit einem bestimmten Satz " @@ -8687,20 +8582,26 @@ msgstr "" "Schlüsselbunddateien angegeben (müssen für den Systembenutzer <literal>_apt</" "literal> zugreif- und lesbar sein, stellen Sie also sicher, dass jedermann " "Leserechte für die Datei hat) sowie Fingerabdrücke von Schlüsseln, um diese " -"aus Schlüsselbunden auszuwählen. Falls keine Schlüsselbunddateien angegeben " -"wurden, sind der Schlüsselbund <filename>trusted.gpg</filename> und alle " -"Schlüsselbunde im Verzeichnis <filename>trusted.gpg.d/</filename> " -"voreingestellt (siehe <command>apt-key fingerprint</command>). Falls kein " -"Fingerabdruck angegeben wurde, werden alle Schlüssel in den Schlüsselbunden " -"ausgewählt. Ein Fingerabdruck wird außerdem alle Signaturen eines " -"Unterschlüssels dieses Schlüssels akzeptieren, falls dies nicht gewünscht " -"wird, kann ein Ausrufezeichen (<literal>!</literal>) an den Fingerabdruck " -"angehängt werden, um dieses Verhalten zu deaktivieren. Die Option ist auf " -"den Wert der Option mit demselben Namen voreingestellt, falls sie in der " -"vorher beschafften <filename>Release</filename>-Datei dieses Depots gesetzt " -"ist (allerdings können dadurch nur Fingerabdrücke angegeben werden). " -"Andernfalls werden alle Schlüssel in den vertrauenswürdigen Schlüsselbunden " -"als gültige Unterzeichner für dieses Depot angesehen." +"aus Schlüsselbunden auszuwählen. Die empfohlenen Orte für Schlüsselbunde " +"sind <filename>/usr/share/keyrings</filename> für von Paketen verwaltete " +"Schlüsselbunde und <filename>/etc/apt/keyrings</filename> für vom " +"Systembetreiber verwaltete Schlüsselbunde. Falls keine Schlüsselbunddateien " +"festgelegt sind, ist die Vorgabe der Schlüsselbund <filename>trusted.gpg</" +"filename> und alle Schlüsselbunde in dem Verzeichnis <filename>trusted.gpg.d/" +"</filename>. Falls kein Fingerabdruck angegeben wurde, werden alle Schlüssel " +"in den Schlüsselbunden ausgewählt. Ein Fingerabdruck wird außerdem alle " +"Signaturen eines Unterschlüssels dieses Schlüssels akzeptieren, falls dies " +"nicht gewünscht wird, kann ein Ausrufezeichen (<literal>!</literal>) an den " +"Fingerabdruck angehängt werden, um dieses Verhalten zu deaktivieren. Die " +"Option ist auf den Wert der Option mit demselben Namen voreingestellt, falls " +"sie in der vorher beschafften <filename>Release</filename>-Datei dieses " +"Depots gesetzt ist (allerdings können dadurch nur Fingerabdrücke angegeben " +"werden). Andernfalls werden alle Schlüssel in den vertrauenswürdigen " +"Schlüsselbunden als gültige Unterzeichner für dieses Depot angesehen. Die " +"Option kann auch direkt gesetzt werden, um einen öffentlichen GPG-" +"Schlüsselblock einzubetten. Es bedarf besonderer Vorsicht, die leere Zeile " +"mit einleitenden Leerzeichen und ».« zu kodieren: <placeholder " +"type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8715,8 +8616,9 @@ msgid "" "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>." +"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, " @@ -8816,24 +8718,23 @@ msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml +#, fuzzy +#| msgid "" +#| "<option>Snapshot</option> (<option>snapshot</option>) allows selecting " +#| "an earlier version of the archive from the snapshot service. Supported " +#| "values are:" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" +"<option>Snapshot</option> (<option>snapshot</option>) erlaubt die Auswahl " +"einer älteren Version des Archivs vom Schnappschuss-Dienst. Unterstützte " +"Werte sind:" +# FIXME APT → &apt;? #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml msgid "" @@ -8842,6 +8743,11 @@ msgid "" "literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however " "support additional types of IDs, and APT does not perform any checks so far." msgstr "" +"Schnappschusskennungen sind normalwerweise Zeitstempel in der Form " +"<literal>JJJJMMDDTHHMMSSZ</literal>, wie <literal>20220102T030405Z</" +"literal>, was den 2. Januar 2022 um 03:04:05 UTC darstellt. Server können " +"allerdings zusätzliche Kennungstypen unterstützen und APT führt aktuell " +"keine Überprüfungen durch." #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml @@ -8981,39 +8887,6 @@ msgstr "" "mit Medienwechsel zu benutzen. Benutzen Sie das Programm &apt-cdrom;, um " "»cdrom«-Einträge in der Quellenliste zu erstellen." -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" -"Das Schema »ftp« gibt einen FTP-Server für ein Archiv an. Die Verwendung von " -"FTP geht zu Gunsten von <literal>http</literal> und <literal>https</literal> " -"zurück und viele Archive haben entweder nie FTP-Zugriff geboten oder ziehen " -"diesen zurück. Falls Sie diese Methode immer noch benötigen, sind dafür " -"viele Konfigurationsoptionen im Bereich <literal>Acquire::ftp</literal> " -"verfügbar und ausführlich in &apt-conf; erklärt." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" -"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). Proxys, die HTTP benutzen und in der Konfigurationsdatei " -"festgelegt sind, werden ignoriert." - #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #: sources.list.5.xml msgid "" @@ -9027,20 +8900,6 @@ msgstr "" "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 Methode »rsh/ssh« 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 oder 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" @@ -9222,64 +9081,64 @@ 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 " +"Uses HTTPS to access the archive at deb.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-" +"benutzt HTTPS, um auf das Archiv auf deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"benutzt FTP, um auf das Archiv auf ftp.debian.org unter dem debian-" +"benutzt HTTPS, um auf das Archiv auf deb.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." +"<filename>sources.list</filename> auftaucht, wird eine einzelne HTTPS-" +"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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9364,6 +9223,58 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\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 "Doesn't allow the optional parameter --snapshot." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\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;" @@ -9425,8 +9336,8 @@ msgstr "" #: 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>" +"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 Konfigurationsskripte geschrieben werden. " @@ -9469,11 +9380,11 @@ 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>." +"Use source index field ordering. Configuration Item: " +"<literal>APT::SortPkgs::Source</literal>." msgstr "" -"Quellindexfeldanordnung benutzen. Konfigurationselement: <literal>APT::" -"SortPkgs::Source</literal>." +"Quellindexfeldanordnung benutzen. Konfigurationselement: " +"<literal>APT::SortPkgs::Source</literal>." #. type: Content of: <refentry><refsect1><para> #: apt-sortpkgs.1.xml @@ -9607,10 +9518,10 @@ msgid "" "<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." +"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 " @@ -9618,13 +9529,13 @@ msgstr "" "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." +"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 @@ -9872,12 +9783,12 @@ msgstr "<literal>TreeDefault</literal>-Abschnitt" #: 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." +"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." +"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 @@ -9911,20 +9822,20 @@ 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>" +"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>" +"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>" +"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>" +"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 @@ -9948,8 +9859,8 @@ msgstr "" #: 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>" +"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 sein sollen. " @@ -10354,8 +10265,8 @@ msgstr "" "entfernt Verweise. Wenn die <literal>External-Links</literal>-Einstellung " "benutzt wird, schaltet diese Option tatsächlich das Entfernen von Verweisen " "zu Dateien ein. Standardmäßig ist es an und kann mit <option>--no-delink</" -"option> ausgeschaltet werden. Konfigurationselement: <literal>APT::" -"FTPArchive::DeLinkAct</literal>." +"option> ausgeschaltet werden. Konfigurationselement: " +"<literal>APT::FTPArchive::DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -10381,14 +10292,14 @@ msgid "" "literal>." msgstr "" "wählt die Quelldatei zum außer Kraft setzen, die mit dem <literal>sources</" -"literal>-Befehl benutzt wird. Konfigurationselement: <literal>APT::" -"FTPArchive::SourceOverride</literal>." +"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>." +"Make the caching databases read only. Configuration Item: " +"<literal>APT::FTPArchive::ReadOnlyDB</literal>." msgstr "" "macht die Zwischenspeicherdatenbank nur lesbar. Konfigurationselement: " "<literal>APT::FTPArchive::ReadOnlyDB</literal>." @@ -10404,8 +10315,8 @@ 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>." +"Paketdateien im angegebenen Pfad. Konfigurationselement: " +"<literal>APT::FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -10524,11 +10435,11 @@ msgstr "" "Das hier definierte Format ist dem Format der von " "<citerefentry><refentrytitle><command>ftp</command></" "refentrytitle><manvolnum>1</manvolnum></citerefentry> und ähnlichen " -"Programmen, die mit Servern interagieren, benutzten Datei <filename>~/." -"netrc</filename> ähnlich. Es ist eine einfaches kürzelbasiertes Format, bei " -"dem die folgenden Kürzel erkannt werden; unbekannte Kürzel werden ignoriert. " -"Kürzel können durch Leerzeichen, Tabulatoren oder Zeilenumbrüche voneinander " -"getrennt werden." +"Programmen, die mit Servern interagieren, benutzten Datei " +"<filename>~/.netrc</filename> ähnlich. Es ist eine einfaches kürzelbasiertes " +"Format, bei dem die folgenden Kürzel erkannt werden; unbekannte Kürzel " +"werden ignoriert. Kürzel können durch Leerzeichen, Tabulatoren oder " +"Zeilenumbrüche voneinander getrennt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt_auth.conf.5.xml @@ -10822,31 +10733,33 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" "Die Umgebungsvariable <envar>http_proxy</envar> wird zur systemweiten " "Konfiguration unterstützt. APT-spezifische Proxys können mittels der Option " "<literal>Acquire::http::Proxy</literal> konfiguriert werden. Proxys, die nur " -"für bestimmte Rechner benutzt werden, können über <literal>Acquire::http::" -"Proxy::<replaceable>Rechner</replaceable></literal> angegeben werden. Eine " -"granularere Steuerung kann über die nachfolgend genauer beschriebene Proxy-" -"Autoerkennung erreicht werden. Alle diese Optionen verwenden das URI-Format " -"<literal><replaceable>Schema</replaceable>://[[<replaceable>Benutzer</" -"replaceable>][:<replaceable>Passwort</replaceable>]@]<replaceable>Rechner</" -"replaceable>[:<replaceable>Port</replaceable>]/</literal>. Untersützte URI-" -"Schemen sind <literal>socks5h</literal> (SOCKS5 mit ferner DNS-Auflösung), " -"<literal>http</literal> und <literal>https</literal>. " -"Authentifizierungseinzelheiten können über &apt-authconf; bereitgestellt " -"werden, statt sie direkt in den URI einzufügen." +"für bestimmte Rechner benutzt werden, können über " +"<literal>Acquire::http::Proxy::<replaceable>Rechner</replaceable></literal> " +"angegeben werden. Eine granularere Steuerung kann über die nachfolgend " +"genauer beschriebene Proxy-Autoerkennung erreicht werden. Alle diese " +"Optionen verwenden das URI-Format <literal><replaceable>Schema</" +"replaceable>://[[<replaceable>Benutzer</replaceable>][:" +"<replaceable>Passwort</replaceable>]@]<replaceable>Rechner</replaceable>[:" +"<replaceable>Port</replaceable>]/</literal>. Untersützte URI-Schemen sind " +"<literal>socks5h</literal> (SOCKS5 mit ferner DNS-Auflösung), <literal>http</" +"literal> und <literal>https</literal>. Authentifizierungseinzelheiten können " +"über &apt-authconf; bereitgestellt werden, statt sie direkt in den URI " +"einzufügen." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml @@ -10864,14 +10777,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 "" "Desweiteren werden drei Einstellungen zur Steuerung des Zwischenspeichers " "mit HTTP/1.1-konformen Proxy-Zwischenspeichern bereitgestellt: " @@ -10934,11 +10847,11 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" -"Diese Option hat Vorrang vor dem veralteten Optionsnamen <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"Diese Option hat Vorrang vor dem veralteten Optionsnamen " +"<literal>Acquire::http::ProxyAutoDetect</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-http.1.xml @@ -10977,12 +10890,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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-Pipelining zu aktivieren (RFC 2616 Abschnitt " @@ -11116,9 +11029,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" "Das HTTPS-Protokoll basiert auf dem HTTP-Protokoll, daher sind alle von &apt-" "transport-http; unterstützten Optionen auch mittels <literal>Acquire::https</" @@ -11166,15 +11079,16 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" "Eine benutzerdefinierte Zertifikatwiderrufsliste (CRL) kann mit den Optionen " -"<literal>Acquire::https::CRLFile</literal> beziehungsweise <literal>Acquire::" -"https::CRLFile::<replaceable>Rechner</replaceable></literal> konfiguriert " -"werden. Wie bei der vorherigen Option muss eine Datei im PEM-Format " -"angegeben werden." +"<literal>Acquire::https::CRLFile</literal> beziehungsweise " +"<literal>Acquire::https::CRLFile::<replaceable>Rechner</replaceable></" +"literal> konfiguriert werden. Wie bei der vorherigen Option muss eine Datei " +"im PEM-Format angegeben werden." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-https.1.xml @@ -11197,14 +11111,14 @@ msgstr "" "Wenn bei der Authentifizierung des Servers die Prüfung des Zertifikats aus " "irgendeinem Grund fehlschlägt (abgelaufen, zurückgezogen, Mann in der Mitte, " "usw.) scheitert der Verbindungsaufbau. Dies ist offenkundig das, was Sie auf " -"jeden Fall wollen und der Vorgabewert (»true«) der Option <literal>Acquire::" -"https::Verify-Peer</literal> und was ihre rechnerspezifische Variante " -"bereitstellt. Falls Sie <emphasis>genau</emphasis> wissen, was Sie tun, " -"ermöglicht Ihnen das Setzen dieser Variable auf »<literal>false</literal>«, " -"die Prüfung des Partnerzertifikats zu überspringen und den Austausch " -"erfolgreich durchzuführen. Nochmals – diese Option dient nur der Fehlersuche " -"und zu Testzwecken, da sie alle durch die Verwendung von HTTPS " -"bereitgestellte Sicherheit entfernt." +"jeden Fall wollen und der Vorgabewert (»true«) der Option " +"<literal>Acquire::https::Verify-Peer</literal> und was ihre " +"rechnerspezifische Variante bereitstellt. Falls Sie <emphasis>genau</" +"emphasis> wissen, was Sie tun, ermöglicht Ihnen das Setzen dieser Variable " +"auf »<literal>false</literal>«, die Prüfung des Partnerzertifikats zu " +"überspringen und den Austausch erfolgreich durchzuführen. Nochmals – diese " +"Option dient nur der Fehlersuche und zu Testzwecken, da sie alle durch die " +"Verwendung von HTTPS bereitgestellte Sicherheit entfernt." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-https.1.xml @@ -11241,11 +11155,11 @@ msgstr "Client-Authentifizierung" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" "Abseits der unterstützten passwortbasierten Authentifizierung (siehe &apt-" "authconf;) unterstützt HTTPS auch die Authentifizierung auf Basis von Client-" @@ -11555,9 +11469,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" "Angenommen, eine Datei mit diesem Inhalt wäre als <filename>/etc/apt/" "mirrorlist.txt</filename> auf Ihrem Rechner gespeichert. Sie kann (seit APT " @@ -11987,6 +11901,9 @@ msgid "" "narrowing this pattern (see narrowing patterns above) makes it only match " "installed versions (see version patterns below)." msgstr "" +"Wählt derzeit installierte Pakete aus. Seit Version 2.5.4 führt das " +"Einschränken dieses Musters (siehe Einschränkende Muster oben) dazu, dass es " +"nur auf installierte Versionen (siehe Versionsmuster unten) passt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12021,17 +11938,15 @@ msgstr "wählt Pakete aus, die in keinen Depots mehr existieren." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>?false</code>" msgid "<code>?phasing</code>" -msgstr "<code>?false</code>" +msgstr "<code>?phasing</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Selects packages that no longer exist in repositories." msgid "Selects packages that will be kept back in upgrades due to phasing." -msgstr "wählt Pakete aus, die in keinen Depots mehr existieren." +msgstr "" +"wählt Pakete aus, die bei Upgrades aufgrund der abgestuften Aktualisierungen " +"zurückgehalten werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12109,20 +12024,16 @@ msgstr "<code>?codename(REGULÄRER_AUSDRUCK)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "" -#| "Selects versions that come from the origin that matches the specified " -#| "regular expression. Origin, here, means the values after <code>o=</code> " -#| "in <command>apt-cache policy</command>." msgid "" "Selects versions that come from the codename that matches the specified " "regular expression. Codename, here, means the values after <code>n=</code> " "in <command>apt-cache policy</command>." msgstr "" -"wählt Versionen aus, deren Ursprung auf den regulären Ausdruck passt. " -"Ursprung bedeutet hier, die Werte nach <code>o=</code> in <command>apt-cache " +"wählt Versionen aus, deren Codename auf den regulären Ausdruck passt. " +"Codename bedeutet hier, die Werte nach <code>n=</code> in <command>apt-cache " "policy</command>." +# FIXME Missing space before 2nd matched #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" @@ -12131,6 +12042,10 @@ msgid "" "version(2.0))</code>matched even if 2.0 was not installed, but another " "version was." msgstr "" +"Wählt derzeit installierte Paketversionen aus. In Versionen vor 2.5.4 " +"erfolgte der Vergleich nur auf Paketebene, daher passte <code>?any-version(?" +"installed?version(2.0))</code> selbst wenn nicht Version 2.0 sondern nur " +"eine andere Version installiert war." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12225,61 +12140,47 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>?not(PATTERN)</code>" msgid "<code>?priority(NAME)</code>" -msgstr "<code>?not(MUSTER)</code>" +msgstr "<code>?priorität(NAME)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>~E</code>" msgid "<code>~pNAME</code>" -msgstr "<code>~E</code>" +msgstr "<code>~pNAME</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "" -#| "Selects versions where the version string matches the specified regular " -#| "expression." msgid "Selects versions where the Priority string equals the given name." msgstr "" -"wählt Versionen aus, bei denen die Versionszeichenkette auf den angegebenen " -"regulären Ausdruck passt." +"wählt Versionen aus, bei denen die Prioritätszeichenkette identisch zu dem " +"angegebenen Namen ist." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>?false</code>" msgid "<code>?security</code>" -msgstr "<code>?false</code>" +msgstr "<code>?security</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Selects packages that can be upgraded (have a newer candidate)." msgid "" "Selects packages that are a security update or succeed a security update." msgstr "" -"wählt Pakete aus, bei denen ein Upgrade durchgeführt werden kann (die einen " -"neueren Kandidaten haben)." +"wählt Pakete aus, die eine Sicherheitsaktualisierung sind oder auf eine " +"Sicherheitsaktualisierung folgen." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Package patterns" msgid "Package relationship patterns" -msgstr "Paketmuster" +msgstr "Paketbeziehungsmuster" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "These patterns select specific versions of a package." msgid "" "These patterns match specific package versions that depend/conflict with " "some other packages." -msgstr "Diese Muster wählen bestimmte Versionen eines Pakets aus." +msgstr "" +"Diese Muster passen auf bestimmte Versionen, die von bestimmten anderen " +"Paketen abhängen bzw. mit diesen in Konflikt stehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12311,6 +12212,16 @@ msgstr "<code>?suggests(MUSTER)</code>" msgid "<code>~DSuggests:PATTERN</code>" msgstr "<code>~DSuggests:MUSTER</code>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "<code>?recommends(MUSTER)</code>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "<code>~DRecommends:MUSTER</code>" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -12364,21 +12275,21 @@ msgstr "<code>~DEnhances:MUSTER</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" +"Wählt Versionen aus, die von Paketen, die auf MUSTER passen abhängen, " +"vorabhängen, diese vorschlagen, empfehlen, in Konflikt zu diesen stehen usw." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?reverse-<replaceable>depType</replaceable>(PATTERN)</code>" -msgstr "" +msgstr "<code>?reverse-<replaceable>abhTyp</replaceable>(MUSTER)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>" msgid "<code>~R<replaceable>DepType</replaceable>:PATTERN</code>" -msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>" +msgstr "<code>~R<replaceable>abhTyp</replaceable>:MUSTER</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12386,6 +12297,8 @@ msgid "" "Opposite of <code>?depends</code> and friends - selects all packages that " "have reverse-dependencies (versions) matching PATTERN." msgstr "" +"Gegenteil von <code>?depends</code> und ähnlichen - wählt alle Pakete, die " +"ein passendes MUSTER auf eine inverse Abhängigkeit haben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12394,6 +12307,9 @@ msgid "" "<code>depends</code>, so that we don't have to repeat the entire list from " "the first paragraph here." msgstr "" +"<replaceable>abhTyp</replaceable> ist einer der Abhängigkeitstypen wie " +"<code>depends</code>, so dass nicht die gesamte Liste aus dem ersten Absatz " +"hier wiederholt werden muss." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12501,10 +12417,10 @@ msgstr "?narrow akzeptiert unendliche Argumente" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" "<code>foo</code> kann nicht als Kurzschreibweise für <code>?name(foo)</code> " "benutzt werden, da dies unbemerkte Tippfehler verursachen kann. Betrachten " @@ -12519,6 +12435,8 @@ msgid "" "Dependency types for ~D and related operators need to be specified in the " "canonical case." msgstr "" +"Abhängigkeitstypen für ~D und ähnliche Operatoren müssen im kanonischen Fall " +"festgelegt werden." #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml @@ -12779,13 +12697,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -12964,8 +12882,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12977,8 +12895,8 @@ msgstr "" "\n" " Zum Beispiel:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -13000,13 +12918,13 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" normalerweise etwas wie: stable unstable testing\n" "\n" " Distribution [stable]:\n" @@ -13015,20 +12933,12 @@ msgstr "" 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." +"<emphasis>unstable</emphasis> refers to the developmental version." 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üsselungstechnniken oder andere Dinge enthalten, die nicht aus den " -"Vereinigten Staaten exportiert werden können. Diese Pakete in die USA zu " -"importieren ist jedoch legal." +"Entwicklungsversion." #. type: Content of: <book><chapter><screen> #: guide.dbk @@ -13592,18 +13502,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" @@ -13641,8 +13551,8 @@ msgstr "" "wiederholt und zeigt die durchgeführte Aktion, 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 " +"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 der Name des Objekts in Kurzform, das heruntergeladen wird. " "Für Archive wird es den Namen des Paketes enthalten, das heruntergeladen " "wird." @@ -14164,6 +14074,359 @@ msgstr "" "fortfahren, wodurch die bereits auf der Platte heruntergeladenen Archive " "benutzt werden." +#~ msgid "" +#~ "<literal>enable</literal> to allow selecting a snapshot with the " +#~ "<option>--snapshot</option> option, or" +#~ msgstr "" +#~ "<literal>enable</literal>, um die Auswahl eines Schnappschusses mit der " +#~ "Option <option>--snapshot</option> zu erlauben oder" + +#~ msgid "a snapshot ID to select a specific snapshot." +#~ msgstr "" +#~ "eine Schnappschusskennung, um einen bestimmten Schnappschuss auszuwählen." + +#~ 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::<host></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 in der Standardform <literal>ftp://" +#~ "[[Benutzer][:Passwort]@]Rechner[:Port]/</literal> angegeben. Proxys pro " +#~ "Rechner können außerdem in der Form <literal>ftp::Proxy::<Rechner></" +#~ "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>." + +#~ 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 angewendet." + +#~ 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 eingestellt werden oder für " +#~ "Verbindungen, die durch einen Proxy oder zu einem bestimmten Rechner " +#~ "gehen (Beispiele finden Sie in der Musterkonfigurationsdatei)." + +#~ 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." + +#~ 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 RFC-2428-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. Durch Stellen auf »true« wird " +#~ "die Benutzung selbst auf IPv4-Verbindungen erzwungen. Beachten Sie, dass " +#~ "die wenigsten FTP-Server RFC 2428 unterstützen." + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "" +#~ "gibt Informationen aus, die sich auf das Herunterladen von Paketen per " +#~ "FTP beziehen." + +#~ msgid "" +#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on " +#~ "the decline in favour of <literal>http</literal> and <literal>https</" +#~ "literal> and many archives either never offered or are retiring FTP " +#~ "access. If you still need this method many configuration options for it " +#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed " +#~ "in &apt-conf;." +#~ msgstr "" +#~ "Das Schema »ftp« gibt einen FTP-Server für ein Archiv an. Die Verwendung " +#~ "von FTP geht zu Gunsten von <literal>http</literal> und <literal>https</" +#~ "literal> zurück und viele Archive haben entweder nie FTP-Zugriff geboten " +#~ "oder ziehen diesen zurück. Falls Sie diese Methode immer noch benötigen, " +#~ "sind dafür viele Konfigurationsoptionen im Bereich <literal>Acquire::ftp</" +#~ "literal> verfügbar und ausführlich in &apt-conf; erklärt." + +#~ msgid "" +#~ "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 "" +#~ "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). Proxys, die HTTP benutzen und in der " +#~ "Konfigurationsdatei festgelegt sind, werden ignoriert." + +#~ 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 Methode »rsh/ssh« 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 oder 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." + +#~ 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\">" + +#~ 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." + +#~ msgid "Supported keyring files" +#~ msgstr "Unterstützte Schlüsselbunddateien" + +#~ 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 unterstützt als Voreinstellung für Schlüsselbunddateien nur das " +#~ "binäre OpenPGP-Format (auch als öffentlicher GPG-Schlüsselbund bekannt) " +#~ "in den Dateien mit der Erweiterung »<literal>gpg</literal>«, nicht das " +#~ "Schlüsselkastendatenbankformat, das in neueren &gpg;-Versionen eingeführt " +#~ "wurde. Daher sollten binäre Schlüsselbunddateien, die mit allen APT-" +#~ "Versionen benutzt werden sollen, immer mit <command>gpg --export</" +#~ "command> erstellt werden." + +#~ 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 "" +#~ "Falls auf allen Systeme, die den erzeugten Schlüsselbund verwenden " +#~ "sollen, mindestens eine APT-Version >= 1.4 installiert ist, können Sie " +#~ "alternativ das ASCII-geschützte Format mit der Erweiterung »<literal>asc</" +#~ "literal>« verwenden, das mit <command>gpg --armor --export</command> " +#~ "erstellt wird." + +#~ msgid "Commands" +#~ msgstr "Befehle" + +#~ msgid "(deprecated)" +#~ msgstr "(missbilligt)" + +#~ 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." + +#~ 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 " +#~ "ausgehöhlt." + +#~ 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>Hinweis</emphasis>: Anstatt diesen Befehl zu benutzen, sollte " +#~ "ein Schlüsselbund mit einem aussagekräftigen Namen und entweder " +#~ "»<literal>gpg</literal>« oder »<literal>asc</literal>« als " +#~ "Dateinamenserweiterung direkt im Verzeichnis <filename>/etc/apt/" +#~ "trusted.gpg.d/</filename> abgelegt werden." + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "" +#~ "entfernt einen Schlüssel aus der Liste der vertrauenswürdigen Schlüssel." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "" +#~ "gibt den Schlüssel &synopsis-param-keyid; auf der Standardausgabe aus." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "gibt alle vertrauenswürdigen Schlüssel auf der Standardausgabe aus." + +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "listet vertrauenswürdige Schlüssel mit Fingerabdrücken auf." + +#~ 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 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 auszuhöhlen, falls " +#~ "dies ohne Sorgfalt benutzt wird." + +#~ 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;." + +#~ 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 Benutzer gleichermaßen erleichtert." + +#~ 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 eine derart gebautes 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." + +#~ 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." + +#~ 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>, wobei " +#~ "<filename>trusted.gpg</filename> der primäre Schlüsselbund wird, d.h. " +#~ "neue Schlüssel werden zu diesem hinzugefügt." + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#~ 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." + +#~ 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." + #~ msgid "Describes the process of resolving build-dependencies in &apt-get;." #~ msgstr "" #~ "beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;." diff --git a/doc/po/es.po b/doc/po/es.po index 3bce3ab..7ab8741 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -38,7 +38,7 @@ 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: 2024-03-22 10:14+0000\n" +"POT-Creation-Date: 2025-05-19 18:28+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" @@ -173,6 +173,33 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\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 @@ -206,7 +233,19 @@ msgstr "" #. type: Plain text #: apt.ent -#, no-wrap +#, fuzzy, 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" msgid "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -218,6 +257,44 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\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 +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" msgstr "" " <varlistentry>\n" @@ -560,11 +637,13 @@ 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\">" +"<!-- 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\">" +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " +"\"config_string\">" #. type: Plain text #: apt.ent @@ -578,12 +657,12 @@ 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 " +"<!-- 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 " +"<!-- 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 @@ -634,11 +713,11 @@ 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\">" +"<!-- 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\">" +"<!-- 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 @@ -700,28 +779,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -731,12 +800,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Descripción" @@ -799,7 +867,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "" @@ -893,6 +961,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -980,11 +1080,11 @@ msgid "" 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Véase también" @@ -1120,10 +1220,10 @@ msgstr "" "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." +"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 @@ -1631,8 +1731,8 @@ msgid "" "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>." +"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 " @@ -1748,11 +1848,11 @@ 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>." +"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>." +"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 @@ -1776,6 +1876,36 @@ 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 "" +#| "Re-install packages that are already installed and at the newest " +#| "version. Configuration Item: <literal>APT::Get::ReInstall</literal>." +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</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 +#, fuzzy +#| msgid "" +#| "Select the source override file to use with the <literal>sources</" +#| "literal> command. Configuration Item: " +#| "<literal>APT::FTPArchive::SourceOverride</literal>." +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</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-get.8.xml #, fuzzy @@ -1790,9 +1920,9 @@ 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>." +"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 " @@ -1845,8 +1975,8 @@ 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>." +"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 @@ -1990,8 +2120,8 @@ msgid "" "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>." +"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 " @@ -2024,8 +2154,8 @@ msgid "" "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>." +"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 @@ -2034,8 +2164,8 @@ msgid "" "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>." +"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 " @@ -2122,8 +2252,8 @@ msgid "" 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>." +"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 @@ -2153,8 +2283,9 @@ msgid "" "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>." +"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 @@ -2271,7 +2402,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Ficheros" @@ -2723,12 +2854,12 @@ msgstr "Tenga cuidado, dotty no puede dibujar grandes conjuntos de paquetes." #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Lo mismo que <literal>dotty</literal>, sólo para xvcg de la <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">herramienta VCG</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">herramienta VCG</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2756,8 +2887,8 @@ msgid "" "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>)." +"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 " @@ -2771,8 +2902,8 @@ msgstr "" #: 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>." +"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 " @@ -2816,8 +2947,8 @@ msgid "" 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>." +"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 @@ -2831,16 +2962,16 @@ msgstr "" 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>." +"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>." +"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 @@ -2888,8 +3019,8 @@ msgid "" 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>." +"<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 @@ -2908,8 +3039,8 @@ msgstr "" #: 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>." +"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 " @@ -2934,8 +3065,8 @@ msgid "" "<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>." +"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 @@ -2961,8 +3092,8 @@ msgstr "" #: apt-cache.8.xml #, fuzzy #| msgid "" -#| "Use source index field ordering. Configuration Item: <literal>APT::" -#| "SortPkgs::Source</literal>." +#| "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>." @@ -2984,282 +3115,6 @@ 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 -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -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><term> -#: apt-key.8.xml -msgid "(deprecated)" -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 "" -"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><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Operation" -msgid "Deprecation" -msgstr "Operación" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3271,8 +3126,8 @@ 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</" +"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 "" @@ -3371,6 +3226,12 @@ msgstr "" "<literal>showauto</literal>, a excepción de que muestra una lista de " "paquetes manualmente instalados." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Opciones" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3441,6 +3302,13 @@ msgid "" "called dpkg selections can be found in &dpkg;." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +#, fuzzy +#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3493,6 +3361,56 @@ 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 +msgid "User Configuration" +msgstr "Configuración de usuario" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml #, fuzzy @@ -3723,57 +3641,6 @@ msgid "" "shipped in the repository (as e.g. indicated by the codename)." msgstr "" -#. 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 #, fuzzy @@ -3805,12 +3672,12 @@ msgstr "" #: 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>." +"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>." +"<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 @@ -3854,9 +3721,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-secure.8.xml +#, fuzzy +#| msgid "" +#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " +#| "&debsign;, &debsig-verify;, &gpg;" msgid "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " "&debsign;, &debsig-verify;, &gpg;" @@ -3865,16 +3736,16 @@ msgstr "" #: 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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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=\"https://www.debian.org/doc/manuals/securing-debian-manual/ch07\"> " +"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." @@ -3966,13 +3837,13 @@ msgstr "" #| "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>." +"<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>." +"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 @@ -3983,8 +3854,8 @@ msgid "" 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>." +"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 @@ -4002,8 +3873,8 @@ msgstr "" #: 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>." +"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>." @@ -4041,8 +3912,8 @@ msgid "" "<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>." +"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 @@ -4108,8 +3979,8 @@ 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>." +"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." @@ -4157,12 +4028,12 @@ msgid "" "and %N by a tab. A % can be printed by using %%." msgstr "" "Define la salida de cada opción de configuración. %t se sustituye con " -"el nombre individual, %f con el nombre jerárquico completo, y %" -"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, %n se sustituye con una " -"línea nueva, y %N con una tabulación. Se puede mostrar un % " -"utilizando %%." +"el nombre individual, %f con el nombre jerárquico completo, y " +"%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, %n se " +"sustituye con una línea nueva, y %N con una tabulación. Se puede " +"mostrar un % utilizando %%." #. type: Content of: <refentry><refsect1><para> #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml @@ -4238,9 +4109,9 @@ msgid "" "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." +"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</" @@ -4453,11 +4324,11 @@ msgid "" 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)." +"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 @@ -4526,15 +4397,64 @@ msgid "" "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>." +"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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4799,8 +4719,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -4860,9 +4780,9 @@ msgid "" "&sources-list; entries by using the <option>Date-Max-Future</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 " +"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 " @@ -4923,9 +4843,9 @@ msgid "" "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 " +"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 " @@ -5066,96 +4986,6 @@ msgid "" "&apt-transport-https; manpages respectively." 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::<host></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::<máquina></" -"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 "" -"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 -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 @@ -5190,8 +5020,9 @@ 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." +"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 @@ -5391,9 +5222,9 @@ msgid "" "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 " +"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 " @@ -5504,21 +5335,22 @@ msgid "" "<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." +"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><variablelist><varlistentry><listitem><para> @@ -5528,17 +5360,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." msgstr "" #. type: Content of: <refentry><refsect1><title> @@ -5553,9 +5387,9 @@ msgstr "Configuración de usuario" 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>." +"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> @@ -5629,12 +5463,13 @@ 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>" +"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 @@ -5666,19 +5501,20 @@ 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." +"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." +"<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 @@ -5688,10 +5524,10 @@ msgstr "" #| "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>." +#| "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>, " @@ -5881,9 +5717,9 @@ msgid "" "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." +"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> @@ -5989,11 +5825,11 @@ msgid "" "<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." +"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 @@ -6075,12 +5911,6 @@ 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." @@ -6201,8 +6031,8 @@ 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." +"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 " @@ -6219,14 +6049,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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 " @@ -6235,12 +6065,12 @@ msgstr "" "entrada original. El formato de cada línea es <literal>MarkKeep</literal>, " "<literal>MarkDelete</literal> o <literal>MarkInstall</literal> seguido de " "<literal>package-name <a.b.c -> d.e.f | x.y.z> (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." +"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 @@ -6305,8 +6135,8 @@ 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>." +"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>." @@ -6314,8 +6144,8 @@ 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 " +"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 "" @@ -6421,15 +6251,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 " @@ -6440,6 +6279,17 @@ msgstr "" "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><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6655,10 +6505,10 @@ msgid "" "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>." +"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 @@ -6774,6 +6624,27 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Package: perl\n" +#| "Pin: version &good-perl;*\n" +#| "Pin-Priority: 1001\n" +msgid "" +"Package: perl\n" +"Pin: source-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 "" @@ -6823,8 +6694,8 @@ 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»." +"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 @@ -7090,9 +6961,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -7269,9 +7140,9 @@ msgstr "Por ello:" 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." +"\"<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;" @@ -7553,12 +7424,12 @@ msgid "" "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." +"<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 " @@ -7907,6 +7778,17 @@ msgstr "" "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><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -7947,6 +7829,16 @@ msgstr "" "<literal>Dir::Ignore-Files-Silently</literal>. Si coincide, se omite " "silenciosamente." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -7982,6 +7874,12 @@ msgid "" "multi-architecture support." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8145,13 +8043,13 @@ msgstr "" #: 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." +#| "<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</" @@ -8161,14 +8059,14 @@ msgid "" "<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." +"<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 @@ -8237,9 +8135,10 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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> @@ -8263,6 +8162,35 @@ msgid "" "versions." msgstr "" +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +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>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 @@ -8311,11 +8239,12 @@ msgstr "" 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." +"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> @@ -8418,18 +8347,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -8445,8 +8373,9 @@ msgid "" "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>." +"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> @@ -8502,19 +8431,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -8630,47 +8549,8 @@ msgid "" "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 ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -#, fuzzy -#| 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." -msgid "" -"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." +"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 @@ -8685,20 +8565,6 @@ msgstr "" "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" @@ -8892,63 +8758,63 @@ 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 " +"Uses HTTPS to access the archive at deb.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 " +"Utiliza HTTPS para acceder al archivo de Debian en «deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"Utiliza FTP para acceder al archivo de Debian en «ftp.debian.org», debajo " +"Utiliza HTTPS para acceder al archivo de Debian en «deb.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." +"filename>, se usará sólo una sesión HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9027,6 +8893,58 @@ msgid "" "Components: main contrib\n" msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb\n" +#| "URIs: https://deb.debian.org/debian\n" +#| "Suites: unstable\n" +#| "Components: contrib" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" +"Types: deb\n" +"URIs: https://deb.debian.org/debian\n" +"Suites: unstable\n" +"Components: contrib" + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb-src\n" +#| "URIs: file:/home/apt/debian\n" +#| "Suites: unstable\n" +#| "Components: main contrib non-free non-free-firmware" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" +"Types: deb-src\n" +"URIs: file:/home/apt/debian\n" +"Suites: unstable\n" +"Components: main contrib non-free non-free-firmware" + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -9080,15 +8998,16 @@ 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>" +"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>" +"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 " @@ -9132,8 +9051,8 @@ 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>." +"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>." @@ -9282,10 +9201,10 @@ msgid "" "<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." +"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 " @@ -9314,15 +9233,16 @@ msgid "" "<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>." +"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 @@ -9551,12 +9471,12 @@ msgstr "Sección <literal>TreeDefault</literal>" #: 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." +"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." +"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 @@ -9591,17 +9511,17 @@ 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>" +"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>" +"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>" +"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>" @@ -9621,15 +9541,15 @@ 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>" +"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>" +"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 " @@ -10043,8 +9963,8 @@ msgstr "" "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>." +"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 @@ -10054,14 +9974,14 @@ msgid "" "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>." +"<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>." +"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>." @@ -10075,10 +9995,10 @@ msgid "" "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>." +"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 @@ -10259,16 +10179,16 @@ msgstr "Ejemplos" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml @@ -10441,16 +10361,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> @@ -10474,14 +10395,14 @@ msgstr "" #| "store the requested archive files in its cache, which can be used to " #| "prevent the proxy from polluting its cache with (big) .deb files." msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 an HTTP/1.1. <literal>No-Cache</literal> indica " @@ -10528,8 +10449,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10589,12 +10510,12 @@ msgstr "" #| "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 work around 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." +"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 work around 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 " @@ -10693,9 +10614,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10724,9 +10645,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10772,11 +10694,11 @@ msgstr "" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -10978,9 +10900,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> @@ -11000,9 +10922,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> #: apt-transport-mirror.1.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml @@ -11623,6 +11545,16 @@ msgstr "" msgid "<code>~DSuggests:PATTERN</code>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -11676,8 +11608,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -11799,10 +11731,10 @@ msgstr "" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -12034,8 +11966,8 @@ 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>." +"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 @@ -12065,13 +11997,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -12242,8 +12174,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12255,8 +12187,8 @@ msgstr "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12278,26 +12210,31 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" tags are typically something like: stable unstable testing\n" "\n" " Distribution [stable]:\n" #. type: Content of: <book><chapter><para> #: guide.dbk +#, fuzzy +#| 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." 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." +"<emphasis>unstable</emphasis> refers to the developmental version." 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 " @@ -12855,18 +12792,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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" +"Des:4 http://ftp.de.debian.org/debian/ 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" @@ -13415,6 +13352,268 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" msgid "Which will use the already fetched archives on the disc." msgstr "Esto utiliza los archivos del disco previamente obtenidos." +#~ 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::<host></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::<máquina></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>." + +#~ 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." + +#~ 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)." + +#~ 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." + +#~ 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." + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "" +#~ "Muestra la información relacionada con la descarga de paquetes mediante " +#~ "FTP." + +#, fuzzy +#~| 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." +#~ msgid "" +#~ "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." + +#~ 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." + +#, fuzzy +#~| msgid "APT key management utility" +#~ msgid "Deprecated APT key management utility" +#~ msgstr "Herramienta para gestionar las claves de APT" + +#~ 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." + +#~ msgid "Commands" +#~ msgstr "Órdenes" + +#~ 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>." + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "Elimina una clave de la lista de claves de confianza." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "Muestra la clave &synopsis-param-keyid; por la salida estándar." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "Devuelve todas las claves de confianza por la salida estándar." + +#, fuzzy +#~| msgid "List trusted keys." +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "Lista las claves de confianza." + +#~ 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;." + +#~ 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." + +#~ 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." + +#~ 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." + +#, fuzzy +#~| msgid "Operation" +#~ msgid "Deprecation" +#~ msgstr "Operación" + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#, 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." + +#~ 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." + #~ 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-" @@ -13425,12 +13624,12 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos." #~ 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::<host></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." +#~ "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::<host></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 " @@ -13461,39 +13660,40 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos." #~ "info about trusted certificates. <literal><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::Verify-Peer</literal> es la opción " +#~ "que guarda la información sobre certificados de confianza. " +#~ "<literal><host>::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><host>::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><host>::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><host>::" -#~ "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><host>::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><host>::SslForceVersion</literal> es la opción " +#~ "utilizar para la autenticación del cliente. " +#~ "<literal><host>::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><host>::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><host>::SslForceVersion</literal> es la opción " #~ "correspondiente para cada servidor." #~ msgid "" @@ -13675,14 +13875,15 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos." #~ "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\"/>" +#~ "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." @@ -13800,21 +14001,21 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos." #~ 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>." +#~ "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>." +#~ "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>." +#~ "(<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 " @@ -13984,8 +14185,8 @@ msgstr "Esto utiliza los archivos del disco previamente obtenidos." #~| "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)" +#~ "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)" diff --git a/doc/po/fr.po b/doc/po/fr.po index cd2f997..b63bef4 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -1,5 +1,5 @@ # Translation of apt package man pages -# Copyright (C) 2000-2018 Debian French l10n team <debian-l10n-french@lists.debian.org> +# Copyright (C) 2000-2025 Debian French l10n team <debian-l10n-french@lists.debian.org> # This file is distributed under the same license as the apt package. # # Translators: @@ -7,21 +7,22 @@ # 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-2019. +# bubu <bubub@no-log.org>, 2023-2025. +# Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>, 2014, 2017-2024. msgid "" msgstr "" -"Project-Id-Version: apt-doc 1.8.0\n" +"Project-Id-Version: apt-doc 2.9.14\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-03-22 10:14+0000\n" -"PO-Revision-Date: 2019-05-01 17:00+0100\n" -"Last-Translator: Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>\n" +"POT-Creation-Date: 2025-06-13 12:41+0200\n" +"PO-Revision-Date: 2025-04-15 13:14+0200\n" +"Last-Translator: bubu <bubub@no-log.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: Poedit 1.8.11\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.2.2\n" #. type: Plain text #: apt.ent @@ -147,6 +148,26 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Afficher les messages d'audit (et de notification). Cela annule\n" +" l'option mode silencieux, mais seulement pour les messages de notification, pas\n" +" pour ceux de progression.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" + #. type: Plain text #: apt.ent #, no-wrap @@ -166,10 +187,12 @@ 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" +" <listitem><para>Fichier de configuration ; indique le fichier de configuration à\n" +" utiliser. Le programme lira le fichier de configuration par défaut puis le fichier\n" +" indiqué ici. Si les réglages de configuration doivent être établis avant l'analyse\n" +" des fichiers de configuration par défaut, un fichier peut être indiqué avec la\n" +" variable d'environnement<envar>APT_CONFIG</envar>. Veuillez consulter &apt-conf;\n" +" pour des informations sur la syntaxe d'utilisation.\n" " </para>\n" " </listitem>\n" " </varlistentry>\n" @@ -188,7 +211,6 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" -"\">\n" msgstr "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -200,6 +222,33 @@ msgstr "" " </para>\n" " </listitem>\n" " </varlistentry>\n" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +"\">\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +" <listitem><para>Active ou désactive les couleurs. Elles sont activées par défaut sur\n" +" les terminaux pris en charge pour &apt; et peuvent aussi être désactivées avec les\n" +" variables d'environnement <envar>NO_COLOR</envar> ou <envar>APT_NO_COLOR</envar>, ou\n" +" configurées plus tard par l'option et le champ d'action de configuration\n" +" <option>APT::Color</option>. Consulter &apt-conf; pour plus d’informations.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -220,11 +269,12 @@ 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" +" <para>Toutes les options de la ligne de commande peuvent être définies dans\n" +" le fichier de configuration, les descriptions indiquant l'option de\n" +" configuration concernée. Pour les options booléennes, vous pouvez\n" +" outrepasser les réglages du fichier de configuration avec\n" " <option>-f-</option>,<option>--no-f</option>, <option>-f=no</option>\n" -" et d'autres variantes analogues.\n" +" ou d'autres variations.\n" " </para>\n" "\">\n" @@ -256,7 +306,7 @@ msgid "" 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" +" Élément de configuration : <literal>Dir::Etc::Parts</literal>.</para></listitem>\n" " </varlistentry>\n" "\">\n" @@ -309,7 +359,9 @@ 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" +" C'est dans ce fichier qu'on peut faire de l'épinglage (pinning) \n" +" c'est-à-dire, choisir d'obtenir des paquets d'une source distincte ou \n" +" d'une distribution différente.\n" " Élément de configuration : <literal>Dir::Etc::Preferences</literal>.</para></listitem>\n" " </varlistentry>\n" @@ -374,7 +426,8 @@ msgid "" 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" +" <listitem><para>Zone de stockage pour les informations qui concernent chaque ressource\n" +" de paquet spécifiée dans &sources-list;\n" " Élément de configuration : <literal>Dir::State::Lists</literal>.</para></listitem>\n" " </varlistentry>\n" @@ -406,20 +459,13 @@ msgid "" 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" +" <listitem><para>Trousseau des clefs de confiance locales. Les nouvelles clefs y seront ajoutées.\n" " Élément de configuration : <literal>Dir::Etc::Trusted</literal>.</para></listitem>\n" " </varlistentry>\n" #. type: Plain text #: apt.ent -#, fuzzy, 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" +#, 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" @@ -433,10 +479,16 @@ msgid "" "\">\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" +" <listitem><para>Fragments de fichier pour les clefs de signatures de confiance.\n" +" Des trousseaux supplémentaires peuvent être placés à cet endroit (par d'autres\n" +" paquets ou par l'administrateur).\n" " Élément de configuration : <literal>Dir::Etc::TrustedParts</literal>.</para></listitem>\n" " </varlistentry>\n" +" <varlistentry><term><filename>/etc/apt/keyrings/</filename></term>\n" +" <listitem><para>Emplacement où stocker des trousseaux supplémentaires à utiliser avec\n" +" <literal>Signed-By</literal>.\n" +" </para></listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -482,7 +534,8 @@ msgid "" 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" +" bubu et Jean-Pierre Giraud <email>jean-pierregiraud@neuf.fr</email> (2004, 2017-2024) et \n" +" l'équipe de traduction francophone de Debian <email>debian-l10n-french@lists.debian.org</email>\n" "\">\n" #. type: Plain text @@ -509,8 +562,9 @@ 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\">" +"<!-- 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 @@ -523,8 +577,8 @@ 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 " +"<!-- 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\">" @@ -561,13 +615,13 @@ msgstr "<!ENTITY synopsis-prefix \"préfixe\">" 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\">" +msgstr "<!ENTITY synopsis-regex \"expression_rationnelle\">" #. 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\">" +"<!-- 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 @@ -615,26 +669,18 @@ msgid "" "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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -644,12 +690,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Description" @@ -724,6 +769,8 @@ msgid "" "When a package is supplied as an argument, the package will be installed " "prior to the upgrade action." msgstr "" +"Quand un paquet est fourni comme argument, le paquet sera installé avant " +"l'action de mise à niveau." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml @@ -733,11 +780,11 @@ msgid "" "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 " +"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><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -752,7 +799,7 @@ msgstr "" "La commande réalise l'action requise sur un ou plusieurs paquets spécifiés " "avec ®ex;, &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." +"du paquet pour l'installer ou un moins (-) pour le supprimer." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml @@ -802,7 +849,7 @@ msgid "" "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 " +"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." @@ -830,6 +877,9 @@ msgid "" "Depends. It also handles conflicts, by prefixing an argument with " "<literal>\"Conflicts: \"</literal>." msgstr "" +"L'option <option>satisfy</option> satisfait les chaînes de dépendances comme " +"utilisées par Build-Depends. Elle gère également les conflits en préfixant " +"un argument par <literal>\"Conflicts: \"</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml @@ -837,6 +887,40 @@ msgid "" "Example: <literal>apt satisfy \"foo, bar (>= 1.0)\" \"Conflicts: baz, " "fuzz\"</literal>" msgstr "" +"Example: <literal>apt satisfy \"toto, truc (>= 1.0)\" \"Conflicts: machin, " +"bidule\"</literal>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml @@ -875,14 +959,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml -#, fuzzy -#| 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." msgid "" "<option>list</option> is somewhat similar to <command>dpkg-query --list</" "command> in that it can display a list of packages satisfying certain " @@ -891,13 +967,14 @@ msgid "" "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 " +"La commande <option>list</option> 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>." +"&glob; pour la correspondance des noms de paquets, les motifs &apt-" +"patterns;, 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><term> #: apt.8.xml @@ -916,17 +993,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-cache;)" msgid "(summarised in &apt-cache;)" -msgstr "(&apt-cache;)" +msgstr "(résumé dans &apt-cache;)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-get;)" msgid "(summarised in &apt-get;)" -msgstr "(&apt-get;)" +msgstr "(résumé dans &apt-get;)" #. type: Content of: <refentry><refsect1><title> #: apt.8.xml @@ -966,11 +1039,11 @@ msgstr "" "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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Voir aussi" @@ -1005,7 +1078,7 @@ msgstr "" #: 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." +"Utilitaire APT pour la gestion des paquets – interface en ligne de commande" #. type: Content of: <refentry><refsect1><para> #: apt-get.8.xml @@ -1044,16 +1117,16 @@ msgid "" "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." +"d'index répertoriant les paquets disponibles à partir de leurs sources. 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 des fichiers " +"de paquet ne peut être connue à l'avance." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1102,7 +1175,7 @@ msgstr "" "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 " +"sources où récupérer les paquets désirés. Voir 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> @@ -1236,6 +1309,9 @@ msgid "" "in &apt;, except for anchored expressions, and will be removed from &apt-" "get; in a future version. Use &apt-patterns; instead." msgstr "" +"Le repli vers les expressions rationnelles est obsolète dans APT 2.0 et a " +"été supprimé de &apt;, sauf pour les expressions ancrées, et sera supprimé " +"d'&apt-get; dans une version future. Utiliser &apt-patterns; à la place." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1288,9 +1364,10 @@ msgstr "" "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." +"à 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 @@ -1394,6 +1471,12 @@ msgid "" "with <literal>\"Conflicts: \"</literal> to unsatisfy the dependency string. " "Multiple strings of the same type can be specified." msgstr "" +"<literal>satisfy</literal> fait qu'apt-get satisfait les chaînes de " +"dépendance données. Les chaînes de dépendance peuvent avoir des profils de " +"construction et une liste de restrictions d'architecture comme dans les " +"dépendances de construction. Elles peuvent de façon optionnelle être " +"préfixées par <literal>\"Conflicts: \"</literal> pour ne pas satisfaire la " +"chaîne de dépendance. Plusieurs chaînes du même type peuvent être indiquées." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1401,12 +1484,16 @@ msgid "" "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" +"Exemple : <literal>apt-get satisfy \"toto\" \"Conflicts: truc\" \"machin " +"(>> 1.0) | bruc (= 2.0), moo\"</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml msgid "" "The legacy operator '</>' is not supported, use '<=/>=' instead." msgstr "" +"L'ancien opérateur « </> » n'est plus pris en charge, utilisez à la " +"place « <=/>= »." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1419,16 +1506,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml -#, fuzzy -#| msgid "" -#| "<literal>download</literal> will download the given binary package into " -#| "the current directory." msgid "" "<literal>download</literal> will download the given binary package into the " "current directory. The authenticity of the package data is ensured as usual." msgstr "" -"<literal>download</literal> télécharge le fichier binaire indiqué dans le " -"répertoire courant." +"<literal>download</literal> télécharge le paquet binaire indiqué dans le " +"répertoire courant. L'authenticité des données du paquet est assurée de la " +"manière habituelle." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1446,12 +1530,12 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml msgid "(and the" -msgstr "(et" +msgstr "(et l'alias " #. 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)" +msgstr "depuis la version 1.1)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1467,15 +1551,15 @@ msgstr "" "Tout comme <literal>clean</literal>, <literal>autoclean</literal> nettoie le " "dépôt 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 " +"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><term> #: apt-get.8.xml msgid "alias)" -msgstr "" +msgstr "l'alias)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1485,6 +1569,12 @@ msgid "" "for example, when finalizing images distributed to users. The release files " "are kept for security reasons, to prevent various types of attacks." msgstr "" +"<literal>distclean</literal> supprime tous les fichiers dans " +"<filename>&statedir;/lists</filename> sauf <filename>Release</filename> " +"<filename>InRelease</filename> et <filename>Release.gpg</filename>. Cela " +"peut être utilisé par exemple lors de la finalisation des images distribuées " +"aux utilisateurs. Les fichiers Release sont conservés pour des raisons de " +"sécurité pour éviter divers types d'attaque." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1504,6 +1594,9 @@ msgid "" "removes configuration files. This is a shortcut for <literal>autoremove --" "purge</literal>." msgstr "" +"Identique à <literal>autoremove</literal>, mais <literal>autopurge</literal> " +"supprime aussi les fichiers de configuration. C'est un raccourci pour " +"<literal>autoremove --purge</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1590,16 +1683,16 @@ msgid "" "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>." +"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 " +"dépendances cassées. 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 " +"interdit les dépendances cassées 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> " @@ -1679,10 +1772,10 @@ msgstr "" "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>." +"la configuration d'apt, ce qui fausse la simulation. Une notification " +"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 @@ -1718,8 +1811,8 @@ 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>." +"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>." @@ -1742,15 +1835,36 @@ 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 "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" +"Afficher les listes de paquets sans les ranger en colonnes. Par défaut, les " +"listes de paquets sont produites dans le style de la commande « ls ». " +"Élément de configuration : <literal>APT::Get::List-Columns</literal>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" +"Ajouter la valeur donnée au champ <literal>Comment:</literal> dans " +"<filename>history.log</filename>. Élément de configuration : " +"<literal>APT::History::Comment</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>." +"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 " @@ -1773,8 +1887,8 @@ msgstr "" "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>." +"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 @@ -1829,8 +1943,8 @@ msgid "" 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>." +"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 @@ -1840,8 +1954,8 @@ msgid "" "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 " +"N'installer aucun nouveau paquet ; quand elle est utilisée avec " +"<literal>install</literal>, <literal>only-upgrade</literal> ne met à niveau " "que les paquets installés sans en installer de nouveaux. Élément de " "configuration : <literal>APT::Get::Only-Upgrade</literal>." @@ -1922,18 +2036,18 @@ msgid "" "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 : " +"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és. " +"Chaque URI a un chemin, un nom de fichier destination, une taille et une " +"clef 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 @@ -1955,7 +2069,7 @@ 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. " +"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> @@ -1965,13 +2079,13 @@ msgid "" "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>." +"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 " +"filename> afin d'assurer que les fichiers obsolètes sont 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>." @@ -1985,6 +2099,12 @@ msgid "" "2022 at 03:04:05 UTC. Configuration Item: <literal>APT::Snapshot</literal>; " "see also the &sources-list; manual page." msgstr "" +"Cette option contrôle le choix de l'instantané retenu pour les archives avec " +"<literal>Snapshot: enable</literal> dans l'entrée de la source. Par exemple, " +"<option>-S 20220102T030405Z</option> sélectionne un instantané du " +"2 janvier 2022 à 03:04:05 UTC. Élément de configuration : " +"<literal>APT::Snapshot</literal>. Voir aussi la page de manuel de &sources-" +"list;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2001,12 +2121,12 @@ msgid "" 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 " +"créé 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;." +"Release</literal>. Voir aussi la page de manuel d'&apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2016,11 +2136,11 @@ msgid "" "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 " +"Ne réaliser que les opérations « triviales ». Logiquement cela 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>." +"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 @@ -2031,6 +2151,12 @@ msgid "" "equally to running <command>apt-mark auto</command> for all installed " "packages. Configuration Item: <literal>APT::Get::Mark-Auto</literal>." msgstr "" +"Après une installation réussie, marquer tous les paquets nouvellement " +"installés comme installés automatiquement, ce qui permettra que chacun des " +"paquets soit supprimé quand plus aucun des paquets installés manuellement ne " +"dépend d'eux. C'est équivalent à l'exécution de <command>apt-mark auto</" +"command> pour tous les paquets installés. Élément de configuration : " +"<literal>APT::Get::Mark-Auto</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2039,8 +2165,8 @@ msgid "" "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>." +"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 @@ -2073,7 +2199,7 @@ msgstr "" "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>" +"literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2085,7 +2211,7 @@ 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>, " +"literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2123,18 +2249,11 @@ msgstr "" "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>." +"remplacement global. Élément de configuration : " +"<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. See also &apt-secure; for details on " -#| "the concept and the implications. Configuration Item: <literal>Acquire::" -#| "AllowInsecureRepositories</literal>." msgid "" "Allow the update command to acquire unverifiable data from configured " "sources. APT will otherwise fail at the update command for repositories " @@ -2142,11 +2261,11 @@ msgid "" "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>." +"Permettre à la commande update d'obtenir des données non vérifiables des " +"sources configurées. Autrement, 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 @@ -2181,8 +2300,8 @@ msgstr "" "uniquement pour certains champs tels que <literal>origin</literal>, " "<literal>label</literal>, <literal>codename</literal>, <literal>suite</" "literal>, <literal>version</literal> et <literal>defaultpin</literal>. Voir " -"aussi &apt-preferences;. Élément de configuration : <literal>Acquire::" -"AllowReleaseInfoChange</literal>." +"aussi &apt-preferences;. Élément de configuration : " +"<literal>Acquire::AllowReleaseInfoChange</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2196,7 +2315,7 @@ 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 " +"README.progress-reporting dans le répertoire doc d'APT. Élément de " "configuration : <literal>Dpkg::Progress</literal> et <literal>Dpkg::Progress-" "Fancy</literal>." @@ -2207,19 +2326,21 @@ msgid "" "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 " +"Ajouter le fichier donné comme source de métadonné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><variablelist><varlistentry><term><option><replaceable> #: apt-get.8.xml msgid "any" -msgstr "" +msgstr "any" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml msgid "Fail the update command if any error occured, even a transient one." msgstr "" +"Faire échouer la commande <option>update</option> si une erreur, même " +"transitoire, se produit." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2232,6 +2353,14 @@ msgid "" "<option>--snapshot</option> option to make sure the snapshot is present when " "install is being run." msgstr "" +"Exécuter la commande <option>update</option> avant la commande spécifiée. " +"Cette option vaut pour les commandes d'installation, de suppression ou de " +"mise à niveau de paquets telles que <option>install</option>, " +"<option>remove</option>, <option>safe-upgrade</option> et <option>full-" +"upgrade</option>. Cela peut être utile pour s'assurer qu'une commande " +"installe toujours la dernière version, ou, en combinaison avec l'option " +"<option>--snapshot</option>, pour s'assurer que l'instantané est présent " +"quand <option>install</option> est exécutée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2241,9 +2370,14 @@ msgid "" "executing the update. Until this is resolved, this is merely syntactic sugar " "for <literal>apt update && apt install</literal>" msgstr "" +"Attention, en raison de limitations techniques, les verrous sont acquis " +"individuellement pour chaque phase, donc une installation peut ne pas " +"réussir à acquérir un verrou après avoir réussi la mise à jour. Jusqu'à ce " +"que cela soit résolu, c'est simplement du sucre syntaxique pour <literal>apt " +"update && apt install</literal>." #. 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Fichiers" @@ -2266,7 +2400,7 @@ msgid "" "error." msgstr "" "<command>apt-get</command> renvoie zéro après une opération normale, le " -"décimal 100 en cas d'erreur." +"décimal 100 en cas d'erreur." #. type: Content of: <refentry><refnamediv><refpurpose> #: apt-cache.8.xml @@ -2375,9 +2509,9 @@ msgstr "" "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." +"(et ldso) doivent aussi être installés ; libreadlineg2 et libreadline2-" +"altdev n'ont pas à l'être. Pour connaître le sens particulier de la fin de " +"la sortie, 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 @@ -2564,7 +2698,7 @@ msgstr "" "La commande <literal>search</literal> recherche l'expression rationnelle " "POSIX donnée en paramètre sur tous les paquets disponibles, voir ®ex;. " "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 " +"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 " @@ -2658,7 +2792,7 @@ msgid "" "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 " +"Les nœuds 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 " @@ -2676,12 +2810,12 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Identique à <literal>dotty</literal>, mais réservé à xvcg fourni avec <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2709,11 +2843,11 @@ msgid "" "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>)." +"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 " +"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>, " @@ -2725,12 +2859,12 @@ msgstr "" #: 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 : " +"cache used by all operations. Configuration Item: " "<literal>Dir::Cache::pkgcache</literal>." +msgstr "" +"Indiquer 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 @@ -2741,7 +2875,7 @@ msgid "" "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 " +"Indiquer 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 " @@ -2758,7 +2892,7 @@ msgid "" 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 " +"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>." @@ -2770,7 +2904,7 @@ msgid "" "<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 " +"N'afficher 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>." @@ -2780,15 +2914,16 @@ msgstr "" 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>." +"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>." +"replaceable></literal>, par exemple <literal>APT::Cache::ShowRecommends</" +"literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2815,7 +2950,7 @@ 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 " +"Afficher la totalité des champs d'information sur le paquet lors d'une " "recherche. Élément de configuration : <literal>APT::Cache::ShowFull</" "literal>." @@ -2829,7 +2964,7 @@ msgid "" "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 " +"Afficher 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 " @@ -2844,7 +2979,7 @@ msgid "" "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 " +"Réaliser 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>." @@ -2855,16 +2990,16 @@ 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>." +"N'effectuer 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>." +"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 " @@ -2902,13 +3037,13 @@ msgid "" "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 " +"Ajouter 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 !" +"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 @@ -2949,314 +3084,6 @@ 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 -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -msgstr "" - -#. 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><term> -#: apt-key.8.xml -msgid "(deprecated)" -msgstr "(obsolète)" - -#. 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><term> -#: apt-key.8.xml -#, fuzzy -#| msgid "(deprecated)" -msgid "(mostly deprecated)" -msgstr "(obsolète)" - -#. 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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Operation" -msgid "Deprecation" -msgstr "Fonctionnement" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3268,8 +3095,8 @@ 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</" +"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 " @@ -3367,6 +3194,12 @@ msgstr "" "<literal>showauto</literal> pour afficher la liste des paquets installés " "manuellement." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Options" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3400,8 +3233,8 @@ 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." +"<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 @@ -3440,6 +3273,11 @@ msgstr "" "<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 "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get;, &aptitude;, &apt-conf;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3470,7 +3308,7 @@ msgstr "" "Depuis sa version 0.6, <command>apt</command> sait vérifier la signature du " "fichier Release de chaque dépôt. On s'assure ainsi que les paquets dans " "l'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, " +"clef 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. Depuis la " "version 1.5, les modifications dans les informations contenues dans le " @@ -3489,6 +3327,83 @@ msgstr "" "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 "User Configuration" +msgstr "Configuration utilisateur" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" +"Les clefs devraient être incluses dans leur <literal>.sources</literal> " +"correspondants en embarquant leur clef au format ASCII-armored dans l'option " +"<literal>Signed-By</literal>. Pour ce faire, remplacez la ligne vide par un " +"point, et indentez toutes les lignes de deux espaces. Voir &sources-list; " +"pour plus d'informations." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" +"Sinon, les clefs peuvent être placées dans <filename>/etc/apt/keyrings</" +"filename> pour les clefs locales ou dans <filename>/usr/share/keyrings</" +"filename> pour les clefs gérées par des paquets, puis référencées par " +"l'option <literal>Signed-By: /etc/apt/keyrings/example-archive-keyring.asc</" +"literal> dans un fichier <literal>.sources</literal> ou en utilisant " +"<literal>deb [signed-by=/etc/apt/keyrings/example-archive-keyring.asc] ...</" +"literal> dans le format patrimonial <literal>.list</literal>. Cela peut être " +"utile pour les versions d'APT antérieures à la version 2.4 qui ne prennent " +"pas en charge les clefs embarquées. Les clefs au format ASCII-armored " +"doivent utiliser une extension <literal>.asc</literal> et les clefs sans " +"armure une extension <literal>.gpg</literal>." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" +"Pour générer des clefs en utilisant GnuPG, utilisables avec APT, vous devez " +"utiliser la commande <command>gpg --export-options export-minimal [--armor] " +"--export</command> . Les solutions antérieures impliquant <command>--keyring " +"file --import</command> ne fonctionnent plus avec les versions récentes de " +"GnuPG car elles utilisent un nouveau format interne (« GPG keybox " +"database »)." + +#. 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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" +"Veuillez noter qu'une installation par défaut possède déjà toutes les clefs " +"pour obtenir en toute sécurité des paquets des dépôts par défaut, aussi, " +"gérer les clefs n'est nécessaire que si vous souhaitez ajouter des dépôts de " +"tierces parties. Le paquet <command>extrepo</command> peut être utilisé pour " +"gérer facilement plusieurs dépôts externes." + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -3549,10 +3464,10 @@ msgstr "" "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;." +"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><title> #: apt-secure.8.xml @@ -3603,11 +3518,11 @@ 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 " +"la clef 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, " +"Les clefs 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 " +"propriétaires de la clef. Des procédures similaires existent dans toutes les " "distributions basées sur Debian." #. type: Content of: <refentry><refsect1><para> @@ -3626,9 +3541,9 @@ msgstr "" "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 " +"signé par la clef 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 clefs sont dans le trousseau de clefs de l'archive fournies par " "le paquet &keyring-package;." #. type: Content of: <refentry><refsect1><para> @@ -3664,7 +3579,7 @@ 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 " +"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> @@ -3690,7 +3605,7 @@ msgid "" 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 " +"clef qui sert à signer les fichiers Release. Mais elle peut compléter la " "signature des paquets." #. type: Content of: <refentry><refsect1><title> @@ -3728,56 +3643,6 @@ msgstr "" "version majeure de la distribution fournie dans le dépôt (comme indiqué par " "exemple par le nom de code)." -#. 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 "Repository Configuration" @@ -3807,11 +3672,11 @@ msgstr "" #: 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>." +"clearsign -o InRelease Release</command> and <command>gpg -abs -o " +"Release.gpg Release</command>." msgstr "" -"<emphasis>le signer</emphasis>, avec les commandes <command>gpg --clearsign -" -"o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</" +"<emphasis>le signer</emphasis>, avec les commandes <command>gpg --clearsign " +"-o InRelease Release</command> et <command>gpg -abs -o Release.gpg Release</" "command>." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -3823,12 +3688,12 @@ msgid "" "&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." +"<emphasis>publier l'empreinte de la clef</emphasis>. Ainsi les utilisateurs " +"de votre archive connaîtront la clef qu'ils doivent importer pour " +"authentifier les fichiers de l'archive. Le mieux est de diffuser sa clef " +"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 clefs." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-secure.8.xml @@ -3840,10 +3705,10 @@ msgid "" "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 " +"<emphasis>fournir les instructions pour ajouter l'archive et la clef</" +"emphasis>. Si les utilisateurs ne peuvent récupérer de façon sûre votre " +"clef, la chaîne de confiance décrite plus haut est rompue. La façon d'aider " +"les utilisateurs à ajouter votre clef 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." @@ -3861,28 +3726,28 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">l'infrastructure Debian pour la sécurité</ulink> un chapitre du " +"manuel Debian sur la sécurité (aussi 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 @@ -3924,7 +3789,7 @@ msgid "" "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, " +"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." @@ -3951,7 +3816,7 @@ msgid "" "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 " +"actuellement dans le lecteur et entretient une base de données de ces " "identifiants dans <filename>&statedir;/cdroms.list</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -3967,8 +3832,8 @@ msgstr "" #: 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>." +"<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 " @@ -3983,8 +3848,8 @@ msgid "" 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>." +"correctement configuré. Élément de configuration : " +"<literal>Acquire::cdrom::mount</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -3993,21 +3858,21 @@ msgid "" "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 : " +"Renommer un disque ; modifie l'étiquette d'un disque ou remplace l'étiquette " +"donnée à un disque. Cette option oblige <command>apt-cdrom</command> à " +"demander une nouvelle étiquette à 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>." +"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>." +"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 @@ -4058,7 +3923,7 @@ msgid "" "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." +"nombre décimal 100 en cas d'erreur." #. type: Content of: <refentry><refnamediv><refpurpose> #: apt-config.8.xml @@ -4110,11 +3975,11 @@ 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>." +"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." +"MyApp::Options avec, par défaut, la valeur <option>-f</option>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-config.8.xml @@ -4126,12 +3991,12 @@ 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." +"vérifiée en interne." #. 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." +msgstr "Afficher seulement le contenu de l'espace de configuration." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-config.8.xml @@ -4140,7 +4005,7 @@ msgid "" "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 " +"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> @@ -4158,7 +4023,7 @@ msgid "" "as defined by RFC822. Additionally %n will be replaced by a newline, " "and %N by a tab. A % can be printed by using %%." msgstr "" -"Définit ce que retourne chaque option de configuration. %t sera " +"Définir ce que retourne chaque option de configuration. %t sera " "remplacé par son nom individuel, %f par le nom hiérarchique complet " "et %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 " @@ -4210,7 +4075,7 @@ msgid "" "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 " +"principal de 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." @@ -4230,8 +4095,8 @@ 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" +"le 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 @@ -4240,19 +4105,19 @@ msgid "" "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." +"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é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)." +"affichera une notification indiquant qu'il a ignoré un fichier sauf si celui-" +"ci correspond à un motif défini dans la liste de configuration " +"<literal>Dir::Ignore-Files-Silently</literal> (les fichiers correspondant à " +"ce motif sont ignorés silencieusement)." #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> #: apt.conf.5.xml @@ -4267,7 +4132,7 @@ 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 " +"toutes les options définies 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> @@ -4302,19 +4167,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml -#, fuzzy -#| 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:" msgid "" "Syntactically the configuration language is modeled after what the ISC tools " "such as bind and dhcp use. Lines starting with <literal>//</literal> are " @@ -4332,14 +4184,15 @@ msgstr "" "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 obligatoires. 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 :" +"literal> et <literal>*/</literal>, tout comme les commentaires C/C++. Les " +"lignes débutant par <literal>#</literal> sont aussi traitées comme des " +"commentaires. Chaque ligne est de la forme : <literal>APT::Get::Assume-Yes " +"\"true\";</literal>. Les guillemets et le point-virgule final sont " +"obligatoires. La valeur doit tenir sur une seule ligne et il n'existe pas de " +"concaténation de chaînes. La valeur ne doit pas comporter de guillemets ni " +"de barre oblique inversée. Le nom d'une option contient 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 @@ -4428,9 +4281,9 @@ msgstr "" "<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 " +"effacer une partie de l'arbre de configuration. L'élément désigné et tous " "ses descendants sont supprimés. Veuillez noter que ces lignes doivent " -"également se terminer avec un point-virgule." +"également se terminer par un point-virgule." #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -4461,11 +4314,12 @@ msgid "" 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." +"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 @@ -4540,12 +4394,86 @@ msgstr "" "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 " +"Cette liste est utilisée 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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" +"Ce champ d'action définit les couleurs et les styles. Les couleurs de base " +"prises en charge sont <option>red</option>, <option>green</option>, " +"<option>yellow</option>, <option>blue</option>, <option>magenta</option>, " +"<option>cyan</option> et <option>white</option>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" +"Le sous-champ d'action <option>action</option> définit les couleurs des " +"listes de paquets dans <option>install</option> et des commandes analogues. " +"Les options suivantes peuvent être définies : " +"<option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>;, correspondant à leurs listes " +"dans la sortie d'&apt;." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" +"Chaque couleur peut faire référence à une ou plusieurs autres options de " +"couleur par leur nom, relatif à <option>APT::Color</option>. Leurs séquences " +"d'échappement seront combinées." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" +"Les couleurs peuvent être complètement activées ou désactivées en réglant " +"<option>APT::Color</option> à <option>yes</option> ou <option>no</option>, " +"en utilisant les variables d'environnement <envar>NO_COLOR</envar> ou " +"<envar>APT_NO_COLOR</envar>, ou en utilisant les options en ligne de " +"commande <option>--color</option> et <option>--no-color</option>." + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4612,7 +4540,7 @@ msgid "" "'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 " +"Indiquer 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 », " @@ -4625,6 +4553,10 @@ msgid "" "literal>. See also &sources-list;, the <option>--snapshot</option> option " "that sets this value, and <option>Acquire::Snapshots::URI</option> below." msgstr "" +"Instantané à utiliser pour tous les dépôts configurés avec " +"<literal>Snapshot: yes</literal>. Voir aussi &sources-list;, l'option " +"<option>--snapshot</option> qui définit cette valeur et " +"<option>Acquire::Snapshots::URI</option> ci-dessous." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4632,9 +4564,9 @@ 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." +"Ignorer les paquets « gelés » ; cette option globale indique au système de " +"résolution de problème 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 @@ -4647,7 +4579,7 @@ 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 " +"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> @@ -4668,12 +4600,12 @@ msgstr "" "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 " +"importants comme les paquets de priorité « extra » : entre la décompression " +"du paquet A et sa configuration, de nombreuses opérations de décompression " +"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 " +"est que le paquet A est décompressé mais non configuré. En conséquence, les " "paquets qui en dépendent pourraient ne plus fonctionner puisque leurs " "dépendances ne sont pas satisfaites." @@ -4703,8 +4635,8 @@ msgstr "" "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." +"cette option sans savoir ce que vous faites, car le scénario ci-dessus n'est " +"pas le seul qu'elle permet d'éviter." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4739,12 +4671,12 @@ 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." +"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 @@ -4827,6 +4759,8 @@ msgstr "" #: apt.conf.5.xml msgid "Never autoremove packages that match the regular expression(s)." msgstr "" +"Ne jamais supprimer automatiquement les fichiers qui correspondent à la ou " +"aux expressions rationnelles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4835,14 +4769,20 @@ msgid "" "true. In case kernels are not protected they are treated as any other " "package." msgstr "" +"Cette option indique à apt autoremove que les noyaux sont protégés et est " +"réglée par défaut à vrai. Dans le cas où les noyaux ne sont pas protégés, " +"ils sont traités comme n'importe quel paquet." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" +"Définir la ou les expressions rationnelles pour les paquets versionnés du " +"noyau. Un ensemble de règles basé sur ces expressions est injecté dans APT " +"de manière analogue aux expressions rationnelles d'APT::NeverAutoRemove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4854,6 +4794,12 @@ msgid "" "ignored. If you want only the latest kernel, you should set APT::Protect-" "Kernels to false." msgstr "" +"Conserver un nombre personnalisé de noyaux lors des suppressions " +"automatiques, 2 par défaut, signifiant que deux noyaux sont conservés. APT " +"garde toujours le noyau en exécution et le plus récent. Si le noyau le plus " +"récent est aussi le noyau en exécution, l'avant-dernier est aussi conservé. " +"Pour cette raison, toute valeur inférieure à 2 est ignorée. Si vous voulez " +"ne garder que le dernier noyau, réglez APT::Protect-Kernels à « false »." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml @@ -4880,12 +4826,12 @@ msgid "" "option> and verifying that the Date field of a release file is not in the " "future." msgstr "" -"Les options relatives à la sécurité sont positionnées par défaut à « true »," -"permettant des vérifications relatives à l'heure. Leur désactivation " -"signifie qu'on ne peut pas faire confiance à l'heure de la machine, et APT " -"de ce fait désactivera toutes les vérifications de ce type, telles que " -"<option>Check-Valid-Until</option> et la vérification que le champ Date d'un " -"fichier Release n'est pas dans le futur." +"Les options relatives à la sécurité sont positionnées par défaut à " +"« true »,permettant des vérifications relatives à l'heure. Leur " +"désactivation signifie qu'on ne peut pas faire confiance à l'heure de la " +"machine, et APT de ce fait désactivera toutes les vérifications de ce type, " +"telles que <option>Check-Valid-Until</option> et la vérification que le " +"champ Date d'un fichier Release n'est pas dans le futur." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5095,100 +5041,6 @@ msgstr "" "dans les pages de manuel &apt-transport-http; et &apt-transport-https; " "respectivement." -#. 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::<host></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::<hôte></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 "" -"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 "" -"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 @@ -5224,8 +5076,8 @@ 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" +"La seule option pour les URI GPGV est <literal>gpgv::Options</literal> qui " +"passe des paramètres supplémentaires à gpgv." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis> #: apt.conf.5.xml @@ -5295,8 +5147,8 @@ msgstr "" "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." +"inutile d'ajouter explicitement <literal>bz2</literal> à la liste, car il " +"sera ajouté automatiquement." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><literallayout> #: apt.conf.5.xml @@ -5357,8 +5209,8 @@ msgstr "" "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 »)." +"processeur lorsque les caches locaux sont créés. Valeur par défaut : " +"« false »." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5396,9 +5248,9 @@ msgid "" "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 " +"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 " @@ -5435,7 +5287,7 @@ msgid "" "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 " +"environnements (par exemple 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)." @@ -5495,7 +5347,7 @@ msgstr "" "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 " +"concept, les implications ainsi que les alternatives sont détaillées dans " "&apt-secure;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -5514,7 +5366,7 @@ msgstr "" "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;." +"que les alternatives sont détaillées dans &apt-secure;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.conf.5.xml @@ -5532,118 +5384,89 @@ msgid "" "<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." +"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." +"<literal>Acquire::Changelogs::URI::Label::<replaceable>ÉTIQUETTE</" +"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 " +"outrepassée par <literal>Acquire::Changelogs::URI::Override::Label::" +"<replaceable>ÉTIQUETTE</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 il est " +"omis ; 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 et 5. la version de la source. Les quatre " +"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><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml -#, fuzzy -#| 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." msgid "" "Like changelogs, snapshots can only be acquired if an URI is known from " "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots 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>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." +msgstr "" +"Comme pour les journaux des modifications, la récupération des instantanés " +"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 « Snapshots ». 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::Snapshots::URI::Label::" +"<replaceable>ÉTIQUETTE</replaceable></literal> ou " +"<literal>Acquire::Snapshots::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." +"La valeur dans le fichier Release peut être contournée par " +"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>ÉTIQUETTE</" +"replaceable></literal> ou " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGINE</" +"replaceable></literal>. La valeur devrait être un URI normal vers un " +"répertoire, à l'exception que l'identifiant de l'instantané est remplacé par " +"le paramètre <literal>@SNAPSHOTID@</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 instantanés. Dans ce cas, une autre " +"source sera essayée." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml @@ -5655,9 +5478,9 @@ msgstr "Configuration spécifique d'exécutable" 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>." +"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 " @@ -5679,8 +5502,8 @@ msgstr "" "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>." +"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 @@ -5714,10 +5537,10 @@ msgstr "" "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>." +"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 @@ -5735,14 +5558,14 @@ 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>." +"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 @@ -5773,20 +5596,20 @@ 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." +"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." +"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 @@ -5803,13 +5626,13 @@ 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>." +"spécifiés de manière absolue</emphasis>. 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 @@ -5984,17 +5807,18 @@ msgid "" "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." +"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</" +"Chaque ligne de directive de configuration a la forme <literal>clef=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 " +"imprimables, guillemets et signe pourcentage dans <literal>clef</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." +"représentés par des lignes <literal>clef::=valeur</literal> multiples avec " +"la même clef. Les sections de la configuration se terminent par une ligne " +"vide." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6050,10 +5874,10 @@ msgid "" 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." +"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 @@ -6122,10 +5946,10 @@ msgid "" "<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." +"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 @@ -6197,32 +6021,27 @@ msgstr "" #. 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 :" +msgstr "Liste complète des options de débogage d'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://</" +"Afficher 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." +"Afficher 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." +msgstr "" +"Afficher les informations concernant le téléchargement de paquets par HTTPS." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6230,8 +6049,8 @@ 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>." +"Afficher les informations relatives à la vérification de signatures " +"chiffrées avec <literal>gpg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6239,7 +6058,7 @@ 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 " +"Afficher des informations concernant l'accès aux collections de paquets " "stockées sur CD." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6248,8 +6067,8 @@ 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>." +"Afficher tous les hachages de chiffrement créés par les bibliothèques " +"d'<literal>apt</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6258,9 +6077,9 @@ msgid "" "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 " +"Ne pas inclure les informations de <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." +"utilisés sur le système de fichiers du CD." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6268,7 +6087,7 @@ 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 " +"Désactiver le verrouillage de fichiers. Cela permet par exemple de lancer " "deux instances de <quote><literal>apt-get update</literal></quote> en même " "temps." @@ -6276,7 +6095,7 @@ msgstr "" #: 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 " +"Tracer les ajouts et suppressions d'éléments de la queue globale de " "téléchargement." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6285,8 +6104,8 @@ 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 " +"Afficher les messages d’état de la vérification des sommes de contrôle et " +"des signatures chiffrées des fichiers téléchargés, ainsi que les erreurs " "éventuelles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6295,8 +6114,8 @@ 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 " +"Afficher les informations de téléchargement et de prise en compte des " +"fichiers différentiels des listes d'index de paquets, ainsi que les erreurs " "éventuelles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6305,7 +6124,7 @@ 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 " +"Afficher 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." @@ -6314,7 +6133,7 @@ msgstr "" msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" -"Affiche toutes les interactions avec les processus enfants qui se chargent " +"Afficher toutes les interactions avec les processus enfants qui se chargent " "effectivement des téléchargements." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -6323,8 +6142,8 @@ 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." +"Afficher 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 @@ -6332,14 +6151,14 @@ 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." +"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 " +"Créer 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." +"d'APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6349,33 +6168,29 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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/" +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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éer 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 " +"supplémentaires ; elles sont alors indiquées avec une indentation de deux " +"espaces de plus sous 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 <a.b.c -> " "d.e.f | x.y.z> (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. " +"prévue pour être installée (à cause d'un score d'épinglage plus faible). Ces " +"deux derniers éléments peuvent ne pas être mentionnés s'ils ne sont pas " +"pertinents ou lorsqu'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 @@ -6383,8 +6198,8 @@ 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." +"Afficher la commande exacte d'invocation de &dpkg; à chaque appel ; les " +"paramètres sont séparés par une unique espace." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6392,7 +6207,7 @@ 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 " +"Afficher 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." @@ -6402,19 +6217,21 @@ 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 " +"Afficher 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;." +msgstr "" +"Afficher les messages d'état traçant les étapes réalisées lors de " +"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." +msgstr "Afficher, au lancement, la priorité de chaque liste de paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6422,7 +6239,7 @@ 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 " +"Afficher 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> @@ -6432,29 +6249,30 @@ msgid "" "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 " +"Afficher 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>." +"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>." +"Afficher 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 " +"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>." +"Afficher les commandes externes qui sont appelées par les points d'entrée " +"d'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 @@ -6513,10 +6331,10 @@ msgstr "" "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." +"version qui possède la priorité la plus haute. Le fichier " +"<filename>preferences</filename> outrepasse 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 @@ -6557,25 +6375,45 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 contenir que des caractères alphanumériques, des tirets (-), des " +"caractères de soulignement (_) et des points (.). Dans le cas contraire, APT " +"affichera une notification 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><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." 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 " -"contenir 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 @@ -6612,12 +6450,15 @@ msgid "" 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 " +"version est la priorité de la distribution à laquelle elle appartient. Il " +"est possible de distinguer une distribution, la « target release » " +"(distribution par défaut) qui reçoit une priorité plus haute que celle des " +"autres distributions. Cette distribution par défaut 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>. Notez que cette " +"priorité est plus forte que toute priorité générale définie dans le fichier " +"<filename>/etc/apt/preferences</filename> décrit plus loin, mais pas sur des " +"paquets spécialement épinglés. Par exemple : <placeholder " "type=\"programlisting\" id=\"0\"/> <placeholder type=\"programlisting\" " "id=\"1\"/>" @@ -6637,12 +6478,6 @@ msgstr "priorité 1" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara> #: apt_preferences.5.xml -#, fuzzy -#| 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." msgid "" "to the versions coming from archives which in their <filename>Release</" "filename> files are marked as \"NotAutomatic: yes\" but <emphasis>not</" @@ -6651,9 +6486,10 @@ msgid "" "phased on this systems." msgstr "" "pour les versions issues d'archives dont le fichier <filename>Release</" -"filename> comporte la mention « NotAutomatic: yes » mais <emphasis>pas</" +"filename> comporte la mention « NotAutomatic: yes », mais <emphasis>pas</" "emphasis> « ButAutomaticUpgrades: yes » comme l'archive " -"<literal>experimental</literal> de Debian." +"<literal>experimental</literal> de Debian, ainsi que comme les versions qui " +"ne sont pas par étapes sur ces systèmes." #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> #: apt_preferences.5.xml @@ -6717,7 +6553,7 @@ msgid "" 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 " +"une priorité égale à 500 à toute 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 " @@ -6760,7 +6596,8 @@ msgid "" "(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)." +"plus récente (c'est-à-dire 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 @@ -6797,7 +6634,7 @@ msgid "" "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</" +"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." @@ -6824,7 +6661,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "Phased Updates" -msgstr "" +msgstr "Mises à jour par étapes" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6833,6 +6670,9 @@ msgid "" "which can be used to control the rollout of a new version. It is an integer " "between 0 and 100." msgstr "" +"APT interprète un champ intitulé <literal>Phased-Update-Percentage</literal> " +"qui peut être utilisé pour contrôler la mise en œuvre d'une nouvelle " +"version. C'est un entier entre 0 et 100." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6844,6 +6684,12 @@ msgid "" "version is pinned to 1, and thus held back. Otherwise, normal policy rules " "apply." msgstr "" +"L'éligibilité d'un système à une mise à jour par étapes est déterminée par " +"la génération d'un nombre aléatoire avec le nom du paquet source, le numéro " +"de version et le /etc/machine-id, puis en calculant un entier dans la plage " +"[0, 100]. Si cet entier est supérieur au <literal>Phased-Update-Percentage</" +"literal>, la version est épinglée à 1 et donc retenue. Autrement, les règles " +"normales de la politique s'appliquent." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6854,11 +6700,18 @@ msgid "" "code> or <code>APT::Get::Always-Include-Phased-Updates</code> to true such " "that APT will never/always consider phased updates." msgstr "" +"Si vous avez plusieurs systèmes et voulez qu'ils reçoivent le même ensemble " +"de mises à jour, vous pouvez régler <code>APT::Machine-ID</code> à un UUID " +"tel que ces systèmes auront les mêmes étapes de mise à jour, ou définir " +"<code>APT::Get::Never-Include-Phased-Updates</code> ou " +"<code>APT::Get::Always-Include-Phased-Updates</code> à « true » de sorte " +"qu'APT ne prenne jamais ou toujours en considération les mises à jour par " +"étapes (respectivement)." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "The Effect of APT Preferences" -msgstr "Conséquences des préférences" +msgstr "Conséquences des préférences d'APT" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -6901,6 +6754,26 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" +"Depuis la version 2.9.9, vous pouvez aussi épingler par une version de la " +"source :" + +# no-wrap +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, no-wrap +msgid "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" +msgstr "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" + #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml msgid "" @@ -7066,7 +6939,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "Matching packages in the Package field" -msgstr "" +msgstr "Correspondance de paquets dans le champ Package" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7078,6 +6951,13 @@ msgid "" "expressions and regular expressions can be listed separated by whitespace in " "which case the record will match any of the matched packages." msgstr "" +"Le champ <literal>Package</literal> définit les paquets auxquels s'applique " +"un épinglage. Le champ peut contenir un nom de paquet binaire, un nom de " +"paquet source (préfixé par « src: »), une expression &glob; ou une " +"expression rationnelle (entouré de barres obliques). Plusieurs noms de " +"paquet, expressions &glob; ou expressions rationnelles peuvent être listés " +"séparés par des espaces, auquel cas l'entrée correspondra à tous les paquets " +"correspondants." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7088,28 +6968,26 @@ msgid "" "by appending the architecture name to the package name, separated by a colon " "character." msgstr "" +"Par défaut, seuls les paquets de l'architecture native peuvent correspondre. " +"Pour que des paquets binaires de toutes les architectures correspondent, " +"ajoutez le suffixe <literal>:any</literal> au nom de paquet. Il est aussi " +"possible de limiter la correspondance à une architecture particulière en " +"ajoutant le nom de l'architecture au nom du paquet, séparé par le caractère " +"deux-points." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml -#, fuzzy -#| 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)." msgid "" "For example, the following example uses a glob expression and a regular " "expression to assign 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 " +"Dans l'exemple suivant, une expression &glob; et une expression rationnelle " +"sont utilisées pour affecter 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)." +"&glob;) ou contient le mot kde (sous forme d'une expression rationnelle " +"POSIX étendue, entourée de barres obliques)." #. type: Content of: <refentry><refsect1><refsect2><programlisting> #: apt_preferences.5.xml @@ -7157,7 +7035,7 @@ msgid "" "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</" +"Si une expression rationnelle 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 " @@ -7172,22 +7050,20 @@ msgid "" "To pin all binaries produced by the apt source package of this APT's version " "to 990, you can do:" msgstr "" +"Pour épingler tous les binaires produits par le paquet source apt de cette " +"version d'APT à une valeur de 990, vous pouvez entrer :" #. type: Content of: <refentry><refsect1><refsect2><programlisting> #: apt_preferences.5.xml -#, fuzzy, no-wrap -#| msgid "" -#| "Package: perl\n" -#| "Pin: version &good-perl;*\n" -#| "Pin-Priority: 1001\n" +#, no-wrap msgid "" "Package: src:apt\n" "Pin: version &apt-product-version;\n" "Pin-Priority: 990\n" msgstr "" -"Package: perl\n" -"Pin: version &good-perl;*\n" -"Pin-Priority: 1001\n" +"Package: src:apt\n" +"Pin: version &apt-product-version;\n" +"Pin-Priority: 990\n" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7195,6 +7071,9 @@ msgid "" "Source package pinning can be combined with regular expressions and glob " "patterns, and can also take a binary architecture." msgstr "" +"L'épinglage de paquet source peut être combiné avec des expressions " +"rationnelles et des motifs &glob;, et peut aussi porter sur une architecture " +"binaire." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml @@ -7202,31 +7081,33 @@ msgid "" "For example, let's pin all binaries for all architectures produced by any " "source package containing apt in its name to 990:" msgstr "" +"Par exemple, nous allons épingler à 990 tous les binaires pour toutes les " +"architectures produites par un paquet source contenant apt dans son nom :" #. type: Content of: <refentry><refsect1><refsect2><programlisting> #: apt_preferences.5.xml -#, fuzzy, no-wrap -#| msgid "" -#| "Package: *\n" -#| "Pin: origin \"\"\n" -#| "Pin-Priority: 999\n" +#, no-wrap msgid "" "Package: src:*apt*:any\n" "Pin: version *\n" "Pin-Priority: 990\n" msgstr "" -"Package: *\n" -"Pin: origin \"\"\n" -"Pin-Priority: 999\n" +"Package: src:*apt*:any\n" +"Pin: version *\n" +"Pin-Priority: 990\n" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" +"Le suffixe <literal>:any</literal> assure de sélectionner les paquets " +"binaires de toutes les architectures. Sans ce suffixe, APT présume " +"implicitement le suffixe <literal>:native</literal> qui ne sélectionne que " +"les paquets de l'architecture native." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml @@ -7394,9 +7275,9 @@ msgstr "Alors :" 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." +"\"<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;</" @@ -7457,8 +7338,8 @@ msgid "" "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></" +"répertoire <filename>.../dists/<replaceable>nom-distribution</replaceable>/" +"<replaceable>composant</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 " @@ -7578,7 +7459,7 @@ msgstr "" "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 :" +"préférences demanderait une de ces lignes :" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><programlisting> #: apt_preferences.5.xml @@ -7676,19 +7557,20 @@ msgid "" "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." +"<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-" +"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 " @@ -7707,7 +7589,7 @@ msgid "" "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 " +"lignes débutant par le mot <literal>Explanation:</literal>. Cela permet des " "commentaires." #. type: Content of: <refentry><refsect1><refsect2><title> @@ -7729,8 +7611,8 @@ msgid "" "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" +"Explanation: Désinstaller ou ne pas installer de versions de paquet\n" +"Explanation: d'origine Debian sauf ceux de la distribution stable\n" "Package: *\n" "Pin: release a=stable\n" "Pin-Priority: 900\n" @@ -8021,6 +7903,17 @@ msgstr "" "<command>apt-get update</command> (ou par une commande équivalente avec une " "autre interface à APT)." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -8043,14 +7936,31 @@ 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)." +"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 une notification indiquant " +"qu'il a ignoré un fichier si celui-ci ne correspond pas à 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><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" +"Le nom de fichier suggéré pour les nouveaux systèmes est <filename>/etc/apt/" +"sources.list.d/<replaceable>distributeur</replaceable>.sources</filename>, " +"où <replaceable>distributeur</replaceable> est le résultat de <command>dpkg-" +"vendor --query Vendor | tr A-Z a-z</command>, dans le format de style " +"deb822. Par exemple, Ubuntu utilise <filename>/etc/apt/sources.list.d/" +"ubuntu.sources</filename>." #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml @@ -8081,11 +7991,11 @@ msgstr "" "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 " +"sont séparées par des espaces et sont entourées toutes ensemble 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 " +"est séparé de ses options par un 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 " @@ -8100,13 +8010,21 @@ msgid "" "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. " +"Il s'agit du format traditionnel, géré par toutes les versions d'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><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" +"Ce format est obsolète et pourrait finalement être supprimé, mais pas avant " +"2029." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8135,13 +8053,13 @@ msgid "" 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 " +"utilisés par Debian et ses dérivées, 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 " @@ -8170,7 +8088,7 @@ msgid "" 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 " +"message de notification 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 " @@ -8229,8 +8147,8 @@ 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] [...]" +"deb [ option1=valeur1 option2=valeur2 ] uri suite [composant1] [composant2] [...]\n" +"deb-src [ option1=valeur1 option2=valeur2 ] uri suite [composant1] [composant2] [...]" #. type: Content of: <refentry><refsect1><para><literallayout> #: sources.list.5.xml @@ -8247,9 +8165,9 @@ msgstr "" " Types: deb deb-src\n" " URIs: uri\n" " Suites: suite\n" -" Components: [component1] [component2] [...]\n" -" option1: value1\n" -" option2: value2\n" +" Components: [composant1] [composant2] [...]\n" +" option1: valeur1\n" +" option2: valeur2\n" " " #. type: Content of: <refentry><refsect1><para> @@ -8319,7 +8237,7 @@ msgstr "" "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 " +"cette adresse. APT trie les URI après avoir créé 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 " @@ -8356,14 +8274,15 @@ 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 " +"As an example, the sources for your distribution could look like this in the " +"deprecated 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 obsolète " +"« 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 @@ -8389,12 +8308,40 @@ msgstr "" "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 " +"entre parenthèses. Il faut se souvenir qu'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 " +"ici. Les options non prises en charge sont ignorées par toutes les versions " "d'APT." +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 "" @@ -8430,20 +8377,22 @@ msgstr "" 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." +"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." +"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 @@ -8462,10 +8411,10 @@ msgstr "" "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>." +"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 @@ -8483,7 +8432,7 @@ msgid "" "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 " +"<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 " @@ -8577,29 +8526,23 @@ msgid "" " =IE0r\n" " -----END PGP PUBLIC KEY BLOCK-----" msgstr "" +"Types: deb\n" +"URIs: https://deb.debian.org\n" +"Suites: stable\n" +"Components: main contrib non-free non-free-firmware\n" +"Signed-By:\n" +" -----BEGIN PGP PUBLIC KEY BLOCK-----\n" +" .\n" +" mDMEYCQjIxYJKwYBBAHaRw8BAQdAD/P5Nvvnvk66SxBBHDbhRml9ORg1WV5CvzKY\n" +" CuMfoIS0BmFiY2RlZoiQBBMWCgA4FiEErCIG1VhKWMWo2yfAREZd5NfO31cFAmAk\n" +" IyMCGyMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQREZd5NfO31fbOwD6ArzS\n" +" dM0Dkd5h2Ujy1b6KcAaVW9FOa5UNfJ9FFBtjLQEBAJ7UyWD3dZzhvlaAwunsk7DG\n" +" 3bHcln8DMpIJVXht78sL\n" +" =IE0r\n" +" -----END PGP PUBLIC KEY BLOCK-----" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml -#, fuzzy -#| msgid "" -#| "<option>Signed-By</option> (<option>signed-by</option>) is an option to " -#| "require a repository to pass &apt-secure; verification with a certain set " -#| "of keys rather than all trusted keys apt has configured. It is specified " -#| "as a list of absolute paths to keyring files (have to be accessible and " -#| "readable for the <literal>_apt</literal> system user, so ensure everyone " -#| "has read-permissions on the file) and fingerprints of keys to select from " -#| "these keyrings. If no keyring files are specified the default is the " -#| "<filename>trusted.gpg</filename> keyring and all keyrings in the " -#| "<filename>trusted.gpg.d/</filename> directory (see <command>apt-key " -#| "fingerprint</command>). If no fingerprint is specified all keys in the " -#| "keyrings are selected. A fingerprint will accept also all signatures by a " -#| "subkey of this key, if this isn't desired an exclamation mark (<literal>!" -#| "</literal>) can be appended to the fingerprint to disable this " -#| "behaviour. The option defaults to the value of the option with the same " -#| "name if set in the previously acquired <filename>Release</filename> file " -#| "of this repository (only fingerprints can be specified there through). " -#| "Otherwise all keys in the trusted keyrings are considered valid signers " -#| "for this repository." msgid "" "<option>Signed-By</option> (<option>signed-by</option>) is an option to " "require a repository to pass &apt-secure; verification with a certain set of " @@ -8612,39 +8555,44 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) est une option pour " -"demander la vérification d’un dépot par &apt-secure; avec un certain jeu de " -"clés plutôt qu’avec la totalité des clés de confiance configurées par apt. " +"demander la vérification d’un dépôt par &apt-secure; avec un certain jeu de " +"clefs plutôt qu’avec la totalité des clefs de confiance configurées par apt. " "Elle est définie comme une liste de chemins absolus vers des fichiers de " -"trousseau de clés (qui doivent être accessibles 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) et des empreintes de clés à " -"sélectionner dans ces trousseaux. Si aucun fichier de clés n’est défini, le " -"trousseau <filename>trusted.gpg</filename> et tous les trousseaux du " -"répertoire <filename>trusted.gpg.d/</filename> sont sélectionnés par défaut " -"(voir <command>apt-key fingerprint</command>). Si aucune empreinte n’est " -"définie, toutes les clés des trousseaux sont sélectionnées. Une empreinte " -"acceptera aussi toutes les signatures de sous clés de cette clé, et si ce " -"n’est pas désiré, un point d’exclamation (<literal>!</literal>) peut être " -"ajouté à l’empreinte pour désactiver ce comportement. Elle possède la valeur " -"par défaut de l'option du même nom si elle a été définie dans le fichier " +"trousseau de clefs (qui doivent être accessibles en lecture pour " +"l'utilisateur système <literal>_apt</literal>, et il donc faut s'assurer que " +"tout le monde a le droit de lecture sur le fichier) et des empreintes de " +"clefs à sélectionner dans ces trousseaux. L'emplacement recommandé pour les " +"trousseaux est <filename>/usr/share/keyrings</filename> pour les trousseaux " +"gérés par les paquets, et <filename>/etc/apt/keyrings</filename> pour les " +"trousseaux gérés par le système d'exploitation. Si aucun fichier de " +"trousseau n’est défini, le trousseau <filename>trusted.gpg</filename> et " +"tous les trousseaux du répertoire <filename>trusted.gpg.d/</filename> sont " +"sélectionnés par défaut . Si aucune empreinte n’est définie, toutes les " +"clefs des trousseaux sont sélectionnées. Une empreinte acceptera aussi " +"toutes les signatures de sous-clefs de cette clef, et si ce n’est pas " +"désiré, un point d’exclamation (<literal>!</literal>) peut être ajouté à " +"l’empreinte pour désactiver ce comportement. L’option prend la valeur par " +"défaut de l'option du même nom si elle a été définie dans le fichier " "<filename>Release</filename> de ce dépôt récupéré auparavant (seules des " -"empreintes peuvent être définies par ce biais). Autrement, toutes les clés " +"empreintes peuvent être définies par ce biais). Autrement, toutes les clefs " "des trousseaux de confiance sont considérées comme des signatures valables " -"pour ce dépôt." +"pour ce dépôt. L'option peut être aussi définie directement sur un bloc de " +"clef publique GPG incorporée. Un soin particulier doit être pris pour " +"encoder la ligne vide avec au début des espaces vides et un « . » : " +"<placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8659,8 +8607,9 @@ msgid "" "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>." +"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 " @@ -8719,7 +8668,7 @@ msgstr "" "no qui contrôle si APT doit considérer que la date de la machine est " "correcte et donc effectuer les vérifications liées au temps, comme vérifier " "si le fichier Release n'est pas dans le futur. Sa désactivation désactive " -"l'option <option>Check-Valid-Until</option> mentionnée ci-dessus." +"aussi l'option <option>Check-Valid-Until</option> mentionnée ci-dessus." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8730,9 +8679,9 @@ msgid "" "seconds by default." msgstr "" "<option>Date-Max-Future</option> (<option>date-max-future</option>) contrôle " -"jusqu'où un dépôt peut être dans le futur. Elle possède la valeur del'option " -"de configuration <option>Acquire::Max-FutureTime</option> qui est par défaut " -"de 10 secondes." +"jusqu'où un dépôt peut être dans le futur. Elle possède la valeur de " +"l'option de configuration <option>Acquire::Max-FutureTime</option> qui est " +"par défaut de 10 secondes." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8760,20 +8709,15 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" +"<option>Snapshot</option> (<option>snapshot</option>) permet de sélectionner " +"une version plus ancienne de l'archive à partir du service d'instantanés. " +"Les valeurs prises en charge sont : <literal>enable</literal> (par défaut) " +"pour choisir un instantané avec l'option <option>--snapshot</option>, " +"<literal>ID</literal>, ou <literal>disable</literal> pour exclure le dépôt." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8783,6 +8727,11 @@ msgid "" "literal> which is the January 2nd, 2022 at 03:04:05 UTC, servers may however " "support additional types of IDs, and APT does not perform any checks so far." msgstr "" +"Les identifiants d'instantané sont habituellement un horodatage de forme " +"<literal>AAAAMMJJTHHMMSSZ</literal>, comme <literal>20220102T030405Z</" +"literal> qui est le 2 janvier 2022 à 03:04:05 UTC, mais les serveurs peuvent " +"prendre en charge d'autres formats d'identifiant et, jusqu'à présent, APT ne " +"fait pas de vérification." #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml @@ -8813,7 +8762,7 @@ msgid "" "authconf;." msgstr "" "Le procédé http précise un serveur HTTP pour une archive et c'est la méthode " -"la plus couramment utilisée. L'URI peut inclure directement les information " +"la plus couramment utilisée. L'URI peut inclure directement les informations " "de connexion si l'archive le requiert, mais l'utilisation de &apt-authconf; " "devrait être préférée. La méthode prend également en charge SOCKS5 et les " "mandataires HTTP(S) configurés soit au moyen d'une configuration spécifique " @@ -8889,13 +8838,13 @@ msgid "" "ensuring that clients can acquire data even if some configured mirrors are " "not available." msgstr "" -"Le procédé miroir définit la localisation d'une liste de miroirs. Par " +"Le procédé du miroir définit la localisation d'une liste de miroirs. Par " "défaut, le procédé utilisé par la localisation est <literal>http</literal>, " "mais n'importe quel autre procédé peut être utilisé avec la commande " -"<command>mirror+<replaceable>scheme</replaceable></command>. La liste de " -"miroirs elle-même peut contenir plusieurs URI de miroirs différentes que le " -"client APT peut, de façon transparente, repérer, choisir et sur lesquelles " -"se rabattre, afin d'aider à la fois à répartir la charge sur les miroirs " +"<command>mirror+<replaceable>procédé</replaceable></command>. La liste de " +"miroirs elle-même peut contenir plusieurs URI différents de miroir que le " +"client APT peut, de façon transparente, repérer, choisir et sur lesquels se " +"rabattre, afin d'aider à la fois à répartir la charge sur les miroirs " "disponibles et à garantir que les clients puissent récupérer les données " "même si certains des miroirs configurés ne sont pas disponibles." @@ -8922,39 +8871,6 @@ msgstr "" "programme &apt-cdrom; pour créer des entrées <literal>cdrom</literal> dans " "la liste des sources." -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" -"Le procédé <literal>ftp</literal> indique un serveur FTP comme archive. " -"L'utilisation de FTP décline en faveur de <literal>http</literal> et " -"<literal>https</literal> et plusieurs archives soit n'ont jamais offert " -"d'accès FTP, soit le retirent. Si vous avez encore besoin de cette méthode, " -"plusieurs options de configuration sont disponibles dans le champ d'action " -"<literal>Acquire::ftp</literal> et détaillées dans &apt-conf;." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" -"Veuillez noter qu'on peut spécifier un mandataire FTP en utilisant 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 "" @@ -8969,20 +8885,6 @@ msgstr "" "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" @@ -9001,8 +8903,7 @@ msgstr "" "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 <package>apt-transport-tor</package> qui gère les " -"méthodes d'accès par URI de type HTTP et HTTPS routées à travers le réseau " -"Tor." +"méthodes d'accès par URI de type HTTP et HTTPS routé à travers le réseau Tor." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml @@ -9165,63 +9066,63 @@ 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 " +"Uses HTTPS to access the archive at deb.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 " +"Utiliser HTTPS pour accéder à l'archive située à deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"Utiliser FTP pour accéder à l'archive située à ftp.debian.org, dans le " +"Utiliser HTTPS pour accéder à l'archive située à deb.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." +"apparaissent, une seule session HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9306,6 +9207,52 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "Utiliser un horodatage spécifique pour les instantanés (Snapshots)." + +#. 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" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +msgstr "Le paramètre optionnel --snapshot n'est pas autorisé." + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, no-wrap +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -9366,8 +9313,8 @@ msgstr "" #: 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>" +"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 : " @@ -9411,8 +9358,8 @@ 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>." +"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>." @@ -9548,10 +9495,10 @@ msgid "" "<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." +"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é " @@ -9559,13 +9506,13 @@ msgstr "" "<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." +"<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 @@ -9633,7 +9580,7 @@ msgid "" 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 " +"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)." @@ -9672,7 +9619,7 @@ msgid "" 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." +"filename> et les nœuds des distributions." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -9707,7 +9654,7 @@ msgid "" 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)." +"annulées dans d'autres sections (paramétrage par section)." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -9809,8 +9756,8 @@ msgstr "La section <literal>TreeDefault</literal>" #: 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." +"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 " @@ -9849,8 +9796,8 @@ 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>" +"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>." @@ -9858,8 +9805,8 @@ 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>" +"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>." @@ -9870,8 +9817,8 @@ 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>." +"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 @@ -9879,15 +9826,15 @@ 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>." +"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>" +"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 " @@ -9914,7 +9861,7 @@ msgid "" "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 " +"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." @@ -10097,9 +10044,9 @@ msgid "" 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 " +"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>." +"paramétrage de <literal>Section</literal><literal>Architecture</literal>." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -10242,7 +10189,7 @@ msgid "" "<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. " +"Créer la somme de contrôle indiquée. 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</" @@ -10317,15 +10264,15 @@ msgid "" "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>." +"Indiquer 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>." +"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>." @@ -10338,10 +10285,10 @@ msgid "" "<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 " +"N'accepter 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 : " +"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> @@ -10360,12 +10307,12 @@ 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." +"en cache (par exemple, 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èmes 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 @@ -10470,17 +10417,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt_auth.conf.5.xml -#, fuzzy -#| msgid "" -#| "<literal>machine</literal> <replaceable>hostname</replaceable>[:" -#| "<replaceable>port</replaceable>][/<replaceable>path</replaceable>]" msgid "" "<literal>machine</literal> <replaceable>[protocol://]</" "replaceable><replaceable>hostname</replaceable>[:<replaceable>port</" "replaceable>][/<replaceable>path</replaceable>]" msgstr "" -"<literal>machine</literal> <replaceable>nom d'hôte</replaceable>[:" -"<replaceable>port</replaceable>][/<replaceable>chemin</replaceable>]" +"<literal>machine</literal> <replaceable>[protocole://]</" +"replaceable><replaceable>nom_hôte</replaceable>[:<replaceable>port</" +"replaceable>][/<replaceable>chemin</replaceable>]" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt_auth.conf.5.xml @@ -10514,6 +10458,8 @@ msgstr "" msgid "" "If protocol is not specified, the entry only matches https and tor+https." msgstr "" +"Si le protocole n'est pas indiqué, l'entrée ne correspond qu'à https et " +"tor+https." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt_auth.conf.5.xml @@ -10542,17 +10488,15 @@ msgstr "Exemple" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml -#, fuzzy, no-wrap -#| msgid "deb http://example.org/debian &debian-stable-codename; main" +#, no-wrap msgid "deb https://example.org/debian &debian-stable-codename; main" -msgstr "deb http://example.org/debian &debian-stable-codename; main" +msgstr "deb https://example.org/debian &debian-stable-codename; main" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml -#, fuzzy, no-wrap -#| msgid "deb http://apt:debian@example.org/debian &debian-stable-codename; main" +#, no-wrap msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main" -msgstr "deb http://apt:debian@example.org/debian &debian-stable-codename; main" +msgstr "deb https://apt:debian@example.org/debian &debian-stable-codename; main" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml @@ -10586,13 +10530,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml -#, fuzzy, no-wrap -#| msgid "" -#| "machine example.org:80 login apt password debian\n" -#| "machine example.org/deb/ login apt password debian\n" -#| "machine example.org/ubuntu login apt password debian\n" -#| "machine example.orga login apt password debian\n" -#| "machine example.net login apt password debian\n" +#, no-wrap msgid "" "machine example.org:443 login apt password debian\n" "machine example.org/deb/ login apt password debian\n" @@ -10600,7 +10538,7 @@ msgid "" "machine example.orga login apt password debian\n" "machine example.net login apt password debian\n" msgstr "" -"machine example.org:80 login apt password debian\n" +"machine example.org:443 login apt password debian\n" "machine example.org/deb/ login apt password debian\n" "machine example.org/ubuntu login apt password debian\n" "machine example.orga login apt password debian\n" @@ -10624,8 +10562,8 @@ msgstr "" "<literal>apt</literal> avec le mot de passe <literal>debian</literal> pour " "l'entrée de &sources-list; <placeholder type=\"literallayout\" id=\"0\"/> " "peut se faire directement dans l'entrée : <placeholder " -"type=\"literallayout\" id=\"1\"/> Autrement, une entrée dans le fichier auth." -"conf telle que la suivante peut être utilisée : <placeholder " +"type=\"literallayout\" id=\"1\"/> Autrement, une entrée dans le fichier " +"auth.conf telle que la suivante peut être utilisée : <placeholder " "type=\"literallayout\" id=\"2\"/> Ou enfin, en une seule ligne : " "<placeholder type=\"literallayout\" id=\"3\"/>. Si vous avez besoin d'être " "plus précis, tout le contenu de ces lignes s'appliquera également à l'entrée " @@ -10664,6 +10602,11 @@ msgid "" "only, or if the sources.list entry redirects elsewhere, login information " "for the redirect destination can be supplied." msgstr "" +"Les informations de connexion dans auth.conf sont plus souples que celles " +"dans sources.list. Par exemple, les informations de connexion peuvent être " +"spécifiées pour seulement des parties d'un dépôt, ou si l'entrée du " +"sources.list redirige ailleurs, les informations de connexion pour la " +"destination de redirection peuvent être fournies." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt_auth.conf.5.xml @@ -10692,8 +10635,8 @@ msgid "" "Configuration Item: <literal>Dir::Etc::netrcparts</literal>." msgstr "" "Informations de connexion pour les sources et les mandataires d'APT dans un " -"format de type netrc. Élément de configuration : <literal>Dir::Etc::" -"netrcparts</literal>." +"format de type netrc. Élément de configuration : " +"<literal>Dir::Etc::netrcparts</literal>." #. type: Content of: <refentry><refsect1><para> #: apt_auth.conf.5.xml @@ -10766,16 +10709,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" "La variable d'environnement <envar>http_proxy</envar> est prise en charge " "pour une configuration au niveau du système. Les mandataires particuliers à " @@ -10809,14 +10753,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 "" "De plus, il y a trois options de configuration fournies pour le contrôle des " "caches mandataire compatibles avec HTTP/1.1 : <literal>Acquire::http::No-" @@ -10860,8 +10804,8 @@ msgid "" "<replaceable>host</replaceable></literal>." msgstr "" "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::<replaceable>hôte</replaceable></literal>." +"spécifique de mandataire hôte a déjà été établie par " +"<literal>Acquire::http::Proxy::<replaceable>hôte</replaceable></literal>." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml @@ -10875,11 +10819,11 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" -"Cette option prend le pas sur l'ancien nom d'option <literal>Acquire::http::" -"ProxyAutoDetect</literal>." +"Cette option prend le pas sur l'ancien nom d'option " +"<literal>Acquire::http::ProxyAutoDetect</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-http.1.xml @@ -10917,12 +10861,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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 " @@ -10963,7 +10907,7 @@ msgid "" "negotiation." msgstr "" "<literal>Acquire::http::SendAccept</literal> est activé par défaut et envoie " -"un champ d'en-tête <literal>Accept: text/*</literal> au serveur pourles " +"un champ d'en-tête <literal>Accept: text/*</literal> au serveur pour les " "requêtes sans extension de fichier pour éviter que le serveur ne tente une " "négociation de contenu." @@ -11024,10 +10968,10 @@ msgid "" msgstr "" "Ce transport d'APT permet d'utiliser les dépôts auxquels on accède au moyen " "de HTTPS (protocole HTTP Secure), aussi appelé HTTP sur TLS. Il est " -"disponible par défaut depuis apt 1.5 et était disponible auparavant dans " -"lepaquet <package>apt-transport-https</package>. Veuillez noter qu'un " -"transport n'est jamais appelé directement par l'utilisateur, maisutilisé par " -"les outils d'APT s'appuyant sur la configuration de l'utilisateur." +"disponible par défaut depuis apt 1.5 et était disponible auparavant dans le " +"paquet <package>apt-transport-https</package>. Veuillez noter qu'un " +"transport n'est jamais appelé directement par l'utilisateur, mais utilisé " +"par les outils d'APT s'appuyant sur la configuration de l'utilisateur." #. type: Content of: <refentry><refsect1><para> #: apt-transport-https.1.xml @@ -11054,13 +10998,13 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" "Le protocole HTTPS est basé sur le protocole HTTP, aussi toutes les options " "prises en charge par &apt-transport-http; sont aussi disponibles au moyen de " -"<literal>Acquire::https</literal> et ont par défaut les même valeurs que " +"<literal>Acquire::https</literal> et ont par défaut les mêmes valeurs que " "celles spécifiées pour <literal>Acquire::http</literal>. Cette page de " "manuel ne documentera que les options <emphasis>propres à https</emphasis>." @@ -11102,9 +11046,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" "Une liste de révocation de certificats (CRL) personnalisée peut être " "configurée avec l'option <literal>Acquire::https::CRLFile</literal> et " @@ -11176,18 +11121,18 @@ msgstr "Authentification du client" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" "Outre la gestion de l'authentification basée sur les mots de passe (voir " "&apt-authconf;) HTTPS prend aussi en charge l'authentification basée sur les " "certificats du client avec <literal>Acquire::https::SSLCert</literal> et " "<literal>Acquire::https::SSLKey</literal>. Leurs valeurs doivent être " "respectivement celle du nom de fichier du certificat X.509 du client et " -"celle de la clé privée (non chiffrée) associée, toutes les deux au format " +"celle de la clef privée (non chiffrée) associée, toutes les deux au format " "PEM. En pratique, l'utilisation des variantes spécifiques à l'hôte des deux " "options est fortement recommandée." @@ -11410,7 +11355,7 @@ msgid "" "possible number and are therefore tried last. The choice between mirrors " "with the same priority is again random." msgstr "" -"Si aucune priorité n'est donnée à un miroir par la clé de métadonnée " +"Si aucune priorité n'est donnée à un miroir par la clef de métadonnée " "<literal>priority</literal>, l'ordre de contact des miroirs est aléatoire. " "Si un ensemble particulier de miroirs doit être essayé avant que n'importe " "lequel des autres ensembles ne le soit, une priorité peut être spécifiée " @@ -11485,9 +11430,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" "Si un fichier avec ce contenu est stocké sur la machine sous le nom de " "<filename>/etc/apt/mirrorlist.txt</filename>, il peut être utilisé comme " @@ -11507,7 +11452,7 @@ msgid "" "literal> the sources.list entry from above could instead be written as:" msgstr "" "Toutes les versions de la méthode miroir prennent en charge une liste de " -"miroirs accessible par HTTP, aussi, dans la mesure où elle est disponible à " +"miroirs accessibles par HTTP, aussi, dans la mesure où elle est disponible à " "l'adresse <literal>http://apt.example.org/mirror.lst</literal>, l'entrée de " "sources.list ci-dessus peut être écrite plutôt ainsi :" @@ -11600,12 +11545,12 @@ msgstr "" #. type: Content of: <refentry><refmeta><manvolnum> #: apt-patterns.7.xml msgid "7" -msgstr "" +msgstr "7" #. type: Content of: <refentry><refnamediv><refpurpose> #: apt-patterns.7.xml msgid "Syntax and semantics of apt search patterns" -msgstr "" +msgstr "Syntaxe et sémantique des motifs de recherche d'APT" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml @@ -11613,11 +11558,14 @@ msgid "" "Starting with version 2.0, <command>APT</command> provides support for " "patterns, which can be used to query the apt cache for packages." msgstr "" +"À partir de la version 2.0, <command>APT</command> prend en charge les " +"motifs qui peuvent être utilisés pour la recherche de paquets dans le cache " +"d'APT." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml msgid "Logic patterns" -msgstr "" +msgstr "Motifs logiques" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml @@ -11626,86 +11574,90 @@ msgid "" "complex expressions, as well as <code>?true</code> and <code>?false</code> " "patterns." msgstr "" +"Ces motifs fournissent des moyens de base pour combiner d'autres motifs dans " +"des expressions plus complexes, de même que les motifs <code>?true</code> et " +"<code>?false</code>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?and(PATTERN, PATTERN, ...)</code>" -msgstr "" +msgstr "<code>?and(MOTIF, MOTIF, ...)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>PATTERN PATTERN ...</code>" -msgstr "" +msgstr "<code>MOTIF MOTIF ...</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects objects where all specified patterns match." -msgstr "" +msgstr "Sélectionner les objets dont tous les motifs spécifiés correspondent." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?false</code>" -msgstr "" +msgstr "<code>?false</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~F</code>" -msgstr "" +msgstr "<code>~F</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects nothing." -msgstr "" +msgstr "Ne rien sélectionner." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?not(PATTERN)</code>" -msgstr "" +msgstr "<code>?not(PATTERN)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>!PATTERN</code>" -msgstr "" +msgstr "<code>!PATTERN</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects objects where PATTERN does not match." -msgstr "" +msgstr "Sélectionner les objets pour lesquels le MOTIF ne correspond pas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?or(PATTERN, PATTERN, ...)</code>" -msgstr "" +msgstr "<code>?or(MOTIF, MOTIF, ...)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>PATTERN | PATTERN | ...</code>" -msgstr "" +msgstr "<code>MOTIF | MOTIF | ...</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects objects where at least one of the specified patterns match." msgstr "" +"Sélectionner les objets dont au moins un des motifs spécifiés correspond." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?true</code>" -msgstr "" +msgstr "<code>?true</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~T</code>" -msgstr "" +msgstr "<code>~T</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects all objects." -msgstr "" +msgstr "Sélectionner tous les objets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>(PATTERN)</code>" -msgstr "" +msgstr "<code>(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11713,16 +11665,18 @@ msgid "" "Selects the same as <code>PATTERN</code>, can be used to work around " "precedence, for example, <code>(~ramd64|~ri386)~nfoo</code>" msgstr "" +"Sélectionner la même chose que <code>(MOTIF)</code>, peut être utilisé pour " +"contourner les priorités, par exemple, <code>(~ramd64|~ri386)~ntruc</code>." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml msgid "Narrowing patterns" -msgstr "" +msgstr "Préciser les motifs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?all-versions(PATTERN)</code>" -msgstr "" +msgstr "<code>?all-versions(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11730,16 +11684,18 @@ msgid "" "Selects packages where all versions match PATTERN. When matching versions " "instead, same as PATTERN." msgstr "" +"Sélectionner les paquets dont toutes les versions correspondent à MOTIF. Si " +"la correspondance concerne plutôt les versions, équivaut à MOTIF." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?any-version(PATTERN)</code>" -msgstr "" +msgstr "<code>?any-version(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects any version where the pattern matches on the version." -msgstr "" +msgstr "Sélectionner toute version où le motif correspond à la version." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11749,11 +11705,15 @@ msgid "" "<code>?any-version(?and(?version(1),?version(2)))</code> restricts the " "<code>?and</code> to act on the same version." msgstr "" +"Par exemple, tandis que <code>?and(?version(1),?version(2))</code> " +"correspond à un paquet qui a une version contenant 1 et une version " +"contenant 2, <code>?any-version(?and(?version(1),?version(2)))</code> " +"restreint l'action de <code>?and</code> à la même version." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?narrow(PATTERN...)</code>" -msgstr "" +msgstr "<code>?narrow(MOTIF...)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11761,26 +11721,28 @@ msgid "" "Selects any version matching all PATTERNs, short for <code>?any-version(?" "and(PATTERN...))</code>." msgstr "" +"Sélectionner toute version correspondant à tous les MOTIFS, raccourci pour " +"<code>?any-version(?and(MOTIF...))</code>." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml msgid "Package patterns" -msgstr "" +msgstr "Motifs de paquet" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml msgid "These patterns select specific packages." -msgstr "" +msgstr "Ces motifs sélectionnent des paquets particuliers." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?architecture(WILDCARD)</code>" -msgstr "" +msgstr "<code>?architecture(JOKER)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~rWILDCARD</code>" -msgstr "" +msgstr "<code>~rJOKER</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11788,46 +11750,48 @@ msgid "" "Selects packages matching the specified architecture, which may contain " "wildcards using any." msgstr "" +"Sélectionner les paquets correspondant à l'architecture spécifiée, qui peut " +"contenir des caractères génériques avec « any »." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?automatic</code>" -msgstr "" +msgstr "<code>?automatic</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~M</code>" -msgstr "" +msgstr "<code>~M</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that were installed automatically." -msgstr "" +msgstr "Sélectionner les paquets qui ont été installés automatiquement." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?broken</code>" -msgstr "" +msgstr "<code>?broken</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~b</code>" -msgstr "" +msgstr "<code>~b</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that have broken dependencies." -msgstr "" +msgstr "Sélectionner les paquets qui ont des dépendances cassées." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?config-files</code>" -msgstr "" +msgstr "<code>?config-files</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~c</code>" -msgstr "" +msgstr "<code>~c</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11835,56 +11799,60 @@ msgid "" "Selects packages that are not fully installed, but have solely residual " "configuration files left." msgstr "" +"Sélectionner les paquets qui ne sont pas entièrement installés, mais dont il " +"ne reste que des fichiers de configuration résiduels." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?essential</code>" -msgstr "" +msgstr "<code>?essential</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~E</code>" -msgstr "" +msgstr "<code>~E</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that have Essential: yes set in their control file." msgstr "" +"Sélectionner les paquets dont le fichier de contrôle contient « Essential: " +"yes »." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?exact-name(NAME)</code>" -msgstr "" +msgstr "<code>?exact-name(NOM)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages with the exact specified name." -msgstr "" +msgstr "Sélectionner les paquets portant exactement le nom spécifié." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?garbage</code>" -msgstr "" +msgstr "<code>?garbage</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~g</code>" -msgstr "" +msgstr "<code>~g</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that can be removed automatically." -msgstr "" +msgstr "Sélectionner les paquets qui peuvent être retirés automatiquement." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?installed</code>" -msgstr "" +msgstr "<code>?installed</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~i</code>" -msgstr "" +msgstr "<code>~i</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11893,71 +11861,81 @@ msgid "" "narrowing this pattern (see narrowing patterns above) makes it only match " "installed versions (see version patterns below)." msgstr "" +"Sélectionner les paquets actuellement installés. Depuis la version 2.5.4, " +"préciser ce motif (voir plus haut Préciser les motifs) fait que l'option " +"fait seulement correspondre les versions installées (voir plus loin Motifs " +"de version)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?name(REGEX)</code>" -msgstr "" +msgstr "<code>?name(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~nREGEX</code>" -msgstr "" +msgstr "<code>~nEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages where the name matches the given regular expression." msgstr "" +"Sélectionner les paquets dont le nom correspond à l'expression rationnelle " +"indiquée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?obsolete</code>" -msgstr "" +msgstr "<code>?obsolete</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~o</code>" -msgstr "" +msgstr "<code>~o</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that no longer exist in repositories." -msgstr "" +msgstr "Sélectionner les paquets qui n'existent plus dans les dépôts." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?phasing</code>" -msgstr "" +msgstr "<code>?phasing</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that will be kept back in upgrades due to phasing." msgstr "" +"Sélectionner les paquets qui seront conservés durant les mises à niveau en " +"raison de la mise à niveau par étapes." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?upgradable</code>" -msgstr "" +msgstr "<code>?upgradable</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~U</code>" -msgstr "" +msgstr "<code>~U</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects packages that can be upgraded (have a newer candidate)." msgstr "" +"Sélectionner les paquets qui peuvent être mis à niveau (qui ont un candidat " +"plus récent)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?virtual</code>" -msgstr "" +msgstr "<code>?virtual</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~v</code>" -msgstr "" +msgstr "<code>~v</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11966,28 +11944,29 @@ msgid "" "exist when they are referenced somewhere in the archive, for example because " "something depends on that name." msgstr "" +"Sélectionner tous les paquets virtuels ; c'est-à-dire des paquets sans " +"version. Ils existent s'ils sont référencés quelque part dans l'archive, par " +"exemple parce que quelque chose dépend de leur nom." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Version &apt-product-version;" msgid "Version patterns" -msgstr "Version &apt-product-version;" +msgstr "Motifs de version" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml msgid "These patterns select specific versions of a package." -msgstr "" +msgstr "Ces motifs sélectionnent des versions particulières d'un paquet." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?archive(REGEX)</code>" -msgstr "" +msgstr "<code>?archive(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~AREGEX</code>" -msgstr "" +msgstr "<code>~AEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -11996,11 +11975,14 @@ msgid "" "regular expression. Archive, here, means the values after <code>a=</code> in " "<command>apt-cache policy</command>." msgstr "" +"Sélectionner les versions qui proviennent de l'archive qui correspond à " +"l'expression rationnelle indiquée. Ici, archive signifie les valeurs " +"spécifiées après <code>a=</code> dans <command>apt-cache policy</command>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?codename(REGEX)</code>" -msgstr "" +msgstr "<code>?codename(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12009,6 +11991,9 @@ msgid "" "regular expression. Codename, here, means the values after <code>n=</code> " "in <command>apt-cache policy</command>." msgstr "" +"Sélectionner les versions qui proviennent du nom de code qui correspond à " +"l'expression rationnelle indiquée. Ici, nom de code signifie les valeurs " +"spécifiées après <code>n=</code> dans <command>apt-cache policy</command>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12018,16 +12003,21 @@ msgid "" "version(2.0))</code>matched even if 2.0 was not installed, but another " "version was." msgstr "" +"Sélectionner les versions qui sont actuellement installées. Les versions " +"d'APT antérieures à 2.5.4 n'établissaient de correspondance qu'au niveau du " +"paquet, ainsi <code>?any-version(?installed?version(2.0))</code> " +"correspondait même si la version  2.0 n'était pas installée mais qu'une " +"autre l'était." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?origin(REGEX)</code>" -msgstr "" +msgstr "<code>?origin(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~OREGEX</code>" -msgstr "" +msgstr "<code>~OEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12036,32 +12026,37 @@ msgid "" "regular expression. Origin, here, means the values after <code>o=</code> in " "<command>apt-cache policy</command>." msgstr "" +"Sélectionner les versions qui proviennent de l'origine qui correspond à " +"l'expression rationnelle indiquée. Ici, origine signifie les valeurs " +"spécifiées après <code>o=</code> dans <command>apt-cache policy</command>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?section(REGEX)</code>" -msgstr "" +msgstr "<code>?section(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~sREGEX</code>" -msgstr "" +msgstr "<code>~sEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" "Selects versions where the section matches the specified regular expression." msgstr "" +"Sélectionner les versions dont la section correspond à l'expression " +"rationnelle indiquée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?source-package(REGEX)</code>" -msgstr "" +msgstr "<code>?source-package(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~eREGEX</code>" -msgstr "" +msgstr "<code>~eEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12069,11 +12064,13 @@ msgid "" "Selects versions where the source package name matches the specified regular " "expression." msgstr "" +"Sélectionner les versions dont le nom du paquet source correspond à " +"l'expression rationnelle indiquée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?source-version(REGEX)</code>" -msgstr "" +msgstr "<code>?source-version(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12081,16 +12078,18 @@ msgid "" "Selects versions where the source package version matches the specified " "regular expression." msgstr "" +"Sélectionner les versions dont la version du paquet source correspond à " +"l'expression rationnelle indiquée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?version(REGEX)</code>" -msgstr "" +msgstr "<code>?version(EXPRESSION_RATIONNELLE)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~VREGEX</code>" -msgstr "" +msgstr "<code>~VEXPRESSION_RATIONNELLE</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12098,39 +12097,42 @@ msgid "" "Selects versions where the version string matches the specified regular " "expression." msgstr "" +"Sélectionner les versions dont la chaîne de version correspond à " +"l'expression rationnelle indiquée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?priority(NAME)</code>" -msgstr "" +msgstr "<code>?priority(NOM)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~pNAME</code>" -msgstr "" +msgstr "<code>~pNOM</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Selects versions where the Priority string equals the given name." msgstr "" +"Sélectionner les versions dont la chaîne de Priority est égale au nom donné." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?security</code>" -msgstr "" +msgstr "<code>?security</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" "Selects packages that are a security update or succeed a security update." msgstr "" +"Sélectionner les paquets qui sont une mise à jour de sécurité ou qui sont " +"consécutifs à une mise à jour de sécurité." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Version &apt-product-version;" msgid "Package relationship patterns" -msgstr "Version &apt-product-version;" +msgstr "Motifs de relation de paquets" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml @@ -12138,105 +12140,118 @@ msgid "" "These patterns match specific package versions that depend/conflict with " "some other packages." msgstr "" +"Ces motifs établissent une correspondance avec les versions de paquet " +"particulières qui dépendent ou sont en conflit avec d'autres paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?depends(PATTERN)</code>" -msgstr "" +msgstr "<code>?depends(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DPATTERN</code>" -msgstr "" +msgstr "<code>~DMOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?pre-depends(PATTERN)</code>" -msgstr "" +msgstr "<code>?pre-depends(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DPre-Depends:PATTERN</code>" -msgstr "" +msgstr "<code>~DPre-Depends:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?suggests(PATTERN)</code>" -msgstr "" +msgstr "<code>?suggests(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DSuggests:PATTERN</code>" -msgstr "" +msgstr "<code>~DSuggests:MOTIF</code>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "<code>?recommends(MOTIF)</code>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "<code>~DRecommends:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" -msgstr "" +msgstr "<code>?conflicts(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DConflicts:PATTERN</code>" -msgstr "" +msgstr "<code>~DConflicts:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?replaces(PATTERN)</code>" -msgstr "" +msgstr "<code>?replaces(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DReplaces:PATTERN</code>" -msgstr "" +msgstr "<code>~DReplaces:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?obsoletes(PATTERN)</code>" -msgstr "" +msgstr "<code>?obsoletes(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DObsoletes:PATTERN</code>" -msgstr "" +msgstr "<code>~DObsoletes:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?breaks(PATTERN)</code>" -msgstr "" +msgstr "<code>?breaks(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DBreaks:PATTERN</code>" -msgstr "" +msgstr "<code>~DBreaks:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?enhances(PATTERN)</code>" -msgstr "" +msgstr "<code>?enhances(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>~DEnhances:PATTERN</code>" -msgstr "" +msgstr "<code>~DEnhances:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" +"Sélectionner les versions dépendantes, pré-dépendantes, suggérées, " +"recommandées, en conflit, etc., concernant les paquets correspondant au " +"MOTIF." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?reverse-<replaceable>depType</replaceable>(PATTERN)</code>" -msgstr "" +msgstr "<code>?reverse-<replaceable>depType</replaceable>(MOTIF)</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<optional><replaceable>&synopsis-prefix;</replaceable></optional>" msgid "<code>~R<replaceable>DepType</replaceable>:PATTERN</code>" -msgstr "<optional><replaceable>&synopsis-prefix;</replaceable></optional>" +msgstr "<code>~R<replaceable>DepType</replaceable>:MOTIF</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12244,6 +12259,8 @@ msgid "" "Opposite of <code>?depends</code> and friends - selects all packages that " "have reverse-dependencies (versions) matching PATTERN." msgstr "" +"Contraire de <code>?depends</code> et analogues – sélectionner les paquets " +"qui ont des (versions) dépendances inverses correspondant au MOTIF." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12252,11 +12269,14 @@ msgid "" "<code>depends</code>, so that we don't have to repeat the entire list from " "the first paragraph here." msgstr "" +"<replaceable>depType</replaceable> est un des types de dépendances tel que " +"<code>depends</code>, aussi il n'y a pas besoin de répéter ici la totalité " +"de la liste depuis le premier paragraphe." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>apt remove ?garbage</code>" -msgstr "" +msgstr "<code>apt remove ?garbage</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12264,21 +12284,25 @@ msgid "" "Remove all packages that are automatically installed and no longer needed - " "same as apt autoremove" msgstr "" +"Supprimer tous les paquets qui ont été automatiquement installés et ne sont " +"plus nécessaires – identique à « apt autoremove »" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>apt purge ?config-files</code>" -msgstr "" +msgstr "<code>apt purge ?config-files</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "Purge all packages that only have configuration files left" msgstr "" +"Supprimer définitivement tous les paquets dont il ne reste que les fichiers " +"de configuration." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>apt list '~i !~M (~slibs|~sperl|~spython)'</code>" -msgstr "" +msgstr "<code>apt list '~i !~M (~slibs|~sperl|~spython)'</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml @@ -12286,11 +12310,13 @@ msgid "" "List all manually-installed packages in sections matching libs, perl, or " "python." msgstr "" +"Lister tous les paquets installés manuellement dans les sections qui " +"correspondent à libs, perl ou python." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml msgid "Migrating from aptitude" -msgstr "" +msgstr "Migration à partir d'aptitude" #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml @@ -12298,6 +12324,8 @@ msgid "" "Patterns in apt are heavily inspired by patterns in aptitude, but with some " "tweaks:" msgstr "" +"Les motifs d'APT ont été fortement inspirés par les motifs d'aptitude, mais " +"avec quelques ajustements :" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml @@ -12305,6 +12333,8 @@ msgid "" "Syntax is uniform: If there is an opening parenthesis after a term, it is " "always assumed to be the beginning of an argument list." msgstr "" +"La syntaxe est cohérente : s'il y a une parenthèse ouverte après un terme, " +"il est toujours considéré que c'est le début d'une liste d'arguments." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml @@ -12313,11 +12343,14 @@ msgid "" "and(?foo,bar)\"</code> if foo does not take an argument. In APT, this will " "cause an error." msgstr "" +"Dans aptitude, une forme syntaxique <code>\"?truc(machin)\"</code> peut " +"signifier <code>\"?and(?truc,machin)\"</code> si truc ne prend pas " +"d'argument. Dans APT, cela provoque une erreur." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml msgid "Not all patterns are supported." -msgstr "" +msgstr "Tous les motifs ne sont pas pris en charge." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml @@ -12325,31 +12358,40 @@ msgid "" "Some additional patterns are available, for example, for finding gstreamer " "codecs." msgstr "" +"Quelques motifs supplémentaires sont disponibles, par exemple, pour trouver " +"des codecs de gstreamer." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml msgid "Escaping terms with <code>~</code> is not supported." msgstr "" +"La protection de termes avec un <code>~</code> n'est pas prise en charge." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml msgid "A trailing comma is allowed in argument lists" -msgstr "" +msgstr "Une virgule finale est permise dans les listes d'arguments." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml msgid "?narrow accepts infinite arguments" -msgstr "" +msgstr "?narrow accepte des arguments illimités." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." -msgstr "" +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." +msgstr "" +"<code>truc</code> ne peut pas être utilisé comme raccourci pour <code>?" +"name(truc)</code>, parce que cela peut faire que des fautes de frappe " +"passent inaperçues. Prenez <code>?and(...,~pfacultatif)</code> : cela " +"nécessite que le paquet ait la propriété <code>required</code>, mais si vous " +"n'entrez pas le <code>~</code>, il faudrait que le nom du paquet contienne " +"<code>pfacultatif</code>." #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #: apt-patterns.7.xml @@ -12357,13 +12399,13 @@ msgid "" "Dependency types for ~D and related operators need to be specified in the " "canonical case." msgstr "" +"Les types de dépendances pour ~D et les opérateurs associés doivent être " +"indiqués dans la casse canonique." #. type: Content of: <refentry><refsect1><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "&apt-cache; &apt-conf;" msgid "&apt-get;, &apt;" -msgstr "&apt-cache; &apt-conf;" +msgstr "&apt-get;, &apt;" #. type: Attribute 'lang' of: <book> #: guide.dbk offline.dbk @@ -12395,7 +12437,7 @@ msgstr "Version &apt-product-version;" 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 " +"Ce document fournit un aperçu des méthodes d'utilisation du gestionnaire de " "paquets APT." #. type: Content of: <book><bookinfo> @@ -12429,8 +12471,8 @@ 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." +"Les détails complets de cette licence sont, sur les systèmes Debian, " +"consultables dans le fichier usr/share/common-licenses/GPL." #. type: Content of: <book><chapter><title> #: guide.dbk @@ -12446,10 +12488,10 @@ msgid "" "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." +"<command>dselect</command> et l'interface utilisateur 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 @@ -12477,13 +12519,13 @@ msgid "" "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 " +"Le système de gestion des dépendances permet aux programmes individuels de " +"partager des éléments du système, tels que les bibliothèques. Il permet " +"d'isoler dans des paquets spécifiques certaines 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." +"électronique, les serveurs X et d'autres composants du système." #. type: Content of: <book><chapter><section><para> #: guide.dbk @@ -12506,11 +12548,11 @@ msgid "" "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 " +"Par exemple, mailcrypt est une extension d'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." +"plus, étant une extension d'Emacs, il a une dépendance simple sur emacs sans " +"lequel il est totalement inutile." #. type: Content of: <book><chapter><section><para> #: guide.dbk @@ -12619,14 +12661,14 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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" +"Réception de http://ftp.de.debian.org/debian/ stable/binary-i386/ Paquets\n" +"Réception de http://llug.sep.bnl.gov/debian/ testing/contrib Paquets\n" "Lecture des listes de paquets... Fait\n" "Construction de l'arbre des dépendances... Fait\n" @@ -12658,13 +12700,13 @@ msgstr "" "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 " +"autre paquet. Cette commande peut être utilisée 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." +"peuvent être utilisés pour forcer l'installation de tels paquets." #. type: Content of: <book><chapter><variablelist><varlistentry><term> #: guide.dbk @@ -12809,8 +12851,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12818,12 +12860,11 @@ 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" +" Les procédés 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" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12845,14 +12886,14 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" stable unstable testing \n" "\n" " Distribution [stable] :\n" @@ -12861,20 +12902,11 @@ msgstr "" 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]." +"<emphasis>unstable</emphasis> refers to the developmental version." +msgstr "" +"La distribution fait référence à la version de Debian dans l'archive, " +"<emphasis>stable</emphasis> à la dernière version publiée et " +"<emphasis>unstable</emphasis> à la version en développement. " #. type: Content of: <book><chapter><screen> #: guide.dbk @@ -12899,10 +12931,10 @@ msgid "" "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 " +"La liste des composants correspond à la liste des sous-ensembles 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 " +"comporte les paquets libres 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." @@ -12971,7 +13003,7 @@ msgid "" "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 " +"qui encapsulent <command>apt-get</command>. Cela apporte des fonctionnalités " "supplémentaires à celles d'<command>apt-get</command> utilisé isolément." #. type: Content of: <book><chapter><para> @@ -13006,9 +13038,9 @@ msgid "" "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 " +"nombre d'actions pour préparer ses mécanismes 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>." +"isolément avec la commande <literal>apt-get check</literal>." #. type: Content of: <book><chapter><section><screen> #: guide.dbk @@ -13136,7 +13168,7 @@ msgid "" "<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 " +"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 " @@ -13158,7 +13190,7 @@ msgstr "" "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 à " +"des options pour forcer certaines opérations) avant de pouvoir utiliser à " "nouveau APT." #. type: Content of: <book><chapter><section><title> @@ -13314,10 +13346,10 @@ msgid "" "<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 " +"nouvelles versions de paquets ne puissent pas être installées, car elles ont " +"besoins de 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 " +"conservés. La 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>." @@ -13368,9 +13400,10 @@ msgid "" "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" +"206 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,7 Mo/66,7 Mo dans les archives. Après cette opération, 26,5 Mo d'espace disque supplémentaires seront utilisés.\n" +"Il est nécessaire de prendre 65,7 Mo/66,7 Mo dans les archives\n" +".Après cette opération, 26,5 Mo d'espace disque supplémentaires seront utilisés.\n" #. type: Content of: <book><chapter><section><section><para> #: guide.dbk @@ -13411,7 +13444,7 @@ msgid "" "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." +"paquets à mettre à jour. Ils sont analogues aux exemples précédents." #. type: Content of: <book><chapter><section><title> #: guide.dbk @@ -13432,19 +13465,19 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" +"Réception de :1 http://ftp.de.debian.org/debian/ stable/main Paquets\n" +"Réception de :2 http://llug.sep.bnl.gov/debian/ testing/contrib Paquets\n" +"Atteint http://llug.sep.bnl.gov/debian/ testing/main Paquets\n" +"Réception de :4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Paquets\n" +"Réception de :5 http://llug.sep.bnl.gov/debian/ testing/non-free Paquets\n" "11% [5 testing/non-free `Attente du fichier' 0/32.1k 0%] 2203b/s 1m52s\n" #. type: Content of: <book><chapter><section><para> @@ -13511,14 +13544,14 @@ msgstr "" "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. " +"toujours représentées sur 4 chiffres 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." +"régulièrement à jour et représente la durée estimée de téléchargement de " +"tout ce qui est nécessaire, à la vitesse affichée." #. type: Content of: <book><chapter><section><para> #: guide.dbk @@ -13554,8 +13587,8 @@ 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 " +"traitement des paquets, qui peuvent eux-mêmes être amenés à poser des " +"questions. Chacune de ces questions comporte une 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." @@ -13717,7 +13750,7 @@ msgid "" "APT use the disc:" msgstr "" "<emphasis>apt.conf</emphasis> doit avoir les informations nécessaires pour " -"qu'APT utilise le disque.disc:" +"qu'APT utilise le disque :" #. type: Content of: <book><chapter><section><screen> #: offline.dbk @@ -13824,7 +13857,7 @@ msgid "" "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 " +"La commande dist-upgrade peut être remplacée par toute autre 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." @@ -13853,7 +13886,7 @@ msgstr "" " # 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" +" [ ou toute autre commande APT ]\n" #. type: Content of: <book><chapter><section><para> #: offline.dbk @@ -13861,7 +13894,7 @@ 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 " +"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> @@ -13876,7 +13909,7 @@ 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 " +"n'effectuer 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." @@ -13906,9 +13939,9 @@ msgid "" "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/" +"d'archive téléchargés depuis le site distant. Cela peut être effectué avec " +"l'option --print-uris d'apt-get, puis en préparant un script wget pour " +"récupérer réellement les paquets." #. type: Content of: <book><chapter><section><title> #: offline.dbk @@ -13923,7 +13956,7 @@ msgid "" 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." +"utilisées pour créer la liste de fichiers." #. type: Content of: <book><chapter><section><screen> #: offline.dbk @@ -13996,7 +14029,464 @@ 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." +msgstr "Cette commande utilisera les archives déjà récupérées sur le disque." + +#~ msgid "" +#~ "<literal>enable</literal> to allow selecting a snapshot with the " +#~ "<option>--snapshot</option> option, or" +#~ msgstr "" +#~ "<literal>enable</literal> pour permettre la sélection d'un instantané " +#~ "avec l'option <option>--snapshot</option>, ou" + +#~ msgid "a snapshot ID to select a specific snapshot." +#~ msgstr "un identifiant d'instantané pour choisir un instantané particulier." + +#~ 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_clef\">" + +#~ msgid "Deprecated APT key management utility" +#~ msgstr "Utilitaire obsolète de gestion des clefs d'APT" + +#~ 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> est utilisé pour gérer la liste de clefs dont " +#~ "se sert APT pour authentifier les paquets. Les paquets authentifiés par " +#~ "ces clefs sont réputés fiables." + +#~ msgid "" +#~ "Use of <command>apt-key</command> is deprecated, except for the use of " +#~ "<command>apt-key del</command> in maintainer scripts to remove existing " +#~ "keys from the main keyring. If such usage of <command>apt-key</command> " +#~ "is desired the additional installation of the GNU Privacy Guard suite " +#~ "(packaged in <package>gnupg</package>) is required." +#~ msgstr "" +#~ "L'usage d'<command>apt-key</command> est obsolète sauf pour l'utilisation " +#~ "d'<command>apt-key del</command> dans les scripts du responsable pour " +#~ "retirer des clefs existantes du trousseau de clefs principal. Si vous " +#~ "souhaitez utiliser <command>apt-key</command>, il est nécessaire " +#~ "d'installer en plus la suite « GNU Privacy Guard » (du paquet " +#~ "<package>gnupg</package>)." + +#~ msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." +#~ msgstr "" +#~ "apt-key(8) sera disponible pour la dernière fois dans Debian 12 et " +#~ "Ubuntu 24.04." + +#~ msgid "Supported keyring files" +#~ msgstr "Trousseaux de clefs pris en charge" + +#~ 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 clefs 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 clefs dans les versions les plus récentes de &gpg;. Les " +#~ "fichiers binaires de trousseau de clefs destinés à être utilisés dans " +#~ "toutes les versions d'apt devraient donc toujours être créés avec la " +#~ "commande <command>gpg --export</command>." + +#~ 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 " +#~ "clefs 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>." + +#~ msgid "Commands" +#~ msgstr "Commandes" + +#~ msgid "(deprecated)" +#~ msgstr "(obsolète)" + +#~ 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 clef à la liste des clefs fiables. La clef 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>." + +#~ 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 clefs 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." + +#~ 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 clefs 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." + +#~ msgid "(mostly deprecated)" +#~ msgstr "(obsolète pour l'essentiel)" + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "Supprimer une clef de la liste des clefs fiables." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "Afficher la clef &synopsis-param-keyid; sur la sortie standard." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "Afficher toutes les clefs fiables sur la sortie standard." + +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "Afficher la liste des clefs fiables avec leurs empreintes." + +#~ 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 clef directement " +#~ "d'un serveur de clefs dans l'ensemble de clefs 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." + +#~ 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 clefs local avec le trousseau de clefs de " +#~ "l'archive et y supprimer les clefs qui ne sont plus valables. Le " +#~ "trousseau de clefs de l'archive est fourni dans le paquet " +#~ "<literal>archive-keyring</literal> de la distribution, par exemple le " +#~ "paquet &keyring-package; dans &keyring-distro;." + +#~ 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 clefs 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 clefs en ajoutant ou en retirant simplement des " +#~ "fichiers." + +#~ 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 clefs de " +#~ "l'archive depuis une URI et la valide avec une clef 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 clef 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." + +#~ 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." + +#~ 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-clefs 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 " +#~ "clefs donc, par exemple, les nouvelles clefs y seront ajoutées." + +#~ msgid "Deprecation" +#~ msgstr "Obsolescence" + +#~ msgid "" +#~ "Except for using <command>apt-key del</command> in maintainer scripts, " +#~ "the use of <command>apt-key</command> is deprecated. This section shows " +#~ "how to replace existing use of <command>apt-key</command>." +#~ msgstr "" +#~ "Sauf pour l'utilisation d'<command>apt-key del</command> dans les scripts " +#~ "du responsable, l'utilisation d'<command>apt-key</command> est obsolète. " +#~ "Cette section montre comment remplacer l'utilisation actuelle " +#~ "d'<command>apt-key</command>." + +#~ msgid "" +#~ "If your existing use of <command>apt-key add</command> looks like this:" +#~ msgstr "" +#~ "Si votre utilisation actuelle de <command>apt-key add</command> ressemble " +#~ "à cela :" + +#~ msgid "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add " +#~ "-</literal>" +#~ msgstr "" +#~ "<literal>wget -qO- https://mondépot.exemple/mondépot.asc | sudo apt-key " +#~ "add -</literal>" + +#~ msgid "" +#~ "Then you can directly replace this with (though note the recommendation " +#~ "below):" +#~ msgstr "" +#~ "Alors vous pouvez directement remplacer cela par (mais notez la " +#~ "recommandation ci-dessous) :" + +#~ msgid "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" +#~ "trusted.gpg.d/myrepo.asc</literal>" +#~ msgstr "" +#~ "<literal>wget -qO- https://mondépot.example/mondépot.asc | sudo tee /etc/" +#~ "apt/trusted.gpg.d/mondépot.asc</literal>" + +#~ msgid "" +#~ "Make sure to use the \"<literal>asc</literal>\" extension for ASCII " +#~ "armored keys and the \"<literal>gpg</literal>\" extension for the binary " +#~ "OpenPGP format (also known as \"GPG key public ring\"). The binary " +#~ "OpenPGP format works for all apt versions, while the ASCII armored format " +#~ "works for apt version >= 1.4." +#~ msgstr "" +#~ "Assurez-vous d'utiliser l'extension « <literal>asc</literal> » pour les " +#~ "clefs au format ASCII-Armored et l'extension « <literal>gpg</literal> » " +#~ "pour le format binaire OpenPGP (aussi connu comme « GPG key public " +#~ "ring »). Le format binaire OpenPGP fonctionne pour toutes les versions " +#~ "d'APT, tandis que le format ASCII-Armored ne fonctionne que pour les " +#~ "versions >= 1.4." + +#~ msgid "" +#~ "<emphasis>Recommended:</emphasis> Instead of placing keys into the " +#~ "<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " +#~ "anywhere on your filesystem by using the <literal>Signed-By</literal> " +#~ "option in your <literal>sources.list</literal> and pointing to the " +#~ "filename of the key. See &sources-list; for details. Since APT 2.4, " +#~ "<filename>/etc/apt/keyrings</filename> is provided as the recommended " +#~ "location for keys not managed by packages. When using a deb822-style " +#~ "sources.list, and with apt version >= 2.4, the <literal>Signed-By</" +#~ "literal> option can also be used to include the full ASCII armored " +#~ "keyring directly in the <literal>sources.list</literal> without an " +#~ "additional file." +#~ msgstr "" +#~ "<emphasis>Recommandation :</emphasis> au lieu de placer les clefs dans le " +#~ "répertoire <filename>/etc/apt/trusted.gpg.d</filename>, vous pouvez les " +#~ "placer n'importe où dans votre système de fichiers en utilisant l'option " +#~ "<literal>Signed-By</literal> dans votre <literal>sources.list</literal> " +#~ "et en pointant vers le nom de fichier de la clef. Voir &sources-list; " +#~ "pour des détails. Depuis APT 2.4, <filename>/etc/apt/keyrings</filename> " +#~ "est donné comme emplacement recommandé pour les clefs qui ne sont pas " +#~ "gérées par les paquets. Lors de l'utilisation de source.list de type " +#~ "deb288 avec APT version >= 2.4, l'option <literal>Signed-By</literal> " +#~ "peut aussi être utilisée pour inclure directement le trousseau de clefs " +#~ "entier au format ASCII-Armored dans le fichier <literal>sources.list</" +#~ "literal> sans fichier supplémentaire." + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#~ 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 clefs utilisées par APT pour faire " +#~ "confiance aux dépôts s'appelle <command>apt-key</command>. Il peut " +#~ "ajouter ou supprimer des clefs aussi bien que lister les clefs de " +#~ "confiance. Il est possible de limiter la capacité pour une ou plusieurs " +#~ "clefs de signer telle ou telle archive avec l'option <option>Signed-By</" +#~ "option> dans &sources-list;." + +#~ 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 clef, 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." + +#~ 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::<host></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::<hôte></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>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. Voir " +#~ "&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>." + +#~ 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." + +#~ 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)." + +#~ 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> à un " +#~ "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." + +#~ 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." + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "" +#~ "Afficher les informations concernant le téléchargement de paquets par FTP." + +#~ msgid "" +#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on " +#~ "the decline in favour of <literal>http</literal> and <literal>https</" +#~ "literal> and many archives either never offered or are retiring FTP " +#~ "access. If you still need this method many configuration options for it " +#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed " +#~ "in &apt-conf;." +#~ msgstr "" +#~ "Le procédé <literal>ftp</literal> indique un serveur FTP comme archive. " +#~ "L'utilisation de FTP décline en faveur de <literal>http</literal> et " +#~ "<literal>https</literal> et plusieurs archives soit n'ont jamais offert " +#~ "d'accès FTP, soit le retirent. Si vous avez encore besoin de cette " +#~ "méthode, plusieurs options de configuration sont disponibles dans le " +#~ "champ d'action <literal>Acquire::ftp</literal> et détaillées dans &apt-" +#~ "conf;." + +#~ msgid "" +#~ "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 "" +#~ "Veuillez noter qu'on peut spécifier un mandataire FTP en utilisant 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." + +#~ 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 clefs RSA. Les commandes standard <command>find</command> et " +#~ "<command>dd</command> sont utilisées pour l'accès aux fichiers de la " +#~ "machine distante." #~ msgid "Describes the process of resolving build-dependencies in &apt-get;." #~ msgstr "" @@ -14028,12 +14518,12 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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::<host></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." +#~ "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::<host></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 : " @@ -14065,19 +14555,19 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "info about trusted certificates. <literal><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::SslForceVersion</" #~ "literal> is the corresponding per-host option." #~ msgstr "" #~ "La sous-option <literal>CaInfo</literal> spécifie le fichier contenant " @@ -14087,7 +14577,7 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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 " +#~ "<literal>SslKey</literal> détermine quelle clef 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</" @@ -14104,8 +14594,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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://" +#~ "<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." @@ -14114,9 +14604,10 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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." +#~ "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 " @@ -14292,34 +14783,35 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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\"/>" +#~ "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." +#~ msgstr "Afficher les empreintes des clefs fiables." #~ msgid "Local trust database of archive keys." -#~ msgstr "Base de données locale de fiabilité des clés de l'archive." +#~ msgstr "Base de données locale de fiabilité des clefs 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;." +#~ msgstr "Trousseau des clefs 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;." +#~ "Trousseau des clefs fiables supprimées de l'archive &keyring-distro;." #~ msgid "" #~ "This is a space separated list of all the architectures that appear under " @@ -14402,7 +14894,7 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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." +#~ "est possible de télécharger une clef publique." #~ msgid "mark/unmark a package as being automatically-installed" #~ msgstr "Indiquer si un paquet a été installé automatiquement ou non" @@ -14436,7 +14928,7 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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 " +#~ "avec une signature dont apt ne possède pas la clef, 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 " @@ -14444,8 +14936,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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>." +#~ "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 : " @@ -14453,12 +14945,12 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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>." +#~ "(<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</" @@ -14477,8 +14969,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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>." +#~ "outils comme pbuilder. Élément de configuration : " +#~ "<literal>APT::Get::AllowUnauthenticated</literal>." #~ msgid "" #~ "Version 2 of this protocol dumps more information, including the protocol " @@ -14647,8 +15139,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~| "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)" +#~ "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)" @@ -14673,16 +15165,16 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "B<reportbug>(1) command." #~ msgstr "" #~ "Voir E<lt>https://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)." +#~ "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>." +#~ "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" @@ -14788,8 +15280,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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>." +#~ "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 " @@ -14844,8 +15336,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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." +#~ "Mettre à jour le trousseau de clefs local avec le trousseau de clefs de " +#~ "l'archive Debian et supprimer les clefs qui y sont périmées." #, fuzzy #~| msgid "" @@ -14887,8 +15379,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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>." +#~ "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" @@ -15000,7 +15492,8 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ 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." +#~ "Trousseau de clefs locales fiables : les nouvelles clefs y seront " +#~ "ajoutées." #~ msgid "" #~ "<filename>apt.conf</filename> is the main configuration file for the APT " @@ -15020,10 +15513,10 @@ msgstr "Cette commande utilisera les fichiers récupérés sur le disque." #~ "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." +#~ "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 " diff --git a/doc/po/it.po b/doc/po/it.po index 4a72c7f..9d46806 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -10,7 +10,7 @@ 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: 2024-03-22 10:14+0000\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2017-03-27 19:05+0200\n" "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n" "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n" @@ -145,6 +145,33 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\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 @@ -176,7 +203,19 @@ msgstr "" #. type: Plain text #: apt.ent -#, no-wrap +#, fuzzy, 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" msgid "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -188,7 +227,6 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" -"\">\n" msgstr "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -202,6 +240,41 @@ msgstr "" " </varlistentry>\n" "\">\n" +#. type: Plain text +#: apt.ent +#, fuzzy, 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. See &apt-conf; for syntax information. \n" +#| " </para>\n" +#| " </listitem>\n" +#| " </varlistentry>\n" +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +"\">\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" + #. type: Plain text #: apt.ent #, no-wrap @@ -522,11 +595,13 @@ 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\">" +"<!-- 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\">" +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " +"\"stringa_config\">" #. type: Plain text #: apt.ent @@ -540,12 +615,12 @@ 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 " +"<!-- 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 " +"<!-- 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 @@ -596,11 +671,11 @@ 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\">" +"<!-- 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\">" +"<!-- 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 @@ -663,28 +738,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -694,12 +759,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Descrizione" @@ -787,7 +851,7 @@ msgstr "" "aggiornare il sistema nel suo complesso." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -888,6 +952,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -1013,11 +1109,11 @@ msgstr "" "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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Vedere anche" @@ -1092,11 +1188,11 @@ msgid "" 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 " +"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." @@ -1620,8 +1716,8 @@ msgid "" "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>." +"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 @@ -1635,8 +1731,8 @@ msgid "" "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>." +"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 " @@ -1717,15 +1813,15 @@ msgid "" 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>." +"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 @@ -1763,8 +1859,8 @@ 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>." +"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>." @@ -1787,15 +1883,44 @@ 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 +#, fuzzy +#| msgid "" +#| "Re-install packages that are already installed and at the newest " +#| "version. Configuration Item: <literal>APT::Get::ReInstall</literal>." +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</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 +#, fuzzy +#| msgid "" +#| "Select the source override file to use with the <literal>sources</" +#| "literal> command. Configuration Item: " +#| "<literal>APT::FTPArchive::SourceOverride</literal>." +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</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-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>." +"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 " @@ -1972,8 +2097,8 @@ msgid "" "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>." +"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 " @@ -2013,8 +2138,8 @@ msgid "" "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>." +"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</" @@ -2088,8 +2213,8 @@ msgid "" "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>." +"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 @@ -2132,8 +2257,9 @@ msgid "" "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>." +"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 @@ -2178,8 +2304,8 @@ msgstr "" #| "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>." +#| "the concept and the implications. Configuration Item: " +#| "<literal>Acquire::AllowInsecureRepositories</literal>." msgid "" "Allow the update command to acquire unverifiable data from configured " "sources. APT will otherwise fail at the update command for repositories " @@ -2190,8 +2316,8 @@ msgstr "" "Impedisce al comando update di acquisire dati non verificabili dalle fonti " "configurate. Il comando update di Apt fallirà per i repository senza firme " "crittografiche valide. Vedere anche &apt-secure; per i dettagli sul concetto " -"e sulle implicazioni. Voce di configurazione: <literal>Acquire::" -"AllowInsecureRepositories</literal>." +"e sulle implicazioni. Voce di configurazione: " +"<literal>Acquire::AllowInsecureRepositories</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2274,7 +2400,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "File" @@ -2703,12 +2829,12 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Stessa cosa di <literal>dotty</literal>, ma per xvcg dello <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">strumento VCG</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">strumento VCG</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2736,8 +2862,8 @@ msgid "" "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>)." +"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 " @@ -2751,8 +2877,8 @@ msgstr "" #: 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>." +"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: " @@ -2797,17 +2923,17 @@ msgid "" 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>." +"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>." +"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 " @@ -2830,8 +2956,8 @@ msgstr "" "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>." +"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 @@ -2857,8 +2983,8 @@ msgstr "" "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>." +"<literal>show</literal>. Voce di configurazione: " +"<literal>APT::Cache::AllVersions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2886,8 +3012,8 @@ msgstr "" #: 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>." +"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: " @@ -2912,8 +3038,8 @@ msgid "" "<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>." +"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 @@ -2969,312 +3095,6 @@ 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 -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -msgstr "" - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Supported keyring files" -msgstr "File di portachiavi gestiti" - -#. 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 gestisce nei file con l'estensione «<literal>gpg</literal>» " -"solamente il formato binario OpenPGP (noto anche come «GPG key public " -"ring»), non il formato di database keybox introdotto come file di " -"portachiavi predefinito nelle versioni più nuove di &gpg;. I file di " -"portachiavi binari pensati per essere usati con qualsiasi versione di apt " -"dovrebbero perciò sempre essere creati con <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 alternativa, se tutti i sistemi che devono usare il portachiavi creato " -"hanno una installata versione di apt almeno >= 1.4, si può utilizzare invece " -"il formato armored ASCII con l'estensione «<literal>asc</literal>» che può " -"essere creato con <command>gpg --armor --export</command>." - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Commands" -msgstr "Comandi" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml -msgid "(deprecated)" -msgstr "(deprecato)" - -#. 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 "" -"<emphasis>Nota bene</emphasis>: invece di usare questo comando un " -"portachiavi dovrebbe essere messo direttamente nella directory <filename>/" -"etc/apt/trusted.gpg.d/</filename> con un nome descrittivo e con " -"«<literal>gpg</literal>» o «<literal>asc</literal>» come estensione di file." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml -#, fuzzy -#| msgid "(deprecated)" -msgid "(mostly deprecated)" -msgstr "(deprecato)" - -#. 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 -msgid "List trusted keys with fingerprints." -msgstr "Elenca le chiavi fidate con le impronte digitali." - -#. 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><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 "" -"Notare che una distribuzione non ha più bisogno di usare questo comando, e " -"di fatto non dovrebbe farlo, e invece fornisce file portachiavi direttamente " -"nella directory <filename>/etc/apt/trusted.gpg.d/</filename>, dato che " -"questo evita una dipendenza da <package>gnupg</package> ed è più facile, sia " -"per i manutentori sia per gli utenti, gestire chiavi semplicemente " -"aggiungendo e rimuovendo file." - -#. 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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Dir Section" -msgid "Deprecation" -msgstr "Sezione Dir" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3286,8 +3106,8 @@ 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</" +"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 " @@ -3390,6 +3210,12 @@ msgstr "" "<literal>showauto</literal>, tranne per il fatto che stampa invece un elenco " "dei pacchetti installati manualmente" +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Opzioni" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3463,6 +3289,13 @@ msgstr "" "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 +#, fuzzy +#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3518,6 +3351,66 @@ msgstr "" "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 "User Configuration" +msgstr "Configurazione utente" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +#, fuzzy +#| 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." +msgid "" +"Note that a default installation already contains all keys to securely " +"acquire packages from the default repositories, so managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +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><title> #: apt-secure.8.xml #, fuzzy @@ -3751,55 +3644,6 @@ msgid "" "shipped in the repository (as e.g. indicated by the codename)." msgstr "" -#. 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 #, fuzzy @@ -3831,8 +3675,8 @@ msgstr "" #: 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>." +"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 " @@ -3886,9 +3730,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-secure.8.xml +#, fuzzy +#| msgid "" +#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " +#| "&debsign;, &debsig-verify;, &gpg;" msgid "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " "&debsign;, &debsig-verify;, &gpg;" @@ -3897,15 +3745,15 @@ msgstr "" #: 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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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 " +"debian-manual/ch07\">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." @@ -3993,8 +3841,8 @@ msgstr "" #: 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>." +"<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: " @@ -4009,8 +3857,8 @@ msgid "" 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>." +"e configurato correttamente. Voce di configurazione: " +"<literal>Acquire::cdrom::mount</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -4021,15 +3869,15 @@ msgid "" 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>." +"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>." +"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</" @@ -4134,8 +3982,8 @@ 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>." +"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</" @@ -4187,8 +4035,8 @@ msgstr "" "nel valore verranno codificati per assicurare che possano essere usati senza " "problemi in una stringa tra virgolette, come definito nella RFC822. In " "aggiunta %n verrà sostituito da un ritorno a capo e %N da una " -"tabulazione. Un carattere % può essere prodotto usando %" -"%. " +"tabulazione. Un carattere % può essere prodotto usando " +"%%. " #. type: Content of: <refentry><refsect1><para> #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml @@ -4264,9 +4112,9 @@ msgid "" "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." +"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</" @@ -4355,12 +4203,12 @@ msgstr "" "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:" +"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 @@ -4481,12 +4329,12 @@ msgid "" 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.)" +"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 @@ -4565,6 +4413,55 @@ msgstr "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4853,8 +4750,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -5077,120 +4974,30 @@ msgstr "" #: 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 "" -"The options in these scopes configure APT's acquire transports for the " -"protocols HTTP and HTTPS and are documented in the &apt-transport-http; and " -"&apt-transport-https; manpages respectively." -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::<host></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::<host></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 "" -"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 "" -"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)." +"files the given number of times." 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)." +"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 "" -"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." +"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 "" -"È 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." +"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 "" -"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." +"The options in these scopes configure APT's acquire transports for the " +"protocols HTTP and HTTPS and are documented in the &apt-transport-http; and " +"&apt-transport-https; manpages respectively." 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 @@ -5252,9 +5059,9 @@ msgstr "" "possono decomprimere e ricomprimere molti formati comuni come <command>xz</" "command> e <command>gzip</command>; con questa impostazione si possono " "ottenere informazioni sui formati supportati, si può modificarli oltre ad " -"aggiungere il supporto per altri formati (vedere anche <option>APT::" -"Compressor</option>). La sintassi è: <placeholder type=\"synopsis\" id=\"0\"/" -">" +"aggiungere il supporto per altri formati (vedere anche " +"<option>APT::Compressor</option>). La sintassi è: <placeholder " +"type=\"synopsis\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><synopsis> #: apt.conf.5.xml @@ -5393,9 +5200,9 @@ msgid "" "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 " +"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 " @@ -5527,21 +5334,22 @@ msgid "" "<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." +"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 " @@ -5552,22 +5360,22 @@ msgstr "" "<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." +"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><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5577,14 +5385,15 @@ msgstr "" #| "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 " +#| "<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, " @@ -5602,17 +5411,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots 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 " @@ -5623,22 +5434,22 @@ msgstr "" "<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." +"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 @@ -5650,9 +5461,9 @@ msgstr "Configurazione specifica per binari" 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>." +"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 " @@ -5728,13 +5539,14 @@ 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>" +"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 @@ -5765,19 +5577,19 @@ 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." +"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." +"<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 @@ -5795,11 +5607,11 @@ msgstr "" "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>." +"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 @@ -5971,9 +5783,9 @@ msgid "" "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." +"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 " @@ -6052,12 +5864,12 @@ msgid "" "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." +"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 @@ -6107,11 +5919,11 @@ msgid "" "<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." +"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 @@ -6191,12 +6003,6 @@ msgid "" 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." @@ -6316,15 +6122,15 @@ 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." +"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>." +"di <literal>apt</literal>; per quello vedere " +"<literal>Debug::pkgProblemResolver</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6334,14 +6140,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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 " @@ -6422,8 +6228,8 @@ 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>." +"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>." @@ -6431,8 +6237,8 @@ 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 " +"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ò " @@ -6544,15 +6350,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 " @@ -6564,6 +6379,17 @@ msgstr "" "configurazione <literal>Dir::Ignore-Files-Silently</literal>, nel qual caso " "viene ignorato in modo silenzioso." +#. type: Content of: <refentry><refsect1><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6893,6 +6719,27 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Package: perl\n" +#| "Pin: version &good-perl;*\n" +#| "Pin-Priority: 1001\n" +msgid "" +"Package: perl\n" +"Pin: source-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 "" @@ -7214,9 +7061,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -7389,9 +7236,9 @@ msgstr "Allora:" 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." +"\"<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 " @@ -7669,23 +7516,23 @@ msgid "" "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." +"<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>." +"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 @@ -8019,6 +7866,17 @@ msgstr "" "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><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -8049,6 +7907,16 @@ msgstr "" "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><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -8106,6 +7974,12 @@ msgstr "" "incontrare opzioni, dato che erano non comuni prima dell'introduzione del " "supporto multiarchitettura." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8368,10 +8242,17 @@ 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\"/>" +#, fuzzy +#| 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\"/>" +msgid "" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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 " @@ -8407,6 +8288,34 @@ msgstr "" "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>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 "" @@ -8441,11 +8350,12 @@ msgstr "" 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." +"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 " @@ -8617,18 +8527,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) è un percorso " "assoluto ad un file di portachiavi (deve essere accessibile e leggibile " @@ -8657,8 +8566,9 @@ msgid "" "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>." +"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 " @@ -8701,8 +8611,9 @@ msgstr "" "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." +"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><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8741,19 +8652,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -8872,44 +8773,6 @@ msgstr "" "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 ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -#, fuzzy -#| 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." -msgid "" -"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 "" @@ -8923,20 +8786,6 @@ msgstr "" "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" @@ -9128,58 +8977,62 @@ 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 " +"Uses HTTPS to access the archive at deb.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." +"Usa HTTPS per accedere all'archivio in deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" +"Suites: &debian-stable-codename;\n" +"Components: contrib" +msgstr "" +"Types: deb\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS 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> " +"Usa HTTPS per accedere all'archivio in deb.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." +"usata una sola sessione HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9262,6 +9115,58 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\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 "Doesn't allow the optional parameter --snapshot." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\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;" @@ -9322,8 +9227,8 @@ msgstr "" #: 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>" +"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: " @@ -9366,8 +9271,8 @@ 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>." +"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>." @@ -9501,22 +9406,22 @@ msgid "" "<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." +"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>, <filename>Sources</filename>, " "<filename>Contents</filename>, <filename>Components</filename> e " "<filename>icons</filename> compressi e non compressi, come anche i file " -"<filename>Release</filename>, <filename>Index</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." +"<filename>Release</filename>, <filename>Index</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 @@ -9761,12 +9666,12 @@ msgstr "Sezione <literal>TreeDefault</literal>" #: 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." +"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." +"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 @@ -9801,8 +9706,8 @@ 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>" +"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>." @@ -9810,8 +9715,8 @@ 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>" +"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>." @@ -9822,8 +9727,8 @@ 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>." +"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 @@ -9838,8 +9743,8 @@ msgstr "" #: 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>" +"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 " @@ -9865,11 +9770,11 @@ msgid "" "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." +"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 @@ -10242,8 +10147,8 @@ 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>." +"<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 @@ -10269,14 +10174,14 @@ msgid "" "literal>." msgstr "" "Seleziona il file override sorgente da usare con il comando " -"<literal>sources</literal>. Voce di configurazione <literal>APT::FTPArchive::" -"SourceOverride</literal>." +"<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>." +"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>." @@ -10292,8 +10197,8 @@ 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>." +"nel percorso specificato. Voce di configurazione: " +"<literal>APT::FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -10473,16 +10378,16 @@ msgstr "Esempi" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml @@ -10655,16 +10560,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> @@ -10688,14 +10594,14 @@ msgstr "" #| "store the requested archive files in its cache, which can be used to " #| "prevent the proxy from polluting its cache with (big) .deb files." msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 an HTTP/1.1. <literal>No-Cache</literal> indica al proxy di " @@ -10725,11 +10631,11 @@ msgstr "Configurazione utente" #| "</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>." +#| "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>." 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 " @@ -10772,8 +10678,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10814,11 +10720,11 @@ msgid "" "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." +"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><refsect2><para> #: apt-transport-http.1.xml @@ -10833,12 +10739,12 @@ msgstr "" #| "by setting the value to 0. It is enabled by default with the value 10." 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 work around 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." +"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 work around 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 " @@ -10939,9 +10845,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10970,9 +10876,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -11018,11 +10925,11 @@ msgstr "" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -11224,9 +11131,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> @@ -11246,9 +11153,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> #: apt-transport-mirror.1.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml @@ -11951,6 +11858,20 @@ msgstr "<option>--installed</option>" msgid "<code>~DSuggests:PATTERN</code>" msgstr "<option>--installed</option>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +#, fuzzy +#| msgid "<option>--installed</option>" +msgid "<code>?recommends(PATTERN)</code>" +msgstr "<option>--installed</option>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +#, fuzzy +#| msgid "<option>--installed</option>" +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "<option>--installed</option>" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml #, fuzzy @@ -12024,8 +11945,8 @@ msgstr "<option>--installed</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -12149,10 +12070,10 @@ msgstr "" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -12416,13 +12337,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -12596,8 +12517,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12609,8 +12530,8 @@ msgstr "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12632,26 +12553,31 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" tags are typically something like: stable unstable testing\n" "\n" " Distribution [stable]:\n" #. type: Content of: <book><chapter><para> #: guide.dbk +#, fuzzy +#| 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." 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." +"<emphasis>unstable</emphasis> refers to the developmental version." msgstr "" "La distribuzione indica la versione Debian dell'archivio: <emphasis>stable</" "emphasis> è l'ultima versione rilasciata e <emphasis>unstable</emphasis> è " @@ -13217,18 +13143,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" @@ -13779,6 +13705,354 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" msgid "Which will use the already fetched archives on the disc." msgstr "che userà gli archivi già scaricati e presenti sul disco." +#~ 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::<host></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::<host></" +#~ "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>." + +#~ 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." + +#~ 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)." + +#~ 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." + +#~ 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." + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "" +#~ "Stampa informazioni relative allo scaricamento dei pacchetti usando FTP." + +#, fuzzy +#~| 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." +#~ msgid "" +#~ "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." + +#~ 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>." + +#~ 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\">" + +#, fuzzy +#~| msgid "APT key management utility" +#~ msgid "Deprecated APT key management utility" +#~ msgstr "strumento APT per la gestione delle chiavi" + +#~ 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." + +#~ msgid "Supported keyring files" +#~ msgstr "File di portachiavi gestiti" + +#~ 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 gestisce nei file con l'estensione «<literal>gpg</literal>» " +#~ "solamente il formato binario OpenPGP (noto anche come «GPG key public " +#~ "ring»), non il formato di database keybox introdotto come file di " +#~ "portachiavi predefinito nelle versioni più nuove di &gpg;. I file di " +#~ "portachiavi binari pensati per essere usati con qualsiasi versione di apt " +#~ "dovrebbero perciò sempre essere creati con <command>gpg --export</" +#~ "command>." + +#~ 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 alternativa, se tutti i sistemi che devono usare il portachiavi creato " +#~ "hanno una installata versione di apt almeno >= 1.4, si può utilizzare " +#~ "invece il formato armored ASCII con l'estensione «<literal>asc</literal>» " +#~ "che può essere creato con <command>gpg --armor --export</command>." + +#~ msgid "Commands" +#~ msgstr "Comandi" + +#~ msgid "(deprecated)" +#~ msgstr "(deprecato)" + +#~ 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." + +#~ 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." + +#~ 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>Nota bene</emphasis>: invece di usare questo comando un " +#~ "portachiavi dovrebbe essere messo direttamente nella directory <filename>/" +#~ "etc/apt/trusted.gpg.d/</filename> con un nome descrittivo e con " +#~ "«<literal>gpg</literal>» o «<literal>asc</literal>» come estensione di " +#~ "file." + +#, fuzzy +#~| msgid "(deprecated)" +#~ msgid "(mostly deprecated)" +#~ msgstr "(deprecato)" + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "Rimuove una chiave dall'elenco delle chiavi fidate." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "" +#~ "Visualizza sullo standard output l'&synopsis-param-keyid; della chiave." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "Visualizza sullo standard output tutte le chiavi fidate." + +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "Elenca le chiavi fidate con le impronte digitali." + +#~ 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." + +#~ 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;." + +#~ 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 "" +#~ "Notare che una distribuzione non ha più bisogno di usare questo comando, " +#~ "e di fatto non dovrebbe farlo, e invece fornisce file portachiavi " +#~ "direttamente nella directory <filename>/etc/apt/trusted.gpg.d/</" +#~ "filename>, dato che questo evita una dipendenza da <package>gnupg</" +#~ "package> ed è più facile, sia per i manutentori sia per gli utenti, " +#~ "gestire chiavi semplicemente aggiungendo e rimuovendo file." + +#~ 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." + +#~ 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." + +#~ 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." + +#, fuzzy +#~| msgid "Dir Section" +#~ msgid "Deprecation" +#~ msgstr "Sezione Dir" + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#~ 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;." + +#~ 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." + #~ msgid "Describes the process of resolving build-dependencies in &apt-get;." #~ msgstr "" #~ "Descrive il processo di risoluzione delle dipendenze di compilazione in " @@ -13809,16 +14083,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ 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::<host></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." +#~ "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::<host></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 " +#~ "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::<host>" #~ "</literal> con la speciale parola chiave <literal>DIRECT</literal> che " #~ "significa di non usare un proxy. Se non viene specificata alcuna delle " @@ -13845,41 +14119,42 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ "info about trusted certificates. <literal><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::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><" -#~ "host>::Verify-Host</literal> è la corrispondente opzione specifica per " -#~ "ciascun host. <literal>SslCert</literal> determina quale certificato " -#~ "usare per l'autenticazione client; <literal><host>::SslCert</" -#~ "literal> è la corrispondente opzione specifica per ciascun host. " -#~ "<literal>SslKey</literal> determina quale chiave privata usare per " -#~ "l'autenticazione client; <literal><host>::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><host>::SslForceVersion</" -#~ "literal> è la corrispondente opzione specifica per ciascun host." +#~ "file che contiene le informazioni sui certificati fidati; " +#~ "<literal><host>::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><host>::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><host>::Verify-Host</literal> è la " +#~ "corrispondente opzione specifica per ciascun host. <literal>SslCert</" +#~ "literal> determina quale certificato usare per l'autenticazione client; " +#~ "<literal><host>::SslCert</literal> è la corrispondente opzione " +#~ "specifica per ciascun host. <literal>SslKey</literal> determina quale " +#~ "chiave privata usare per l'autenticazione client; " +#~ "<literal><host>::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><host>::SslForceVersion</literal> è la corrispondente " +#~ "opzione specifica per ciascun host." #~ msgid "" #~ "The http scheme specifies an HTTP server for the archive. If an " @@ -13893,27 +14168,29 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ "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." +#~ "autenticazione possono usare una stringa nel formato http://" +#~ "utente:password@server:porta/. Notare che questo è un metodo di " +#~ "autenticazione non sicuro." #~ 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." +#~ "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 "" #~ "Come eccezione temporanea &apt-get; (non &apt;!) dà solo avvertimenti se " #~ "incrontra archivi non autenticati, per fornire un periodo di grazia " #~ "leggermente più lungo per questa modifica che influenza sulla " #~ "compatibilità all'indietro. Questa eccezione sarà rimossa nei rilasci " #~ "futuri e si può rinunciare a questo periodo di grazia ipostando l'opzione " -#~ "di configurazione <option>Binary::apt-get::Acquire::" -#~ "AllowInsecureRepositories</option> a <literal>false</literal> o <option>--" -#~ "no-allow-insecure-repositories</option> nella riga di comando." +#~ "di configurazione <option>Binary::apt-" +#~ "get::Acquire::AllowInsecureRepositories</option> a <literal>false</" +#~ "literal> o <option>--no-allow-insecure-repositories</option> nella riga " +#~ "di comando." #~ msgid "Archive Configuration" #~ msgstr "Configurazione dell'archivio" @@ -14117,8 +14394,9 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ "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>." +#~ "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 " @@ -14257,8 +14535,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ 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>." +#~ "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 " @@ -14266,12 +14544,12 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ 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>." +#~ "(<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 è " @@ -14460,8 +14738,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~| "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)" +#~ "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)" @@ -14964,31 +15242,6 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ " </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" @@ -15354,8 +15607,8 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ "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>." +#~ "<literal>show</literal>. Voce di configurazione: " +#~ "<literal>APT::Cache::AllVersions</literal>." #~ msgid "<option>-g</option>" #~ msgstr "<option>-g</option>" @@ -15590,16 +15843,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ 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>" +#~ "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>" +#~ "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>" @@ -15609,12 +15862,12 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ msgid "" #~ "Temporary directory in which to write extracted debconf template files " -#~ "and config scripts. Configuration Item: <literal>APT::ExtractTemplates::" -#~ "TempDir</literal>" +#~ "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>." +#~ "script di configurazione estratti. Voce di configurazione: " +#~ "<literal>APT::ExtractTemplates::TempDir</literal>." #~ msgid "" #~ "&apt-author.jgunthorpe; &apt-author.team; &apt-email; &apt-product; " @@ -15691,10 +15944,10 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ "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." +#~ "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 " @@ -15803,16 +16056,16 @@ msgstr "che userà gli archivi già scaricati e presenti sul disco." #~ msgstr "Contents" #~ msgid "" -#~ "Sets the output Contents file. Defaults to <filename>$(DIST)/Contents-" -#~ "$(ARCH)</filename>. If this setting causes multiple Packages files to map " +#~ "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à " +#~ "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" diff --git a/doc/po/ja.po b/doc/po/ja.po index 178ab95..b2690da 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -10,7 +10,7 @@ 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: 2024-03-22 10:14+0000\n" +"POT-Creation-Date: 2025-05-19 18:28+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" @@ -144,6 +144,33 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\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 @@ -173,7 +200,19 @@ msgstr "" #. type: Plain text #: apt.ent -#, no-wrap +#, fuzzy, 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" msgid "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -185,6 +224,44 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\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 +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" msgstr "" " <varlistentry>\n" @@ -522,11 +599,13 @@ 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\">" +"<!-- 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 \"設定文字列\">" +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string \"設定文字" +"列\">" #. type: Plain text #: apt.ent @@ -540,12 +619,12 @@ 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 " +"<!-- 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 \"対象リリー" +"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. " +"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release \"対象リリー" "ス\">" #. type: Plain text @@ -596,11 +675,11 @@ 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\">" +"<!-- 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マウントポイント\">" +"<!-- 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 @@ -662,28 +741,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -693,12 +762,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "説明" @@ -783,7 +851,7 @@ msgstr "" "パッケージを削除することができます。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -880,6 +948,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -1001,11 +1101,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "関連項目" @@ -1168,10 +1268,10 @@ msgid "" msgstr "" "<literal>install</literal> の後には、インストールや更新したいパッケージを 1 " "つ以上指定します。指定するパッケージは、完全なファイル名ではなくパッケージ名" -"です (例えば Debian システムでは、<filename>apt-utils_&apt-product-version;" -"_amd64.deb</filename> ではなく <package>apt-utils</package> を引数として与え" -"ます)。インストールするよう指定したすべてのパッケージに対し、依存パッケージも" -"含めて取得・インストールを行います。<filename>/etc/apt/sources.list</" +"です (例えば Debian システムでは、<filename>apt-utils_&apt-product-" +"version;_amd64.deb</filename> ではなく <package>apt-utils</package> を引数と" +"して与えます)。インストールするよう指定したすべてのパッケージに対し、依存パッ" +"ケージも含めて取得・インストールを行います。<filename>/etc/apt/sources.list</" "filename> ファイルを、要求するパッケージの場所を特定するのに使用します。パッ" "ケージ名の後ろに (空白を含まず) ハイフンが追加されている場合、そのパッケージ" "がインストールされていれば削除します。同様に、インストールするパッケージを明" @@ -1593,8 +1693,8 @@ msgid "" "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>." +"may produce an error in some situations. Configuration Item: " +"<literal>APT::Get::Fix-Broken</literal>." msgstr "" "修復 - 依存関係が壊れたシステムの修正を試みます。このオプションを install や " "remove と一緒に使うときは、APT が解決法を推測するので、パッケージを指定しなく" @@ -1604,8 +1704,8 @@ msgstr "" "の依存関係構造にかなり問題がある場合は、手動で修正するよう要求することもあり" "ます。(通常は、問題のあるパッケージを取り除くのに <command>dpkg --remove</" "command> を使用します) このオプションを <option>-m</option> オプションと同時" -"に使用すると、エラーになる状況があるかもしれません。設定項目: <literal>APT::" -"Get::Fix-Broken</literal>" +"に使用すると、エラーになる状況があるかもしれません。設定項目: " +"<literal>APT::Get::Fix-Broken</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1623,8 +1723,8 @@ msgstr "" "で処理を続けます。このオプションを <option>-f</option> オプションと同時に使用" "すると、エラーになる状況があるかもしれません。パッケージをインストールするよ" "う選択している (特にコマンドラインでの操作する) 場合や、ダウンロードできな" -"かった場合に、なにも表示せず保留することになります。設定項目: <literal>APT::" -"Get::Fix-Missing</literal>" +"かった場合に、なにも表示せず保留することになります。設定項目: " +"<literal>APT::Get::Fix-Missing</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1670,13 +1770,13 @@ msgid "" "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>" +"い、実際にはシステムを変更しません。ロックは無効になる " +"(<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 @@ -1709,11 +1809,11 @@ 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>." +"Automatic \"no\" to all prompts. Configuration Item: " +"<literal>APT::Get::Assume-No</literal>." msgstr "" -"全ての質問に、自動的に \"no\" と答えます。設定項目: <literal>APT::Get::" -"Assume-No</literal>" +"全ての質問に、自動的に \"no\" と答えます。設定項目: " +"<literal>APT::Get::Assume-No</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1733,21 +1833,50 @@ msgstr "" "更新・インストールするパッケージのバージョンをすべて表示します。設定項目: " "<literal>APT::Get::Show-Versions</literal>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +#, fuzzy +#| msgid "" +#| "Re-install packages that are already installed and at the newest " +#| "version. Configuration Item: <literal>APT::Get::ReInstall</literal>." +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" +"すでに最新版がインストールされていても、パッケージを再インストールします。設" +"定項目: <literal>APT::Get::ReInstall</literal>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +#, fuzzy +#| msgid "" +#| "Select the source override file to use with the <literal>sources</" +#| "literal> command. Configuration Item: " +#| "<literal>APT::FTPArchive::SourceOverride</literal>." +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" +"<literal>sources</literal> コマンドで使用する、ソースオーバーライドファイルを" +"選択します。設定項目: <literal>APT::FTPArchive::SourceOverride</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>." +"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>。" +"デフォルトでは未定義で、これはホストアーキテクチャは、" +"(<literal>APT::Architecture</literal> で定義した) ビルドアーキテクチャと同じ" +"という意味になります。設定項目: <literal>APT::Get::Host-Architecture</" +"literal>。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1770,8 +1899,8 @@ msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." msgstr "" -"ソースパッケージをダウンロード後、コンパイルします。設定項目: <literal>APT::" -"Get::Compile</literal>" +"ソースパッケージをダウンロード後、コンパイルします。設定項目: " +"<literal>APT::Get::Compile</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1815,8 +1944,8 @@ msgid "" msgstr "" "パッケージ更新なし - <literal>install</literal> と同時に使用すると、" "<literal>no-upgrade</literal> は、コマンドラインで指定したパッケージが、すで" -"にインストールしてある場合に更新を行いません。設定項目: <literal>APT::Get::" -"Upgrade</literal>" +"にインストールしてある場合に更新を行いません。設定項目: " +"<literal>APT::Get::Upgrade</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1870,8 +1999,9 @@ msgid "" msgstr "" "強制承諾 - 保持されたパッケージを変更する場合でも、確認なしで実行してしまう危" "険なオプションです。よほどの状況でなければ、使うべきではありません。このオプ" -"ションを使うと、システムを破壊しかねません! 設定項目: <literal>APT::Get::" -"allow-change-held-packages</literal>。APT 1.1 で導入されました。" +"ションを使うと、システムを破壊しかねません! 設定項目: " +"<literal>APT::Get::allow-change-held-packages</literal>。APT 1.1 で導入されま" +"した。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1910,8 +2040,8 @@ msgid "" "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>." +"to decompress any compressed files. Configuration Item: " +"<literal>APT::Get::Print-URIs</literal>." msgstr "" "インストールするファイルを取得する代わりに、その URI を表示します。URI には、" "パス、対象ファイル名、ファイルサイズ、予測される MD5 ハッシュが含まれていま" @@ -1919,8 +2049,8 @@ msgstr "" "い、ということに注意してください! これは <literal>source</literal> コマンド、" "<literal>update</literal> コマンドでも動作します。<literal>update</literal> " "で使用したときには、MD5 やファイルサイズを含みません。このとき、圧縮ファイル" -"の展開はユーザの責任において行ってください。設定項目: <literal>APT::Get::" -"Print-URIs</literal>" +"の展開はユーザの責任において行ってください。設定項目: " +"<literal>APT::Get::Print-URIs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1951,8 +2081,8 @@ msgid "" "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>." +"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> は古" @@ -1989,9 +2119,9 @@ msgstr "" "pin で留めるのを明示されたパッケージには、このオプションの値は影響を与えませ" "ん。つまりこのオプションで、どの配布パッケージを取得するかを簡単に管理しま" "す。一般的な例としては、<option>-t '2.1*'</option>, <option>-t unstable</" -"option>, <option>-t sid</option> のようになります。設定項目: <literal>APT::" -"Default-Release</literal>。&apt-preferences; のマニュアルページも参照してくだ" -"さい。" +"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 @@ -2099,8 +2229,8 @@ msgstr "" "ローカルリポジトリでの作業中には有用ですが、ユーザ自身が別の方法でデータの信" "憑性を確保していない場合は、セキュリティ上の重大なリスクになります。&sources-" "list; エントリ用の <option>Trusted</option> オプションの使用は、通常グローバ" -"ルオーバーライドよりも優先されるはずです。設定項目: <literal>APT::Get::" -"AllowUnauthenticated</literal>" +"ルオーバーライドよりも優先されるはずです。設定項目: " +"<literal>APT::Get::AllowUnauthenticated</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2109,8 +2239,8 @@ msgstr "" #| "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>." +#| "the concept and the implications. Configuration Item: " +#| "<literal>Acquire::AllowInsecureRepositories</literal>." msgid "" "Allow the update command to acquire unverifiable data from configured " "sources. APT will otherwise fail at the update command for repositories " @@ -2203,7 +2333,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "ファイル" @@ -2614,8 +2744,8 @@ msgstr "注意) dotty は、パッケージのより大きなセットのグラ #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "<literal>dotty</literal> と同様ですが、<ulink url=\"https://www.rw.cdl.uni-" "saarland.de/people/sander/private/html/gsvcg1.html\">VCG tool</ulink> の " @@ -2646,8 +2776,8 @@ msgid "" "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>)." +"architecture for which APT has retrieved package lists " +"(<literal>APT::Architecture</literal>)." msgstr "" "<literal>apt-cache</literal> の <literal>madison</literal> コマンドは、" "Debian アーカイブ管理ツール <literal>madison</literal> の機能のサブセットで、" @@ -2660,12 +2790,12 @@ msgstr "" #: 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>." +"cache used by all operations. Configuration Item: " +"<literal>Dir::Cache::pkgcache</literal>." msgstr "" "パッケージキャッシュを格納するファイルを選択します。パッケージキャッシュは、" -"すべての操作で使用される一次キャッシュです。設定項目: <literal>Dir::Cache::" -"pkgcache</literal>" +"すべての操作で使用される一次キャッシュです。設定項目: " +"<literal>Dir::Cache::pkgcache</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2711,9 +2841,9 @@ msgstr "" 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>." +"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> は全" "依存関係を出力します。この挙動を、ここに挙げたフラグで指定した依存関係を省略" @@ -2743,8 +2873,8 @@ msgid "" "Print full package records when searching. Configuration Item: " "<literal>APT::Cache::ShowFull</literal>." msgstr "" -"search 時に全パッケージレコードを表示します。設定項目: <literal>APT::Cache::" -"ShowFull</literal>" +"search 時に全パッケージレコードを表示します。設定項目: " +"<literal>APT::Cache::ShowFull</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2760,8 +2890,8 @@ msgstr "" "効にするには <option>--no-all-versions</option> を使用してください。" "<option>--no-all-versions</option> を指定すると、候補バージョン (インストール" "の際に選択されるもの) だけ表示します。このオプションは、<literal>show</" -"literal> コマンドでのみ適用できます。設定項目: <literal>APT::Cache::" -"AllVersions</literal>" +"literal> コマンドでのみ適用できます。設定項目: " +"<literal>APT::Cache::AllVersions</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2787,8 +2917,8 @@ msgstr "" #: 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>." +"and missing dependencies. Configuration Item: " +"<literal>APT::Cache::AllNames</literal>." msgstr "" "<literal>pkgnames</literal> で、仮想パッケージや欠落依存関係を含めた全名称を" "表示します。設定項目: <literal>APT::Cache::AllNames</literal>" @@ -2801,8 +2931,8 @@ msgid "" "<literal>APT::Cache::RecurseDepends</literal>." msgstr "" "<literal>depends</literal> や <literal>rdepends</literal> で、指定した全パッ" -"ケージを再帰的に一度に表示します。設定項目: <literal>APT::Cache::" -"RecurseDepends</literal>" +"ケージを再帰的に一度に表示します。設定項目: " +"<literal>APT::Cache::RecurseDepends</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2812,8 +2942,8 @@ msgid "" "<literal>APT::Cache::Installed</literal>." msgstr "" "<literal>depends</literal> や <literal>rdepends</literal> の出力を、現在イン" -"ストールされているパッケージに限定します。設定項目: <literal>APT::Cache::" -"Installed</literal>" +"ストールされているパッケージに限定します。設定項目: " +"<literal>APT::Cache::Installed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2843,8 +2973,8 @@ msgstr "" "<literal>Sources</literal> 及び <literal>Packages</literal> は正しい拡張子を" "付けていれば APT がサポートする任意の形式で圧縮できます。このファイルを同じ" "ディレクトリに複数置く必要がある場合は、自分が付ける名前の部分の最後尾にアン" -"ダースコア (「<literal>_</literal>」) を付加したものを先頭に付けます。例: my." -"example_Packages.xz" +"ダースコア (「<literal>_</literal>」) を付加したものを先頭に付けます。例: " +"my.example_Packages.xz" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2869,315 +2999,6 @@ msgstr "" "<command>apt-cache</command> は正常終了時に 0 を返します。エラー時には十進の " "100 を返します。" -#. type: Content of: <refentry><refnamediv><refpurpose> -#: apt-key.8.xml -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -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 "" -"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><term> -#: apt-key.8.xml -msgid "(deprecated)" -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><term> -#: apt-key.8.xml -#, fuzzy -#| msgid "(deprecated)" -msgid "(mostly deprecated)" -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 "キー &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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Operation" -msgid "Deprecation" -msgstr "操作" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3189,8 +3010,8 @@ 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</" +"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 "" "統合フロントエンドとして使用することができます。例えば、パッケージを自動/手動" @@ -3284,6 +3105,12 @@ msgstr "" "<literal>showmanual</literal> は <literal>showauto</literal> と同様に使用でき" "ますが、手動でインストールされたパッケージの一覧を表示します。" +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "オプション" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3355,6 +3182,13 @@ msgstr "" "ができます。dpkg 選択とも呼ぶこれらの詳細については、dpkg で見つけることがで" "きます。" +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +#, fuzzy +#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3409,6 +3243,66 @@ msgstr "" "単純化するためだけに、その全てを参照するのに <literal>APT</literal> を使って" "います。" +#. 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 "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +#, fuzzy +#| 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." +msgid "" +"Note that a default installation already contains all keys to securely " +"acquire packages from the default repositories, so managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" +"デフォルトのインストールでは、すでにデフォルトのリポジトリからセキュアにパッ" +"ケージを取得するためにすべてのキーが含まれていることに注意してください。その" +"ため、サードパーティのリポジトリを追加している場合は <command>apt-key</" +"command> で操作する必要があります。" + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml #, fuzzy @@ -3634,54 +3528,6 @@ msgid "" "shipped in the repository (as e.g. indicated by the codename)." 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 "" -"<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 #, fuzzy @@ -3713,8 +3559,8 @@ msgstr "" #: 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>." +"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> を実" @@ -3764,9 +3610,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-secure.8.xml +#, fuzzy +#| msgid "" +#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " +#| "&debsign;, &debsig-verify;, &gpg;" msgid "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " "&debsign;, &debsig-verify;, &gpg;" @@ -3775,16 +3625,16 @@ msgstr "" #: 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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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\" " +"manual/ch07\">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> @@ -3841,9 +3691,9 @@ msgid "" msgstr "" "<literal>add</literal> は、新しいディスクを取得元リストに追加します。CD-ROM " "デバイスのアンマウントやディスク挿入のプロンプト表示の後に、ディスクのスキャ" -"ンとインデックスファイルのコピーを行います。ディスクに正しい <filename>." -"disk</filename> ディレクトリが存在しない場合、タイトルを入力するよう促しま" -"す。" +"ンとインデックスファイルのコピーを行います。ディスクに正しい " +"<filename>.disk</filename> ディレクトリが存在しない場合、タイトルを入力するよ" +"う促します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -3869,8 +3719,8 @@ msgstr "" #: 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>." +"<option>--cdrom</option> option. Configuration Item: " +"<literal>Acquire::cdrom::AutoDetect</literal>." msgstr "" "CD-ROM パスの自動検出を試行しません。通常、<option>--cdrom</option> オプショ" "ンと組み合わせて使います。設定項目: <literal>Acquire::cdrom::AutoDetect</" @@ -3902,8 +3752,8 @@ msgstr "" #: 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>." +"unmounting the mount point. Configuration Item: " +"<literal>APT::CDROM::NoMount</literal>." msgstr "" "マウントなし - <command>apt-cdrom</command> が、マウントポイントにマウント・" "アンマウントしないようにします。設定項目: <literal>APT::CDROM::NoMount</" @@ -3942,8 +3792,8 @@ msgid "" "<literal>APT::CDROM::NoAct</literal>." msgstr "" "変更なし - &sources-list; ファイルの変更や、インデックスファイルの書き込みを" -"行いません。とはいえ、すべてのチェックは行います。設定項目: <literal>APT::" -"CDROM::NoAct</literal>" +"行いません。とはいえ、すべてのチェックは行います。設定項目: " +"<literal>APT::CDROM::NoAct</literal>" #. type: Content of: <refentry><refsect1><para> #: apt-cdrom.8.xml @@ -4006,8 +3856,8 @@ 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>." +"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> となります。" @@ -4055,9 +3905,9 @@ msgstr "" "各設定オプションの出力を定義します。%t はオプション名に、%f は" "完全オプション名に、%v はオプションの値に置換されます。大文字や特殊文" "字を使用する値は、安全を保証するために、RFC822 で定義されている quoted-" -"string でエンコードされることになります。さらに、%n は改行に、%" -"N はタブ文字になります。% を出力するには、%% としてくだ" -"さい。" +"string でエンコードされることになります。さらに、%n は改行に、" +"%N はタブ文字になります。% を出力するには、%% と" +"してください。" #. type: Content of: <refentry><refsect1><para> #: apt-config.8.xml apt-extracttemplates.1.xml apt-sortpkgs.1.xml @@ -4128,9 +3978,9 @@ msgid "" "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." +"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>\" となってお" @@ -4178,9 +4028,9 @@ msgid "" "their parent groups." msgstr "" "設定ファイルは、機能グループごとに系統立てられたオプションを木構造で表しま" -"す。オプションの指定は、2 つのコロンで区切ります。例えば <literal>APT::Get::" -"Assume-Yes</literal> は、APT ツールグループの Get ツール用オプションです。オ" -"プションは、親グループからは継承しません。" +"す。オプションの指定は、2 つのコロンで区切ります。例えば " +"<literal>APT::Get::Assume-Yes</literal> は、APT ツールグループの Get ツール用" +"オプションです。オプションは、親グループからは継承しません。" #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -4413,6 +4263,55 @@ msgstr "" "add-architecture</command> を用いて、外部アーキテクチャをデフォルトリストに追" "加します。" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"This scope defines colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4682,8 +4581,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -4881,124 +4780,38 @@ msgid "" "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 "" -"The options in these scopes configure APT's acquire transports for the " -"protocols HTTP and HTTPS and are documented in the &apt-transport-http; and " -"&apt-transport-https; manpages respectively." -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::<host></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::<host></" -"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 "" -"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> オプションは、この方法でのタイムアウトまでの時間を" -"設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれていま" -"す。" +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 "" -"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)." +"Number of retries to perform. If this is non-zero APT will retry failed " +"files the given number of times." msgstr "" -"設定のいくつかは、パッシブモードを制御するものです。一般的に、パッシブモード" -"のままにしておく方が安全で、ほぼどんな環境でも動作します。しかしある状況下で" -"は、パッシブモードが無効のため、代わりにポートモード FTP を使用する必要があり" -"ます。この設定は、プロキシを通る接続や特定のホストへの接続全般に有効です (設" -"定例はサンプル設定ファイルを参照してください)。" +"リトライの回数を設定します。0 でない場合、APT は失敗したファイルに対して、与" +"えられた回数だけリトライを行います。" #. 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." +"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 "" -"環境変数 <envar>ftp_proxy</envar> に HTTP URL を指定すると FTP over HTTP のプ" -"ロキシが利用可能になります。構文は前述の http についての説明を参照してくださ" -"い。設定ファイルの中でこれをセットすることはできません。また、効率が悪いため " -"FTP over HTTP を使用するのは推奨しません。" +"ソースアーカイブのシンボリックリンクを使用します。true がセットされていると" +"き、可能ならコピーの代わりにシンボリックリンクを張ります。true がデフォルトで" +"す。" #. 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." +"The options in these scopes configure APT's acquire transports for the " +"protocols HTTP and HTTPS and are documented in the &apt-transport-http; and " +"&apt-transport-https; manpages respectively." 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 @@ -5020,12 +4833,12 @@ msgid "" 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 で指定することができます。" +"うに、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 @@ -5191,9 +5004,9 @@ msgid "" "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 " +"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 " @@ -5202,21 +5015,21 @@ msgid "" "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\" に設定されているだけの場合、" +"デフォルトのリストには \"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\"/>" +"<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 @@ -5318,44 +5131,46 @@ msgid "" "<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." +"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>' がこのオプションで利用可能です。こ" -"の場合、可能であれば別のソースが試行されます。" +"<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><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5365,14 +5180,15 @@ msgstr "" #| "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 " +#| "<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, " @@ -5390,40 +5206,43 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots 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>' がこのオプションで利用可能です。こ" -"の場合、可能であれば別のソースが試行されます。" +"<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 @@ -5435,9 +5254,9 @@ msgstr "バイナリユーザ設定" 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>." +"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</" @@ -5509,15 +5328,15 @@ msgid "" "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>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> はデフォルトディレクト" -"リを含んでいます。" +"srcpkgcache よりも pkgcache を無効にすることが多いと思います。" +"<literal>Dir::State</literal> と同様、<literal>Dir::Cache</literal> はデフォ" +"ルトディレクトリを含んでいます。" #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -5547,19 +5366,19 @@ 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 " +"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> 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> はそれぞれ" -"プログラムの場所を指定します。" +"literal> <literal>dpkg-buildpackage</literal>, <literal>apt-cache</literal> " +"はそれぞれプログラムの場所を指定します。" #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -5742,9 +5561,9 @@ msgid "" "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." +"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> 中のイコール記号、改行、非印字可能文字、引用符、およ" @@ -5786,11 +5605,10 @@ msgid "" "it should be read as \"no\" and users are encouraged to support both." msgstr "" "バージョン 3 では、各バージョンフィールドの後に、このバージョンのアーキテク" -"チャが続きます。バージョンなしの場合は \"-\" 、そして MultiArch 型 " -"\"same\"、\"foreign\"、\"allowed\" または \"none\" を示すフィール" -"ド。\"none\" は単に互換性を維持するために残された、誤った型名であることに注意" -"してください。それは\"no\" と読まれるべきで、ユーザは両方をサポートすることを" -"お勧めします。" +"チャが続きます。バージョンなしの場合は \"-\" 、そして MultiArch 型 \"same\"、" +"\"foreign\"、\"allowed\" または \"none\" を示すフィールド。\"none\" は単に互" +"換性を維持するために残された、誤った型名であることに注意してください。それは" +"\"no\" と読まれるべきで、ユーザは両方をサポートすることをお勧めします。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5871,10 +5689,11 @@ msgid "" "<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 の定期更新の挙動を設定します。このオプショ" -"ンのドキュメントは、このスクリプトの先頭を参照してください。" +"オプションの <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 @@ -5952,11 +5771,6 @@ msgid "" 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." @@ -6066,8 +5880,8 @@ 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." +"to the full <literal>apt</literal> dependency resolver; see " +"<literal>Debug::pkgProblemResolver</literal> for that." msgstr "" "依存関係解決のために、どのパッケージが自動的にインストールされたかのデバッグ" "メッセージを生成します。これは完全な <literal>apt</literal> 依存関係解決プロ" @@ -6083,26 +5897,27 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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 <a." -"b.c -> d.e.f | x.y.z> (section)</literal> が続きます。ここで、" -"<literal>a.b.c</literal> は、そのパッケージの現在のバージョン、<literal>d.e." -"f</literal>は、インストール予定のバージョン、<literal>x.y.z</literal> はより" -"新しいけれどインストール対象外のバージョン (pin のスコアが低いため) です。後" -"のふたつは、存在しない、ないしインストール中のバージョンと同じ場合、省略され" -"ます。<literal>section</literal> はパッケージが現れるセクション名です。" +"literal>, <literal>MarkInstall</literal> となり、<literal>package-name " +"<a.b.c -> d.e.f | x.y.z> (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 @@ -6165,8 +5980,8 @@ 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>." +"Print information about the vendors read from <filename>/etc/apt/" +"vendors.list</filename>." msgstr "" "<filename>/etc/apt/vendors.list</filename> から読み込んだ、ベンダの情報を出力" "します。" @@ -6174,8 +5989,8 @@ 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 " +"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のフックにより呼び出される外部コマンドを表示します。これには例えば、設定オ" @@ -6282,15 +6097,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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> ディレクトリにあるファイルは、英" "数字の昇順で解析され、以下の命名規約に従う必要があることに注意してください。" @@ -6300,6 +6124,17 @@ msgstr "" "致するもの以外に対して、ファイルを無視するという注意を APT が出力します。一致" "する場合は黙って無視します。" +#. type: Content of: <refentry><refsect1><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6375,9 +6210,9 @@ msgid "" "phased on this systems." msgstr "" "Debian の <literal>experimental</literal> アーカイブのように、" -"<filename>Release</filename> ファイルに \"NotAutomatic: yes\" とマークさ" -"れ、\"ButAutomaticUpgrades: yes\" とマークされて<emphasis>いない</emphasis>" -"アーカイブ由来のバージョン。" +"<filename>Release</filename> ファイルに \"NotAutomatic: yes\" とマークされ、" +"\"ButAutomaticUpgrades: yes\" とマークされて<emphasis>いない</emphasis>アーカ" +"イブ由来のバージョン。" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> #: apt_preferences.5.xml @@ -6619,6 +6454,27 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Package: perl\n" +#| "Pin: version &good-perl;*\n" +#| "Pin-Priority: 1001\n" +msgid "" +"Package: perl\n" +"Pin: source-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 "" @@ -6665,9 +6521,9 @@ msgid "" "hostname \"ftp.de.debian.org\"" msgstr "" "注意: ここで使われるキーワードは、ホスト名にマッチするのに使われる " -"\"<literal>origin</literal>\" です。以下のレコードは、ホスト名が \"ftp.de." -"debian.org\" で識別されるサーバ由来のすべてのバージョンに、高い優先度を割り当" -"てます。" +"\"<literal>origin</literal>\" です。以下のレコードは、ホスト名が " +"\"ftp.de.debian.org\" で識別されるサーバ由来のすべてのバージョンに、高い優先" +"度を割り当てます。" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> #: apt_preferences.5.xml @@ -6931,9 +6787,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -7101,9 +6957,9 @@ msgstr "すると、以下のように動作します。" 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." +"\"<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> の最新の利用可能パッケージがインストールされます。" @@ -7224,8 +7080,8 @@ msgid "" "archive. Specifying this value in the APT preferences file would require " "the line:" msgstr "" -"このディレクトリツリーに属する全パッケージのアーカイブ名です。例え" -"ば、\"Archive: stable\" や \"Suite: stable\" という行は、<filename>Release</" +"このディレクトリツリーに属する全パッケージのアーカイブ名です。例えば、" +"\"Archive: stable\" や \"Suite: stable\" という行は、<filename>Release</" "filename> ファイルの親ディレクトリツリー以下にある全パッケージが、" "<literal>stable</literal> アーカイブだと指定します。APT プリファレンスファイ" "ルでこの値を指定するには、以下の行が必要になります。" @@ -7251,8 +7107,8 @@ msgid "" "testing-codename;</literal>. Specifying this value in the APT preferences " "file would require the line:" msgstr "" -"このディレクトリツリーに属する全パッケージのコード名です。たとえ" -"ば、\"Codename: &debian-testing-codename;\" という行は、<filename>Release</" +"このディレクトリツリーに属する全パッケージのコード名です。たとえば、" +"\"Codename: &debian-testing-codename;\" という行は、<filename>Release</" "filename> ファイルの親ディレクトリツリー以下にある全パッケージが、" "<literal>&debian-testing-codename;</literal> と名前のついたバージョンであると" "指定します。APT プリファレンスファイルでこの値を指定するには、以下の行が必要" @@ -7374,23 +7230,23 @@ msgid "" "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." +"<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> ファイルを含んでいます。" +"に取得されます。例えば、" +"<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 @@ -7714,6 +7570,17 @@ msgstr "" "能な情報は、<command>apt-get update</command> (や、ほかの APT フロントエンド" "の同等のコマンド) で取得します。" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -7743,6 +7610,16 @@ msgstr "" "定リストのパターンに一致するもの以外に対して、ファイルを無視するという注意を " "APT が出力します。一致する場合は黙って無視します。" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -7796,6 +7673,12 @@ msgstr "" "するので、マルチアーキテクチャのサポートの導入前には珍しいオプションに遭遇す" "ることを期待しないかもしれないことに注意してください。" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8047,10 +7930,17 @@ 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\"/>" +#, fuzzy +#| 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\"/>" +msgid "" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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 " @@ -8084,6 +7974,33 @@ msgstr "" "でください。ここでは明示的にそれらの名前はリストしていません。サポートされて" "いないオプションは、すべての APT バージョンで黙って無視されます。" +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 "" @@ -8116,11 +8033,12 @@ msgstr "" 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." +"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 がその取得元から取得するダウンロード対象を定義します。指定しない場合" @@ -8283,18 +8201,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) は、(<literal>_apt</" "literal> ユーザがアクセス可能かつ読み取り可能な必要があり、つまりすべてのユー" @@ -8321,8 +8238,9 @@ msgid "" "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>." +"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 値です。リポジトリの作" @@ -8359,9 +8277,9 @@ msgstr "" "Until フィールドがないものを提供する場合、-Max は特に有用です。-Min は完全に" "チェックを無効にする代わりに (sources.list 同様にある) より頻繁に更新があるミ" "ラーの、あまりアクセスされないアーカイブの有効期間を増やすことができます。設" -"定オプション <option>Acquire::Min-ValidTime</option> および <option>Acquire::" -"Max-ValidTime</option> の値がデフォルトになり、その両方のデフォルト値は " -"unset です。" +"定オプション <option>Acquire::Min-ValidTime</option> および " +"<option>Acquire::Max-ValidTime</option> の値がデフォルトになり、その両方のデ" +"フォルト値は unset です。" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8400,19 +8318,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -8530,43 +8438,6 @@ msgstr "" "るようにします。取得元リストに cdrom エントリを追加するには、&apt-cdrom; プロ" "グラムを使用してください。" -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -#, fuzzy -#| 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." -msgid "" -"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 "" @@ -8579,20 +8450,6 @@ msgstr "" "キャッシュディレクトリにコピーするところが違います。リムーバブルメディアを使" "用していて、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" @@ -8782,62 +8639,62 @@ 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 " +"Uses HTTPS to access the archive at deb.debian.org, under the debian " "directory, and uses only the &debian-stable-codename;/contrib area." msgstr "" -"ftp.debian.org のアーカイブに FTP アクセスし、debian ディレクトリ以下の " +"deb.debian.org のアーカイブに HTTPS アクセスし、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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"ftp.debian.org のアーカイブに FTP アクセスし、debian ディレクトリ以下の " +"deb.debian.org のアーカイブに HTTPS アクセスし、debian ディレクトリ以下の " "unstable/contrib のみを使用します。<filename>sources.list</filename> に上記サ" -"ンプルと一緒に指定された場合、両方のリソース行に対応する FTP セッションはひと" -"つだけになります。" +"ンプルと一緒に指定された場合、両方のリソース行に対応する HTTPS セッションはひ" +"とつだけになります。" #. 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -8920,6 +8777,58 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\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 "Doesn't allow the optional parameter --snapshot." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb deb-src\n" +#| "URIs: http://deb.debian.org/debian\n" +#| "Suites: stable testing unstable\n" +#| "Components: main contrib\n" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\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;" @@ -8970,17 +8879,17 @@ msgid "" "<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> といった形に" -"なります。" +"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>" +"template files and config scripts. Configuration Item: " +"<literal>APT::ExtractTemplates::TempDir</literal>" msgstr "" "抽出した <command>debconf</command> テンプレートファイルや設定スクリプトを書" "き出す一時ディレクトリ。設定項目: <literal>APT::ExtractTemplates::TempDir</" @@ -9022,8 +8931,8 @@ 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>." +"Use source index field ordering. Configuration Item: " +"<literal>APT::SortPkgs::Source</literal>." msgstr "" "ソースインデックスフィールド順に並べ替えに使用します。設定項目: " "<literal>APT::SortPkgs::Source</literal>" @@ -9152,10 +9061,10 @@ msgid "" "<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." +"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 ファイ" "ルを生成します。与えたディレクトリを再帰的に検索し、未圧縮の " @@ -9183,15 +9092,16 @@ msgid "" "<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> です。" +"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 @@ -9326,8 +9236,8 @@ msgid "" "Sets the default list of file extensions that are package files. This " "defaults to '.deb'." msgstr "" -"パッケージファイル拡張子のデフォルト値を列挙します。このデフォルト値は '." -"deb' です。" +"パッケージファイル拡張子のデフォルト値を列挙します。このデフォルト値は " +"'.deb' です。" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -9404,8 +9314,8 @@ msgstr "<literal>TreeDefault</literal> セクション" #: 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." +"variables are substitution variables and have the strings $(DIST), $" +"(SECTION) and $(ARCH) replaced with their respective values." msgstr "" "特定の <literal>Tree</literal> セクションのデフォルトを設定します。これらの変" "数はすべて置換変数であり、文字列 $(DIST), $(SECTION), $(ARCH) をそれぞれの値" @@ -9440,17 +9350,17 @@ 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>" +"Sets the top of the .deb directory tree. Defaults to <filename>$(DIST)/$" +"(SECTION)/binary-$(ARCH)/</filename>" msgstr "" -".deb ディレクトリツリーの先頭を設定します。デフォルトは <filename>$(DIST)/" -"$(SECTION)/binary-$(ARCH)/</filename> です。" +".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>" +"Sets the top of the source package directory tree. Defaults to <filename>$" +"(DIST)/$(SECTION)/source/</filename>" msgstr "" "ソースパッケージディレクトリツリーの先頭を設定します。デフォルトは " "<filename>$(DIST)/$(SECTION)/source/</filename> です。" @@ -9461,8 +9371,8 @@ msgid "" "Sets the output Packages file. Defaults to <filename>$(DIST)/$(SECTION)/" "binary-$(ARCH)/Packages</filename>" msgstr "" -"Packages ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/" -"$(SECTION)/binary-$(ARCH)/Packages</filename> です。" +"Packages ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/$" +"(SECTION)/binary-$(ARCH)/Packages</filename> です。" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -9470,19 +9380,19 @@ msgid "" "Sets the output Sources file. Defaults to <filename>$(DIST)/$(SECTION)/" "source/Sources</filename>" msgstr "" -"Sources ファイルの出力先を設定します。デフォルトは <filename>$(DIST)/" -"$(SECTION)/source/Sources</filename> です。" +"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>" +"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> です。" +"マスターファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/$" +"(SECTION)/i18n/Translation-en</filename> です。" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -9503,8 +9413,8 @@ msgid "" "ftparchive</command> will integrate those package files together " "automatically." msgstr "" -"Contents ファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/" -"$(SECTION)/Contents-$(ARCH)</filename> です。複数の Packages ファイルをひとつ" +"Contents ファイルの出力先を設定します。デフォルトは、<filename>$(DIST)/$" +"(SECTION)/Contents-$(ARCH)</filename> です。複数の Packages ファイルをひとつ" "の Contents ファイルにまとめられる設定 (デフォルト) の場合、<command>apt-" "ftparchive</command> は自動でパッケージファイルをまとめます。" @@ -9898,11 +9808,11 @@ 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>." +"Make the caching databases read only. Configuration Item: " +"<literal>APT::FTPArchive::ReadOnlyDB</literal>." msgstr "" -"キャッシュデータベースを読み取り専用にします。設定項目: <literal>APT::" -"FTPArchive::ReadOnlyDB</literal>" +"キャッシュデータベースを読み取り専用にします。設定項目: " +"<literal>APT::FTPArchive::ReadOnlyDB</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml @@ -10093,16 +10003,16 @@ msgstr "サンプル" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml @@ -10271,16 +10181,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> @@ -10304,14 +10215,14 @@ msgstr "" #| "store the requested archive files in its cache, which can be used to " #| "prevent the proxy from polluting its cache with (big) .deb files." msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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> はプロキシに対して、いかなる時もキャッシュを使用" @@ -10340,11 +10251,11 @@ msgstr "ユーザ設定" #| "</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>." +#| "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>." 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 " @@ -10384,8 +10295,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10444,12 +10355,12 @@ msgstr "" #| "by setting the value to 0. It is enabled by default with the value 10." 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 work around 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." +"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 work around 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 節) を有効にするのに使用" @@ -10546,9 +10457,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10577,9 +10488,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -10625,11 +10537,11 @@ msgstr "" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -10831,9 +10743,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> @@ -10853,9 +10765,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> #: apt-transport-mirror.1.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml @@ -11480,6 +11392,16 @@ msgstr "" msgid "<code>~DSuggests:PATTERN</code>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -11533,8 +11455,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -11656,10 +11578,10 @@ msgstr "" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -11919,13 +11841,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ stable/binary-i386/ Packages\n" "取得 http://llug.sep.bnl.gov/debian/ testing/contrib Packages\n" "パッケージリストを読み込んでいます... 完了\n" @@ -12092,8 +12014,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12105,8 +12027,8 @@ msgstr "" "\n" " 例:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12128,26 +12050,31 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\n" "\n" " Distribution [stable]:\n" msgstr "" " 取得するディストリビューションのタグやパッケージファイルへのパスを\n" " / で終える形式で指定してください。ディストリビューションのタグには\n" -" 以下のようなものがあります: stable unstable testing non-US\n" +" 以下のようなものがあります: stable unstable testing\n" "\n" " ディストリビューション [stable]:\n" #. type: Content of: <book><chapter><para> #: guide.dbk +#, fuzzy +#| 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." 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." +"<emphasis>unstable</emphasis> refers to the developmental version." msgstr "" "ディストリビューションはアーカイブ中の Debian バージョンを参照し、" "<emphasis>stable</emphasis> は最新のリリース版を、<emphasis>unstable</" @@ -12227,8 +12154,8 @@ msgid "" "<literal>Dselect::clean \"prompt\";</literal> in /etc/apt/apt.conf." msgstr "" "デフォルトで APT はインストールに成功したパッケージ (.deb) ファイルを自動的に" -"削除します。この挙動を変更するには /etc/apt/apt.conf 中に <literal>Dselect::" -"clean \"prompt\";</literal> と記述します。" +"削除します。この挙動を変更するには /etc/apt/apt.conf 中に " +"<literal>Dselect::clean \"prompt\";</literal> と記述します。" #. type: Content of: <book><chapter><title> #: guide.dbk @@ -12690,18 +12617,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" +"取得:1 http://ftp.de.debian.org/debian/ stable/main 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" +"取得:4 http://ftp.de.debian.org/debian/ 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" @@ -13230,6 +13157,350 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" msgid "Which will use the already fetched archives on the disc." msgstr "これで、ディスクにある取得済みのアーカイブを使用するようになります。" +#~ 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::<host></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::<host></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> です。" + +#~ 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> オプションは、この方法でのタイムアウトまでの時" +#~ "間を設定します。これには、接続のタイムアウトとデータのタイムアウトが含まれ" +#~ "ています。" + +#~ 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 を使用する必" +#~ "要があります。この設定は、プロキシを通る接続や特定のホストへの接続全般に有" +#~ "効です (設定例はサンプル設定ファイルを参照してください)。" + +#~ 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 を使用するのは推奨しません。" + +#~ 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 をサポートしていないことに注意してください。" + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "FTP を用いたパッケージのダウンロードに関する情報を出力します。" + +#, fuzzy +#~| 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." +#~ msgid "" +#~ "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 を利用するプロキシが指定してあって" +#~ "も、無視されます。" + +#~ 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> コマンドを使用し" +#~ "ます。" + +#~ 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\">" + +#, fuzzy +#~| msgid "APT key management utility" +#~ msgid "Deprecated APT key management utility" +#~ msgstr "APT キー管理ユーティリティ" + +#~ 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 が パッケージを認証するのに使用するキー" +#~ "の一覧を管理するのに使用します。このキーで認証されたパッケージは、信頼する" +#~ "に足ると見なせるでしょう。" + +#~ msgid "Supported keyring files" +#~ msgstr "サポートするキーリングファイル" + +#~ 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> を使ってください。" + +#~ 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>」を付けられた保護付" +#~ "きアスキー形式を代わりに使うこともできます。 " + +#~ msgid "Commands" +#~ msgstr "コマンド" + +#~ msgid "(deprecated)" +#~ msgstr "(非推奨)" + +#~ 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> とすると、標準入力から読み込みます。" + +#~ 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; インフラが完全に損なわれます。" + +#~ 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> ディレクトリに直接配置する方法もあります。" + +#, fuzzy +#~| msgid "(deprecated)" +#~ msgid "(mostly deprecated)" +#~ msgstr "(非推奨)" + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "信頼キー一覧からキーを削除します。" + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "キー &synopsis-param-keyid; を標準出力に出力します。" + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "信頼するキーをすべて標準出力に出力します。" + +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "信頼キーとそのフィンガープリントを一覧表示します。" + +#, 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; インフラを完全に傷つけま" +#~ "す。" + +#~ 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; パッケージ) で提供" +#~ "されています。" + +#~ 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> への依存を回避でき、鍵の管理は単純にファイ" +#~ "ルを追加、削除するだけになるため、メンテナにとってもユーザにとっても同様に" +#~ "容易になります。" + +#~ 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 では有効です。" + +#~ msgid "" +#~ "Note that options need to be defined before the commands described in the " +#~ "previous section." +#~ msgstr "" +#~ "前節で説明したコマンドの前に、このオプションを定義する必要があることに注意" +#~ "してください。" + +#~ 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> が" +#~ "プライマリキーリングになります。つまり新しいキーはこのファイルに追加されま" +#~ "す。" + +#, fuzzy +#~| msgid "Operation" +#~ msgid "Deprecation" +#~ msgstr "操作" + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#~ 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> を介して制限可能で" +#~ "す。" + +#~ 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> ファイルをダウンロード・検証できるように" +#~ "なります。" + #~ msgid "Describes the process of resolving build-dependencies in &apt-get;." #~ msgstr "&apt-get; での構築依存関係解決のプロセスを説明します。" @@ -13256,20 +13527,20 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用 #~ 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::<host></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." +#~ "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::<host></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::<" -#~ "host></literal> という形で指定できます。この時、プロキシを使用しないと" -#~ "いう意味の特殊キーワード <literal>DIRECT</literal> も使用できます。上記の" -#~ "設定をなにも指定しないと、環境変数 <envar>http_proxy</envar> を使用しま" -#~ "す。" +#~ "う標準形で表します。ホストごとのプロキシを、" +#~ "<literal>http::Proxy::<host></literal> という形で指定できます。この" +#~ "時、プロキシを使用しないという意味の特殊キーワード <literal>DIRECT</" +#~ "literal> も使用できます。上記の設定をなにも指定しないと、環境変数 " +#~ "<envar>http_proxy</envar> を使用します。" #~ msgid "" #~ "The <literal>Cache-control</literal>, <literal>Timeout</literal>, " @@ -13291,19 +13562,19 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用 #~ "info about trusted certificates. <literal><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::SslForceVersion</" #~ "literal> is the corresponding per-host option." #~ msgstr "" #~ "<literal>CaInfo</literal> サブオプションは、信頼済み証明書情報の保持場所を" @@ -13314,14 +13585,15 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用 #~ "ションです。<literal>Verify-Host</literal> 真偽値サブオプションは、サーバ" #~ "のホスト名を検証するかどうかを決定します。<literal><host>::Verify-" #~ "Host</literal> は、同様のホストごとのオプションです。<literal>SslCert</" -#~ "literal> は、クライアント認証に使用する証明書を決定します。<literal><" -#~ "host>::SslCert</literal> は、同様のホストごとのオプションです。" -#~ "<literal>SslKey</literal> は、クライアント認証に使用する秘密鍵を決定しま" -#~ "す。<literal><host>::SslKey</literal> は、同様のホストごとのオプショ" -#~ "ンです。<literal>SslForceVersion</literal> は、デフォルトで使用する SSL の" -#~ "バージョンを上書きします。'<literal>TLSv1</literal>' か '<literal>SSLv3</" -#~ "literal>' という文字列を指定できます。<literal><host>::" -#~ "SslForceVersion</literal> は、同様のホストごとのオプションです。" +#~ "literal> は、クライアント認証に使用する証明書を決定します。" +#~ "<literal><host>::SslCert</literal> は、同様のホストごとのオプション" +#~ "です。<literal>SslKey</literal> は、クライアント認証に使用する秘密鍵を決定" +#~ "します。<literal><host>::SslKey</literal> は、同様のホストごとのオプ" +#~ "ションです。<literal>SslForceVersion</literal> は、デフォルトで使用する " +#~ "SSL のバージョンを上書きします。'<literal>TLSv1</literal>' か " +#~ "'<literal>SSLv3</literal>' という文字列を指定できます。" +#~ "<literal><host>::SslForceVersion</literal> は、同様のホストごとのオ" +#~ "プションです。" #~ msgid "" #~ "The http scheme specifies an HTTP server for the archive. If an " @@ -13342,9 +13614,10 @@ msgstr "これで、ディスクにある取得済みのアーカイブを使用 #~ "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." +#~ "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;!) はこの後方互換性に影響のある変更" #~ "に対応するための少しばかり長い猶予期間として、証明されていないアーカイブに" diff --git a/doc/po/nl.po b/doc/po/nl.po index b1154ea..cdf0dd5 100644 --- a/doc/po/nl.po +++ b/doc/po/nl.po @@ -1,13 +1,13 @@ # 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-2024. +# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015-2025. # msgid "" msgstr "" -"Project-Id-Version: apt-doc 2.7.12\n" +"Project-Id-Version: apt-doc 3.0.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-03-22 10:14+0000\n" -"PO-Revision-Date: 2024-02-26 22:00+0100\n" +"POT-Creation-Date: 2025-06-13 12:44+0200\n" +"PO-Revision-Date: 2025-04-15 20:43+0200\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" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 3.2.2\n" #. type: Plain text #: apt.ent @@ -141,6 +141,24 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Controle- (en kennisgevings)berichten tonen. Dit heeft voorrang op de optie quiet, maar alleen voor waarschuwingsberichten, niet voor voortgangsberichten.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" + #. type: Plain text #: apt.ent #, no-wrap @@ -184,7 +202,6 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" -"\">\n" msgstr "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -196,6 +213,31 @@ msgstr "" " </para>\n" " </listitem>\n" " </varlistentry>\n" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +"\">\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Kleur aan- of uitzetten. Kleur staat standaard aan voor &apt; op ondersteunde terminals en\n" +"kan ook uitgezet worden met de omgevingsvariabelen <envar>NO_COLOR</envar> en <envar>APT_NO_COLOR</envar>,\n" +"of verder geconfigureerd worden met de configuratieoptie en -scope <option>APT::Color</option>; zie &apt-conf; voor informatie hierover.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -522,11 +564,12 @@ 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\">" +"<!-- 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 " +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " "\"configuratietekenreeks\">" #. type: Plain text @@ -541,12 +584,12 @@ 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 " +"<!-- 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 " +"<!-- 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 @@ -597,11 +640,11 @@ 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\">" +"<!-- 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\">" +"<!-- 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 @@ -663,28 +706,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -694,12 +727,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Omschrijving" @@ -791,7 +823,7 @@ msgstr "" "systeem volledig op te waarderen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -901,6 +933,38 @@ msgstr "" "Voorbeeld: <literal>apt satisfy \"foo, bar (>= 1.0)\" \"Conflicts: baz, " "fuzz\"</literal>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -1017,11 +1081,11 @@ msgstr "" "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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Zie ook" @@ -1097,9 +1161,9 @@ msgid "" 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</" +"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 " @@ -1235,7 +1299,7 @@ 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 " +"Beide versieselectiemechanismes kunnen pakketten downgraden en moeten met " "zorg gebruikt worden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1470,8 +1534,8 @@ msgid "" "Example: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>> " "1.0) | bar (= 2.0), moo\"</literal>" msgstr "" -"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz (>" -"> 1.0) | bar (= 2.0), moo\"</literal>" +"Voorbeeld: <literal>apt-get satisfy \"foo\" \"Conflicts: bar\" \"baz " +"(>> 1.0) | bar (= 2.0), moo\"</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1668,8 +1732,8 @@ msgid "" "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>." +"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 " @@ -1715,8 +1779,8 @@ msgid "" 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>." +"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 @@ -1760,9 +1824,9 @@ msgstr "" "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>." +"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 @@ -1794,17 +1858,17 @@ msgstr "" "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>." +"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>." +"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>." +"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 @@ -1812,7 +1876,7 @@ 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. " +"Geen lijst weergeven van alle pakketten die opgewaardeerd zullen worden. " "Configuratie-item: <literal>APT::Get::Show-Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1821,18 +1885,38 @@ 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 " +"Het volledige versienummer weergeven 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 "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" +"Pakketlijsten weergeven zonder deze in kolommen te rangschikken. Standaard " +"worden pakketlijsten afgedrukt in de stijl van het commando \"ls\". " +"Configuratie-item: <literal>APT::Get::List-Columns</literal>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" +"De opgegeven waarde toevoegen aan het veld <literal>Comment:</literal> in " +"history.log Configuratie-item: <literal>APT::History::Comment</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>." +"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 " @@ -1855,8 +1939,8 @@ msgstr "" "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>." +"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 @@ -1864,8 +1948,8 @@ 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>." +"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 @@ -1926,8 +2010,8 @@ 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>." +"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 @@ -1938,10 +2022,10 @@ msgid "" "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 " +"voortgaat als het downgradings 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." +"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 @@ -2006,8 +2090,8 @@ msgid "" "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>." +"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 " @@ -2030,8 +2114,8 @@ 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>." +"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 @@ -2049,16 +2133,16 @@ msgid "" "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>." +"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>." +"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 @@ -2180,8 +2264,9 @@ msgid "" "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>." +"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 @@ -2344,7 +2429,7 @@ msgstr "" "update && apt install</literal>" #. 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Bestanden" @@ -2779,12 +2864,12 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Hetzelfde als <literal>dotty</literal>, maar dan voor xvcg uit het <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG gereedschap</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG gereedschap</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2813,8 +2898,8 @@ msgid "" "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>)." +"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 " @@ -2828,8 +2913,8 @@ msgstr "" #: 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>." +"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-" @@ -2883,9 +2968,9 @@ msgstr "" 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>." +"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 " @@ -2948,8 +3033,8 @@ msgid "" 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>." +"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 @@ -2958,19 +3043,19 @@ msgid "" "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>." +"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>." +"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>." +"pakketten en ontbrekende vereisten. Configuratie-item: " +"<literal>APT::Cache::AllNames</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -3049,348 +3134,6 @@ 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 "Deprecated APT key management utility" -msgstr "Verouderd 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" -"Het gebruik van <command>apt-key</command> is verouderd, behalve voor het " -"gebruik van <command>apt-key del</command> in scripts van pakketonderhouders " -"om bestaande sleutels te verwijderen uit de hoofdsleutelbos. Indien een " -"dergelijk gebruik van <command>apt-key</command> gewenst is, is bijkomend de " -"installatie vereist van de suite GNU Privacy Guard (verpakt in " -"<package>gnupg</package>)." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -msgstr "" -"apt-key(8) zal voor het laatst beschikbaar zijn in Debian 12 en Ubuntu 24.04." - -#. 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><term> -#: apt-key.8.xml -msgid "(deprecated)" -msgstr "(verouderd)" - -#. 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><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -msgstr "(meestal verouderd)" - -#. 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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -msgid "Deprecation" -msgstr "Uitfasering" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" -"Met uitzondering van het gebruik van <command>apt-key del</command> in " -"scripts van de pakketbeheerder, wordt het gebruik van <command>apt-key</" -"command> uitgefaseerd. In deze onderafdeling wordt getoond hoe bestaand " -"gebruik van <command>apt-key</command> vervangen kan worden." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" -"Indien uw huidig gebruik van <command>apt-key add</command> iets " -"gelijkaardigs is aan dit:" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" -"dan kunt u dit onmiddellijk vervangen door dit (maar let op de onderstaande " -"aanbeveling):" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" -"Zorg ervoor dat u de extensie \"<literal>asc</literal>\" gebruikt voor met " -"ASCII gepantserde sleutels en de extensie \"<literal>gpg</literal>\" voor " -"het binaire OpenPGP formaat (ook bekend als \"openbare sleutelbos voor GPG-" -"sleutels\"). Het binaire OpenPGP-formaat werkt voor alle versies van apt, " -"terwijl het met ASCII gepantserde formaat werkt voor apt-versie >= 1.4." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -msgstr "" -"<emphasis>Aanbevolen:</emphasis> in plaats van de sleutels te plaatsen in de " -"map <filename>/etc/apt/trusted.gpg.d</filename>, kunt u ze om het even waar " -"plaatsen in uw bestandssysteem door in uw <literal>sources.list</literal> de " -"optie <literal>Signed-By</literal> te gebruiken en te verwijzen naar de " -"bestandsnaam van de sleutel. Zie &sources-list; voor details. Sinds APT 2.4 " -"wordt <filename>/etc/apt/keyrings</filename> voorzien als de aanbevolen " -"locatie voor sleutels die niet door pakketten worden beheerd. Wanneer u een " -"sources.list gebruikt in de deb822-stijl en een versie gebruikt van apt >= " -"2.4, dan kunt u de optie <literal>Signed-By</literal> ook gebruiken om de " -"volledige met ASCII gepantserde sleutelbos rechtstreeks op te nemen in " -"<literal>sources.list</literal> zonder een extra bestand." - -#. 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" @@ -3404,8 +3147,8 @@ 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</" +"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 " @@ -3506,6 +3249,12 @@ msgstr "" "literal> gebruikt worden, behalve dat in dit geval een lijst van manueel " "geïnstalleerde pakketten weergegeven zal worden." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Opties" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3581,6 +3330,11 @@ msgstr "" "worden. Meer informatie over deze zogenaamde dpkg-selecties vindt u in " "&dpkg;." +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get;, &aptitude;, &apt-conf;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3632,6 +3386,82 @@ msgstr "" "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 "User Configuration" +msgstr "Configuratie op gebruikersniveau" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" +"Sleutels moeten doorgaans worden opgenomen in hun corresponderende " +"<literal>.sources</literal> door de ASCII-gepantserde sleutel in de optie " +"<literal>Signed-By</literal> op te nemen. Vervang hiervoor de lege regel " +"door een punt en laat vervolgens alle regels met twee spaties inspringen. " +"Zie &sources-list; voor meer informatie." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" +"Als alternatief kunnen sleutels worden geplaatst in <filename>/etc/apt/" +"keyrings</filename> voor lokale sleutels, of <filename>/usr/share/keyrings</" +"filename> voor sleutels die worden beheerd door pakketten, en vervolgens kan " +"er naar worden verwezen via de optie <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> in een <literal>.sources</literal>-" +"bestand of via <literal>deb [signed-by=/etc/apt/keyrings/example-archive-" +"keyring.asc] ...</literal> te gebruiken in de oude <literal>.list</literal>-" +"indeling. Dit kan handig zijn voor vroegere APT-versies dan 2.4, die geen " +"ingesloten sleutels ondersteunen. ASCII-gepantserde sleutels moeten een " +"extensie <literal>.asc</literal> gebruiken, en niet-gepantserde sleutels een " +"extensie <literal>.gpg</literal>." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" +"Om sleutels te genereren die geschikt zijn voor gebruik in APT met GnuPG, " +"moet u de opdracht <command>gpg --export-options export-minimal [--armor] --" +"export</command> gebruiken. Eerdere oplossingen met <command>--keyring file " +"--import</command> werken niet meer met recente GnuPG-versies, omdat deze " +"een nieuwe interne indeling (\"GPG keybox database\") gebruiken." + +#. 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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" +"Merk op dat een standaardinstallatie reeds alle nodige sleutels bevat om op " +"een veilige manier pakketten op te halen uit de standaard pakketbronnen. Het " +"beheren van sleutels is dus alleen nodig als er externe pakketbronnen worden " +"toegevoegd. Het pakket <command>extrepo</command> kan worden gebruikt om " +"meerdere externe pakketbronnen eenvoudig te beheren." + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -3693,10 +3523,11 @@ msgstr "" "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;." +"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><title> #: apt-secure.8.xml @@ -3878,57 +3709,6 @@ msgstr "" "hoofdrelease van de distributie (bijvoorbeeld aangeduid met de codenaam) die " "door de pakketbron verdeeld wordt." -#. 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 "Repository Configuration" @@ -3958,8 +3738,8 @@ msgstr "" #: 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>." +"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 " @@ -4014,28 +3794,29 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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." +"de beveiligingsinfrastructuur van Debian, <ulink url=\"https://" +"www.debian.org/doc/manuals/securing-debian-manual/ch07\">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 @@ -4121,8 +3902,8 @@ msgstr "" #: 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>." +"<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: " @@ -4137,8 +3918,8 @@ msgid "" 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>." +"correct geconfigureerd zijn. Configuratie-item: " +"<literal>Acquire::cdrom::mount</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -4156,12 +3937,12 @@ msgstr "" #: 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>." +"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>." +"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 @@ -4241,7 +4022,7 @@ msgid "" "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 " +"shell wordt gebruikt 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 " @@ -4263,11 +4044,11 @@ 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>." +"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>." +"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 @@ -4393,9 +4174,9 @@ msgid "" "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." +"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>\" " @@ -4534,8 +4315,8 @@ msgid "" "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." +"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 @@ -4688,6 +4469,79 @@ msgstr "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" +"Deze scoop definieert kleuren en stijlen. De ondersteunde basiskleuren zijn " +"<option>rood</option>, <option>groen</option>, <option>geel</option>, " +"<option>blauw</option>, <option>magenta</option>, <option>cyaan</option> en " +"<option>wit</option>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" +"De subscoop <option>action</option> definieert de kleuren voor pakketlijsten " +"in <option>install</option> en gelijkaardige commando's. De volgende opties " +"kunnen ingesteld worden: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; die overeenkomen met hun " +"lijsten in de uitvoer van &apt;." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" +"Elke kleur kan bij naam verwijzen naar een of meer andere kleuropties, " +"relatief ten opzichte van <option>APT::Color</option>. Hun escape-sequenties " +"worden gecombineerd." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" +"Kleuren kunnen volledig worden in- of uitgeschakeld door <option>APT::Color</" +"option> in te stellen op <option>yes</option> of <option>no</option>, door " +"gebruik te maken van de omgevingsvariabelen <envar>NO_COLOR</envar> of " +"<envar>APT_NO_COLOR</envar>, of met behulp van de commandoregelopties " +"<option>--color</option>, <option>--no-color</option>." + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4988,8 +4842,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" "De reguliere expressie(s) definiëren voor kernelpakketten met versiebeheer. " "Op basis van deze expressies wordt een regelset in apt geïnjecteerd, " @@ -5258,100 +5112,6 @@ msgstr "" "de protocollen HTTP en HTTPS en worden gedocumenteerd in de respectieve man-" "pagina's &apt-transport-http; en &apt-transport-https;." -#. 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::<host></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::<host></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 "" -"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 "" -"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 @@ -5557,9 +5317,9 @@ msgid "" "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 " +"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 " @@ -5575,17 +5335,18 @@ msgstr "" "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\"/>" +"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 @@ -5695,21 +5456,22 @@ msgid "" "<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." +"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 " @@ -5721,23 +5483,24 @@ msgstr "" "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." +"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><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -5746,17 +5509,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." msgstr "" "Zoals changelogs (bestanden met de registratie van aangebrachte wijzigingen) " "kunnen momentopnames enkel verkregen worden als er een URI gekend is waar ze " @@ -5768,14 +5533,14 @@ msgstr "" "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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> of <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGINE</replaceable></literal>. De waarde ervan zou " -"een normale URI naar een map moeten zijn, behalve dat het momentopname-ID " -"vervangen wordt door de plaatshouder <literal>@SNAPSHOTID</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 momentopnames " -"van op te halen. In dat geval zal een andere bron geprobeerd worden als die " -"er is." +"replaceable></literal> of " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGINE</" +"replaceable></literal>. De waarde ervan zou een normale URI naar een map " +"moeten zijn, behalve dat het momentopname-ID vervangen wordt door de " +"plaatshouder <literal>@SNAPSHOTID@</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 momentopnames van 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 @@ -5787,9 +5552,9 @@ msgstr "Programmaspecifieke configuratie" 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>." +"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 " @@ -5811,8 +5576,8 @@ msgstr "" "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." +"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 @@ -5904,12 +5669,12 @@ 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." +"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 " @@ -6119,18 +5884,18 @@ msgid "" "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." +"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." +"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 @@ -6148,7 +5913,7 @@ 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 (< voor opwaarderingen, > voor " -"degradaties, = voor geen wijziging), nieuwe versie, actie. De versievelden " +"downgradings, = 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 " @@ -6261,9 +6026,9 @@ msgid "" 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." +"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 @@ -6345,13 +6110,6 @@ 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." @@ -6475,16 +6233,16 @@ 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." +"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>." +"vereistenproblemen. Raadpleeg in dat verband " +"<literal>Debug::pkgProblemResolver</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -6494,14 +6252,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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/" @@ -6580,23 +6338,23 @@ msgid "" 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" +"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>." +"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." +"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 " +"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. " @@ -6707,15 +6465,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 " @@ -6727,6 +6494,17 @@ msgstr "" "uit de configuratielijst <literal>Dir::Ignore-Files-Silently</literal>. In " "dat laatste geval zal het stilzwijgend overgeslagen worden." +#. type: Content of: <refentry><refsect1><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6888,13 +6666,13 @@ msgid "" "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.)" +"Nooit een downgrading uitvoeren tenzij de prioriteit van een beschikbaar " +"pakket groter is dan 1000. (\"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 downgraden van " +"een pakket riskant kan zijn.)" #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml @@ -6951,7 +6729,7 @@ msgstr "" "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 " +"<command>apt-get upgrade</command> zal het pakket dan niet gedowngraded " "worden." #. type: Content of: <refentry><refsect1><refsect2><para> @@ -7018,10 +6796,10 @@ msgid "" msgstr "" "Als u meerdere systemen heeft waarvan u wilt dat deze dezelfde set updates " "ontvangen, kunt u <code>APT::Machine-ID</code> instellen op een UUID zodat " -"ze allemaal dezelfde fasering toepassen, of u kunt de instelling <code>APT::" -"Get::Never-include-Phased-Updates</code> gebruiken of <code>APT::Get::Always-" -"include-Phased-Updates</code> instellen op true zodat APT nooit/altijd " -"gefaseerde updates zal overwegen." +"ze allemaal dezelfde fasering toepassen, of u kunt de instelling " +"<code>APT::Get::Never-include-Phased-Updates</code> gebruiken of " +"<code>APT::Get::Always-include-Phased-Updates</code> instellen op true zodat " +"APT nooit/altijd gefaseerde updates zal overwegen." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml @@ -7071,6 +6849,23 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "Sinds versie 2.9.9 kunt u pin ook gebruiken met een bronversie:" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, no-wrap +msgid "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" +msgstr "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" + #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml msgid "" @@ -7122,8 +6917,8 @@ 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." +"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 @@ -7401,9 +7196,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" "Het achtervoegsel <literal>:any</literal> zorgt ervoor dat binaire pakketten " "uit elke architectuur worden geselecteerd. Zonder dat achtervoegsel neemt " @@ -7438,7 +7233,7 @@ msgid "" "package" msgstr "" "heeft de installatie van een versie tot gevolg ook al houdt dit een " -"degradatie van het pakket in" +"downgrading van het pakket in" #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term> #: apt_preferences.5.xml @@ -7580,16 +7375,16 @@ msgstr "Dan is dit het gevolg:" 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." +"\"<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." +"gedowngraded worden." #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml @@ -7866,25 +7661,25 @@ msgid "" "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." +"<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>." +"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 @@ -8136,8 +7931,8 @@ 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 " +"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> " @@ -8220,6 +8015,17 @@ msgstr "" "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><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -8242,15 +8048,31 @@ 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 " +"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><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" +"De voorgestelde bestandsnaam voor nieuwe systemen is <filename>/etc/apt/" +"sources.list.d/<replaceable>leverancier</replaceable>.sources</filename>, " +"waarbij <replaceable>leverancier</replaceable> het resultaat is van " +"<command>dpkg-vendor --query Vendor | tr A-Z a-z</command>, in deb822-stijl. " +"Ubuntu gebruikt bijvoorbeeld <filename>/etc/apt/sources.list.d/" +"ubuntu.sources</filename>." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -8310,6 +8132,14 @@ msgstr "" "zullen verwachten, aangezien die ongebruikelijk waren voor de invoering van " "multi-architectuurondersteuning." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" +"Deze indeling is verouderd en kan uiteindelijk worden verwijderd, maar niet " +"voor 2029." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8502,10 +8332,11 @@ 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." +"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 @@ -8562,14 +8393,15 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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\"/>" +"volgt kunnen uitzien met de indeling in de verouderde éé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 @@ -8601,6 +8433,34 @@ msgstr "" "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>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 "" @@ -8612,8 +8472,8 @@ 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." +"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 @@ -8635,19 +8495,20 @@ msgstr "" 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." +"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 " +"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." @@ -8817,18 +8678,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) is een optie die van " "een pakketbron vereist dat de verificatie door &apt-secure; gebeurt aan de " @@ -8843,21 +8703,20 @@ msgstr "" "<filename>/etc/apt/keyrings</filename> voor sleutelbossen die beheerd worden " "door de systeembeheerder. Indien geen sleutelbosbestanden opgegeven werden, " "geldt als standaard de sleutelbos <filename>trusted.gpg</filename> en alle " -"sleutelbossen uit de map <filename>trusted.gpg.d/</filename> (zie " -"<command>apt-key fingerprint</command>). Indien geen vingerafdruk opgegeven " -"werd, worden alle sleutels uit de sleutelbossen geselecteerd. Een " -"vingerafdruk aanvaardt ook alle handtekeningen die met een subsleutel van " -"deze sleutel gemaakt werden. Indien dit niet het gewenste gedrag is, kan aan " -"de vingerafdruk een uitroepteken (<literal>!</literal>) toegevoegd worden " -"waardoor dit gedrag uitgezet wordt. Standaard krijgt de optie de waarde van " -"de optie met dezelfde naam wanneer die ingesteld staat in het vooraf uit " -"deze pakketbron opgehaald bestand <filename>Release</filename> (door middel " -"hiervan kunnen enkel vingerafdrukken opgegeven worden). Anders worden alle " -"sleutels uit de betrouwbare sleutelbossen als geldige ondertekenaars van " -"deze pakketbron aanzien. De optie kan ook rechtstreeks worden ingesteld op " -"een ingebed blok van een GPG-publieke sleutel. Speciale zorg is nodig om de " -"lege regel te coderen met voorloopspaties en \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"sleutelbossen uit de map <filename>trusted.gpg.d/</filename>. Indien geen " +"vingerafdruk opgegeven werd, worden alle sleutels uit de sleutelbossen " +"geselecteerd. Een vingerafdruk aanvaardt ook alle handtekeningen die met een " +"subsleutel van deze sleutel gemaakt werden. Indien dit niet het gewenste " +"gedrag is, kan aan de vingerafdruk een uitroepteken (<literal>!</literal>) " +"toegevoegd worden waardoor dit gedrag uitgezet wordt. Standaard krijgt de " +"optie de waarde van de optie met dezelfde naam wanneer die ingesteld staat " +"in het vooraf uit deze pakketbron opgehaald bestand <filename>Release</" +"filename> (door middel hiervan kunnen enkel vingerafdrukken opgegeven " +"worden). Anders worden alle sleutels uit de betrouwbare sleutelbossen als " +"geldige ondertekenaars van deze pakketbron aanzien. De optie kan ook " +"rechtstreeks worden ingesteld op een ingebed blok van een GPG-publieke " +"sleutel. Speciale zorg is nodig om de lege regel te coderen met " +"voorloopspaties en \".\": <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8872,8 +8731,9 @@ msgid "" "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>." +"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-" @@ -8977,25 +8837,16 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" "<option>Snapshot</option> (<option>snapshot</option>) maakt het mogelijk om " "een eerdere versie van het archief te selecteren via de dienst " -"momentopnames. Ondersteunde waarden zijn:" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" -"<literal>enable</literal> om het selecteren van een momentopname met de " -"optie <option>--snapshot</option> mogelijk te maken, of" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." -msgstr "een momentopname-ID om een specifieke momentopname te selecteren." +"momentopnames. Ondersteunde waarden zijn: <literal>enable</literal> " +"(standaard) om het selecteren van een momentopname met de optie <option>--" +"snapshot</option> toe te staan, <literal>ID</literal> of <literal>disable</" +"literal> om de pakketbron uit te sluiten." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -9044,10 +8895,10 @@ msgstr "" "gegeven worden aan het gebruik van &apt-authconf;. De methode biedt ook " "ondersteuning voor SOCKS5- en HTTP(S)-proxy's, ofwel geconfigureerd via een " "apt-specifieke configuratie, of gespecificeerd met de omgevingsvariabele " -"<envar>http_proxy</envar> volgens de indeling <replaceable>http://gebruiker:" -"wachtwoord@server:poort/</replaceable> (er vanuit gaand dat het om een HTTP-" -"proxy gaat die authenticatie vereist). De authenticatie-informatie voor " -"proxy's kan ook verstrekt worden via &apt-authconf;." +"<envar>http_proxy</envar> volgens de indeling <replaceable>http://" +"gebruiker:wachtwoord@server:poort/</replaceable> (er vanuit gaand dat het om " +"een HTTP-proxy gaat die authenticatie vereist). De authenticatie-informatie " +"voor proxy's kan ook verstrekt worden via &apt-authconf;." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #: sources.list.5.xml @@ -9148,38 +8999,6 @@ msgstr "" "gebruiken en media te wisselen. 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 ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" -"De methode ftp geeft een FTP-server op voor een archief. Het gebruik van FTP " -"is op de terugweg ten voordele van <literal>http</literal> en " -"<literal>https</literal> en veel archieven hebben ofwel nooit FTP-toegang " -"aangeboden of trekken die terug in. Indien u deze methode nog steeds nodig " -"heeft, zijn er veel configuratieopties voor beschikbaar binnen de ruimte " -"<literal>Acquire::ftp</literal>. Ze worden in &apt-conf; gedetailleerd." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" -"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 "" @@ -9193,21 +9012,6 @@ msgstr "" "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" @@ -9390,64 +9194,64 @@ 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 " +"Uses HTTPS to access the archive at deb.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 " +"Gebruikt HTTPS om toegang te krijgen tot het archief op deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"Gebruikt FTP om toegang te krijgen tot het archief op ftp.debian.org onder " +"Gebruikt HTTPS om toegang te krijgen tot het archief op deb.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 " +"<filename>sources.list</filename> zal een enkele HTTPS-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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9531,6 +9335,52 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "Gebruikt een specifieke tijdstempel voor Snapshots." + +#. 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" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"\n" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib" + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +msgstr "Staat de optionele parameter --snapshot niet toe." + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, no-wrap +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -9591,8 +9441,8 @@ msgstr "" #: 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>" +"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: " @@ -9636,8 +9486,8 @@ 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>." +"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>." @@ -9732,9 +9582,9 @@ msgid "" 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-" +"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> @@ -9778,10 +9628,10 @@ msgid "" "<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." +"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 " @@ -9812,15 +9662,16 @@ msgid "" "<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>." +"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 @@ -10042,8 +9893,8 @@ msgstr "De sectie <literal>TreeDefault</literal>" #: 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." +"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 " @@ -10084,8 +9935,8 @@ 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>" +"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>" @@ -10093,8 +9944,8 @@ 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>" +"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>" @@ -10121,8 +9972,8 @@ msgstr "" #: 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>" +"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 " @@ -10490,15 +10341,15 @@ msgid "" 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>." +"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 @@ -10535,8 +10386,8 @@ 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>." +"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 @@ -10562,14 +10413,14 @@ msgid "" "literal>." msgstr "" "Het override-bestand voor broncode selecteren om met het commando " -"<literal>sources</literal> te gebruiken. Configuratie-item: <literal>APT::" -"FTPArchive::SourceOverride</literal>." +"<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>." +"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>." @@ -10583,10 +10434,10 @@ msgid "" "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>." +"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 @@ -10684,10 +10535,10 @@ msgid "" "files inside <filename>/etc/apt/auth.conf.d</filename> can be used to store " "login information in a netrc-like format with restrictive file permissions." msgstr "" -"Het bestand auth.conf van APT, <filename>/etc/apt/auth.conf</filename>, en ." -"conf-bestanden in de map <filename>/etc/apt/auth.conf.d</filename> kunnen " -"gebruikt worden om er login-informatie in op te slaan in een netrc-achtige " -"indeling met restrictieve bestandspermissies." +"Het bestand auth.conf van APT, <filename>/etc/apt/auth.conf</filename>, " +"en .conf-bestanden in de map <filename>/etc/apt/auth.conf.d</filename> " +"kunnen gebruikt worden om er login-informatie in op te slaan in een netrc-" +"achtige indeling met restrictieve bestandspermissies." #. type: Content of: <refentry><refsect1><title> #: apt_auth.conf.5.xml @@ -10861,8 +10712,8 @@ msgstr "" "<literal>debian</literal> inloginformatie verstrekken voor het element " "&sources-list; <placeholder type=\"literallayout\" id=\"0\"/> zou " "rechtstreeks in het element kunnen gedaan worden: <placeholder " -"type=\"literallayout\" id=\"1\"/> Als alternatief zou in het bestand auth." -"conf een element als het volgende gebruikt kunnen worden: <placeholder " +"type=\"literallayout\" id=\"1\"/> Als alternatief zou in het bestand " +"auth.conf een element als het volgende gebruikt kunnen worden: <placeholder " "type=\"literallayout\" id=\"2\"/> Of anders in één enkele regel: " "<placeholder type=\"literallayout\" id=\"3\"/> Indien u meer moet " "specificeren, zullen al deze regels ook op het element example van " @@ -11007,16 +10858,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" "De omgevingsvariabele <envar>http_proxy</envar> wordt gebruikt voor de " "configuratie die op het hele systeem van toepassing is. Proxy's die " @@ -11050,14 +10902,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 "" "Daarenboven worden drie instellingen voorzien om HTTP/1.1-compatibele proxy-" "caches te beheren: <literal>Acquire::http::No-Cache</literal> zegt de proxy " @@ -11118,11 +10970,11 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" -"Deze optie heeft voorrang op de verouderde optienaam <literal>Acquire::http::" -"ProxyAutoDetect</literal>." +"Deze optie heeft voorrang op de verouderde optienaam " +"<literal>Acquire::http::ProxyAutoDetect</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-http.1.xml @@ -11161,12 +11013,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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 pijplijnmethode van HTTP (RFC 2616 sectie 8.1.2.2) toe te " @@ -11300,9 +11152,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" "Het HTTPS-protocol is gebaseerd op het HTTP-protocol, en dus zijn alle " "opties die ondersteund worden door &apt-transport-http; ook beschikbaar via " @@ -11349,15 +11201,17 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" "Er kan een aangepaste lijst van herroepen certificaten (certificate " -"revocation list - CRL) geconfigureerd worden met de opties <literal>Acquire::" -"https::CRLFile</literal> en <literal>Acquire::https::CRLFile::" -"<replaceable>computer</replaceable></literal>. Zoals bij de vorige optie " -"moet een bestand opgegeven worden in PEM-indeling." +"revocation list - CRL) geconfigureerd worden met de opties " +"<literal>Acquire::https::CRLFile</literal> en " +"<literal>Acquire::https::CRLFile::<replaceable>computer</replaceable></" +"literal>. Zoals bij de vorige optie moet een bestand opgegeven worden in PEM-" +"indeling." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-https.1.xml @@ -11425,11 +11279,11 @@ msgstr "Cliëntauthenticatie" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" "Behalve de geboden ondersteuning voor authenticatie via een wachtwoord (zie " "&apt-authconf;), ondersteunt HTTPS ook authenticatie op basis van " @@ -11741,9 +11595,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" "In de veronderstelling dat een bestand met deze inhoud op uw computer " "opgeslagen werd als <filename>/etc/apt/mirrorlist.txt</filename>, kan het op " @@ -12488,6 +12342,16 @@ msgstr "<code>?suggests(PATROON)</code>" msgid "<code>~DSuggests:PATTERN</code>" msgstr "<code>~DSuggests:PATROON</code>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "<code>?recommends(PATROON)</code>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "<code>~DRecommends:PATROON</code>" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -12541,11 +12405,12 @@ msgstr "<code>~DEnhances:PATROON</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" "Selecteert versies welke als vereiste hebben/als voorvereiste hebben/" -"suggereren/conflicteren met/enz. pakketten welke overeenkomen met PATROON." +"suggereren/aanbevelen/conflicteren met/enz. pakketten welke overeenkomen met " +"PATROON." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12685,10 +12550,10 @@ msgstr "?narrow accepteert een oneindig aantal argumenten" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" "<code>foo</code> kan niet gebruikt worden als een verkorte vorm van <code>?" "name(foo)</code>, omdat dit ertoe kan leiden dat typefouten onopgemerkt " @@ -12766,7 +12631,7 @@ 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. " +"Software Foundation gepubliceerd werd." #. type: Content of: <book><bookinfo><legalnotice><para> #: guide.dbk offline.dbk @@ -12955,20 +12820,20 @@ msgstr "" "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:" +"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://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -12978,7 +12843,7 @@ msgstr "" msgid "Once updated there are several commands that can be used:" msgstr "" "Na het bijwerken van de pakketlijst kunnen verschillende commando's gebruikt " -"worden." +"worden:" #. type: Content of: <book><chapter><variablelist><varlistentry><term> #: guide.dbk @@ -13150,8 +13015,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -13163,8 +13028,8 @@ msgstr "" "\n" " Bijvoorbeeld:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -13187,13 +13052,13 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" distributie is typisch iets in de zin van : stable unstable testing\n" "\n" " Distributie [stable]:\n" @@ -13202,19 +13067,12 @@ msgstr "" 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." +"<emphasis>unstable</emphasis> refers to the developmental version." 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." +"wordt." #. type: Content of: <book><chapter><screen> #: guide.dbk @@ -13449,7 +13307,7 @@ msgid "" "packages" msgstr "" "APT neemt evenwel alle gekende vereisten in overweging en probeert het " -"ontstaan van defecte pakketten te voorkomen." +"ontstaan van defecte pakketten te voorkomen" #. type: Content of: <book><chapter><section><para> #: guide.dbk @@ -13787,18 +13645,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" @@ -14141,8 +13999,8 @@ msgid "" "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>." +"voorbeeldconfiguratiebestand in <emphasis>/usr/share/doc/apt/examples/" +"apt.conf</emphasis>." #. type: Content of: <book><chapter><section><para> #: offline.dbk @@ -14363,7 +14221,3 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" 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 "Describes the process of resolving build-dependencies in &apt-get;." -#~ msgstr "" -#~ "Beschrijft het proces van het oplossen van bouwvereisten door &apt-get;." diff --git a/doc/po/pl.po b/doc/po/pl.po index e72bd51..9925edf 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -11,7 +11,7 @@ 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: 2024-03-22 10:14+0000\n" +"POT-Creation-Date: 2025-05-19 18:28+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" @@ -148,6 +148,33 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\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 @@ -176,7 +203,19 @@ msgstr "" #. type: Plain text #: apt.ent -#, no-wrap +#, fuzzy, 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" msgid "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -188,6 +227,44 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\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 +#, fuzzy, 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" +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" msgstr "" " <varlistentry>\n" @@ -516,11 +593,12 @@ 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\">" +"<!-- 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 " +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " "\"opcja_konfiguracji\">" #. type: Plain text @@ -535,12 +613,12 @@ 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 " +"<!-- 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 " +"<!-- 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 @@ -591,11 +669,11 @@ 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\">" +"<!-- 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\">" +"<!-- 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 @@ -658,28 +736,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -689,12 +757,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Opis" @@ -759,7 +826,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "" @@ -853,6 +920,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml #, fuzzy @@ -942,11 +1041,11 @@ msgid "" 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Zobacz także" @@ -1285,10 +1384,10 @@ msgstr "" "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>." +"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 @@ -1534,12 +1633,12 @@ 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>." +"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 @@ -1587,8 +1686,8 @@ msgid "" "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>." +"czy instalowane. Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::Download-Only</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1616,8 +1715,8 @@ msgid "" "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>." +"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 " @@ -1661,8 +1760,8 @@ msgid "" 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>." +"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 @@ -1679,8 +1778,8 @@ msgstr "" "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, " +"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>." @@ -1728,14 +1827,14 @@ msgstr "" "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>." +"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>." +"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>." @@ -1765,6 +1864,33 @@ 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 "" +#| "Re-install packages that are already installed and at the newest " +#| "version. Configuration Item: <literal>APT::Get::ReInstall</literal>." +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</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 +#, fuzzy +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</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-get.8.xml #, fuzzy @@ -1779,17 +1905,17 @@ 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>." +"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>." +"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 @@ -1812,9 +1938,9 @@ msgstr "" "<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>." +"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> @@ -1900,8 +2026,8 @@ msgstr "" "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>." +"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::force-yes</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1924,8 +2050,8 @@ msgstr "" "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>." +"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::force-yes</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1948,8 +2074,8 @@ msgstr "" "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>." +"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::force-yes</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1975,8 +2101,8 @@ msgstr "" "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>." +"zniszczyć Twój system! Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::force-yes</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1988,8 +2114,8 @@ msgid "" "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>." +"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 " @@ -2033,8 +2159,8 @@ msgid "" "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>." +"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> " @@ -2089,8 +2215,8 @@ 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>." +"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 @@ -2124,8 +2250,8 @@ 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>." +"zależności. Pozycja w pliku konfiguracyjnym: " +"<literal>APT::Get::AutomaticRemove</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2142,10 +2268,10 @@ 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>." +"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> @@ -2156,8 +2282,9 @@ msgid "" "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>." +"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> @@ -2280,7 +2407,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Pliki" @@ -2753,12 +2880,12 @@ msgstr "Uwaga: dotty nie potrafi narysować większego zbioru pakietów." #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "Robi to samo, co <literal>dotty</literal>, tylko dla xvcg z <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">narzędzia VCG</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">narzędzia VCG</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2788,8 +2915,8 @@ msgid "" "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>)." +"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</" @@ -2803,8 +2930,8 @@ msgstr "" #: 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>." +"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: " @@ -2824,8 +2951,8 @@ msgstr "" "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>." +"wszystkich plików pakietów. Pozycja w pliku konfiguracyjnym: " +"<literal>Dir::Cache::srcpkgcache</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2851,8 +2978,8 @@ msgid "" 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>." +"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 @@ -2866,9 +2993,9 @@ msgstr "" 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>." +"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ą " @@ -2947,8 +3074,8 @@ msgstr "" #: 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>." +"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 " @@ -3005,8 +3132,8 @@ msgstr "" #: apt-cache.8.xml #, fuzzy #| msgid "" -#| "Use source index field ordering. Configuration Item: <literal>APT::" -#| "SortPkgs::Source</literal>." +#| "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>." @@ -3030,284 +3157,6 @@ 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 -#, fuzzy -#| msgid "APT key management utility" -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -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><term> -#: apt-key.8.xml -msgid "(deprecated)" -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 "" -"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><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -#| msgid "Operation" -msgid "Deprecation" -msgstr "Kolejne kroki" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -3319,8 +3168,8 @@ 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</" +"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 "" @@ -3420,6 +3269,12 @@ msgstr "" "jak <literal>showauto</literal> z tym wyjątkiem, że wypisze listę ręcznie " "zainstalowanych pakietów." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Opcje" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3490,6 +3345,13 @@ msgid "" "called dpkg selections can be found in &dpkg;." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +#, fuzzy +#| msgid "&apt-get; &apt-cache; &apt-conf; &sources-list;" +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" + # #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml @@ -3543,6 +3405,58 @@ 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 "User configuration" +msgid "User Configuration" +msgstr "Konfiguracja użytkownika" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml #, fuzzy @@ -3767,63 +3681,11 @@ msgstr "" msgid "" "This information is shown in various places so a repository owner should " "always ensure correctness. Further more user configuration like &apt-" -"preferences; can depend and make use of this information. Since version 1.5 " -"the user must therefore explicitly confirm changes to signal that the user " -"is sufficiently prepared e.g. for the new major release of the distribution " -"shipped in the repository (as e.g. indicated by the codename)." -msgstr "" - -#. 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." +"preferences; can depend and make use of this information. Since version 1.5 " +"the user must therefore explicitly confirm changes to signal that the user " +"is sufficiently prepared e.g. for the new major release of the distribution " +"shipped in the repository (as e.g. indicated by the codename)." 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 @@ -3854,12 +3716,12 @@ msgstr "" #: 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>." +"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>." +"<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 @@ -3902,9 +3764,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt-secure.8.xml +#, fuzzy +#| msgid "" +#| "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " +#| "&debsign;, &debsig-verify;, &gpg;" msgid "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" "&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " "&debsign;, &debsig-verify;, &gpg;" @@ -3921,17 +3787,18 @@ msgstr "" #| "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=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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>\" napisanym przez V. Alexa Brennena." +"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-manual/ch07\">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 @@ -4027,8 +3894,8 @@ msgstr "" #| "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>." +"<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 " @@ -4058,20 +3925,20 @@ msgid "" 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>." +"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>." +"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>." +"i odmontowywanie CDROM-u. Pozycja w pliku konfiguracyjnym: " +"<literal>APT::CDROM::NoMount</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -4085,8 +3952,8 @@ 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>." +"na nim żadnych błędów. Pozycja w pliku konfiguracyjnym: " +"<literal>APT::CDROM::Fast</literal>." # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -4177,8 +4044,8 @@ 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>." +"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>." @@ -4307,9 +4174,9 @@ msgid "" "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." +"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 " @@ -4519,6 +4386,55 @@ msgid "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4707,8 +4623,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -4871,61 +4787,6 @@ msgid "" "&apt-transport-https; manpages respectively." 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::<host></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 "" -"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 "" -"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 @@ -5067,9 +4928,9 @@ msgid "" "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 " +"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 " @@ -5158,21 +5019,22 @@ msgid "" "<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." +"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><variablelist><varlistentry><listitem><para> @@ -5182,17 +5044,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." msgstr "" #. type: Content of: <refentry><refsect1><title> @@ -5207,9 +5071,9 @@ msgstr "Konfiguracja użytkownika" 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>." +"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> @@ -5282,12 +5146,12 @@ 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." +"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> @@ -5425,9 +5289,9 @@ msgid "" "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." +"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> @@ -5578,11 +5442,6 @@ 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." @@ -5674,8 +5533,8 @@ 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." +"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> @@ -5686,14 +5545,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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> @@ -5746,15 +5605,15 @@ 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>." +"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 " +"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 "" @@ -5859,15 +5718,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 " @@ -5880,6 +5748,17 @@ msgstr "" "<literal>Dir::Ignore-Files-Silently</literal>, to wypisze odpowiedni " "komunikat." +#. type: Content of: <refentry><refsect1><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6207,6 +6086,27 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Package: perl\n" +#| "Pin: version &good-perl;*\n" +#| "Pin-Priority: 1001\n" +msgid "" +"Package: perl\n" +"Pin: source-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 "" @@ -6524,9 +6424,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -6704,9 +6604,9 @@ msgstr "Wtedy:" 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." +"\"<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;" @@ -6985,21 +6885,21 @@ msgid "" "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." +"<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 " +"<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> ." @@ -7339,6 +7239,17 @@ msgstr "" "<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><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -7379,6 +7290,16 @@ msgstr "" "zmiennych konfiguracji <literal>Dir::Ignore-Files-Silently</literal>, to " "wypisze odpowiedni komunikat." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -7414,6 +7335,12 @@ msgid "" "multi-architecture support." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -7577,13 +7504,13 @@ msgstr "" #: 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." +#| "<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</" @@ -7671,9 +7598,10 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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> @@ -7697,6 +7625,35 @@ msgid "" "versions." msgstr "" +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +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>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"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 @@ -7745,11 +7702,12 @@ msgstr "" 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." +"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> @@ -7852,18 +7810,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -7879,8 +7836,9 @@ msgid "" "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>." +"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> @@ -7936,19 +7894,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -8066,46 +8014,8 @@ msgid "" "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 ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -#, fuzzy -#| 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." -msgid "" -"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." +"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 @@ -8120,20 +8030,6 @@ msgstr "" "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" @@ -8255,9 +8151,9 @@ msgid "" "<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>." +"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 @@ -8301,8 +8197,8 @@ 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." +"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 @@ -8327,62 +8223,63 @@ 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 " +"Uses HTTPS to access the archive at deb.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 " +"Użycie HTTPS do uzyskania dostępu do archiwum na komputerze deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS session will be used for both resource lines." msgstr "" -"Użycie FTP do uzyskania dostępu do archiwum na komputerze ftp.debian.org, " +"Użycie HTTPS do uzyskania dostępu do archiwum na komputerze deb.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." +"to pojedyncza sesja HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -8424,11 +8321,11 @@ msgid "" "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 " +"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\"/>" @@ -8461,6 +8358,58 @@ msgid "" "Components: main contrib\n" msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb\n" +#| "URIs: https://deb.debian.org/debian\n" +#| "Suites: unstable\n" +#| "Components: contrib" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" +"Types: deb\n" +"URIs: https://deb.debian.org/debian\n" +"Suites: unstable\n" +"Components: contrib" + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +msgstr "" + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Types: deb-src\n" +#| "URIs: file:/home/apt/debian\n" +#| "Suites: unstable\n" +#| "Components: main contrib non-free non-free-firmware" +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" +"Types: deb-src\n" +"URIs: file:/home/apt/debian\n" +"Suites: unstable\n" +"Components: main contrib non-free non-free-firmware" + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -8513,15 +8462,15 @@ 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>." +"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>" +"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 " @@ -8567,8 +8516,8 @@ 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>." +"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>." @@ -8674,10 +8623,10 @@ msgid "" "<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." +"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> @@ -8869,8 +8818,8 @@ msgstr "linia <literal>Label:</literal>" #: 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." +"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> @@ -8895,15 +8844,15 @@ 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>" +"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>" +"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> @@ -8924,8 +8873,8 @@ msgstr "" #: 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>" +"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> @@ -9283,8 +9232,8 @@ msgstr "" #: apt-ftparchive.1.xml #, fuzzy msgid "" -"Make the caching databases read only. Configuration Item: <literal>APT::" -"FTPArchive::ReadOnlyDB</literal>." +"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>." @@ -9306,8 +9255,8 @@ 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>." +"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 @@ -9470,16 +9419,16 @@ msgstr "Przykłady" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb https://apt:debian@example.org/debian &debian-stable-codename; main" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><para><literallayout> #: apt_auth.conf.5.xml @@ -9655,16 +9604,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> @@ -9679,14 +9629,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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><refsect2><title> @@ -9726,8 +9676,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -9759,12 +9709,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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><refsect2><para> @@ -9851,9 +9801,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -9882,9 +9832,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -9930,11 +9881,11 @@ msgstr "" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -10136,9 +10087,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> @@ -10158,9 +10109,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> #: apt-transport-mirror.1.xml #, fuzzy, no-wrap -#| msgid "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +#| msgid "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" msgid "deb mirror://apt.example.org/mirror.lst &debian-stable-codename; main\n" -msgstr "deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb ftp://ftp.example.org/debian &debian-stable-codename; contrib" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml @@ -10781,6 +10732,16 @@ msgstr "" msgid "<code>~DSuggests:PATTERN</code>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -10834,8 +10795,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -10957,10 +10918,10 @@ msgstr "" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -11030,8 +10991,8 @@ msgid "" 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 " +"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> @@ -11222,13 +11183,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -11404,8 +11365,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -11417,7 +11378,7 @@ msgstr "" "\n" " Przykłady:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" " http://ftp.pl.debian.org/debian,\n" "\n" "\n" @@ -11440,26 +11401,31 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" jest coś w rodzaju: stable unstable testing\n" "\n" " Dystrybucja [stable]:\n" #. type: Content of: <book><chapter><para> #: guide.dbk +#, fuzzy +#| 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." 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." +"<emphasis>unstable</emphasis> refers to the developmental version." msgstr "" "Dystrybucja odnosi się do wersji Debiana: <emphasis>stable</" "emphasis>(stabilna) to najnowsza wydana wersja, a <emphasis>unstable</" @@ -11545,8 +11511,8 @@ msgid "" "<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." +"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 @@ -12019,18 +11985,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" @@ -12291,11 +12257,11 @@ msgid "" "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." +"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 @@ -12366,8 +12332,8 @@ msgid "" "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>." +"przykładowym pliku konfiguracyjnym <emphasis>/usr/share/doc/apt/examples/" +"apt.conf</emphasis>." #. type: Content of: <book><chapter><section><para> #: offline.dbk @@ -12585,6 +12551,186 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" msgid "Which will use the already fetched archives on the disc." msgstr "Które użyje pobranych uprzednio archiwów z dysku." +#, fuzzy +#~| 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." +#~ msgid "" +#~ "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." + +#~ 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." + +#~ 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\">" + +# +#, fuzzy +#~| msgid "APT key management utility" +#~ msgid "Deprecated APT key management utility" +#~ msgstr "Narzędzie zarządzanie kluczami APT" + +#~ 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." + +#~ msgid "Commands" +#~ msgstr "Polecenia" + +#~ 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>." + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "Usuwa klucz z listy zaufanych kluczy." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "Wyświetla klucz &synopsis-param-keyid; na standardowym wyjściu." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "Wypisuje na standardowe wyjście wszystkie zaufane klucze." + +#, fuzzy +#~| msgid "List trusted keys." +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "Wyświetla listę zaufanych kluczy." + +#~ 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;." + +#~ 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." + +#~ 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." + +#~ 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." + +#, fuzzy +#~| msgid "Operation" +#~ msgid "Deprecation" +#~ msgstr "Kolejne kroki" + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#, 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." + +#~ 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." + #~ msgid "Regular expressions and &glob; syntax" #~ msgstr "Składnia wyrażeń regularnych i &glob;" @@ -12741,8 +12887,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku." # #~ 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>." +#~ "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: " @@ -12750,12 +12896,12 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku." #~ 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>." +#~ "(<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>). " @@ -12902,8 +13048,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku." #~| "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)" +#~ "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)" @@ -13013,8 +13159,8 @@ msgstr "Które użyje pobranych uprzednio archiwów z dysku." #~ "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." +#~ "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: " diff --git a/doc/po/pt.po b/doc/po/pt.po index 4c13bb1..9ef1d5e 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -2,13 +2,13 @@ # 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>, 2014 to 2023. +# Américo Monteiro <a_monteiro@gmx.com>, 2014 to 2025. msgid "" msgstr "" -"Project-Id-Version: apt 2.7.3\n" +"Project-Id-Version: apt 3.0.0\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" -"POT-Creation-Date: 2024-03-22 10:14+0000\n" -"PO-Revision-Date: 2023-09-11 20:47+0100\n" +"POT-Creation-Date: 2025-06-13 12:38+0200\n" +"PO-Revision-Date: 2025-04-19 22:36+0100\n" "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n" "Language-Team: Portuguese <>\n" "Language: pt\n" @@ -142,6 +142,24 @@ msgstr "" " </listitem>\n" " </varlistentry>\n" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>-Mostra mensagens audit (e notificações). Isto sobrepõe a opção quiet, mas apenas para mensagens de notificação, não as de progresso.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" + #. type: Plain text #: apt.ent #, no-wrap @@ -186,7 +204,6 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" -"\">\n" msgstr "" " <varlistentry>\n" " <term><option>-o</option></term>\n" @@ -198,6 +215,31 @@ msgstr "" " </para>\n" " </listitem>\n" " </varlistentry>\n" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +"\">\n" +msgstr "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Liga e desliga cores. As cores estão ligadas por predefinição nos terminais suportados para &apt; e\n" +"também podem ser desactivadas usando as variáveis de ambiente <envar>NO_COLOR</envar> ou <envar>APT_NO_COLOR</envar>,\n" +"ou também configuradas pela opção de configuração e escopo <option>APT::Color</option>, veja &apt-conf; para informação sobre isso.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" #. type: Plain text @@ -517,11 +559,13 @@ 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\">" +"<!-- 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\">" +"<!-- TRANSLATOR: usado como -o=config_string ex. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " +"\"config_string\">" #. type: Plain text #: apt.ent @@ -535,13 +579,13 @@ 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 " +"<!-- 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\">" +"<!-- 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 @@ -591,8 +635,8 @@ 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\">" +"<!-- 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\">" @@ -658,28 +702,18 @@ 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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "APT" @@ -689,12 +723,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "Description" msgstr "Descrição" @@ -767,6 +800,8 @@ msgid "" "When a package is supplied as an argument, the package will be installed " "prior to the upgrade action." msgstr "" +"Quando um pacote é fornecido como um argumento, o pacote será instalado " +"antes da acção de actualização." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.8.xml @@ -780,7 +815,7 @@ msgstr "" "sistema como um todo." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "," @@ -885,6 +920,38 @@ msgstr "" "Exemplo: <literal>apt satisfy \"foo, bar (>= 1.0)\" \"Conflicts: baz, " "fuzz\"</literal>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -953,17 +1020,13 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-cache;)" msgid "(summarised in &apt-cache;)" -msgstr "(&apt-cache;)" +msgstr "(resumido em &apt-cache;)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml -#, fuzzy -#| msgid "(&apt-get;)" msgid "(summarised in &apt-get;)" -msgstr "apt-get" +msgstr "(resumido em &apt-get;)" #. type: Content of: <refentry><refsect1><title> #: apt.8.xml @@ -1001,11 +1064,11 @@ msgstr "" "compatibilidade com versões anteriores sempre que possível." #. 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml msgid "See Also" msgstr "Veja também" @@ -1135,10 +1198,10 @@ msgstr "" "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." +"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 @@ -1376,8 +1439,8 @@ 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>." +"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 @@ -1510,7 +1573,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-get.8.xml msgid "alias)" -msgstr "" +msgstr "alias)" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1520,6 +1583,11 @@ msgid "" "for example, when finalizing images distributed to users. The release files " "are kept for security reasons, to prevent various types of attacks." msgstr "" +"<literal>distclean</literal> remove todos os ficheiros sob " +"<filename>&statedir;/lists</filename> excepto Release, Release.gpg, e " +"InRelease. Pode ser usado por exemplo, quando se finaliza imagens " +"distribuídas para utilizadores. Os ficheiros release são mantidos por razões " +"de segurança, para prevenir vários tipos de ataques." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1613,8 +1681,8 @@ msgid "" "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>." +"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 @@ -1628,8 +1696,8 @@ msgid "" "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>." +"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 " @@ -1715,8 +1783,8 @@ msgstr "" "os quais podem não ter acesso de leitura a todas as configurações do apt " "distorcendo a simulação. Também é mostrada por predefinição uma nota " "expressando este aviso aos utilizadores não-root. (<option>APT::Get::Show-" -"User-Simulation-Note</option>). Item de Configuração: <literal>APT::Get::" -"Simulate</literal>." +"User-Simulation-Note</option>). Item de Configuração: " +"<literal>APT::Get::Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -1752,8 +1820,8 @@ 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>." +"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>." @@ -1777,15 +1845,35 @@ 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 "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" +"Mostra listas de pacotes sem as arrumar em colunas. Por predefinição, as " +"listas de pacotes são escritas no estilo do comando \"ls\". Item de " +"Configuração: <literal>APT::Get::List-Columns</literal>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</literal>." +msgstr "" +"Adiciona o valor dado ao campo <literal>Comment:</literal> em history.log " +"Item de Configuração: <literal>APT::History::Comment</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>." +"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 " @@ -1951,8 +2039,8 @@ msgid "" "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>." +"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 " @@ -1993,8 +2081,8 @@ msgid "" "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>." +"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á " @@ -2015,8 +2103,8 @@ msgstr "" "Esta opção controla o instantâneo escolhido para arquivos com " "<literal>Snapshot: enable</literal> na entrada de fonte. Por exemplo, " "<option>-S 20220102T030405Z</option> seleciona um instantâneo de 2 de " -"Janeiro de 0022 às 03:04:05 UTC. Item de Configuração: <literal>APT::" -"Snapshot</literal>; veja também o manual &sources-list;." +"Janeiro de 0022 às 03:04:05 UTC. Item de Configuração: " +"<literal>APT::Snapshot</literal>; veja também o manual &sources-list;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2052,8 +2140,8 @@ 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>." +"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 @@ -2157,8 +2245,8 @@ msgstr "" "risco de segurança se a autenticidade dos dados não poder ser assegurada de " "outro modo pelo próprio utilizador. A utilização da opção <option>Trusted</" "option> para entradas da &sources-list; deve normalmente ser preferida em " -"vez desta sobreposição global. Item de configuração: <literal>APT::Get::" -"AllowUnauthenticated</literal>." +"vez desta sobreposição global. Item de configuração: " +"<literal>APT::Get::AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2207,8 +2295,8 @@ msgstr "" "apenas para certos campos como <literal>origin</literal>, <literal>label</" "literal>, <literal>codename</literal>, <literal>suite</literal>, " "<literal>version</literal> e <literal>defaultpin</literal>. Veja também &apt-" -"preferences;. Item de Configuração: <literal>Acquire::" -"AllowReleaseInfoChange</literal>." +"preferences;. Item de Configuração: " +"<literal>Acquire::AllowReleaseInfoChange</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-get.8.xml @@ -2222,8 +2310,8 @@ 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. Itens de Configuração: <literal>Dpkg::" -"Progress</literal> e <literal>Dpkg::Progress-Fancy</literal>." +"reporting no directório doc do apt. Itens 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 @@ -2278,11 +2366,11 @@ msgstr "" "Embargo: Devido a limitações técnicas, as trancas são adquiridas " "individualmente para cada fase, assim uma instalação pode falhar ao adquirir " "tranca após executar com sucesso a actualização. Até que isto seja " -"resolvido, isto é meramente açúcar sintático para <literal>apt update &" -"& apt install</literal>" +"resolvido, isto é meramente açúcar sintático para <literal>apt update " +"&& apt install</literal>" #. 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "Ficheiros" @@ -2711,12 +2799,12 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" "O mesmo que <literal>dotty</literal>, apenas para xvcg a partir de <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">Ferramenta VCG</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">Ferramenta VCG</ulink>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml @@ -2744,23 +2832,23 @@ msgid "" "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>)." +"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>)." +"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>." +"cache used by all operations. Configuration Item: " +"<literal>Dir::Cache::pkgcache</literal>." msgstr "" "Seleciona 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: " @@ -2804,17 +2892,17 @@ msgid "" 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>." +"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 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>." +"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 <command>depends</command> and <command>rdepends</" "command> escrevem todas as dependências. Isto pode ser \"afinado\" com estas " @@ -2892,8 +2980,8 @@ msgstr "" #: 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>." +"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: " @@ -2932,10 +3020,11 @@ msgid "" msgstr "" "Adiciona o ficheiro fornecido como a fonte para meta-dados. Pode ser " "repetido para adicionar múltiplos ficheiros. Presentemente são suportados " -"ficheiros <literal>*.deb</literal>, <literal>*.dsc</literal>, <literal>*." -"changes</literal>, <literal>Sources</literal> e <literal>Packages</literal> " -"assim como directórios de pacotes fonte: A correspondência dos ficheiros é " -"baseada apenas com base no seu nome, não no seu conteúdo." +"ficheiros <literal>*.deb</literal>, <literal>*.dsc</literal>, " +"<literal>*.changes</literal>, <literal>Sources</literal> e " +"<literal>Packages</literal> assim como directórios de pacotes fonte: A " +"correspondência dos ficheiros é baseada apenas com base no seu nome, não no " +"seu conteúdo." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cache.8.xml @@ -2975,335 +3064,6 @@ 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 "Deprecated APT key management utility" -msgstr "Utilitário de gestão de chaves do APT descontinuado" - -#. 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" -"O uso de <command>apt-key</command> está descontinuado, excepto para o uso " -"de <command>apt-key del</command> em scripts de maintainer para remover " -"chaves existentes do chaveiro principal. Se tal utilização do <command>apt-" -"key</command> é desejada, é requerida a instalação adicional da suite GNU " -"Privacy Guard (empacotada em <package>gnupg</package>)." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -msgstr "apt-key(8) estará disponível por último em Debian 12 e Ubuntu 24.04." - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Supported keyring files" -msgstr "Ficheiros de chaveiro suportados" - -#. 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 "" -"O apt-key suporta apenas o formato binário OpenPGP (também conhecido como " -"\"GPG key public ring\") em ficheiros com a extensão \"<literal>gpg</" -"literal>\", não o formato de base de dados keybox introduzido em novas " -"versões &gpg; como predefinição para ficheiros de chaveiro. Os ficheiros " -"chaveiro binários que se destinam a ser usados com qualquer versão do apt " -"devem por isto ser sempre criados com <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 "" -"Como alternativa, se todos os sistemas que devem estar a usar o chaveiro " -"criado têm pelo menos a versão de apt >= 1.4 instalada, você pode usar o " -"formato blindado de ASCII com a extensão \"<literal>asc</literal>\" em " -"substituição o qual pode ser criado com <command>gpg --armor --export</" -"command>." - -#. type: Content of: <refentry><refsect1><title> -#: apt-key.8.xml -msgid "Commands" -msgstr "Comandos" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml -msgid "(deprecated)" -msgstr "(descontinuado)" - -#. 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 "" -"É crítico que as chaves adicionadas manualmente via <command>apt-key</" -"command> sejam verificadas que pertencem ao dono dos repositórios que elas " -"afirmam ser, caso contrário a infraestrutura &apt-secure; fica completamente " -"indeterminada." - -#. 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>Note</emphasis>: Em vez de se usar este comando, deve-se colocar " -"um chaveiro directamente no directório <filename>/etc/apt/trusted.gpg.d/</" -"filename> com um nome descritivo e com \"<literal>gpg</literal>\" ou " -"\"<literal>asc</literal>\" como extensão de ficheiro." - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -msgstr "(maioritariamente descontinuado)" - -#. 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 -msgid "List trusted keys with fingerprints." -msgstr "Lista as chaves de confiança com impressões digitais." - -#. 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 opções avançadas ao gpg. Com <command>adv --recv-key</command> você " -"pode por exemplo descarregar uma chave de servidores de chaves directamente " -"para o conjunto de chaves de confiança. Note que <emphasis>não</emphasis> " -"são feitas verificações, portanto é fácil enfraquecer completamente a " -"infraestrutura &apt-secure; se for usado sem cuidado." - -#. 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 "" -"Note que uma distribuição não precisa e de facto nem deve usar mais este " -"comando e em vez disso empacotar ficheiros chaveiro no directório " -"<filename>/etc/apt/trusted.gpg.d</filename> directamente pois isto evita uma " -"dependência no <package>gnupg</package> e é mais fácil gerir as chaves ao " -"simplesmente adicionar e remover ficheiros para responsáveis e utilizadores " -"de modo semelhante." - -#. 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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -msgid "Deprecation" -msgstr "Descontinuação" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" -"Excepto para usar <command>apt-key del</command> em scripts de maintainer, o " -"uso de <command>apt-key</command> está descontinuado. Esta secção mostra " -"como substituir o uso existente de <command>apt-key</command>." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" -"Se o seu uso existente de <command>apt-key add</command> se parecer com isto:" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" -"Então você pode substituir directamente isto por (contudo note a " -"recomendação em baixo):" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" -"Certifique-se de usar a extensão \"<literal>asc</literal>\" para as chaves " -"blindadas ASCII e a extensão \"<literal>gpg</literal>\" para o formato " -"binário OpenPGP (também conhecido como \"GPG key public ring\"). O formato " -"binário OpenPGP funciona para todas as versões do apt, enquanto o formato " -"blindado ASCII funciona para apt versão >= 1.4." - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -msgstr "" -"<emphasis>Recomendação:</emphasis> Em vez de colocar chaves no directório " -"<filename>/etc/apt/trusted.gpg.d</filename>, você pode coloca-las em " -"qualquer local no seu sistema de ficheiros ao usar a opção <literal>Signed-" -"By</literal> no seu <literal>sources.list</literal> e apontando para o nome " -"de ficheiro da chave. Veja &sources-list; para detalhes. Desde o APT 2.4, é " -"fornecido <filename>/etc/apt/keyrings</filename> como a localização " -"recomendada para chaves não geridas por pacotes. Quando se usa sources.list " -"ao estilo deb822, e com a versão de apt >= 2.4, a opção <literal>Signed-By</" -"literal> pode também ser usada para incluir a chave blindada ASCII completa " -"directamente no <literal>sources.list</literal> sem um ficheiro adicional." - -#. 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" @@ -3315,8 +3075,8 @@ 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</" +"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> pode ser usado como um front-end unificado para " @@ -3414,6 +3174,12 @@ msgstr "" "<literal>showauto</literal>, excepto que irá escrever uma lista dos pacotes " "instalados manualmente." +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "Opções" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -3487,6 +3253,11 @@ msgstr "" "Mais informação acerca destas chamadas selecções do dpkg pode ser encontrada " "em &dpkg;." +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get;, &aptitude;, &apt-conf;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -3537,6 +3308,81 @@ msgstr "" "manual usa o <literal>APT</literal> para se referir a eles todos apenas para " "simplificar." +#. 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 +msgid "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" +"Chaves devem ser geralmente incluídas dentro dos seus <literal>.sources</" +"literal> correspondentes ao embeber a chave blindada-ASCII na opção " +"<literal>Signed-By</literal>. Para o fazer, substitua a linha vazia por um " +"ponto, e depois indente todas as linhas por dois espaços. Veja &sources-" +"list; para mais informação." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" +"Em alternativa, as chaves podem ser colocadas em <filename>/etc/apt/" +"keyrings</filename> para chaves locais , ou <filename>/usr/share/keyrings</" +"filename> para chaves geridas por pacotes, e depois referenciadas pela opção " +"<literal>Signed-By: /etc/apt/keyrings/example-archive-keyring.asc</literal> " +"num ficheiro <literal>.sources</literal> ou usando <literal>deb [signed-by=/" +"etc/apt/keyrings/example-archive-keyring.asc] ...</literal> num formato " +"<literal>.list</literal> antigo. Isto pode ser útil para versões APT " +"anteriores a 2.4, que não suportam chaves embebidas. As chaves blindadas-" +"ASCII têm de usar uma extensão <literal>.asc</literal>, e chaves não " +"blindadas um extensão <literal>.gpg</literal>." + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +msgstr "" +"Para gerar chaves apropriadas para uso no APT usando GnuPG, você vai " +"precisar usar o comando <command>gpg --export-options export-minimal [--" +"armor] --export</command>. Soluções anteriores que envolviam <command>--" +"keyring file --import</command> já não funcionam com versões GnuPG recentes " +"pois usam um formato interno novo (\"GPG keybox database\")." + +#. 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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" +"Note que uma instalação predefinida já contém todas as chaves para adquirir " +"em segurança pacotes a partir dos repositórios predefinidos, portanto gerir " +"chaves só é necessário se forem adicionados repositórios de terceiros. O " +"pacote <command>extrepo</command> pode ser usado para gerir vários " +"repositórios externos com facilidade." + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -3774,55 +3620,6 @@ msgstr "" "distribuição enviada para o repositório (como por exemplo indicada pelo nome " "de código)." -#. 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 -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 "" -"O <command>apt-key</command> é o programa que gere a lista de chaves usada " -"pelo APT para confiar nos repositórios. Pode ser usado para adicionar assim " -"como para listar as chaves confiadas. Limitando quais chave(s) são capazes " -"de assinar qual arquivo é possível via <option>Signed-By</option> em " -"&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 "" -"Note que uma instalação predefinida já contém todas as chaves para adquirir " -"em segurança pacotes a partir dos repositórios predefinidos, portanto perder " -"tempo com o <command>apt-key</command> só é necessário se forem adicionados " -"repositórios de terceiros." - -#. 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 descarrega-la " -"(você deve certificar-se que está a usar um canal de comunicação de " -"confiança quando a obtém), adiciona-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 "Repository Configuration" @@ -3852,12 +3649,12 @@ msgstr "" #: 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>." +"clearsign -o InRelease Release</command> and <command>gpg -abs -o " +"Release.gpg Release</command>." msgstr "" "<emphasis>Assina-lo</emphasis>. Você pode fazer isso ao correr <command>gpg " -"--clearsign -o InRelease Release</command> e <command>gpg -abs -o Release." -"gpg Release</command>." +"--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 @@ -3906,27 +3703,27 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &apt-ftparchive;, &debsign;, &debsig-" +"verify;, &gpg;" msgstr "" -"&apt-conf;, &apt-get;, &sources-list;, &apt-key;, &apt-ftparchive;, " -"&debsign;, &debsig-verify;, &gpg;" +"&apt-conf;, &apt-get;, &sources-list;, &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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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 " +"www.debian.org/doc/manuals/securing-debian-manual/ch07\">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</" +"(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> @@ -3996,8 +3793,8 @@ msgid "" "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>" +"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 @@ -4012,12 +3809,12 @@ msgstr "" #: 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>." +"<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>." +"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 @@ -4028,8 +3825,8 @@ msgid "" 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>." +"configurado apropriadamente. Item de configuração: " +"<literal>Acquire::cdrom::mount</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml @@ -4040,19 +3837,19 @@ msgid "" 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>." +"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>." +"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>." +"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 @@ -4151,11 +3948,11 @@ 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>." +"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>." +"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 @@ -4280,9 +4077,9 @@ msgid "" "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." +"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 " @@ -4297,8 +4094,8 @@ msgstr "" 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>" +"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 @@ -4358,12 +4155,13 @@ msgstr "" "<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++. As linhas começadas com <literal>#</literal> são " -"também tratadas como comentários. 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:" +"também tratadas como comentários. 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 @@ -4417,8 +4215,8 @@ msgid "" "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>." +"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 @@ -4568,6 +4366,79 @@ msgstr "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" +"Este escopo define cores e estilos. As cores básicas suportadas são " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, e " +"<option>white</option>." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" +"O sub-escopo <option>action</option> define as cores para listas de pacotes " +"em <option>install</option> e comandos semelhantes. As seguintes opções " +"podem ser definidas: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; correspondendo às suas listas " +"no resultado do &apt;." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" +"Cada cor pode referenciar uma ou mais de outras opções de cor pelo nome, " +"relativo a <option>APT::Color</option>. As suas sequências de escape serão " +"combinadas." + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" +"As cores podem ser ligadas ou desligadas completamente ao definir " +"<option>APT::Color</option> para <option>yes</option> ou <option>no</" +"option>, ao utilizar as variáveis de ambiente <envar>NO_COLOR</envar> ou " +"<envar>APT_NO_COLOR</envar>, ou usando as opções de linha de comandos " +"<option>--color</option>, <option>--no-color</option>." + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -4647,8 +4518,8 @@ msgid "" msgstr "" "Instantâneo a usar para todos os repositórios configurados com " "<literal>Snapshot: yes</literal>. Veja também &sources-list;, a opção " -"<option>--snapshot</option> que define este valor, e <option>Acquire::" -"Snapshots::URI</option> em baixo." +"<option>--snapshot</option> que define este valor, e " +"<option>Acquire::Snapshots::URI</option> em baixo." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4839,12 +4710,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml -#, fuzzy -#| msgid "" -#| "Selects packages where the name matches the given regular expression." msgid "Never autoremove packages that match the regular expression(s)." msgstr "" -"Seleciona pacotes onde o nome coincide com a expressão regular fornecida." +"Nunca autoremove pacotes que correspondem à(s) expressão(ões) regulares." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4853,14 +4721,20 @@ msgid "" "true. In case kernels are not protected they are treated as any other " "package." msgstr "" +"Esta opção diz ao apt autoremove que os kernels são protegidos e predefine " +"para verdadeiro. No caso em que os kernels não são protegidos eles são " +"tratados como qualquer outro pacote." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" +"Define as expressão(ões) regulares para pacotes de kernel versionados. Com " +"base nestas expressões um conjunto de regras é injetado no apt semelhante às " +"expressões regulares APT::NeverAutoRemove." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml @@ -4872,6 +4746,13 @@ msgid "" "ignored. If you want only the latest kernel, you should set APT::Protect-" "Kernels to false." msgstr "" +"Mantém uma quantidade personalizada de kernels quando faz autoremove e está " +"predefinido para 2, o que significa que dois kernels são mantidos. O apt irá " +"sempre manter o kernel que está em execução e o mais recente. Se o kernel " +"mais recente for o mesmo que o kernel em execução, é mantido o segundo mais " +"recente. Devido a isto, qualquer valor menor que 2 será ignorado. Se você " +"desejar apenas o kernel mais recente, você deve definir APT::Protect-Kernels " +"para falso." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml @@ -5104,95 +4985,6 @@ msgstr "" "protocolos HTTP e HTTPS e estão documentadas nos manuais &apt-transport-" "http; e &apt-transport-https; respetivamente." -#. 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::<host></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::<host></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 "" -"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 -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 @@ -5393,9 +5185,9 @@ msgid "" "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 " +"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 " @@ -5527,38 +5319,40 @@ msgid "" "<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." +"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 "" "Adquirir changelogs só pode ser feito se for conhecido um URL de onde os " "obter. De preferência o ficheiro Release indica isto num campo 'Changelogs'. " "Se isto não estiver disponível, é usado o campo Label/Origin do ficheiro " -"Release para verificar se uma opção <literal>Acquire::Changelogs::URI::" -"Label::<replaceable>LABEL</replaceable></literal> ou <literal>Acquire::" -"Changelogs::URI::Origin::<replaceable>ORIGIN</replaceable></literal> existem " -"e se sim é utilizado este valor. Este valor no ficheiro Release pode ser " -"sobreposto com <literal>Acquire::Changelogs::URI::Override::Label::" -"<replaceable>LABEL</replaceable></literal> ou <literal>Acquire::Changelogs::" -"URI::Override::Origin::<replaceable>ORIGIN</replaceable></literal>. O valor " -"deve ser um URI normal para um ficheiro de texto, excepto se os dados desse " -"pacote específico for substituído pelo marcador de posição " -"<literal>@CHANGEPATH@</literal>. O valor para isto é: 1. se o pacote " -"pertence a um componente (ex. <literal>main</literal>) esta é a primeira " -"parte, caso contrário é omitida. 2. a primeira letra do nome do pacote " -"fonte, excepto se o nome do pacote fonte começar com '<literal>lib</" +"Release para verificar se uma opção " +"<literal>Acquire::Changelogs::URI::Label::<replaceable>LABEL</replaceable></" +"literal> ou <literal>Acquire::Changelogs::URI::Origin::<replaceable>ORIGIN</" +"replaceable></literal> existem e se sim é utilizado este valor. Este valor " +"no ficheiro Release pode ser sobreposto com " +"<literal>Acquire::Changelogs::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> ou " +"<literal>Acquire::Changelogs::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. O valor deve ser um URI normal para um ficheiro de " +"texto, excepto se os dados desse pacote específico for substituído pelo " +"marcador de posição <literal>@CHANGEPATH@</literal>. O valor para isto é: 1. " +"se o pacote pertence a um componente (ex. <literal>main</literal>) esta é a " +"primeira parte, caso contrário é omitida. 2. a primeira letra do nome do " +"pacote fonte, excepto se o nome do pacote fonte começar com '<literal>lib</" "literal>' e neste caso será as primeiras quatro letras. 3. O nome completo " "do pacote fonte. 4. O nome completo outra vez e 5. a versão da fonte. A " "primeira (se presente), segunda, terceira e quarta partes são separadas por " @@ -5575,17 +5369,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." msgstr "" "Tal como changelogs, os instantâneos só podem ser adquiridos se for " "conhecido um URI de onde os obter. Preferencialmente o ficheiro Release " @@ -5594,12 +5390,13 @@ msgstr "" "<literal>Acquire::Snapshots::URI::Label::<replaceable>LABEL</replaceable></" "literal> ou <literal>Acquire::Snapshots::URI::Origin::<replaceable>ORIGIN</" "replaceable></literal> existe e se sim esse valor é tomado. O valor no " -"ficheiro Release pode ser sobreposto com <literal>Acquire::Snapshots::URI::" -"Override::Label::<replaceable>LABEL</replaceable></literal> ou " +"ficheiro Release pode ser sobreposto com " +"<literal>Acquire::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> ou " "<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" "replaceable></literal>. O valor deve ser um URI normal para um directório, " "excepto com o ID de instantâneo substituído pelo marcador de posição " -"<literal>@SNAPSHOTID</literal>. O valor especial '<literal>no</literal>' " +"<literal>@SNAPSHOTID@</literal>. O valor especial '<literal>no</literal>' " "está disponível para esta opção indicando que esta fonte não pode ser usada " "para de onde se adquirir instantâneos. Será tentada outra fonte se " "disponível neste caso." @@ -5614,15 +5411,15 @@ msgstr "Configuração específica de binário" 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>." +"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 "" "Especialmente com a introdução do binário <command>apt</command> pode ser " "útil para definir certas opções apenas para um binário específico mesmo como " -"opções que parecessem apenas afectar um certo binário como <option>APT::Get::" -"Show-Versions</option> afecta <command>apt-get</command> assim como " -"<command>apt</command>." +"opções que parecessem apenas afectar um certo binário como " +"<option>APT::Get::Show-Versions</option> afecta <command>apt-get</command> " +"assim como <command>apt</command>." #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -5727,12 +5524,12 @@ 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." +"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 " @@ -5758,11 +5555,11 @@ msgstr "" "especial. Se definido, todos os caminhos 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>. Se desejar usar como prefixo apenas caminhos " -"relativos, defina antes <literal>Dir</literal>." +"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>. Se desejar usar como " +"prefixo apenas caminhos relativos, defina antes <literal>Dir</literal>." #. type: Content of: <refentry><refsect1><para> #: apt.conf.5.xml @@ -5777,10 +5574,10 @@ 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." +"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 @@ -5935,9 +5732,9 @@ msgid "" "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." +"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 "" "Cada linha directiva de configuração tem a forma <literal>chave=valor</" "literal>. Caracteres especiais (sinais de igual, novas-linhas, caracteres " @@ -5998,10 +5795,11 @@ msgid "" "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." +"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 @@ -6068,11 +5866,11 @@ msgid "" "<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." +"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 @@ -6152,12 +5950,6 @@ 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." @@ -6276,8 +6068,8 @@ 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." +"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 " @@ -6293,14 +6085,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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 " @@ -6380,8 +6172,8 @@ 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>." +"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>." @@ -6389,8 +6181,8 @@ 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 " +"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 " @@ -6500,15 +6292,24 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: apt_preferences.5.xml +#, fuzzy +#| 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." 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." +"directory 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 " @@ -6520,6 +6321,17 @@ msgstr "" "<literal>Dir::Ignore-Files-Silently</literal> - e neste caso será ignorado " "em silêncio." +#. type: Content of: <refentry><refsect1><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><title> #: apt_preferences.5.xml msgid "APT's Default Priority Assignments" @@ -6855,6 +6667,23 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "Desde 2.9.9, você também pode fixar por uma versão de fonte:" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, no-wrap +msgid "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" +msgstr "" +"Package: perl\n" +"Pin: source-version &good-perl;*\n" +"Pin-Priority: 1001\n" + #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> #: apt_preferences.5.xml msgid "" @@ -6905,8 +6734,8 @@ 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\"" +"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 @@ -7178,9 +7007,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" "O sufixo <literal>:any</literal> certifica a selecção de pacotes binários de " "qualquer arquitectura. Sem este sufixo, o apt assume implicitamente o sufixo " @@ -7357,9 +7186,9 @@ msgstr "Então:" 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." +"\"<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;</" @@ -7638,12 +7467,12 @@ msgid "" "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." +"<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 " @@ -7986,6 +7815,17 @@ msgstr "" "<command>apt-get update</command> (ou por um comando equivalente de outro " "front-end do APT)." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -8008,15 +7848,30 @@ msgstr "" "O directório <filename>/etc/apt/sources.list.d</filename> disponibiliza um " "modo de adicionar entradas na sources.list em ficheiros separados. São " "permitidos dois formatos diferentes de ficheiro como descrito nas próximas " -"duas secções. Os nomes de ficheiros precisam de ter ou a extensão <filename>." -"list</filename> ou <filename>.sources</filename> dependendo do formato " -"contido. Os nomes dos ficheiros podem apenas conter letras (a-z e A-Z), " -"dígitos (0-9), e os caracteres underscore (_), menos (-) e ponto (.). De " +"duas secções. Os nomes de ficheiros precisam de ter ou a extensão " +"<filename>.list</filename> ou <filename>.sources</filename> dependendo do " +"formato contido. Os nomes dos ficheiros podem apenas 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><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" +"O nome de ficheiro sugerido para novos sistemas é <filename>/etc/apt/" +"sources.list.d/<replaceable>vendor</replaceable>.sources</filename>, onde " +"<replaceable>vendor</replaceable> é o resultado de <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, em formato estilo deb822. Por exemplo, " +"Ubuntu usa <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -8073,6 +7928,14 @@ msgstr "" "formato por si mesmas podem não esperar encontrar opções pois estas não eram " "comuns antes da introdução do suporte a multi-arquitecturas." +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" +"Este formato está descontinuado e pode eventualmente ser removido, mas não " +"antes de 2029." + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -8317,14 +8180,15 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated one-line-style format: <placeholder type=\"literallayout\" " +"id=\"0\"/> or like this in deb822 style format: <placeholder " +"type=\"literallayout\" id=\"1\"/>" msgstr "" "Como um exemplo, as fontes da sua distribuição podem-se parecer com isto no " -"formato estilo uma-linha: <placeholder type=\"literallayout\" id=\"0\"/> ou " -"com isto no formato estilo deb822: <placeholder type=\"literallayout\" " -"id=\"1\"/>" +"formato descontinuado de estilo uma-linha: <placeholder " +"type=\"literallayout\" id=\"0\"/> ou com isto no formato estilo deb822: " +"<placeholder type=\"literallayout\" id=\"1\"/>" #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml @@ -8354,6 +8218,33 @@ msgstr "" "não estamos a listar explicitamente esses nomes aqui. As opções não " "suportadas são ignoradas em silêncio por todas as versões do APT." +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +#, fuzzy +#| 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." +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"option>." +msgstr "" +"<option>Architectures</option> (<option>arch</option>) é uma opção multi-" +"valor que define para quais arquitecturas deve ser descarregada a " +"informação. Se esta opção não for definida é todas as arquitecturas como " +"definido pela opção de configuração <option>APT::Architectures</option>." + #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml msgid "" @@ -8387,11 +8278,12 @@ msgstr "" 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." +"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>) é uma opção multi-valor " "que define quais alvos de download o apt irá tentar adquirir a partir desta " @@ -8420,8 +8312,9 @@ msgstr "" "se o repositório não anunciar a disponibilidade de PDiffs. Usa por " "predefinição o valor da opção com o mesmo nome para um ficheiro índice " "específico definido no scope <option>Acquire::IndexTargets</option>, o qual " -"usa por predefinição o valor da opção de configuração <option>Acquire::" -"PDiffs</option> o qual usa por predefinição <literal>yes</literal>." +"usa por predefinição o valor da opção de configuração " +"<option>Acquire::PDiffs</option> o qual usa por predefinição <literal>yes</" +"literal>." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8449,10 +8342,10 @@ msgstr "" "funcionalidade se esta fonte indicar suporte para tal, enquanto " "<literal>force</literal> irá activar a funcionalidade independentemente do " "que a fonte indique. Recorre à predefinição do valor da opção com o mesmo " -"nome para um ficheiro index específico definido no scope <option>Acquire::" -"IndexTargets</option>, que o próprio usa por predefinição o valor da opção " -"de configuração <option>Acquire::By-Hash</option> a qual é predefinida para " -"<literal>yes</literal>." +"nome para um ficheiro index específico definido no scope " +"<option>Acquire::IndexTargets</option>, que o próprio usa por predefinição o " +"valor da opção de configuração <option>Acquire::By-Hash</option> a qual é " +"predefinida para <literal>yes</literal>." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml @@ -8560,18 +8453,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" "<option>Signed-By</option> (<option>signed-by</option>) é uma opção para " "requerer a um repositório para passar a verificação &apt-secure; com um " @@ -8586,20 +8478,19 @@ msgstr "" "geridos pelo operador do sistema. Se não forem especificados nenhuns " "ficheiros chaveiro, o predefinido é o chaveiro <filename>trusted.gpg</" "filename> e todos os chaveiros no directório <filename>trusted.gpg.d/</" -"filename> (veja <command>apt-key fingerprint</command>). Se não for " -"especificada nenhuma impressão digital, são selecionadas todas as chaves nos " -"chaveiros. Uma impressão digital irá também aceitar todas as assinaturas por " -"uma sub-chave dessa chave. Se isto não for desejado pode ser adicionado um " -"ponto de exclamação (<literal>!</literal>) à impressão digital para " -"desactivar este comportamento. A opção usa por predefinição o valor da opção " -"com o mesmo nome se for definida no ficheiro <filename>Release</filename> " -"previamente adquirido deste repositório (apenas impressões digitais podem " -"ser especificadas lá totalmente). Caso contrário, todas as chaves nos " -"chaveiros de confiança são consideradas assinantes válidos para este " -"repositório. A opção também pode ser definida diretamente para um bloco de " -"chave pública embebido. É preciso especial cuidado para codificar a linha " -"vazia com espaços iniciais e \".\": <placeholder type=\"literallayout\" " -"id=\"0\"/>" +"filename>. Se não for especificada nenhuma impressão digital, são " +"selecionadas todas as chaves nos chaveiros. Uma impressão digital irá também " +"aceitar todas as assinaturas por uma sub-chave dessa chave. Se isto não for " +"desejado pode ser adicionado um ponto de exclamação (<literal>!</literal>) à " +"impressão digital para desactivar este comportamento. A opção usa por " +"predefinição o valor da opção com o mesmo nome se for definida no ficheiro " +"<filename>Release</filename> previamente adquirido deste repositório (apenas " +"impressões digitais podem ser especificadas lá totalmente). Caso contrário, " +"todas as chaves nos chaveiros de confiança são consideradas assinantes " +"válidos para este repositório. A opção também pode ser definida diretamente " +"para um bloco de chave pública embebido. É preciso especial cuidado para " +"codificar a linha vazia com espaços iniciais e \".\": <placeholder " +"type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8614,8 +8505,9 @@ msgid "" "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>." +"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>) é " "um valor yes/no que controla se o APT deverá tentar detectar ataques de " @@ -8658,8 +8550,9 @@ msgstr "" "actualizados (locais) de um arquivo mais frequentemente actualizado mas " "menos acessível (o qual está também em sources.list) em vez de desactivar " "completamente a verificação. Usa por predefinição o valor das opções de " -"configuração <option>Acquire::Min-ValidTime</option> and <option>Acquire::" -"Max-ValidTime</option> que estão ambas não definidas por predefinição." +"configuração <option>Acquire::Min-ValidTime</option> and " +"<option>Acquire::Max-ValidTime</option> que estão ambas não definidas por " +"predefinição." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8715,25 +8608,16 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" "<option>Snapshot</option> (<option>snapshot</option>) permite selecionar uma " "versão anterior do arquivo a partir do serviço de instantâneos. Os valores " -"suportados são:" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" -"<literal>enable</literal> para permitir selecionar um instantâneo com a " -"opção <option>--snapshot</option>, ou" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." -msgstr "um ID de instantâneo para seleciona um instantâneo específico." +"suportados são: <literal>enable</literal> (predefinido) para permitir " +"selecionar um instantâneo com a opção <option>--snapshot</option>, " +"<literal>ID</literal>, ou <literal>disable</literal> para excluir o " +"repositório." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml @@ -8884,38 +8768,6 @@ msgstr "" "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 ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" -"O esquema ftp especifica um servidor FTP para um arquivo. O uso de FTP está " -"em declínio em favor de <literal>http</literal> e <literal>https</literal> e " -"muitos arquivos ou nunca ofereceram ou estão a retirar o acesso FTP. Se você " -"ainda precisa deste método, estão disponíveis muitas opções de configuração " -"no escopo <literal>Acquire::ftp</literal> e detalhadas em &apt-conf;." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" -"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 "" @@ -8929,20 +8781,6 @@ msgstr "" "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" @@ -9123,62 +8961,62 @@ 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 " +"Uses HTTPS to access the archive at deb.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." +"Usa HTTPS para aceder ao arquivo em deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS 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 " +"Usa HTTPS para aceder ao arquivo em deb.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." +"uma única sessão HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" +msgstr "deb https://deb.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" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" @@ -9261,6 +9099,52 @@ msgstr "" "Suites: stable testing unstable\n" "Components: main contrib\n" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +msgstr "Usa uma marca temporal específica para Instantâneos." + +#. 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" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian\n" +"Suites: stable testing unstable\n" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +msgstr "Não permite o parâmetro opcional --snapshot." + +#. type: Content of: <refentry><refsect1><literallayout> +#: sources.list.5.xml +#, no-wrap +msgid "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" +"Types: deb deb-src\n" +"URIs: http://deb.debian.org/debian-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -9321,8 +9205,8 @@ msgstr "" #: 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>" +"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: " @@ -9366,11 +9250,11 @@ 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>." +"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>." +"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 @@ -9503,10 +9387,10 @@ msgid "" "<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." +"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 " @@ -9537,13 +9421,14 @@ msgid "" "<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>, " +"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> e " "<literal>Description</literal>." @@ -9766,12 +9651,12 @@ msgstr "Secção <literal>TreeDefault</literal>" #: 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." +"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." +"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 @@ -9805,17 +9690,17 @@ 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>" +"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>" +"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>" +"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>" @@ -9826,8 +9711,8 @@ 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>" +"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 @@ -9835,19 +9720,19 @@ 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>" +"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>" +"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>" +"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 @@ -9857,8 +9742,8 @@ msgid "" "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>" +"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 @@ -10272,14 +10157,14 @@ msgid "" "literal>." msgstr "" "Seleciona o ficheiro de sobreposição de fonte a usar com o comando " -"<literal>sources</literal>. Item de Configuração: <literal>APT::FTPArchive::" -"SourceOverride</literal>." +"<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>." +"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>." @@ -10295,8 +10180,8 @@ 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>." +"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 @@ -10411,9 +10296,10 @@ msgid "" "following tokens being recognized; Unknown tokens will be ignored. Tokens " "may be separated by spaces, tabs or newlines." msgstr "" -"O formato definido aqui é semelhante ao formato do ficheiro <filename>~/." -"netrc</filename> usado pelo <citerefentry><refentrytitle><command>ftp</" -"command></refentrytitle><manvolnum>1</manvolnum></citerefentry> e programas " +"O formato definido aqui é semelhante ao formato do ficheiro " +"<filename>~/.netrc</filename> usado pelo " +"<citerefentry><refentrytitle><command>ftp</command></" +"refentrytitle><manvolnum>1</manvolnum></citerefentry> e programas " "semelhantes que interagem com servidores. É um formato simples baseado em " "token com os seguintes tokens a serem reconhecidos. Os tokens desconhecidos " "serão ignorados. Os tokens podem ser separados por espaços, tabs ou nova-" @@ -10708,16 +10594,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" "A variável de ambiente <envar>http_proxy</envar> é suportada pela " "configuração de todo o sistema. Proxies específicos para o APT podem ser " @@ -10750,14 +10637,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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 "" "Mais ainda, existem três definições disponibilizadas para controle de cache " "como caches de proxy compatíveis com HTTP/1.1. <literal>Acquire::http::No-" @@ -10766,8 +10653,8 @@ msgstr "" "idade máxima permitida (em segundos) de um ficheiro índice na cache do " "proxy. <literal>Acquire::http::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." +"usado para prevenir que o proxy polua a sua cache com (grandes) " +"ficheiros .deb." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-http.1.xml @@ -10802,8 +10689,8 @@ msgid "" "<replaceable>host</replaceable></literal>." msgstr "" "Note que a auto-detecção não será usada para uma máquina se uma configuração " -"de proxy específica de máquina já estiver definida via <literal>Acquire::" -"http::Proxy::<replaceable>máquina</replaceable></literal>." +"de proxy específica de máquina já estiver definida via " +"<literal>Acquire::http::Proxy::<replaceable>máquina</replaceable></literal>." #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml @@ -10817,11 +10704,11 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" -"Esta opção toma precedência sobre a opção antiga de nome <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"Esta opção toma precedência sobre a opção antiga de nome " +"<literal>Acquire::http::ProxyAutoDetect</literal>." #. type: Content of: <refentry><refsect1><refsect2><title> #: apt-transport-http.1.xml @@ -10858,12 +10745,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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 " @@ -10993,9 +10880,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" "O protocolo HTTPS é baseado no protocolo HTTP, assim todas as opções " "suportadas pelo &apt-transport-http; são também suportadas via " @@ -11042,9 +10929,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" "Uma lista de revogação de certificados personalizada (CRL) pode ser " "configurada com as opções <literal>Acquire::https::CRLFile</literal> e " @@ -11115,19 +11003,19 @@ msgstr "Autenticação do cliente" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" "Para além de suportar autenticação baseada em palavra-passe (veja &apt-" "authconf;) o HTTPS também suporta autenticação baseada em certificados do " -"cliente via <literal>Acquire::https::SSLCert</literal> e <literal>Acquire::" -"https::SSLKey</literal>. Estes devem ser definidos respetivamente no nome de " -"ficheiro do certificado de cliente X.509 e a chave privada (não encriptada) " -"associada, ambos em formato PEM. Na prática o uso de variantes especificas " -"da máquina de ambas opções é altamente recomendado." +"cliente via <literal>Acquire::https::SSLCert</literal> e " +"<literal>Acquire::https::SSLKey</literal>. Estes devem ser definidos " +"respetivamente no nome de ficheiro do certificado de cliente X.509 e a chave " +"privada (não encriptada) associada, ambos em formato PEM. Na prática o uso " +"de variantes especificas da máquina de ambas opções é altamente recomendado." #. type: Content of: <refentry><refsect1><literallayout> #: apt-transport-https.1.xml @@ -11416,9 +11304,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" "Assumindo que um ficheiro com este conteúdo está armazenado em <filename>/" "etc/apt/mirrorlist.txt</filename> na sua máquina, pode ser usado desta " @@ -11438,9 +11326,9 @@ msgid "" "literal> the sources.list entry from above could instead be written as:" msgstr "" "Todas as versões do método mirror suportam uma mirrorlist acessível via " -"HTTP, portanto assumindo que está disponível em <literal>http://apt.example." -"org/mirror.lst</literal> a entrada sources.list de cima poderá, em vez " -"dessa, ser escrita como:" +"HTTP, portanto assumindo que está disponível em <literal>http://" +"apt.example.org/mirror.lst</literal> a entrada sources.list de cima poderá, " +"em vez dessa, ser escrita como:" #. type: Content of: <refentry><refsect1><refsect2><literallayout> #: apt-transport-mirror.1.xml @@ -11880,17 +11768,15 @@ msgstr "Seleciona todos os pacotes que já não existem nos repositórios." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>?false</code>" msgid "<code>?phasing</code>" -msgstr "<code>?false</code>" +msgstr "<code>?phasing</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Selects packages that no longer exist in repositories." msgid "Selects packages that will be kept back in upgrades due to phasing." -msgstr "Seleciona todos os pacotes que já não existem nos repositórios." +msgstr "" +"Seleciona pacotes que serão mantidos nas versões anteriores nas " +"actualizações devido a phasing." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12096,19 +11982,16 @@ msgstr "Seleciona versões onde a string Priority é igual ao nome dado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml -#, fuzzy -#| msgid "<code>?false</code>" msgid "<code>?security</code>" -msgstr "<code>?false</code>" +msgstr "<code>?security</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml -#, fuzzy -#| msgid "Selects packages that can be upgraded (have a newer candidate)." msgid "" "Selects packages that are a security update or succeed a security update." msgstr "" -"Seleciona pacotes que podem ser actualizados (têm um candidato mais recente)." +"Seleciona pacotes que são actualizações de segurança ou sucedem a uma " +"actualização de segurança." #. type: Content of: <refentry><refsect1><title> #: apt-patterns.7.xml @@ -12154,6 +12037,16 @@ msgstr "<code>?suggests(PATTERN)</code>" msgid "<code>~DSuggests:PATTERN</code>" msgstr "<code>~DSuggests:PATTERN</code>" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "<code>?recommends(PATTERN)</code>" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "<code>~DRecommends:PATTERN</code>" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -12207,11 +12100,11 @@ msgstr "<code>~DEnhances:PATTERN</code>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" -"Seleciona versões que dependem/pré-dependem/sugerem/entram em conflito/etc " -"de/com pacotes que correspondem ao padrão PATTERN." +"Seleciona versões que dependem/pré-dependem/sugerem/recomendam/entram em " +"conflito/etc de/com pacotes que correspondem ao padrão PATTERN." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml @@ -12349,10 +12242,10 @@ msgstr "?narrow aceita argumentos infinitos" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" "<code>foo</code> não pode ser usado como abreviatura para <code>?name(foo)</" "code>, pois isto pode fazer com que erros de escrita passem despercebidos: " @@ -12621,13 +12514,13 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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://ftp.de.debian.org/debian/ 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" @@ -12797,8 +12690,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12810,8 +12703,8 @@ msgstr "" "\n" " Por exemplo:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -12833,13 +12726,13 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\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" +" distribuição são tipicamente algo como: stable unstable testing\n" "\n" " Distribution [stable]:\n" @@ -12848,18 +12741,11 @@ msgstr "" 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." +"<emphasis>unstable</emphasis> refers to the developmental version." 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." +"refere-se à versão de desenvolvimento." #. type: Content of: <book><chapter><screen> #: guide.dbk @@ -12931,8 +12817,8 @@ msgid "" "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 " +"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." @@ -13405,18 +13291,18 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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" @@ -13746,8 +13632,8 @@ msgid "" "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>." +"de ficheiro de configuração em <emphasis>/usr/share/doc/apt/examples/" +"apt.conf</emphasis>." #. type: Content of: <book><chapter><section><para> #: offline.dbk @@ -13962,6 +13848,451 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade\n" 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 "" +#~ "<literal>enable</literal> to allow selecting a snapshot with the " +#~ "<option>--snapshot</option> option, or" +#~ msgstr "" +#~ "<literal>enable</literal> para permitir selecionar um instantâneo com a " +#~ "opção <option>--snapshot</option>, ou" + +#~ msgid "a snapshot ID to select a specific snapshot." +#~ msgstr "um ID de instantâneo para seleciona um instantâneo específico." + +#~ 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::<host></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::<host></" +#~ "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>." + +#~ 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." + +#~ 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)." + +#~ 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." + +#~ 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." + +#~ msgid "Print information related to downloading packages using FTP." +#~ msgstr "" +#~ "Escreve informação relacionada com o descarregamento de pacotes usando " +#~ "FTP." + +#~ msgid "" +#~ "The ftp scheme specifies an FTP server for an archive. Use of FTP is on " +#~ "the decline in favour of <literal>http</literal> and <literal>https</" +#~ "literal> and many archives either never offered or are retiring FTP " +#~ "access. If you still need this method many configuration options for it " +#~ "are available in the <literal>Acquire::ftp</literal> scope and detailed " +#~ "in &apt-conf;." +#~ msgstr "" +#~ "O esquema ftp especifica um servidor FTP para um arquivo. O uso de FTP " +#~ "está em declínio em favor de <literal>http</literal> e <literal>https</" +#~ "literal> e muitos arquivos ou nunca ofereceram ou estão a retirar o " +#~ "acesso FTP. Se você ainda precisa deste método, estão disponíveis muitas " +#~ "opções de configuração no escopo <literal>Acquire::ftp</literal> e " +#~ "detalhadas em &apt-conf;." + +#~ msgid "" +#~ "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 "" +#~ "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." + +#~ 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." + +#~ 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\">" + +#~ msgid "Deprecated APT key management utility" +#~ msgstr "Utilitário de gestão de chaves do APT descontinuado" + +#~ 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." + +#~ msgid "" +#~ "Use of <command>apt-key</command> is deprecated, except for the use of " +#~ "<command>apt-key del</command> in maintainer scripts to remove existing " +#~ "keys from the main keyring. If such usage of <command>apt-key</command> " +#~ "is desired the additional installation of the GNU Privacy Guard suite " +#~ "(packaged in <package>gnupg</package>) is required." +#~ msgstr "" +#~ "O uso de <command>apt-key</command> está descontinuado, excepto para o " +#~ "uso de <command>apt-key del</command> em scripts de maintainer para " +#~ "remover chaves existentes do chaveiro principal. Se tal utilização do " +#~ "<command>apt-key</command> é desejada, é requerida a instalação adicional " +#~ "da suite GNU Privacy Guard (empacotada em <package>gnupg</package>)." + +#~ msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." +#~ msgstr "" +#~ "apt-key(8) estará disponível por último em Debian 12 e Ubuntu 24.04." + +#~ msgid "Supported keyring files" +#~ msgstr "Ficheiros de chaveiro suportados" + +#~ 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 "" +#~ "O apt-key suporta apenas o formato binário OpenPGP (também conhecido como " +#~ "\"GPG key public ring\") em ficheiros com a extensão \"<literal>gpg</" +#~ "literal>\", não o formato de base de dados keybox introduzido em novas " +#~ "versões &gpg; como predefinição para ficheiros de chaveiro. Os ficheiros " +#~ "chaveiro binários que se destinam a ser usados com qualquer versão do apt " +#~ "devem por isto ser sempre criados com <command>gpg --export</command>." + +#~ 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 "" +#~ "Como alternativa, se todos os sistemas que devem estar a usar o chaveiro " +#~ "criado têm pelo menos a versão de apt >= 1.4 instalada, você pode usar o " +#~ "formato blindado de ASCII com a extensão \"<literal>asc</literal>\" em " +#~ "substituição o qual pode ser criado com <command>gpg --armor --export</" +#~ "command>." + +#~ msgid "Commands" +#~ msgstr "Comandos" + +#~ msgid "(deprecated)" +#~ msgstr "(descontinuado)" + +#~ 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." + +#~ 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 "" +#~ "É crítico que as chaves adicionadas manualmente via <command>apt-key</" +#~ "command> sejam verificadas que pertencem ao dono dos repositórios que " +#~ "elas afirmam ser, caso contrário a infraestrutura &apt-secure; fica " +#~ "completamente indeterminada." + +#~ 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>Note</emphasis>: Em vez de se usar este comando, deve-se " +#~ "colocar um chaveiro directamente no directório <filename>/etc/apt/" +#~ "trusted.gpg.d/</filename> com um nome descritivo e com \"<literal>gpg</" +#~ "literal>\" ou \"<literal>asc</literal>\" como extensão de ficheiro." + +#~ msgid "(mostly deprecated)" +#~ msgstr "(maioritariamente descontinuado)" + +#~ msgid "Remove a key from the list of trusted keys." +#~ msgstr "Remove uma chave da lista de chaves de confiança." + +#~ msgid "Output the key &synopsis-param-keyid; to standard output." +#~ msgstr "Escreve o &synopsis-param-keyid; da chave na saída standard." + +#~ msgid "Output all trusted keys to standard output." +#~ msgstr "Escreve todas as chaves de confiança na saída standard." + +#~ msgid "List trusted keys with fingerprints." +#~ msgstr "Lista as chaves de confiança com impressões digitais." + +#~ 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 opções avançadas ao gpg. Com <command>adv --recv-key</command> você " +#~ "pode por exemplo descarregar uma chave de servidores de chaves " +#~ "directamente para o conjunto de chaves de confiança. Note que " +#~ "<emphasis>não</emphasis> são feitas verificações, portanto é fácil " +#~ "enfraquecer completamente a infraestrutura &apt-secure; se for usado sem " +#~ "cuidado." + +#~ 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;." + +#~ 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 "" +#~ "Note que uma distribuição não precisa e de facto nem deve usar mais este " +#~ "comando e em vez disso empacotar ficheiros chaveiro no directório " +#~ "<filename>/etc/apt/trusted.gpg.d</filename> directamente pois isto evita " +#~ "uma dependência no <package>gnupg</package> e é mais fácil gerir as " +#~ "chaves ao simplesmente adicionar e remover ficheiros para responsáveis e " +#~ "utilizadores de modo semelhante." + +#~ 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." + +#~ 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." + +#~ 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." + +#~ msgid "Deprecation" +#~ msgstr "Descontinuação" + +#~ msgid "" +#~ "Except for using <command>apt-key del</command> in maintainer scripts, " +#~ "the use of <command>apt-key</command> is deprecated. This section shows " +#~ "how to replace existing use of <command>apt-key</command>." +#~ msgstr "" +#~ "Excepto para usar <command>apt-key del</command> em scripts de " +#~ "maintainer, o uso de <command>apt-key</command> está descontinuado. Esta " +#~ "secção mostra como substituir o uso existente de <command>apt-key</" +#~ "command>." + +#~ msgid "" +#~ "If your existing use of <command>apt-key add</command> looks like this:" +#~ msgstr "" +#~ "Se o seu uso existente de <command>apt-key add</command> se parecer com " +#~ "isto:" + +#~ msgid "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add " +#~ "-</literal>" +#~ msgstr "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add " +#~ "-</literal>" + +#~ msgid "" +#~ "Then you can directly replace this with (though note the recommendation " +#~ "below):" +#~ msgstr "" +#~ "Então você pode substituir directamente isto por (contudo note a " +#~ "recomendação em baixo):" + +#~ msgid "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" +#~ "trusted.gpg.d/myrepo.asc</literal>" +#~ msgstr "" +#~ "<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" +#~ "trusted.gpg.d/myrepo.asc</literal>" + +#~ msgid "" +#~ "Make sure to use the \"<literal>asc</literal>\" extension for ASCII " +#~ "armored keys and the \"<literal>gpg</literal>\" extension for the binary " +#~ "OpenPGP format (also known as \"GPG key public ring\"). The binary " +#~ "OpenPGP format works for all apt versions, while the ASCII armored format " +#~ "works for apt version >= 1.4." +#~ msgstr "" +#~ "Certifique-se de usar a extensão \"<literal>asc</literal>\" para as " +#~ "chaves blindadas ASCII e a extensão \"<literal>gpg</literal>\" para o " +#~ "formato binário OpenPGP (também conhecido como \"GPG key public ring\"). " +#~ "O formato binário OpenPGP funciona para todas as versões do apt, enquanto " +#~ "o formato blindado ASCII funciona para apt versão >= 1.4." + +#~ msgid "" +#~ "<emphasis>Recommended:</emphasis> Instead of placing keys into the " +#~ "<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " +#~ "anywhere on your filesystem by using the <literal>Signed-By</literal> " +#~ "option in your <literal>sources.list</literal> and pointing to the " +#~ "filename of the key. See &sources-list; for details. Since APT 2.4, " +#~ "<filename>/etc/apt/keyrings</filename> is provided as the recommended " +#~ "location for keys not managed by packages. When using a deb822-style " +#~ "sources.list, and with apt version >= 2.4, the <literal>Signed-By</" +#~ "literal> option can also be used to include the full ASCII armored " +#~ "keyring directly in the <literal>sources.list</literal> without an " +#~ "additional file." +#~ msgstr "" +#~ "<emphasis>Recomendação:</emphasis> Em vez de colocar chaves no directório " +#~ "<filename>/etc/apt/trusted.gpg.d</filename>, você pode coloca-las em " +#~ "qualquer local no seu sistema de ficheiros ao usar a opção " +#~ "<literal>Signed-By</literal> no seu <literal>sources.list</literal> e " +#~ "apontando para o nome de ficheiro da chave. Veja &sources-list; para " +#~ "detalhes. Desde o APT 2.4, é fornecido <filename>/etc/apt/keyrings</" +#~ "filename> como a localização recomendada para chaves não geridas por " +#~ "pacotes. Quando se usa sources.list ao estilo deb822, e com a versão de " +#~ "apt >= 2.4, a opção <literal>Signed-By</literal> pode também ser usada " +#~ "para incluir a chave blindada ASCII completa directamente no " +#~ "<literal>sources.list</literal> sem um ficheiro adicional." + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + +#~ 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 "" +#~ "O <command>apt-key</command> é o programa que gere a lista de chaves " +#~ "usada pelo APT para confiar nos repositórios. Pode ser usado para " +#~ "adicionar assim como para listar as chaves confiadas. Limitando quais " +#~ "chave(s) são capazes de assinar qual arquivo é possível via " +#~ "<option>Signed-By</option> em &sources-list;." + +#~ 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 descarrega-la " +#~ "(você deve certificar-se que está a usar um canal de comunicação de " +#~ "confiança quando a obtém), adiciona-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." + #~ 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;." @@ -14013,20 +14344,20 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ 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::<host></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." +#~ "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::<host></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::<host></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>." +#~ "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::<host></" +#~ "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>." #~ msgid "" #~ "The <literal>Cache-control</literal>, <literal>Timeout</literal>, " @@ -14048,39 +14379,40 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ "info about trusted certificates. <literal><host>::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><host>::" -#~ "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><host>::" -#~ "Verify-Host</literal> is the corresponding per-host option. " -#~ "<literal>SslCert</literal> determines what certificate to use for client " -#~ "authentication. <literal><host>::SslCert</literal> is the " -#~ "corresponding per-host option. <literal>SslKey</literal> determines what " -#~ "private key to use for client authentication. <literal><host>::" -#~ "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><host>::SslForceVersion</" +#~ "should be verified against trusted certificates. " +#~ "<literal><host>::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><host>::Verify-Host</literal> is the corresponding per-" +#~ "host option. <literal>SslCert</literal> determines what certificate to " +#~ "use for client authentication. <literal><host>::SslCert</literal> " +#~ "is the corresponding per-host option. <literal>SslKey</literal> " +#~ "determines what private key to use for client authentication. " +#~ "<literal><host>::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><host>::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><" -#~ "host>::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><host>::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><host>::Verify-Host</literal> é a opção 'por " -#~ "máquina' correspondente. <literal>SslCert</literal> determina qual " -#~ "certificado a usar para autenticação de clientes. <literal><host>::" -#~ "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><host>::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><host>::SslForceVersion</" -#~ "literal> é a opção 'por máquina' correspondente." +#~ "contém informação acerca de certificados de confiança. " +#~ "<literal><host>::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><host>::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><host>::Verify-Host</literal> " +#~ "é a opção 'por máquina' correspondente. <literal>SslCert</literal> " +#~ "determina qual certificado a usar para autenticação de clientes. " +#~ "<literal><host>::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><host>::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><host>::SslForceVersion</literal> é a opção 'por máquina' " +#~ "correspondente." #~ msgid "" #~ "The http scheme specifies an HTTP server for the archive. If an " @@ -14094,8 +14426,9 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ "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." +#~ "autenticados pode usar uma string do formato http://" +#~ "user:pass@server:port/. Note que este não é um método de autenticação " +#~ "seguro." #~ msgid "Archive Configuration" #~ msgstr "Configuração de Arquivo" @@ -14407,21 +14740,21 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ 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>." +#~ "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>." +#~ "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>." +#~ "(<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 " @@ -14562,18 +14895,20 @@ msgstr "O qual irá usar os arquivos já obtidos e que estão no disco." #~ "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." +#~ "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 "" #~ "Como uma excepção temporária o &apt-get; (não o &apt;!) dispara avisos " #~ "apenas se encontrar arquivos não autenticados para dar um período de " #~ "graça ligeiramente mais longo nesta alteração que afecta a " #~ "compatibilidade com versões anteriores. Esta excepção será removida em " #~ "lançamentos futuros e você pode optar por não usar este período de graça " -#~ "ao definir a opção de configuração <option>Binary::apt-get::Acquire::" -#~ "AllowInsecureRepositories</option> para <literal>false</literal> ou " -#~ "<option>--no-allow-insecure-repositories</option> na linha de comandos." +#~ "ao definir a opção de configuração <option>Binary::apt-" +#~ "get::Acquire::AllowInsecureRepositories</option> para <literal>false</" +#~ "literal> ou <option>--no-allow-insecure-repositories</option> na linha de " +#~ "comandos." #~ msgid "" #~ "In the future APT will refuse to work with unauthenticated repositories " diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po index a38a147..9516830 100644 --- a/doc/po/pt_BR.po +++ b/doc/po/pt_BR.po @@ -8,7 +8,7 @@ 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: 2024-03-22 10:14+0000\n" +"POT-Creation-Date: 2025-05-19 18:28+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" @@ -109,6 +109,18 @@ msgid "" " </varlistentry>\n" msgstr "" +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--audit</option></term>\n" +" <listitem><para>Show audit (and notice) messages. This overrides the quiet option, but only for notice messages, not progress ones.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" +msgstr "" + #. type: Plain text #: apt.ent #, no-wrap @@ -140,6 +152,21 @@ msgid "" " </para>\n" " </listitem>\n" " </varlistentry>\n" +msgstr "" + +#. type: Plain text +#: apt.ent +#, no-wrap +msgid "" +" <varlistentry>\n" +" <term><option>--no-color</option></term>\n" +" <term><option>--color</option></term>\n" +"<listitem><para>Turn colors on or off. Colors are on by default on supported terminals for &apt; and\n" +"can also be disabled using the <envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment variables,\n" +"or further configured by the <option>APT::Color</option> configuration option and scope, see &apt-conf; for information on that.\n" +" </para>\n" +" </listitem>\n" +" </varlistentry>\n" "\">\n" msgstr "" @@ -368,8 +395,9 @@ 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\">" +"<!-- TRANSLATOR: used as in -o=config_string e.g. " +"-o=Debug::pkgProblemResolver=1 --> <!ENTITY synopsis-config-string " +"\"config_string\">" msgstr "" #. type: Plain text @@ -382,8 +410,8 @@ 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 " +"<!-- TRANSLATOR: used as in -t=target_release or pkg/target_release e.g. " +"-t=squeeze apt/experimental --> <!ENTITY synopsis-target-release " "\"target_release\">" msgstr "" @@ -425,8 +453,8 @@ 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\">" +"<!-- 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 @@ -474,26 +502,18 @@ msgid "" "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 +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml msgid "APT" msgstr "" @@ -503,12 +523,11 @@ 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml -#: apt-transport-mirror.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml apt-patterns.7.xml #, fuzzy msgid "Description" msgstr "Descrição" @@ -572,7 +591,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.8.xml apt-key.8.xml sources.list.5.xml +#: apt.8.xml sources.list.5.xml msgid "," msgstr "" @@ -643,6 +662,38 @@ msgid "" "fuzz\"</literal>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"These commands print the reasoning path from the solver. They are similar to " +"the equivalent aptitude commands for many use cases, but are different in " +"that they print the actual reason the solver picked rather than the " +"potential strongest path." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why</option> command determines why an installed package is " +"installed. This provides reasonable feedback as to why an automatically " +"installed package is installed; for a manually installed package no other " +"reason is given. If the package is not installed, no reason can be " +"determined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "" +"The <option>why-not</option> command determines why a package was determined " +"to not be installable. This may not always yield a result, even if a package " +"is uninstallable." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.8.xml +msgid "Both commands take a single argument, the name of a package." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt.8.xml msgid "(&apt-cache;)" @@ -728,11 +779,11 @@ msgid "" 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 apt_auth.conf.5.xml -#: apt-transport-http.1.xml apt-transport-https.1.xml apt-patterns.7.xml +#: apt.8.xml apt-get.8.xml apt-cache.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 apt_auth.conf.5.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-patterns.7.xml #, fuzzy msgid "See Also" msgstr "Consulte também" @@ -1170,8 +1221,8 @@ msgid "" "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>." +"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> @@ -1243,8 +1294,8 @@ 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>." +"Automatic \"no\" to all prompts. Configuration Item: " +"<literal>APT::Get::Assume-No</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1261,15 +1312,30 @@ msgid "" "<literal>APT::Get::Show-Versions</literal>." msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Display package lists without arranging them in columns. By default, package " +"lists are printed in the style of the \"ls\" command. Configuration Item: " +"<literal>APT::Get::List-Columns</literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt-get.8.xml +msgid "" +"Add the given value to the <literal>Comment:</literal> field in history.log " +"Configuration Item: <literal>APT::History::Comment</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>." +"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> @@ -1379,8 +1445,8 @@ msgid "" "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>." +"to decompress any compressed files. Configuration Item: " +"<literal>APT::Get::Print-URIs</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1406,8 +1472,8 @@ msgid "" "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>." +"frequently change your sources list. Configuration Item: " +"<literal>APT::Get::List-Cleanup</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1596,7 +1662,7 @@ msgid "" 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-get.8.xml apt-cache.8.xml apt-mark.8.xml apt.conf.5.xml #: apt_preferences.5.xml apt_auth.conf.5.xml msgid "Files" msgstr "" @@ -1895,8 +1961,8 @@ msgstr "" #: apt-cache.8.xml msgid "" "The same as <literal>dotty</literal>, only for xvcg from the <ulink " -"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/gsvcg1." -"html\">VCG tool</ulink>." +"url=\"https://www.rw.cdl.uni-saarland.de/people/sander/private/html/" +"gsvcg1.html\">VCG tool</ulink>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -1921,16 +1987,16 @@ msgid "" "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>)." +"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>." +"cache used by all operations. Configuration Item: " +"<literal>Dir::Cache::pkgcache</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -1965,9 +2031,9 @@ msgstr "" 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>." +"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> @@ -2018,8 +2084,8 @@ msgstr "" #: 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>." +"and missing dependencies. Configuration Item: " +"<literal>APT::Cache::AllNames</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2077,251 +2143,6 @@ msgid "" "on error." msgstr "" -#. type: Content of: <refentry><refnamediv><refpurpose> -#: apt-key.8.xml -msgid "Deprecated 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 "" -"Use of <command>apt-key</command> is deprecated, except for the use of " -"<command>apt-key del</command> in maintainer scripts to remove existing keys " -"from the main keyring. If such usage of <command>apt-key</command> is " -"desired the additional installation of the GNU Privacy Guard suite (packaged " -"in <package>gnupg</package>) is required." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "apt-key(8) will last be available in Debian 12 and Ubuntu 24.04." -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><term> -#: apt-key.8.xml -msgid "(deprecated)" -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><term> -#: apt-key.8.xml -msgid "(mostly deprecated)" -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><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 apt-transport-http.1.xml -#: apt-transport-https.1.xml apt-transport-mirror.1.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><title> -#: apt-key.8.xml -#, fuzzy -msgid "Deprecation" -msgstr "Descrição" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Except for using <command>apt-key del</command> in maintainer scripts, the " -"use of <command>apt-key</command> is deprecated. This section shows how to " -"replace existing use of <command>apt-key</command>." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "If your existing use of <command>apt-key add</command> looks like this:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo apt-key add -</" -"literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Then you can directly replace this with (though note the recommendation " -"below):" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<literal>wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/" -"trusted.gpg.d/myrepo.asc</literal>" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"Make sure to use the \"<literal>asc</literal>\" extension for ASCII armored " -"keys and the \"<literal>gpg</literal>\" extension for the binary OpenPGP " -"format (also known as \"GPG key public ring\"). The binary OpenPGP format " -"works for all apt versions, while the ASCII armored format works for apt " -"version >= 1.4." -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml -msgid "" -"<emphasis>Recommended:</emphasis> Instead of placing keys into the " -"<filename>/etc/apt/trusted.gpg.d</filename> directory, you can place them " -"anywhere on your filesystem by using the <literal>Signed-By</literal> option " -"in your <literal>sources.list</literal> and pointing to the filename of the " -"key. See &sources-list; for details. Since APT 2.4, <filename>/etc/apt/" -"keyrings</filename> is provided as the recommended location for keys not " -"managed by packages. When using a deb822-style sources.list, and with apt " -"version >= 2.4, the <literal>Signed-By</literal> option can also be used to " -"include the full ASCII armored keyring directly in the <literal>sources." -"list</literal> without an additional file." -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" @@ -2333,8 +2154,8 @@ 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</" +"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 "" @@ -2398,6 +2219,12 @@ msgid "" "installed packages instead." msgstr "" +#. type: Content of: <refentry><refsect1><title> +#: apt-mark.8.xml apt-cdrom.8.xml apt-transport-http.1.xml +#: apt-transport-https.1.xml apt-transport-mirror.1.xml +msgid "Options" +msgstr "" + #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #: apt-mark.8.xml msgid "" @@ -2451,6 +2278,12 @@ msgid "" "called dpkg selections can be found in &dpkg;." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: apt-mark.8.xml +#, fuzzy +msgid "&apt-get;, &aptitude;, &apt-conf;" +msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" + #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml msgid "" @@ -2485,6 +2318,56 @@ msgid "" "<literal>APT</literal> to refer to them all for simplicity only." 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 "" +"Keys should usually be included inside their corresponding " +"<literal>.sources</literal> by embedding the ASCII-armored key in the " +"<literal>Signed-By</literal> option. To do so, replace the empty line with " +"a dot, and then indent all lines by two spaces. See &sources-list; for more " +"information." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"Alternatively, keys may be placed in <filename>/etc/apt/keyrings</filename> " +"for local keys, or <filename>/usr/share/keyrings</filename> for keys managed " +"by packages, and then referenced by <literal>Signed-By: /etc/apt/keyrings/" +"example-archive-keyring.asc</literal> option in a <literal>.sources</" +"literal> file or using <literal>deb [signed-by=/etc/apt/keyrings/example-" +"archive-keyring.asc] ...</literal> in the legacy <literal>.list</literal> " +"format. This may be useful for APT versions prior to 2.4, which do not " +"support embedded keys. ASCII-armored keys must use an extension of " +"<literal>.asc</literal>, and unarmored keys an extension of <literal>.gpg</" +"literal>." +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: apt-secure.8.xml +msgid "" +"To generate keys suitable for use in APT using GnuPG, you will need to use " +"the <command>gpg --export-options export-minimal [--armor] --export</" +"command> command. Earlier solutions involving <command>--keyring file --" +"import</command> no longer work with recent GnuPG versions as they use a new " +"internal format (\"GPG keybox database\")." +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 managing keys is only " +"needed if third-party repositories are added. The <command>extrepo</" +"command> package can be used to manage several external repositories with " +"ease." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: apt-secure.8.xml msgid "Unsigned Repositories" @@ -2643,40 +2526,6 @@ msgid "" "shipped in the repository (as e.g. indicated by the codename)." 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 "Repository Configuration" @@ -2701,8 +2550,8 @@ msgstr "" #: 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>." +"clearsign -o InRelease Release</command> and <command>gpg -abs -o " +"Release.gpg Release</command>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -2737,19 +2586,19 @@ 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;" +"&apt-conf;, &apt-get;, &sources-list;, &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." +"url=\"https://www.debian.org/doc/manuals/securing-debian-manual/" +"ch07\">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> @@ -2815,8 +2664,8 @@ msgstr "" #: 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>." +"<option>--cdrom</option> option. Configuration Item: " +"<literal>Acquire::cdrom::AutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2839,8 +2688,8 @@ msgstr "" #: 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>." +"unmounting the mount point. Configuration Item: " +"<literal>APT::CDROM::NoMount</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -2916,8 +2765,8 @@ 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>." +"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> @@ -3019,9 +2868,9 @@ msgid "" "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." +"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> @@ -3209,6 +3058,55 @@ msgid "" "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 colors and styles. The basic colors supported are " +"<option>red</option>, <option>green</option>, <option>yellow</option>, " +"<option>blue</option>, <option>magenta</option>, <option>cyan</option>, and " +"<option>white</option>." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"The subscope <option>action</option> defines the colors for package lists in " +"<option>install</option> and similar commands. The following options may be " +"set: <option>APT::Color::Action::Upgrade</option>, " +"<option>APT::Color::Action::Install</option>, " +"<option>APT::Color::Action::Install-Dependencies</option>, " +"<option>APT::Color::Action::Downgrade</option>, " +"<option>APT::Color::Action::Remove</option>; corresponding to their lists in " +"the &apt; output." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Each color may reference one or more other color options by name, relative " +"to <option>APT::Color</option>. Their escape sequences will be combined." +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><informalexample><programlisting> +#: apt.conf.5.xml +#, no-wrap +msgid "" +"APT::Color::Bold \"\\x1B[1m\";\n" +"APT::Color::Action::Install \"cyan\";\n" +"APT::Color::Action::Upgrade \"bold action::install\";\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#: apt.conf.5.xml +msgid "" +"Colors may be turned on or off completely by setting <option>APT::Color</" +"option> to <option>yes</option> or <option>no</option>, by utilizing " +"<envar>NO_COLOR</envar> or <envar>APT_NO_COLOR</envar> environment " +"variables, or using the <option>--color</option>, <option>--no-color</" +"option> command-line options." +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml msgid "" @@ -3397,8 +3295,8 @@ msgstr "" #: apt.conf.5.xml msgid "" "Define the regular expression(s) for versioned kernel packages. Based on " -"these expressions a rule set is injected into apt similar to APT::" -"NeverAutoRemove regular expressions." +"these expressions a rule set is injected into apt similar to " +"APT::NeverAutoRemove regular expressions." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -3561,61 +3459,6 @@ msgid "" "&apt-transport-https; manpages respectively." 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::<host></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 "" -"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 "" -"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 @@ -3756,9 +3599,9 @@ msgid "" "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 " +"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 " @@ -3847,21 +3690,22 @@ msgid "" "<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." +"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><variablelist><varlistentry><listitem><para> @@ -3871,17 +3715,19 @@ msgid "" "where to get them. Preferable the Release file indicates this in a " "'Snapshots' field. If this isn't available the Label/Origin field of the " "Release file is used to check if a <literal>Acquire::Snapshots::URI::Label::" -"<replaceable>LABEL</replaceable></literal> or <literal>Acquire::Snapshots::" -"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::Snapshots::URI::Override::Label::<replaceable>LABEL</" -"replaceable></literal> or <literal>Acquire::Snapshots::URI::Override::" -"Origin::<replaceable>ORIGIN</replaceable></literal>. The value should be a " -"normal URI to a directory, except that the snapshot ID replaced with the " -"placeholder <literal>@SNAPSHOTID</literal>. The special value '<literal>no</" -"literal>' is available for this option indicating that this source cannot be " -"used to acquire snapshots from. Another source will be tried if available in " -"this case." +"<replaceable>LABEL</replaceable></literal> or " +"<literal>Acquire::Snapshots::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::Snapshots::URI::Override::Label::<replaceable>LABEL</" +"replaceable></literal> or " +"<literal>Acquire::Snapshots::URI::Override::Origin::<replaceable>ORIGIN</" +"replaceable></literal>. The value should be a normal URI to a directory, " +"except that the snapshot ID replaced with the placeholder " +"<literal>@SNAPSHOTID@</literal>. The special value '<literal>no</literal>' " +"is available for this option indicating that this source cannot be used to " +"acquire snapshots from. Another source will be tried if available in this " +"case." msgstr "" #. type: Content of: <refentry><refsect1><title> @@ -3894,9 +3740,9 @@ msgstr "" 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>." +"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> @@ -3969,12 +3815,12 @@ 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." +"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> @@ -4112,9 +3958,9 @@ msgid "" "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." +"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> @@ -4261,11 +4107,6 @@ 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." @@ -4357,8 +4198,8 @@ 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." +"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> @@ -4369,14 +4210,14 @@ msgid "" "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 <a.b.c -" -"> d.e.f | x.y.z> (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." +"<literal>MarkInstall</literal> followed by <literal>package-name <a.b.c " +"-> d.e.f | x.y.z> (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> @@ -4429,15 +4270,15 @@ 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>." +"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 " +"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 "" @@ -4537,13 +4378,23 @@ msgstr "" #: 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." +"directory 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><para> +#: apt_preferences.5.xml +msgid "" +"<filename>/etc/apt/preferences</filename> is parsed first, followed by the " +"files in <filename>/etc/apt/preferences.d</filename> in lexicographic " +"order. For example, <filename>/etc/apt/preferences.d/00-high-priority.pref</" +"filename>, <filename>/etc/apt/preferences.d/50-mid-priority</filename> and " +"<filename>/etc/apt/preferences.d/z-low-priority.pref</filename> would be " +"parsed in that order." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -4872,6 +4723,27 @@ msgstr "" "Pin: version &good-perl;*\n" "Pin-Priority: 1001\n" +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara> +#: apt_preferences.5.xml +msgid "Since 2.9.9, you can also pin by a source version:" +msgstr "" + +#. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting> +#: apt_preferences.5.xml +#, fuzzy, no-wrap +#| msgid "" +#| "Package: perl\n" +#| "Pin: version &good-perl;*\n" +#| "Pin-Priority: 1001\n" +msgid "" +"Package: perl\n" +"Pin: source-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 @@ -5169,9 +5041,9 @@ msgstr "" #: apt_preferences.5.xml msgid "" "The <literal>:any</literal> suffix makes sure to select binary packages from " -"any architecture. Without that suffix, apt implicitly assumes the <literal>:" -"native</literal> suffix which would only select packages from the native " -"architecture." +"any architecture. Without that suffix, apt implicitly assumes the " +"<literal>:native</literal> suffix which would only select packages from the " +"native architecture." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -5354,9 +5226,9 @@ msgstr "" 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." +"\"<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 " @@ -5657,23 +5529,23 @@ msgid "" "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." +"<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>." +"<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 @@ -5990,6 +5862,17 @@ msgid "" "command from another APT front-end)." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"If multiple source lists are used, the most-preferred sources are those " +"listed in <filename>/etc/apt/sources.list</filename>, followed by each file " +"in <filename>/etc/apt/sources.list.d/</filename> in lexicographic order: for " +"example, <filename>00-high-preference.list</filename> is more-preferred than " +"<filename>50-middle-preference.sources</filename> which is more-preferred " +"than <filename>z-low-preference.list</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "sources.list.d" @@ -6010,6 +5893,16 @@ msgid "" "ignored." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"The suggested filename for new systems is <filename>/etc/apt/sources.list.d/" +"<replaceable>vendor</replaceable>.sources</filename>, where " +"<replaceable>vendor</replaceable> is the result of <command>dpkg-vendor --" +"query Vendor | tr A-Z a-z</command>, in deb822-style format. For example, " +"Ubuntu uses <filename>/etc/apt/sources.list.d/ubuntu.sources</filename>." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "One-Line-Style Format" @@ -6045,6 +5938,12 @@ msgid "" "multi-architecture support." msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "" +"This format is deprecated and may eventually be removed, but not before 2029." +msgstr "" + #. type: Content of: <refentry><refsect1><title> #: sources.list.5.xml msgid "deb822-Style Format" @@ -6206,9 +6105,10 @@ 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\"/>" +"As an example, the sources for your distribution could look like this in the " +"deprecated 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> @@ -6230,6 +6130,23 @@ msgid "" "versions." msgstr "" +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Include</option> (<option>include</option>) is a multivalue option " +"defining which packages should be used from this repository. Others are not " +"parsed." +msgstr "" + +#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> +#: sources.list.5.xml +msgid "" +"<option>Exclude</option> (<option>exclude</option>) is a multivalue option " +"defining which packages should not be used from this repository. They will " +"not be parsed. This option is mutually exclusive with <option>Include</" +"option>." +msgstr "" + #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml msgid "" @@ -6254,11 +6171,12 @@ msgstr "" 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." +"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> @@ -6361,18 +6279,17 @@ msgid "" "keyrings</filename> for keyrings managed by the system operator. If no " "keyring files are specified the default is the <filename>trusted.gpg</" "filename> keyring and all keyrings in the <filename>trusted.gpg.d/</" -"filename> directory (see <command>apt-key fingerprint</command>). If no " -"fingerprint is specified all keys in the keyrings are selected. A " -"fingerprint will accept also all signatures by a subkey of this key, if this " -"isn't desired an exclamation mark (<literal>!</literal>) can be appended to " -"the fingerprint to disable this behaviour. The option defaults to the value " -"of the option with the same name if set in the previously acquired " -"<filename>Release</filename> file of this repository (only fingerprints can " -"be specified there through). Otherwise all keys in the trusted keyrings are " -"considered valid signers for this repository. The option may also be set " -"directly to an embedded GPG public key block. Special care is needed to " -"encode the empty line with leading spaces and \".\": <placeholder " -"type=\"literallayout\" id=\"0\"/>" +"filename> directory. If no fingerprint is specified all keys in the " +"keyrings are selected. A fingerprint will accept also all signatures by a " +"subkey of this key, if this isn't desired an exclamation mark (<literal>!</" +"literal>) can be appended to the fingerprint to disable this behaviour. The " +"option defaults to the value of the option with the same name if set in the " +"previously acquired <filename>Release</filename> file of this repository " +"(only fingerprints can be specified there through). Otherwise all keys in " +"the trusted keyrings are considered valid signers for this repository. The " +"option may also be set directly to an embedded GPG public key block. Special " +"care is needed to encode the empty line with leading spaces and \".\": " +"<placeholder type=\"literallayout\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -6388,8 +6305,9 @@ msgid "" "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>." +"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> @@ -6445,19 +6363,9 @@ msgstr "" msgid "" "<option>Snapshot</option> (<option>snapshot</option>) allows selecting an " "earlier version of the archive from the snapshot service. Supported values " -"are:" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "" -"<literal>enable</literal> to allow selecting a snapshot with the <option>--" -"snapshot</option> option, or" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><itemizedlist><listitem><para> -#: sources.list.5.xml -msgid "a snapshot ID to select a specific snapshot." +"are: <literal>enable</literal> (default) to allow selecting a snapshot with " +"the <option>--snapshot</option> option, <literal>ID</literal>, or " +"<literal>disable</literal> to exclude the repository." msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> @@ -6565,27 +6473,6 @@ msgid "" "source list." msgstr "" -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"The ftp scheme specifies an FTP server for an archive. Use of FTP is on the " -"decline in favour of <literal>http</literal> and <literal>https</literal> " -"and many archives either never offered or are retiring FTP access. If you " -"still need this method many configuration options for it are available in " -"the <literal>Acquire::ftp</literal> scope and detailed in &apt-conf;." -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml -msgid "" -"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 "" @@ -6595,15 +6482,6 @@ msgid "" "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" @@ -6742,14 +6620,14 @@ 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 " +"Uses HTTPS to access the archive at deb.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" +msgid "deb https://deb.debian.org/debian &debian-stable-codename; contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6757,7 +6635,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: &debian-stable-codename;\n" "Components: contrib" msgstr "" @@ -6765,16 +6643,16 @@ 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 " +"Uses HTTPS to access the archive at deb.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." +"a single HTTPS 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" +msgid "deb https://deb.debian.org/debian unstable contrib" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -6782,7 +6660,7 @@ msgstr "" #, no-wrap msgid "" "Types: deb\n" -"URIs: ftp://ftp.debian.org/debian\n" +"URIs: https://deb.debian.org/debian\n" "Suites: unstable\n" "Components: contrib" msgstr "" @@ -6843,6 +6721,40 @@ msgid "" "Components: main contrib\n" msgstr "" +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Uses a specific timestamp for Snapshots." +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" +"Snapshot: 20250311T030104Z\n" +"Components: main contrib\n" +" " +msgstr "" + +#. type: Content of: <refentry><refsect1><para> +#: sources.list.5.xml +msgid "Doesn't allow the optional parameter --snapshot." +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-security\n" +"Suites: stable-security\n" +"Snapshot: disable\n" +"Components: main contrib non-free-firmware\n" +" " +msgstr "" + #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml msgid "&apt-get;, &apt-conf;, &apt-acquire-additional-files;" @@ -6891,8 +6803,8 @@ msgstr "" #: 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>" +"template files and config scripts. Configuration Item: " +"<literal>APT::ExtractTemplates::TempDir</literal>" msgstr "" #. type: Content of: <refentry><refsect1><para> @@ -6925,8 +6837,8 @@ 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>." +"Use source index field ordering. Configuration Item: " +"<literal>APT::SortPkgs::Source</literal>." msgstr "" #. type: Content of: <refentry><refsect1><para> @@ -7023,10 +6935,10 @@ msgid "" "<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." +"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> @@ -7214,8 +7126,8 @@ msgstr "a linha <literal>Label:</literal>" #: 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." +"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> @@ -7240,15 +7152,15 @@ 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>" +"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>" +"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> @@ -7269,8 +7181,8 @@ msgstr "" #: 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>" +"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> @@ -7597,8 +7509,8 @@ 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>." +"Make the caching databases read only. Configuration Item: " +"<literal>APT::FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> @@ -7925,16 +7837,17 @@ msgid "" "The environment variable <envar>http_proxy</envar> is supported for system " "wide configuration. Proxies specific to APT can be configured via the " "option <literal>Acquire::http::Proxy</literal>. Proxies which should be " -"used only for certain hosts can be specified via <literal>Acquire::http::" -"Proxy::<replaceable>host</replaceable></literal>. Even more fine-grained " -"control can be achieved via proxy autodetection, detailed further below. " -"All these options use the URI format <literal><replaceable>scheme</" -"replaceable>://[[<replaceable>user</replaceable>][:<replaceable>pass</" -"replaceable>]@]<replaceable>host</replaceable>[:<replaceable>port</" -"replaceable>]/</literal>. Supported URI schemes are <literal>socks5h</" -"literal> (SOCKS5 with remote DNS resolution), <literal>http</literal> and " -"<literal>https</literal>. Authentication details can be supplied via &apt-" -"authconf; instead of including it in the URI directly." +"used only for certain hosts can be specified via " +"<literal>Acquire::http::Proxy::<replaceable>host</replaceable></literal>. " +"Even more fine-grained control can be achieved via proxy autodetection, " +"detailed further below. All these options use the URI format " +"<literal><replaceable>scheme</replaceable>://[[<replaceable>user</" +"replaceable>][:<replaceable>pass</replaceable>]@]<replaceable>host</" +"replaceable>[:<replaceable>port</replaceable>]/</literal>. Supported URI " +"schemes are <literal>socks5h</literal> (SOCKS5 with remote DNS resolution), " +"<literal>http</literal> and <literal>https</literal>. Authentication " +"details can be supplied via &apt-authconf; instead of including it in the " +"URI directly." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> @@ -7949,14 +7862,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"Furthermore, there are three settings provided for cache control with " -"HTTP/1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> " -"tells the proxy not to use its cached response under any circumstances. " +"Furthermore, there are three settings provided for cache control with HTTP/" +"1.1 compliant proxy caches: <literal>Acquire::http::No-Cache</literal> tells " +"the proxy not to use its cached response under any circumstances. " "<literal>Acquire::http::Max-Age</literal> sets the allowed maximum age (in " -"seconds) of an index file in the cache of the proxy. <literal>Acquire::" -"http::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." +"seconds) of an index file in the cache of the proxy. " +"<literal>Acquire::http::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><refsect2><title> @@ -7994,8 +7907,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-http.1.xml msgid "" -"This option takes precedence over the legacy option name <literal>Acquire::" -"http::ProxyAutoDetect</literal>." +"This option takes precedence over the legacy option name " +"<literal>Acquire::http::ProxyAutoDetect</literal>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -8025,12 +7938,12 @@ msgstr "" #: apt-transport-http.1.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 work around 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." +"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 work around 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><refsect2><para> @@ -8116,9 +8029,9 @@ msgstr "" msgid "" "The HTTPS protocol is based on the HTTP protocol, so all options supported " "by &apt-transport-http; are also available via <literal>Acquire::https</" -"literal> and will default to the same values specified for <literal>Acquire::" -"http</literal>. This manpage will only document the options <emphasis>unique " -"to https</emphasis>." +"literal> and will default to the same values specified for " +"<literal>Acquire::http</literal>. This manpage will only document the " +"options <emphasis>unique to https</emphasis>." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -8147,9 +8060,10 @@ msgstr "" #: apt-transport-https.1.xml msgid "" "A custom certificate revocation list (CRL) can be configured with the " -"options <literal>Acquire::https::CRLFile</literal> and <literal>Acquire::" -"https::CRLFile::<replaceable>host</replaceable></literal>. As with the " -"previous option, a file in PEM format needs to be specified." +"options <literal>Acquire::https::CRLFile</literal> and " +"<literal>Acquire::https::CRLFile::<replaceable>host</replaceable></" +"literal>. As with the previous option, a file in PEM format needs to be " +"specified." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> @@ -8195,11 +8109,11 @@ msgstr "" msgid "" "Besides supporting password-based authentication (see &apt-authconf;) HTTPS " "also supports authentication based on client certificates via " -"<literal>Acquire::https::SSLCert</literal> and <literal>Acquire::https::" -"SSLKey</literal>. These should be set respectively to the filename of the " -"X.509 client certificate and the associated (unencrypted) private key, both " -"in PEM format. In practice the use of the host-specific variants of both " -"options is highly recommended." +"<literal>Acquire::https::SSLCert</literal> and " +"<literal>Acquire::https::SSLKey</literal>. These should be set respectively " +"to the filename of the X.509 client certificate and the associated " +"(unencrypted) private key, both in PEM format. In practice the use of the " +"host-specific variants of both options is highly recommended." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> @@ -8401,9 +8315,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt-transport-mirror.1.xml msgid "" -"Assuming a file with this content is stored as <filename>/etc/apt/mirrorlist." -"txt</filename> on your machine it can be used like this in &sources-list; " -"(since apt 1.6):" +"Assuming a file with this content is stored as <filename>/etc/apt/" +"mirrorlist.txt</filename> on your machine it can be used like this in " +"&sources-list; (since apt 1.6):" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><literallayout> @@ -9045,6 +8959,16 @@ msgstr "" msgid "<code>~DSuggests:PATTERN</code>" msgstr "" +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>?recommends(PATTERN)</code>" +msgstr "" + +#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> +#: apt-patterns.7.xml +msgid "<code>~DRecommends:PATTERN</code>" +msgstr "" + #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-patterns.7.xml msgid "<code>?conflicts(PATTERN)</code>" @@ -9098,8 +9022,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-patterns.7.xml msgid "" -"Selects versions depending/pre-depending/suggesting/conflicting/etc on/with/ " -"packages matching PATTERN." +"Selects versions depending/pre-depending/suggesting/recommending/conflicting/" +"etc on/with/ packages matching PATTERN." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> @@ -9221,10 +9145,10 @@ msgstr "" #: apt-patterns.7.xml msgid "" "<code>foo</code> cannot be used as a shortform for <code>?name(foo)</code>, " -"as this can cause typos to go unnoticed: Consider <code>?and(...," -"~poptional)</code>: this requires the package to have <code>required</code> " -"priority, but if you do not type the <code>~</code>, it would require the " -"package name to contain <code>poptional</code>." +"as this can cause typos to go unnoticed: Consider <code>?" +"and(...,~poptional)</code>: this requires the package to have " +"<code>required</code> priority, but if you do not type the <code>~</code>, " +"it would require the package name to contain <code>poptional</code>." msgstr "" #. type: Content of: <refentry><refsect1><itemizedlist><listitem><para> @@ -9423,7 +9347,7 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get http://ftp.de.debian.org/debian-non-US/ stable/binary-i386/ Packages\n" +"Get http://ftp.de.debian.org/debian/ 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" @@ -9547,8 +9471,8 @@ msgid "" "\n" " For example:\n" " file:/mnt/debian,\n" -" ftp://ftp.debian.org/debian,\n" -" http://ftp.de.debian.org/debian,\n" +" https://deb.debian.org/debian,\n" +" http://deb.debian.org/debian,\n" "\n" "\n" " URL [http://llug.sep.bnl.gov/debian]:\n" @@ -9568,7 +9492,7 @@ msgstr "" 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" +" tags are typically something like: stable unstable testing\n" "\n" " Distribution [stable]:\n" msgstr "" @@ -9578,11 +9502,7 @@ msgstr "" 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." +"<emphasis>unstable</emphasis> refers to the developmental version." msgstr "" #. type: Content of: <book><chapter><screen> @@ -9973,10 +9893,10 @@ msgstr "" #, no-wrap msgid "" "# apt-get update\n" -"Get:1 http://ftp.de.debian.org/debian-non-US/ stable/non-US/ Packages\n" +"Get:1 http://ftp.de.debian.org/debian/ stable/main 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:4 http://ftp.de.debian.org/debian/ 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 "" @@ -10357,6 +10277,13 @@ msgstr "" msgid "Which will use the already fetched archives on the disc." msgstr "" +#, fuzzy +#~ msgid "Deprecation" +#~ msgstr "Descrição" + +#~ msgid "&apt-get;, &apt-secure;" +#~ msgstr "&apt-get;, &apt-secure;" + #, fuzzy #~ msgid "The option <literal>DPkg::Progress-Fancy</literal> is enabled." #~ msgstr "a linha <literal>Package:</literal>" @@ -10425,10 +10352,6 @@ 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" diff --git a/doc/po4a.conf b/doc/po4a.conf index 0798eac..3cf4d5e 100644 --- a/doc/po4a.conf +++ b/doc/po4a.conf @@ -15,7 +15,6 @@ [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 diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 4fa7a24..3d06f75 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -14,7 +14,7 @@ &apt-email; &apt-product; <!-- The last update date --> - <date>2023-01-29T00:00:00Z</date> + <date>2024-12-24T00:00:00Z</date> </refentryinfo> <refmeta> @@ -41,6 +41,20 @@ configured sources is acquired by <command>apt-get update</command> (or by an equivalent command from another APT front-end). </para> + <para> + If multiple source lists are used, + the most-preferred sources are those listed in + <filename>/etc/apt/sources.list</filename>, + followed by each file in + <filename>/etc/apt/sources.list.d/</filename> + in lexicographic order: + for example, + <filename>00-high-preference.list</filename> + is more-preferred than + <filename>50-middle-preference.sources</filename> + which is more-preferred than + <filename>z-low-preference.list</filename>. + </para> </refsect1> <refsect1><title>sources.list.d @@ -54,6 +68,16 @@ Otherwise APT will print a notice that it has ignored a file, unless that file matches a pattern in the Dir::Ignore-Files-Silently configuration list - in which case it will be silently ignored. + + The suggested filename for new systems is + /etc/apt/sources.list.d/vendor.sources, + where vendor is the result of + dpkg-vendor --query Vendor | tr A-Z a-z, + in deb822-style format. + For example, + Ubuntu uses + /etc/apt/sources.list.d/ubuntu.sources. + One-Line-Style Format @@ -83,6 +107,10 @@ expect to encounter options as they were uncommon before the introduction of multi-architecture support. + + This format is deprecated and may eventually be removed, but not before + 2029. + deb822-Style Format @@ -187,7 +215,7 @@ deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [. network, followed by distant Internet hosts, for example). As an example, the sources for your distribution could look like this - in one-line-style format: + in the deprecated one-line-style format: &sourceslist-list-format; or like this in deb822 style format: &sourceslist-sources-format; @@ -205,6 +233,15 @@ deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [. APT versions. + + () is a multivalue option defining + which packages should be used from this repository. Others are not parsed. + + + () is a multivalue option defining + which packages should not be used from this repository. They will not be parsed. + This option is mutually exclusive with . + () is a multivalue option defining for which architectures information should be downloaded. If this @@ -304,8 +341,8 @@ deb-src [ option1=value1 option2=value2 ] uri suite [component1] [component2] [. and /etc/apt/keyrings for keyrings managed by the system operator. If no keyring files are specified the default is the trusted.gpg keyring and - all keyrings in the trusted.gpg.d/ directory - (see apt-key fingerprint). If no fingerprint is + all keyrings in the trusted.gpg.d/ directory. + If no fingerprint is specified all keys in the keyrings are selected. A fingerprint will accept also all signatures by a subkey of this key, if this isn't desired an exclamation mark (!) can be appended to @@ -394,24 +431,19 @@ Signed-By: and the fallback to Release files will be disabled. - () - allows selecting an earlier version of the archive from the snapshot service. Supported - values are: - - - enable to allow selecting a snapshot with the option, or - - - a snapshot ID to select a specific snapshot. - - - - Snapshot IDs are usually timestamps in the form of YYYYMMDDTHHMMSSZ, such as - 20220102T030405Z which is the January 2nd, 2022 at 03:04:05 UTC, servers may - however support additional types of IDs, and APT does not perform any checks so far. - + + () + allows selecting an earlier version of the archive from the snapshot service. Supported + values are: enable (default) to allow selecting a snapshot with the option, + ID, or disable to exclude the repository. + + Snapshot IDs are usually timestamps in the form of YYYYMMDDTHHMMSSZ, such as + 20220102T030405Z which is the January 2nd, 2022 at 03:04:05 UTC, servers may + however support additional types of IDs, and APT does not perform any checks so far. + + - + @@ -477,36 +509,12 @@ Signed-By: source list. - ftp - - The ftp scheme specifies an FTP server for an archive. Use of FTP is on the - decline in favour of http and https - and many archives either never offered or are retiring FTP access. If you - still need this method many configuration options for it are available in - the Acquire::ftp scope and detailed in &apt-conf;. - Please note that an FTP proxy can be specified - by using the ftp_proxy environment variable. It is possible - to specify an HTTP proxy (HTTP proxy servers often understand FTP URLs) - using this environment variable and only this - environment variable. Proxies using HTTP specified in - the configuration file will be ignored. - - copy 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. - - rshssh - - 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 find and dd - commands are used to perform the file transfers from the remote host. - - adding more recognizable URI types @@ -567,21 +575,21 @@ URIs: http://archive.debian.org/debian-archive Suites: hamm Components: main - Uses FTP to access the archive at ftp.debian.org, under the debian + Uses HTTPS to access the archive at deb.debian.org, under the debian directory, and uses only the &debian-stable-codename;/contrib area. - deb ftp://ftp.debian.org/debian &debian-stable-codename; contrib + deb https://deb.debian.org/debian &debian-stable-codename; contrib Types: deb -URIs: ftp://ftp.debian.org/debian +URIs: https://deb.debian.org/debian Suites: &debian-stable-codename; Components: contrib - Uses FTP to access the archive at ftp.debian.org, under the debian + Uses HTTPS to access the archive at deb.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 sources.list - a single FTP session will be used for both resource lines. - deb ftp://ftp.debian.org/debian unstable contrib + a single HTTPS session will be used for both resource lines. + deb https://deb.debian.org/debian unstable contrib Types: deb -URIs: ftp://ftp.debian.org/debian +URIs: https://deb.debian.org/debian Suites: unstable Components: contrib @@ -612,6 +620,22 @@ Suites: stable testing unstable Components: main contrib + Uses a specific timestamp for Snapshots. + Types: deb deb-src +URIs: http://deb.debian.org/debian +Suites: stable testing unstable +Snapshot: 20250311T030104Z +Components: main contrib + + + Doesn't allow the optional parameter --snapshot. + Types: deb deb-src +URIs: http://deb.debian.org/debian-security +Suites: stable-security +Snapshot: disable +Components: main contrib non-free-firmware + + See Also diff --git a/dselect/desc.apt b/dselect/desc.apt index 5601919..dac1425 100644 --- a/dselect/desc.apt +++ b/dselect/desc.apt @@ -1,8 +1,8 @@ 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) +installation from locations in the filesystem, https, http and ftp 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 diff --git a/dselect/names b/dselect/names index 8daa537..58294c8 100644 --- a/dselect/names +++ b/dselect/names @@ -1 +1 @@ -70 apt APT Acquisition [file,http,ftp] +70 apt APT Acquisition [file,https,http,ftp] diff --git a/dselect/setup b/dselect/setup index 58eecfc..aed7baa 100755 --- a/dselect/setup +++ b/dselect/setup @@ -1,41 +1,39 @@ -#!/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 -# +#!/usr/bin/perl +# Copyright (c) 1998 Manoj Srivastava +# +# SPDX-License-Identifier: GPL-2.0+ -#use strict; +use strict; +use warnings; #use diagnostics; #printf STDERR "DEBUG: Arguments $ARGV[0];$ARGV[1];$ARGV[2];\n"; +use Term::ANSIColor; + # 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 $boldon = color('bold'); +my $boldoff = color('reset'); -my @known_types = ('deb'); -my @known_access = ('http', 'ftp', 'file'); -my @typical_distributions = ('stable', 'unstable', 'testing'); -my @typical_components = ('main', 'contrib', 'non-free', 'non-free-firmware'); +my @known_types = qw(deb); +my @known_access = qw(https http ftp file); +my @typical_distributions = qw(stable unstable testing); +my @typical_components = qw(main contrib non-free non-free-firmware); my %known_access = map {($_,$_)} @known_access; my %typical_distributions = map {($_,$_)} @typical_distributions; +sub print_bold { + my $msg = shift; + + print "$boldon$msg$boldoff"; +} + # Read the config file, creating source records sub read_config { my %params = @_; @@ -118,7 +116,7 @@ sub get_source { } $type = 'deb'; - $urn = "http://deb.debian.org/debian" unless $urn; + $urn = "https://deb.debian.org/debian" unless $urn; $distribution = "stable" unless $distribution; $components = "main contrib non-free non-free-firmware" unless $components; @@ -130,7 +128,7 @@ sub get_source { while (!$done) { print "\n"; - print "$boldon URL [$urn]: $boldoff"; + print_bold(" URL [$urn]: "); $answer=; chomp ($answer); @@ -159,10 +157,10 @@ sub get_source { 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 " tags are typically something like: "; + print_bold(join(' ', @typical_distributions) . "\n"); print "\n"; - print "$boldon Distribution [$distribution]:$boldoff "; + print_bold(" Distribution [$distribution]: "); $answer=; chomp ($answer); $answer =~ s/\s*//og; @@ -193,10 +191,10 @@ sub get_components { 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 " The components are typically something like: "; + print_bold(join(' ', @typical_components) . "\n"); print "\n"; - print "$boldon Components [$default]:$boldoff "; + print_bold(" Components [$default]: "); $answer=; chomp ($answer); $answer =~ s/\s+/ /og; @@ -219,20 +217,21 @@ sub get_sources { @Oldconfig = &read_config('Filename' => $config_file) } - print "\t$boldon Set up a list of distribution source locations $boldoff \n"; + print_bold("\t Set up a list of distribution source locations\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 access schemes I know about are: "; + print_bold(join (' ', @known_access) . "\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 " ftp://ftp.example.org/debian,\n"; + print " https://deb.debian.org/debian,\n"; + print " http://deb.debian.org/debian,\n"; # print " and the special mirror scheme,\n"; # print " mirror:http://www.debian.org/archivemirrors \n"; print "\n"; @@ -246,7 +245,7 @@ sub get_sources { push (@Config, &get_source()); } print "\n"; - print "$boldon Would you like to add another source?[y/N]$boldoff "; + print_bold(" Would you like to add another source? [y/N] "); my $answer = ; chomp ($answer); $answer =~ s/\s+/ /og; @@ -265,11 +264,11 @@ 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_bold(" I see you already have a source list.\n"); print "-" x 72, "\n"; &print_config('Config' => \@Oldconfig); print "-" x 72, "\n"; - print "$boldon Do you wish to overwrite it? [y/N]$boldoff "; + print_bold(" Do you wish to overwrite it? [y/N] "); my $answer = ; chomp ($answer); $answer =~ s/\s+/ /og; diff --git a/dselect/update b/dselect/update index 0ab317e..057e26e 100755 --- a/dselect/update +++ b/dselect/update @@ -28,10 +28,11 @@ STATUS=1 if $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" update then echo $"Merging available information" + # XXX: Make sure we remove an old intermediate file that we used to feed + # to dpkg, until enough time has passed that we have some guarantee it + # is no longer left over in the cache directory (since apt 2.9.x). rm -f $CACHEDIR/available - $APTCACHE dumpavail > $CACHEDIR/available - $DPKG "$DPKG_OPTS" --update-avail $CACHEDIR/available - rm -f $CACHEDIR/available + $APTCACHE dumpavail | $DPKG "$DPKG_OPTS" --update-avail case "$CLEAN" in Pre-Auto|PreAuto|pre-auto) diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index 5a915ff..9c86d18 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -387,17 +387,15 @@ bool PackageMap::GenContents(Configuration &Setup, return false; unsigned long long Size = Head.Size(); - unsigned char Buf[4096]; + std::array Buf; while (Size != 0) { - unsigned long long ToRead = Size; - if (Size > sizeof(Buf)) - ToRead = sizeof(Buf); + auto ToRead = std::min(Size, Buf.size()); - if (Head.Read(Buf,ToRead) == false) + if (Head.Read(Buf.data(),ToRead) == false) return false; - if (Comp.Input.Write(Buf, ToRead) == false) + if (Comp.Input.Write(Buf.data(), ToRead) == false) return _error->Errno("fwrite",_("Error writing header to contents file")); Size -= ToRead; diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h index 98817b9..0002c60 100644 --- a/ftparchive/cachedb.h +++ b/ftparchive/cachedb.h @@ -34,7 +34,7 @@ class CacheDB // Database state/access DBT Key; DBT Data; - char TmpKey[600]; + std::string TmpKey; DB *Dbp; bool DBLoaded; bool ReadOnly; @@ -45,8 +45,9 @@ class CacheDB { 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); + TmpKey.assign(FileName).append(":").append(Type); + Key.data = TmpKey.data(); + Key.size = TmpKey.size(); } void InitQueryStats() { diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc index 4835cc6..1813a94 100644 --- a/ftparchive/contents.cc +++ b/ftparchive/contents.cc @@ -1,34 +1,20 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ /* ###################################################################### - + 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 - - + 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 + pairs (path, package). + + This may be very inefficient since it does duplicate all path components, + whereas most are shared. A previous implementation used a tree structure + with a binary tree for entries in a directory, which was significantly + more space-efficient but it did not do rebalancing and implementing custom + self-balancing trees here seems a waste of effort. + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -67,12 +53,14 @@ GenContents::~GenContents() // --------------------------------------------------------------------- /* This strdup also uses a large block allocator to eliminate glibc overhead */ -char *GenContents::Mystrdup(const char *From) +GenContents::StringInBlock GenContents::Mystrdup(const char *From) { unsigned int Len = strlen(From) + 1; if (StrLeft <= Len) { - StrLeft = 4096*10; + StrLeft = 4 * 1024 * 1024; + if (unlikely(StrLeft <= Len)) + abort(); StrPool = (char *)malloc(StrLeft); BigBlock *Block = new BigBlock; @@ -86,112 +74,7 @@ char *GenContents::Mystrdup(const char *From) 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(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; + return StringInBlock{Res}; } /*}}}*/ // GenContents::Add - Add a path to the tree /*{{{*/ @@ -199,40 +82,18 @@ GenContents::Node *GenContents::Grab(GenContents::Node *Top,const char *Name, /* 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) +void GenContents::Add(const char *Dir, StringInBlock Package) { - Node *Root = &this->Root; - + // Do not add directories. We do not print out directories! + if (APT::String::Endswith(Dir, "/")) + return; // Drop leading slashes while (*Dir == '/') 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); + + // We used to add all parents directories here too, but we never printed + // them, so just add the file directly. + Entries.emplace(Mystrdup(Dir), Package); } /*}}}*/ // GenContents::WriteSpace - Write a given number of white space chars /*{{{*/ @@ -261,46 +122,40 @@ void GenContents::WriteSpace(std::string &out, size_t Current, size_t Target) 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) + const char *last = nullptr; + std::string line; + for (auto &entry : Entries) { - 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*/) + // Do not show the item if it is a directory + if (not APT::String::Endswith(entry.first.c_str(), "/")) { - std::string out = Buf; - WriteSpace(out, out.length(), 60); - for (Node *I = Top; I != 0; I = I->Dups) + // We are still appending to the same file path + if (last != nullptr && strcmp(entry.first.c_str(), last) == 0) + { + line.append(","); + line.append(entry.second.c_str()); + continue; + } + // New file. If we saw a file before, write out its line + if (last != nullptr) { - if (I != Top) - out.append(","); - out.append(I->Package); + line.append("\n", 1); + Out.Write(line.data(), line.length()); } - out.append("\n"); - Out.Write(out.c_str(), out.length()); + + // Append the package name, tab(s), and first to the line + line.assign(entry.first.c_str()); + WriteSpace(line, line.length(), 60); + line.append(entry.second.c_str()); + last = entry.first.c_str(); } } - - // Go along the directory link - DoPrint(Out,Top->DirDown,Buf); - *OldEnd = 0; - - // Go right - DoPrint(Out,Top->BTreeRight,Buf); + // Print the trailing line + if (last != nullptr) + { + line.append("\n", 1); + Out.Write(line.c_str(), line.length()); + } } /*}}}*/ // ContentsExtract Constructor /*{{{*/ @@ -396,7 +251,7 @@ bool ContentsExtract::TakeContents(const void *NewData,unsigned long long Length void ContentsExtract::Add(GenContents &Contents,std::string const &Package) { const char *Start = Data; - char *Pkg = Contents.Mystrdup(Package.c_str()); + auto Pkg = Contents.Mystrdup(Package.c_str()); for (const char *I = Data; I < Data + CurSize; I++) { if (*I == 0) diff --git a/ftparchive/contents.h b/ftparchive/contents.h index 6d960d6..a78f9d5 100644 --- a/ftparchive/contents.h +++ b/ftparchive/contents.h @@ -10,9 +10,11 @@ #define CONTENTS_H #include +#include #include #include +#include #include class debDebFile; @@ -20,51 +22,34 @@ class FileFd; class GenContents { - struct Node + /// \brief zero-terminated strings inside a BigBlock with minimal C++ accessor and comparison operator + struct StringInBlock { - // 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) {}; + const char *data; + const char *c_str() const { return data; } + auto operator<=>(const StringInBlock &other) const noexcept { return strcmp(data, other.data); } }; - friend struct Node; - struct BigBlock { void *Block; BigBlock *Next; }; - - Node Root; - + + std::set> Entries; + // 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); + StringInBlock Mystrdup(const char *From); + void Add(const char *Dir, StringInBlock Package); void Print(FileFd &Out); - GenContents() : BlockList(0), StrPool(0), StrLeft(0), - NodePool(0), NodeLeft(0) {}; + GenContents() : BlockList(0), StrPool(0), StrLeft(0) {}; ~GenContents(); }; @@ -80,7 +65,7 @@ class ContentsExtract : public pkgDirStream bool Read(debDebFile &Deb); - virtual bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE; + bool DoItem(Item &Itm,int &Fd) override; void Reset() {CurSize = 0;}; bool TakeContents(const void *Data,unsigned long long Length); void Add(GenContents &Contents,std::string const &Package); diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc index ac85670..cbbbe35 100644 --- a/ftparchive/multicompress.cc +++ b/ftparchive/multicompress.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -264,23 +265,23 @@ 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]; + std::array Buffer; unsigned long long FileSize = 0; Hashes MD5(Hashes::MD5SUM); while (1) { WaitFd(FD,false); - int Res = read(FD,Buffer,sizeof(Buffer)); + int Res = read(FD,Buffer.data(),Buffer.size()); if (Res == 0) break; if (Res < 0) continue; - MD5.Add(Buffer,Res); + MD5.Add(Buffer.data(),Res); FileSize += Res; for (Files *I = Outputs; I != 0; I = I->Next) { - if (I->TmpFile.Write(Buffer, Res) == false) + if (I->TmpFile.Write(Buffer.data(), Res) == false) { _error->Errno("write",_("IO to subprocess/file failed")); break; @@ -319,12 +320,12 @@ bool MultiCompress::Child(int const &FD) while (1) { unsigned long long Res = 0; - if (CompFd.Read(Buffer,sizeof(Buffer), &Res) == false) + if (CompFd.Read(Buffer.data(),Buffer.size(), &Res) == false) return _error->Errno("read",_("Failed to read while computing MD5")); if (Res == 0) break; NewFileSize += Res; - OldMD5.Add(Buffer,Res); + OldMD5.Add(Buffer.data(),Res); } CompFd.Close(); diff --git a/ftparchive/override.cc b/ftparchive/override.cc index 4994d9f..a6768d9 100644 --- a/ftparchive/override.cc +++ b/ftparchive/override.cc @@ -3,9 +3,9 @@ /* ###################################################################### Override - + Store the override file. - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -31,19 +31,20 @@ 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]; + + char *Line = nullptr; + size_t LineSize = 0; unsigned long long Counter = 0; - while (fgets(Line,sizeof(Line),F) != 0) + while (getline(&Line, &LineSize, F) != -1) { Counter++; Item Itm; - // Silence + // Silence for (char *I = Line; *I != 0; I++) if (*I == '#') *I = 0; @@ -113,10 +114,10 @@ bool Override::ReadOverride(string const &File,bool const &Source) { *End = 0; Itm.OldMaint = _strstrip(Start); - + End += 3; Itm.NewMaint = _strstrip(End); - } + } } Mapping[Pkg] = Itm; @@ -124,6 +125,7 @@ bool Override::ReadOverride(string const &File,bool const &Source) if (ferror(F)) _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str()); + free(Line); fclose(F); return true; } @@ -135,18 +137,19 @@ 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]; + + char *Line = nullptr; + size_t LineSize = 0; unsigned long long Counter = 0; - while (fgets(Line,sizeof(Line),F) != 0) + while (getline(&Line, &LineSize, F) != -1) { Counter++; - // Silence + // Silence for (char *I = Line; *I != 0; I++) if (*I == '#') *I = 0; @@ -165,7 +168,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/) _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(), Counter); continue; - } + } *End = 0; // Find the field @@ -179,8 +182,8 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/) continue; } *End = 0; - - // Find the field value + + // Find the field value for (End++; isspace(*End) != 0 && *End != 0; End++); char *Value = End; for (; *End != 0; End++); @@ -190,7 +193,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/) _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(), Counter); continue; - } + } *End = 0; Mapping[Pkg].FieldOverride[Field] = Value; @@ -198,6 +201,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/) if (ferror(F)) _error->Errno("fgets",_("Failed to read the override file %s"),File.c_str()); + free(Line); fclose(F); return true; } @@ -208,10 +212,10 @@ bool Override::ReadExtraOverride(string const &File,bool const &/*Source*/) /* 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) +Override::Item* Override::GetItem(std::string_view Package, std::string_view Architecture) { map::const_iterator I = Mapping.find(Package); - map::iterator J = Mapping.find(Package + "/" + Architecture); + map::iterator J = Mapping.find(std::string{Package}.append("/").append(Architecture)); if (I == Mapping.end() && J == Mapping.end()) { @@ -246,17 +250,17 @@ Override::Item* Override::GetItem(string const &Package, string const &Architect 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) +string Override::Item::SwapMaint(std::string_view 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 @@ -264,13 +268,13 @@ string Override::Item::SwapMaint(string const &Orig,bool &Failed) string::const_iterator End = OldMaint.begin(); while (1) { - string::const_iterator Start = End; + string::const_iterator Start = End; for (; End < OldMaint.end() && - (End + 3 >= OldMaint.end() || End[0] != ' ' || + (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; @@ -279,9 +283,9 @@ string Override::Item::SwapMaint(string const &Orig,bool &Failed) } #else if (stringcasecmp(OldMaint.begin(),OldMaint.end(),Orig.begin(),Orig.end()) == 0) - return NewMaint; + return NewMaint; #endif - + Failed = true; return string(); } diff --git a/ftparchive/override.h b/ftparchive/override.h index af62a04..ea3b5b9 100644 --- a/ftparchive/override.h +++ b/ftparchive/override.h @@ -3,9 +3,9 @@ /* ###################################################################### Override - + Store the override file. - + ##################################################################### */ /*}}}*/ #ifndef OVERRIDE_H @@ -16,11 +16,11 @@ using std::string; using std::map; - + class Override { public: - + struct Item { string Priority; @@ -28,21 +28,21 @@ class Override string NewMaint; map FieldOverride; - string SwapMaint(string const &Orig,bool &Failed); + string SwapMaint(std::string_view Orig,bool &Failed); ~Item() {}; }; - - map Mapping; - - inline Item *GetItem(string const &Package) + + map> Mapping; + + inline Item *GetItem(std::string_view Package) { return GetItem(Package, ""); } - Item *GetItem(string const &Package, string const &Architecture); - + Item *GetItem(std::string_view Package, std::string_view 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 index a592243..4c7a51d 100644 --- a/ftparchive/sources.cc +++ b/ftparchive/sources.cc @@ -3,7 +3,7 @@ #include #include -// for memcpy +#include #include #include @@ -42,16 +42,16 @@ bool DscExtract::Read(std::string FileName) IsClearSigned = (FileName != F.Name()); std::ostringstream data; - char buffer[1024]; + std::array buffer; do { unsigned long long actual = 0; - if (F.Read(buffer, sizeof(buffer)-1, &actual) == false) + if (F.Read(buffer.data(), buffer.size()-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; + data << buffer.data(); } while(true); // adding two newlines 'off record' for pkgTagSection.Scan() calls diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 2651cb8..d59781f 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -2,11 +2,11 @@ // Description /*{{{*/ /* ###################################################################### - Writer - + Writer + The file writer classes. These write various types of output, sources, packages and contents. - + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -103,12 +103,12 @@ int FTWScanner::ScannerFTW(const char *File,const struct stat * /*sb*/,int Flag) { 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; @@ -154,7 +154,7 @@ int FTWScanner::ProcessFile(const char *const File, bool const ReadLink) /*{{{*/ } else Owner->DoPackage(File); - + if (_error->empty() == false) { // Print any errors or warnings found @@ -163,22 +163,22 @@ int FTWScanner::ProcessFile(const char *const File, bool const ReadLink) /*{{{*/ 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; } /*}}}*/ @@ -197,11 +197,11 @@ bool FTWScanner::RecursiveScan(string const &Dir) InternalPrefix = RealPath; free(RealPath); } - + // Do recursive directory searching Owner = this; int const Res = ftw(Dir.c_str(),ScannerFTW,30); - + // Error treewalking? if (Res != 0) { @@ -236,47 +236,40 @@ bool FTWScanner::LoadFileList(string const &Dir, string const &File) 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) + + std::string FilePathBuf; + char *Line = nullptr; + size_t LineLength = 0; + while (getline(&Line, &LineLength, List) != -1) { - char *FileName = _strstrip(FileStart); + const char *FileName = _strstrip(Line); if (FileName[0] == 0) continue; - + + // Relative path, prepend directory to make absolute if (FileName[0] != '/') { - if (FileName != FileStart) - memmove(FileStart,FileName,strlen(FileStart)); - FileName = Line; + if (Dir.empty() == true || Dir.end()[-1] != '/') + strprintf(FilePathBuf, "%s/%s", Dir.c_str(), FileName); + else + strprintf(FilePathBuf, "%s%s", Dir.c_str(), FileName); + + FileName = FilePathBuf.c_str(); } - -#if 0 - struct stat St; - int Flag = FTW_F; - if (stat(FileName,&St) != 0) - Flag = FTW_NS; -#endif + if (FileMatchesPatterns(FileName, Patterns) == false) continue; if (ProcessFile(FileName, false) != 0) break; } - + + free(Line); fclose(List); return true; } @@ -290,7 +283,7 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath, { // See if this isn't an internally prefix'd file name. if (InternalPrefix.empty() == false && - InternalPrefix.length() < FileName.length() && + InternalPrefix.length() < FileName.length() && stringcmp(FileName.begin(),FileName.begin() + InternalPrefix.length(), InternalPrefix.begin(),InternalPrefix.end()) != 0) { @@ -299,12 +292,12 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath, // 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]; @@ -322,19 +315,19 @@ bool FTWScanner::Delink(string &FileName,const char *OriginalPath, 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()); + ioprintf(c1out, _(" DeLink limit of %sB hit.\n"), SizeToStr(DeLinkBytes).c_str()); } - + FileName = OriginalPath; } - + return true; } /*}}}*/ @@ -400,11 +393,11 @@ PackagesWriter::PackagesWriter(FileFd * const GivenOutput, TranslationWriter * c /*}}}*/ // 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 +/* 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 */ @@ -419,19 +412,19 @@ bool PackagesWriter::DoPackage(string FileName) 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; - auto const Package = Tags.Find(pkgTagSection::Key::Package).to_string(); - string Architecture; + auto const Package = Tags.Find(pkgTagSection::Key::Package); + string_view 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 + // look for overrides. if we run in "simple" mode without the // "Architectures" variable in the config we use the architecture value // from the deb file if(Arch != "") Architecture = Arch; else - Architecture = Tags.Find(pkgTagSection::Key::Architecture).to_string(); + Architecture = Tags.Find(pkgTagSection::Key::Architecture); unique_ptr OverItem(Over.GetItem(Package, Architecture)); if (Package.empty() == true) @@ -443,12 +436,12 @@ bool PackagesWriter::DoPackage(string FileName) if (NoOverride == false) { NewLine(1); - ioprintf(c1out, _(" %s has no override entry\n"), Package.c_str()); + ioprintf(c1out, _(" %.*s has no override entry\n"), (int)Package.size(), Package.data()); } OverItem = unique_ptr(new Override::Item); - OverItem->FieldOverride["Section"] = Tags.Find(pkgTagSection::Key::Section).to_string(); - OverItem->Priority = Tags.Find(pkgTagSection::Key::Priority).to_string(); + OverItem->FieldOverride["Section"] = Tags.Find(pkgTagSection::Key::Section); + OverItem->Priority = Tags.Find(pkgTagSection::Key::Priority); } // Strip the DirStrip prefix from the FileName and add the PathPrefix @@ -458,7 +451,7 @@ bool PackagesWriter::DoPackage(string FileName) stringcmp(FileName.begin(),FileName.begin() + DirStrip.length(), DirStrip.begin(),DirStrip.end()) == 0) NewFileName = string(FileName.begin() + DirStrip.length(),FileName.end()); - else + else NewFileName = FileName; if (PathPrefix.empty() == false) NewFileName = flCombine(PathPrefix,NewFileName); @@ -467,8 +460,9 @@ bool PackagesWriter::DoPackage(string FileName) in the package file - instead we want to ship a separated file */ string desc; if (LongDescription == false) { - desc = Tags.Find(pkgTagSection::Key::Description).to_string().append("\n"); - OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n')).c_str(); + desc = Tags.Find(pkgTagSection::Key::Description); + desc += '\n'; + OverItem->FieldOverride["Description"] = desc.substr(0, desc.find('\n')); } // This lists all the changes to the fields we are going to make. @@ -500,14 +494,15 @@ bool PackagesWriter::DoPackage(string FileName) // Rewrite the maintainer field if necessary bool MaintFailed; - string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer).to_string(), MaintFailed); + string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer), MaintFailed); if (MaintFailed == true) { if (NoOverride == false) { - NewLine(1); - ioprintf(c1out, _(" %s maintainer is %s not %s\n"), - Package.c_str(), Tags.Find(pkgTagSection::Key::Maintainer).to_string().c_str(), OverItem->OldMaint.c_str()); + const auto Maint = Tags.Find(pkgTagSection::Key::Maintainer); + NewLine(1); + ioprintf(c1out, _(" %.*s maintainer is %.*s not %s\n"), + (int)Package.size(), Package.data(), (int)Maint.size(), Maint.data(), OverItem->OldMaint.c_str()); } } @@ -547,7 +542,7 @@ TranslationWriter::TranslationWriter(string const &File, string const &TransComp // TranslationWriter::DoPackage - Process a single package /*{{{*/ // --------------------------------------------------------------------- /* Create a Translation-Master file for this Packages file */ -bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc, +bool TranslationWriter::DoPackage(string_view Pkg, string const &Desc, string const &MD5) { if (Output == NULL) @@ -555,14 +550,14 @@ bool TranslationWriter::DoPackage(string const &Pkg, string const &Desc, // 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; + string const Record = string{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()); + strprintf(out, "Package: %.*s\nDescription-md5: %s\nDescription-en: %s\n", + (int)Pkg.size(), Pkg.data(), MD5.c_str(), Desc.c_str()); Output->Write(out.c_str(), out.length()); Included.insert(Record); @@ -590,7 +585,7 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin DeLinkLimit = 0; Buffer = 0; BufSize = 0; - + // Process the command line options ConfigToDoHashes(DoHashes, "APT::FTPArchive::Sources"); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); @@ -608,7 +603,7 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin if (ExtOverrides.empty() == false) SOver.ReadExtraOverride(ExtOverrides); - + if (SOverrides.empty() == false && FileExists(SOverrides) == true) SOver.ReadOverride(SOverrides,true); } @@ -616,13 +611,13 @@ SourcesWriter::SourcesWriter(FileFd * const GivenOutput, string const &DB, strin // SourcesWriter::DoPackage - Process a single package /*{{{*/ static std::string getDscHash(unsigned int const DoHashes, Hashes::SupportedHashes const DoIt, pkgTagSection &Tags, pkgTagSection::Key const FieldKey, - HashString const * const Hash, unsigned long long Size, std::string const &FileName) + HashString const * const Hash, unsigned long long Size, std::string_view const &FileName) { if ((DoHashes & DoIt) != DoIt || not Tags.Exists(FieldKey) || Hash == nullptr) return ""; std::ostringstream out; out << "\n " << Hash->HashValue() << " " << std::to_string(Size) << " " << FileName - << "\n " << Tags.Find(FieldKey).to_string(); + << "\n " << Tags.Find(FieldKey); return out.str(); } bool SourcesWriter::DoPackage(string FileName) @@ -664,7 +659,7 @@ bool SourcesWriter::DoPackage(string FileName) // 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++) @@ -678,46 +673,47 @@ bool SourcesWriter::DoPackage(string FileName) { 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) { + const auto Source = Tags.Find(pkgTagSection::Key::Source); NewLine(1); - ioprintf(c1out, _(" %s has no override entry\n"), Tags.Find(pkgTagSection::Key::Source).to_string().c_str()); + ioprintf(c1out, _(" %.*s has no override entry\n"), (int)Source.size(), Source.data()); } - + 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()); - auto const Package = Tags.Find(pkgTagSection::Key::Source).to_string(); + auto const Package = Tags.Find(pkgTagSection::Key::Source); unique_ptr SOverItem(SOver.GetItem(Package)); // const unique_ptr autoSOverItem(SOverItem); if (SOverItem.get() == 0) { - ioprintf(c1out, _(" %s has no source override entry\n"), Package.c_str()); + ioprintf(c1out, _(" %.*s has no source override entry\n"), (int)Package.size(), Package.data()); SOverItem = unique_ptr(BOver.GetItem(Package)); if (SOverItem.get() == 0) { - ioprintf(c1out, _(" %s has no binary override entry either\n"), Package.c_str()); + ioprintf(c1out, _(" %.*s has no binary override entry either\n"), (int)Package.size(), Package.data()); SOverItem = unique_ptr(new Override::Item); *SOverItem = *OverItem; } } // Add the dsc to the files hash list - string const strippedName = flNotDir(FileName); + auto const strippedName = flNotDir(FileName); std::string const Files = getDscHash(DoHashes, Hashes::MD5SUM, Tags, pkgTagSection::Key::Files, Db.HashesList.find("MD5Sum"), St.st_size, strippedName); std::string ChecksumsSha1 = getDscHash(DoHashes, Hashes::SHA1SUM, Tags, pkgTagSection::Key::Checksums_Sha1, Db.HashesList.find("SHA1"), St.st_size, strippedName); std::string ChecksumsSha256 = getDscHash(DoHashes, Hashes::SHA256SUM, Tags, pkgTagSection::Key::Checksums_Sha256, Db.HashesList.find("SHA256"), St.st_size, strippedName); @@ -729,7 +725,7 @@ bool SourcesWriter::DoPackage(string FileName) FileName.length() > DirStrip.length() && stringcmp(DirStrip,OriginalPath,OriginalPath + DirStrip.length()) == 0) NewFileName = string(OriginalPath + DirStrip.length()); - else + else NewFileName = OriginalPath; if (PathPrefix.empty() == false) NewFileName = flCombine(PathPrefix,NewFileName); @@ -850,14 +846,15 @@ bool SourcesWriter::DoPackage(string FileName) // Rewrite the maintainer field if necessary bool MaintFailed; - string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer).to_string(), MaintFailed); + string NewMaint = OverItem->SwapMaint(Tags.Find(pkgTagSection::Key::Maintainer), MaintFailed); if (MaintFailed == true) { if (NoOverride == false) { - NewLine(1); - ioprintf(c1out, _(" %s maintainer is %s not %s\n"), Package.c_str(), - Tags.Find(pkgTagSection::Key::Maintainer).to_string().c_str(), OverItem->OldMaint.c_str()); + const auto Maint = Tags.Find(pkgTagSection::Key::Maintainer); + NewLine(1); + ioprintf(c1out, _(" %.*s maintainer is %.*s not %s\n"), (int)Package.size(), Package.data(), + (int)Maint.size(), Maint.data(), OverItem->OldMaint.c_str()); } } if (NewMaint.empty() == false) @@ -873,7 +870,7 @@ bool SourcesWriter::DoPackage(string FileName) return false; Stats.Packages++; - + return true; } /*}}}*/ @@ -909,11 +906,11 @@ bool ContentsWriter::DoPackage(string FileName, string Package) // Parse the package name if (Package.empty() == true) { - Package = Db.Control.Section.Find(pkgTagSection::Key::Package).to_string(); + Package = Db.Control.Section.Find(pkgTagSection::Key::Package); } - Db.Contents.Add(Gen,Package); - + Db.Contents.Add(Gen,std::move(Package)); + return Db.Finish(); } /*}}}*/ @@ -939,8 +936,8 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres pkgTagSection Section; while (Tags.Step(Section) == true) { - auto File = flCombine(Prefix, Section.Find(pkgTagSection::Key::Filename).to_string()); - auto Package = flCombine(Section.Find(pkgTagSection::Key::Section).to_string(), Section.Find(pkgTagSection::Key::Package).to_string()); + auto File = flCombine(Prefix, string{Section.Find(pkgTagSection::Key::Filename)}); + auto Package = flCombine(string{Section.Find(pkgTagSection::Key::Section)}, string{Section.Find(pkgTagSection::Key::Package)}); DoPackage(std::move(File), std::move(Package)); if (_error->empty() == false) { @@ -1058,7 +1055,7 @@ bool ReleaseWriter::DoPackage(string FileName) while (NewFileName[0] == '/') NewFileName = string(NewFileName.begin() + 1,NewFileName.end()); } - else + else NewFileName = FileName; if (PathPrefix.empty() == false) diff --git a/ftparchive/writer.h b/ftparchive/writer.h index 90fb27f..c9b07c1 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -2,11 +2,11 @@ // Description /*{{{*/ /* ###################################################################### - Writer - + Writer + The file writer classes. These write various types of output, sources, packages and contents. - + ##################################################################### */ /*}}}*/ #ifndef WRITER_H @@ -95,7 +95,7 @@ class TranslationWriter FileFd *Output; public: - bool DoPackage(string const &Pkg, string const &Desc, string const &MD5); + bool DoPackage(std::string_view Pkg, string const &Desc, string const &MD5); TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions); ~TranslationWriter(); @@ -121,9 +121,9 @@ class PackagesWriter : public FTWScanner TranslationWriter * const TransWriter; inline bool ReadOverride(string const &File) {return Over.ReadOverride(File);}; - inline bool ReadExtraOverride(string const &File) + inline bool ReadExtraOverride(string const &File) {return Over.ReadExtraOverride(File);}; - virtual bool DoPackage(string FileName) APT_OVERRIDE; + bool DoPackage(string FileName) override; PackagesWriter(FileFd * const Output, TranslationWriter * const TransWriter, string const &DB, string const &Overrides, @@ -146,7 +146,7 @@ class ContentsWriter : public FTWScanner string Prefix; bool DoPackage(string FileName,string Package); - virtual bool DoPackage(string FileName) APT_OVERRIDE + bool DoPackage(string FileName) override {return DoPackage(FileName,string());}; bool ReadFromPkgs(string const &PkgFile,string const &PkgCompress); @@ -176,7 +176,7 @@ class SourcesWriter : public FTWScanner string DirStrip; struct CacheDB::Stats &Stats; - virtual bool DoPackage(string FileName) APT_OVERRIDE; + bool DoPackage(string FileName) override; SourcesWriter(FileFd * const Output, string const &DB,string const &BOverrides,string const &SOverrides, string const &ExtOverrides=string()); @@ -187,7 +187,7 @@ class ReleaseWriter : public FTWScanner { public: ReleaseWriter(FileFd * const Output, string const &DB); - virtual bool DoPackage(string FileName) APT_OVERRIDE; + bool DoPackage(string FileName) override; void Finish(); // General options diff --git a/methods/CMakeLists.txt b/methods/CMakeLists.txt index a94cb41..161cd91 100644 --- a/methods/CMakeLists.txt +++ b/methods/CMakeLists.txt @@ -8,31 +8,30 @@ add_executable(file file.cc) add_executable(copy copy.cc) add_executable(store store.cc) add_executable(gpgv gpgv.cc) +if (SQV_EXECUTABLE) +add_executable(sqv sqv.cc) +install(TARGETS sqv + RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods) +endif() add_executable(cdrom cdrom.cc) add_executable(http http.cc basehttp.cc $) add_executable(mirror mirror.cc) -add_executable(ftp ftp.cc $) add_executable(rred rred.cc) -add_executable(rsh rsh.cc) -if (HAVE_GNUTLS) - target_compile_definitions(connectlib PRIVATE ${GNUTLS_DEFINITIONS}) - target_include_directories(connectlib PRIVATE ${GNUTLS_INCLUDE_DIR}) -endif() +target_compile_definitions(connectlib PRIVATE ${OPENSSL_DEFINITIONS}) +target_include_directories(connectlib PRIVATE ${OPENSSL_INCLUDE_DIR}) target_include_directories(http PRIVATE $<$:${SYSTEMD_INCLUDE_DIRS}>) # Additional libraries to link against for networked stuff -target_link_libraries(http $<$:${GNUTLS_LIBRARIES}> $<$:${SYSTEMD_LIBRARIES}>) -target_link_libraries(ftp $<$:${GNUTLS_LIBRARIES}>) +target_link_libraries(http OpenSSL::SSL $<$:${SYSTEMD_LIBRARIES}>) target_link_libraries(rred apt-private) # Install the library -install(TARGETS file copy store gpgv cdrom http ftp rred rsh mirror +install(TARGETS file copy store cdrom gpgv http rred mirror RUNTIME DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/apt/methods) -add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods mirror mirror+ftp mirror+http mirror+https mirror+file mirror+copy) -add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods rsh ssh) +add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods mirror mirror+http mirror+https mirror+file mirror+copy) add_links(${CMAKE_INSTALL_LIBEXECDIR}/apt/methods http https) diff --git a/methods/aptmethod.h b/methods/aptmethod.h index 5d0b0cd..f564499 100644 --- a/methods/aptmethod.h +++ b/methods/aptmethod.h @@ -73,16 +73,6 @@ class aptConfigWrapperForMethods strprintf(confpn, "Debug::Acquire::%s", pni.c_str()); return _config->FindB(confln,_config->FindB(confsn, _config->FindB(confpn, false))); } - std::string ConfigFindSmartMirrors(char const * const postfix, std::string const &defValue) const APT_NONNULL(2) - { - std::string conf; - strprintf(conf, "Acquire::SmartMirrors::%s", postfix); - auto const value = _config->Find(conf); - if (value.empty() == false) - return value; - - return defValue; - } std::string ConfigFind(char const * const postfix, std::string const &defValue) const APT_NONNULL(2) { for (auto name = methodNames.rbegin(); name != methodNames.rend(); ++name) @@ -130,7 +120,7 @@ class aptMethod : public pkgAcqMethod, public aptConfigWrapperForMethods }; public: - virtual bool Configuration(std::string Message) APT_OVERRIDE + bool Configuration(std::string Message) override { if (pkgAcqMethod::Configuration(Message) == false) return false; @@ -458,7 +448,7 @@ class aptMethod : public pkgAcqMethod, public aptConfigWrapperForMethods return true; } - void Warning(std::string &&msg) + void Message(std::string &&msg, std::string code) { std::unordered_map fields; if (Queue != 0) @@ -468,7 +458,15 @@ class aptMethod : public pkgAcqMethod, public aptConfigWrapperForMethods if (not UsedMirror.empty()) fields.emplace("UsedMirror", UsedMirror); fields.emplace("Message", std::move(msg)); - SendMessage("104 Warning", std::move(fields)); + SendMessage(code, std::move(fields)); + } + void Warning(std::string &&msg) + { + return Message(std::move(msg), "104 Warning"); + } + void Audit(std::string &&msg) + { + return Message(std::move(msg), "105 Audit"); } bool TransferModificationTimes(char const * const From, char const * const To, time_t &LastModified) APT_NONNULL(2, 3) @@ -516,6 +514,17 @@ class aptMethod : public pkgAcqMethod, public aptConfigWrapperForMethods return part; } + static std::string CombineWithAlternatePath(std::string Path, std::string Change) + { + while (APT::String::Startswith(Change, "../")) + { + Path.erase(Path.find_last_not_of('/')); + Path = flNotFile(Path); + Change.erase(0, 3); + } + return flCombine(Path, Change); + } + aptMethod(std::string &&Binary, char const *const Ver, unsigned long const Flags) APT_NONNULL(3) : pkgAcqMethod(Ver, Flags), aptConfigWrapperForMethods(Binary), Binary(std::move(Binary)), SeccompFlags(0) { @@ -531,7 +540,7 @@ class aptAuthConfMethod : public aptMethod std::vector> authconfs; public: - virtual bool Configuration(std::string Message) APT_OVERRIDE + bool Configuration(std::string Message) override { if (pkgAcqMethod::Configuration(Message) == false) return false; diff --git a/methods/basehttp.cc b/methods/basehttp.cc index 26b633c..d335e6f 100644 --- a/methods/basehttp.cc +++ b/methods/basehttp.cc @@ -263,6 +263,21 @@ bool RequestState::HeaderLine(string const &Line) /*{{{*/ return true; } + if (stringcasecmp(Tag, "Retry-After:") == 0) + { + unsigned long _retry_after_s; + if (RFC1123StrToTime(Val, RetryAfter)) + { + return true; + } + if (StrToNum(Val.c_str(), _retry_after_s, 4, 10) == 1) + { + RetryAfter = time(nullptr) + _retry_after_s; + return true; + } + return _error->Error(_("Unknown date format")); + } + if (Server->RangesAllowed && stringcasecmp(Tag, "Via:") == 0) { auto const parts = VectorizeString(Val, ' '); @@ -884,7 +899,19 @@ int BaseHttpMethod::Loop() 599, // Network Connect Timeout Error }; if (std::find(std::begin(TransientCodes), std::end(TransientCodes), Req.Result) != std::end(TransientCodes)) - Fail(true); + { + if (Req.RetryAfter) + { + std::unordered_map fields; + fields["Retry-After"] = std::to_string(Req.RetryAfter); + SetFailReason("TooManyRequests"); + FailWithContext(std::string("TooManyRequests"), true, fields); + } + else + { + Fail(true); + } + } else Fail(); break; diff --git a/methods/basehttp.h b/methods/basehttp.h index 080ea52..31a7a6b 100644 --- a/methods/basehttp.h +++ b/methods/basehttp.h @@ -54,9 +54,10 @@ struct RequestState time_t Date; HaveContent haveContent = HaveContent::TRI_UNKNOWN; - enum {Chunked,Stream,Closes} Encoding = Closes; + enum {Closes,Chunked,Stream} Encoding = Closes; enum {Header, Data} State = Header; std::string Location; + time_t RetryAfter = 0; FileFd File; @@ -125,7 +126,7 @@ struct ServerState class BaseHttpMethod : public aptAuthConfMethod { protected: - virtual bool Fetch(FetchItem *) APT_OVERRIDE; + bool Fetch(FetchItem *) override; std::unique_ptr Server; std::string NextURI; @@ -162,14 +163,14 @@ class BaseHttpMethod : public aptAuthConfMethod static std::string FailFile; static int FailFd; static time_t FailTime; - static APT_NORETURN void SigTerm(int); + [[noreturn]] static void SigTerm(int); int Loop(); virtual void SendReq(FetchItem *Itm) = 0; virtual std::unique_ptr CreateServerState(URI const &uri) = 0; virtual void RotateDNS() = 0; - virtual bool Configuration(std::string Message) APT_OVERRIDE; + bool Configuration(std::string Message) override; bool AddProxyAuth(URI &Proxy, URI const &Server); diff --git a/methods/cdrom.cc b/methods/cdrom.cc index f534a06..88a10c0 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -42,10 +42,10 @@ class CDROMMethod : public aptMethod bool IsCorrectCD(URI want, string MountPath, string& NewID); bool AutoDetectAndMount(const URI, string &NewID); - virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; + bool Fetch(FetchItem *Itm) override; std::string GetID(std::string const &Name); - virtual void Exit() APT_OVERRIDE; - virtual bool Configuration(std::string Message) APT_OVERRIDE; + void Exit() override; + bool Configuration(std::string Message) override; public: diff --git a/methods/connect.cc b/methods/connect.cc index f3e199d..828be3f 100644 --- a/methods/connect.cc +++ b/methods/connect.cc @@ -1,12 +1,14 @@ // -*- mode: cpp; mode: fold -*- +// SPDX-License-Identifier: GPL-2.0+ and curl // Description /*{{{*/ /* ###################################################################### Connect - Replacement connect call This was originally authored by Jason Gunthorpe - and is placed in the Public Domain, do with it what you will. - + and is placed in the Public Domain, do with it what you will. It + is now GPL-2.0+. See COPYING for details. + ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ @@ -19,11 +21,10 @@ #include #include -#ifdef HAVE_GNUTLS -#include -#include -#endif +#include +#include +#include #include #include #include @@ -85,13 +86,13 @@ static bool ConnectionAllowed(char const * const Service, std::string const &Hos /*}}}*/ // File Descriptor based Fd /*{{{*/ -struct FdFd : public MethodFd +struct FdFd final : public MethodFd { int fd = -1; - int Fd() APT_OVERRIDE { return fd; } - ssize_t Read(void *buf, size_t count) APT_OVERRIDE { return ::read(fd, buf, count); } - ssize_t Write(void *buf, size_t count) APT_OVERRIDE { return ::write(fd, buf, count); } - int Close() APT_OVERRIDE + int Fd() override { return fd; } + ssize_t Read(void *buf, size_t count) override { return ::read(fd, buf, count); } + ssize_t Write(void *buf, size_t count) override { return ::write(fd, buf, count); } + int Close() override { int result = 0; if (fd != -1) @@ -801,229 +802,246 @@ ResultState UnwrapSocks(std::string Host, int Port, URI Proxy, std::unique_ptrError(__VA_ARGS__), nullptr) +#define ssl_strerr() ERR_error_string(ERR_get_error(), nullptr) +struct TlsFd final : public MethodFd { - std::unique_ptr UnderlyingFd; - gnutls_session_t session; - gnutls_certificate_credentials_t credentials; - std::string hostname; - unsigned long Timeout; + std::unique_ptr UnderlyingFd{}; + + SSL *ssl{}; - int Fd() APT_OVERRIDE { return UnderlyingFd->Fd(); } + std::string hostname{}; + unsigned long Timeout{}; + bool broken{false}; - ssize_t Read(void *buf, size_t count) APT_OVERRIDE + int Fd() override { return UnderlyingFd ? UnderlyingFd->Fd() : -1; } + + ssize_t Read(void *buf, size_t count) override { - return HandleError(gnutls_record_recv(session, buf, count)); + assert(ssl); + return HandleError(SSL_read(ssl, buf, count)); } - ssize_t Write(void *buf, size_t count) APT_OVERRIDE + ssize_t Write(void *buf, size_t count) override { - return HandleError(gnutls_record_send(session, buf, count)); + assert(ssl); + return HandleError(SSL_write(ssl, buf, count)); } - ssize_t DoTLSHandshake() + ssize_t HandleError(ssize_t r) { - int err; - // Do the handshake. Our socket is non-blocking, so we need to call WaitFd() - // accordingly. - do - { - err = gnutls_handshake(session); - if ((err == GNUTLS_E_INTERRUPTED || err == GNUTLS_E_AGAIN) && - WaitFd(this->Fd(), gnutls_record_get_direction(session) == 1, Timeout) == false) - { - _error->Errno("select", "Could not wait for server fd"); - return err; - } - } while (err < 0 && gnutls_error_is_fatal(err) == 0); - - if (err < 0) + assert(ssl); + if (r > 0) + return r; + + auto err = SSL_get_error(ssl, r); + switch (err) { - // Print reason why validation failed. - if (err == GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR) - { - gnutls_datum_t txt; - auto type = gnutls_certificate_type_get(session); - auto status = gnutls_session_get_verify_cert_status(session); - if (gnutls_certificate_verification_status_print(status, type, &txt, 0) == 0) - { - _error->Error("Certificate verification failed: %s", txt.data); - } - gnutls_free(txt.data); - } - _error->Error("Could not handshake: %s", gnutls_strerror(err)); + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + errno = EAGAIN; + return -1; + case SSL_ERROR_ZERO_RETURN: + // Remote host has closed connection + errno = 0; + return 0; + case SSL_ERROR_SYSCALL: + broken = true; + _error->Errno("openssl", "OpenSSL system call error: %s\n", ssl_strerr()); + return -1; + case SSL_ERROR_SSL: + broken = true; + errno = EIO; + _error->Error("OpenSSL error: %s\n", ssl_strerr()); + return -1; + default: + broken = true; + errno = EIO; + _error->Error("Unexpected OpenSSL error: %s\n", ssl_strerr()); + return -1; } - return err; } - template - T HandleError(T err) + int Close() override { - // Server may request re-handshake if client certificates need to be provided - // based on resource requested - if (err == GNUTLS_E_REHANDSHAKE) + int res = 0; // 0 or 1 are success + int lower = 0; // 0 is success + + if (ssl) { - int rc = DoTLSHandshake(); - // Only reset err if DoTLSHandshake() fails. - // Otherwise, we want to follow the original error path and set errno to EAGAIN - // so that the request is retried. - if (rc < 0) - err = rc; + if (not broken && res) + res = SSL_shutdown(ssl); + if (res < 0) + HandleError(res); + SSL_free(ssl); } + ssl = nullptr; - if (err < 0 && gnutls_error_is_fatal(err)) - errno = EIO; - else if (err < 0) - errno = EAGAIN; - else - errno = 0; - return err; - } + if (UnderlyingFd) + lower = UnderlyingFd->Close(); + UnderlyingFd = nullptr; - int Close() APT_OVERRIDE - { - auto err = HandleError(gnutls_bye(session, GNUTLS_SHUT_RDWR)); - auto lower = UnderlyingFd->Close(); - return err < 0 ? HandleError(err) : lower; + // Return -1 on failure, 0 on success + return res < 0 || lower < 0 ? -1 : 0; } - bool HasPending() APT_OVERRIDE + bool HasPending() override { - return gnutls_record_check_pending(session) > 0; + // SSL_has_pending() can return 1 even if there are no actual bytes to read + // post decoding, so we need to SSL_peek() too to see if there are actual + // bytes as otherwise we end up busy looping (tested by DE -> AU https connection) + char buf; + return ssl != nullptr && SSL_has_pending(ssl) && SSL_peek(ssl, &buf, 1) > 0; } }; -ResultState UnwrapTLS(std::string const &Host, std::unique_ptr &Fd, - unsigned long const Timeout, aptMethod * const Owner, - aptConfigWrapperForMethods const * const OwnerConf) +static BIO_METHOD *NewBioMethod() { - if (_config->FindB("Acquire::AllowTLS", true) == false) + BIO_METHOD *m = BIO_meth_new(BIO_TYPE_MEM, "OpenSSL APT BIO method"); + if (not m) { - _error->Error("TLS support has been disabled: Acquire::AllowTLS is false."); - return ResultState::FATAL_ERROR; + _error->Error("SSL connection failed: %s - %s", ssl_strerr(), strerror(errno)); + return nullptr; } - int err; - TlsFd *tlsFd = new TlsFd(); + BIO_meth_set_ctrl(m, [](BIO *, int, long, void *) -> long + { return 1; }); + BIO_meth_set_write(m, [](BIO *bio, const char *buf, int size) -> int + { + auto p = BIO_get_data(bio); + auto res = reinterpret_cast(p)->Write((void*)buf, size); + if (errno == EAGAIN) + BIO_set_retry_write(bio); + return res; }); + BIO_meth_set_read(m, [](BIO *bio, char *buf, int size) -> int + { + auto p = BIO_get_data(bio); + auto res = reinterpret_cast(p)->Read(buf, size); + if (errno == EAGAIN) + BIO_set_retry_read(bio); + return res; }); + + return m; +} - tlsFd->hostname = Host; - tlsFd->UnderlyingFd = MethodFd::FromFd(-1); // For now - tlsFd->Timeout = Timeout; +static SSL_CTX *GetContextForHost(std::string const &host, aptConfigWrapperForMethods const *const OwnerConf) +{ + static std::string lastHost; + static SSL_CTX *ctx; + auto Debug = OwnerConf->DebugEnabled(); - if ((err = gnutls_init(&tlsFd->session, GNUTLS_CLIENT | GNUTLS_NONBLOCK)) < 0) + if (lastHost == host) { - _error->Error("Internal error: could not allocate credentials: %s", gnutls_strerror(err)); - return ResultState::FATAL_ERROR; + if (Debug) + std::clog << "Reusing context for " << host << std::endl; + return ctx; } + if (Debug) + std::clog << "Creating context for " << host << std::endl; - FdFd *fdfd = dynamic_cast(Fd.get()); - if (fdfd != nullptr) - { - gnutls_transport_set_int(tlsFd->session, fdfd->fd); - } - else - { - gnutls_transport_set_ptr(tlsFd->session, Fd.get()); - gnutls_transport_set_pull_function(tlsFd->session, - [](gnutls_transport_ptr_t p, void *buf, size_t size) -> ssize_t { - return reinterpret_cast(p)->Read(buf, size); - }); - gnutls_transport_set_push_function(tlsFd->session, - [](gnutls_transport_ptr_t p, const void *buf, size_t size) -> ssize_t { - return reinterpret_cast(p)->Write((void *)buf, size); - }); - } + // Check unsupported options first, maybe we reuse the host context later, who knows + if (not OwnerConf->ConfigFind("IssuerCert", "").empty()) + return null_error("The option '%s' is not supported anymore", "IssuerCert"); + if (not OwnerConf->ConfigFind("SslForceVersion", "").empty()) + return null_error("The option '%s' is not supported anymore", "SslForceVersion"); - if ((err = gnutls_certificate_allocate_credentials(&tlsFd->credentials)) < 0) - { - _error->Error("Internal error: could not allocate credentials: %s", gnutls_strerror(err)); - return ResultState::FATAL_ERROR; - } + // Delete the existing context and render it unusable + lastHost = ""; + SSL_CTX_free(ctx); - // Credential setup - std::string fileinfo = OwnerConf->ConfigFind("CaInfo", ""); - if (fileinfo.empty()) + // We set the context here, but lastHost at the end to only allow reuse of fully initialized contexts + ctx = SSL_CTX_new(TLS_client_method()); + if (ctx == nullptr) + return null_error("Could not create new SSL context: %s", ssl_strerr()); + + // Load the certificate authorities, either custom or default ones + if (auto const fileinfo = OwnerConf->ConfigFind("CaInfo", ""); not fileinfo.empty()) { - // No CaInfo specified, use system trust store. - err = gnutls_certificate_set_x509_system_trust(tlsFd->credentials); - if (err == 0) - Owner->Warning("No system certificates available. Try installing ca-certificates."); - else if (err < 0) - { - _error->Error("Could not load system TLS certificates: %s", gnutls_strerror(err)); - return ResultState::FATAL_ERROR; - } + if (auto res = SSL_CTX_load_verify_file(ctx, fileinfo.c_str()); res != 1) + return null_error("Could not load certificates from %s (CaInfo option): %s", fileinfo.c_str(), ssl_strerr()); } - else + else if (auto err = SSL_CTX_set_default_verify_paths(ctx); err != 1) + return null_error("Could not load certificates: %s", ssl_strerr()); + + // Client certificate setup, such that clients can authenticate to the server + if (auto const cert = OwnerConf->ConfigFind("SslCert", ""); not cert.empty()) + if (auto res = SSL_CTX_use_certificate_chain_file(ctx, cert.c_str()); res != 1) + return null_error("Could not load client certificate (%s, SslCert option): %s", cert.c_str(), ssl_strerr()); + if (auto const key = OwnerConf->ConfigFind("SslKey", ""); not key.empty()) + if (auto res = SSL_CTX_use_PrivateKey_file(ctx, key.c_str(), SSL_FILETYPE_PEM); res != 1) + return null_error("Could not load client or key (%s, SslKey option): %s", key.c_str(), ssl_strerr()), nullptr; + + // Custom certificate revocation lists. We surely support all the niche cases. + if (auto const crlfile = OwnerConf->ConfigFind("CrlFile", ""); not crlfile.empty()) { - // CA location has been set, use the specified one instead - gnutls_certificate_set_verify_flags(tlsFd->credentials, GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT); - err = gnutls_certificate_set_x509_trust_file(tlsFd->credentials, fileinfo.c_str(), GNUTLS_X509_FMT_PEM); - if (err < 0) - { - _error->Error("Could not load certificates from %s (CaInfo option): %s", fileinfo.c_str(), gnutls_strerror(err)); - return ResultState::FATAL_ERROR; - } + // tell OpenSSL where to find CRL file that is used to check certificate revocation. + // lifted from curl: + // Copyright (c) 1996 - 2023, Daniel Stenberg, , and many + // contributors, see the THANKS file. + auto lookup = X509_STORE_add_lookup(SSL_CTX_get_cert_store(ctx), + X509_LOOKUP_file()); + if (not lookup || not X509_load_crl_file(lookup, crlfile.c_str(), X509_FILETYPE_PEM)) + return null_error("Could not load custom certificate revocation list %s (CrlFile option): %s", crlfile.c_str(), ssl_strerr()); + /* Everything is fine. */ + X509_STORE_set_flags(SSL_CTX_get_cert_store(ctx), + X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL); } - if (not OwnerConf->ConfigFind("IssuerCert", "").empty()) + lastHost = host; + return ctx; +} + +ResultState UnwrapTLS(std::string const &Host, std::unique_ptr &Fd, + unsigned long const Timeout, aptMethod *const /*Owner*/, + aptConfigWrapperForMethods const *const OwnerConf) +{ + if (_config->FindB("Acquire::AllowTLS", true) == false) { - _error->Error("The option '%s' is not supported anymore", "IssuerCert"); + _error->Error("TLS support has been disabled: Acquire::AllowTLS is false."); return ResultState::FATAL_ERROR; } - if (not OwnerConf->ConfigFind("SslForceVersion", "").empty()) - { - _error->Error("The option '%s' is not supported anymore", "SslForceVersion"); + + TlsFd *tlsFd = new TlsFd(); + + tlsFd->hostname = Host; + tlsFd->Timeout = Timeout; + + if (auto ctx = GetContextForHost(Host, OwnerConf)) + tlsFd->ssl = SSL_new(ctx); + else return ResultState::FATAL_ERROR; - } - // For client authentication, certificate file ... - std::string const cert = OwnerConf->ConfigFind("SslCert", ""); - std::string const key = OwnerConf->ConfigFind("SslKey", ""); - if (cert.empty() == false) + FdFd *fdfd = dynamic_cast(Fd.get()); + if (fdfd != nullptr) { - if ((err = gnutls_certificate_set_x509_key_file( - tlsFd->credentials, - cert.c_str(), - key.empty() ? cert.c_str() : key.c_str(), - GNUTLS_X509_FMT_PEM)) < 0) - { - _error->Error("Could not load client certificate (%s, SslCert option) or key (%s, SslKey option): %s", cert.c_str(), key.c_str(), gnutls_strerror(err)); - return ResultState::FATAL_ERROR; - } + SSL_set_fd(tlsFd->ssl, fdfd->fd); } - - // CRL file - std::string const crlfile = OwnerConf->ConfigFind("CrlFile", ""); - if (crlfile.empty() == false) + else { - if ((err = gnutls_certificate_set_x509_crl_file(tlsFd->credentials, - crlfile.c_str(), - GNUTLS_X509_FMT_PEM)) < 0) - { - _error->Error("Could not load custom certificate revocation list %s (CrlFile option): %s", crlfile.c_str(), gnutls_strerror(err)); + static auto m = NewBioMethod(); + if (m == nullptr) return ResultState::FATAL_ERROR; - } - } - if ((err = gnutls_credentials_set(tlsFd->session, GNUTLS_CRD_CERTIFICATE, tlsFd->credentials)) < 0) - { - _error->Error("Internal error: Could not add certificates to session: %s", gnutls_strerror(err)); - return ResultState::FATAL_ERROR; - } + auto bio = BIO_new(m); + if (bio == nullptr) + return ResultState::FATAL_ERROR; - if ((err = gnutls_set_default_priority(tlsFd->session)) < 0) - { - _error->Error("Internal error: Could not set algorithm preferences: %s", gnutls_strerror(err)); - return ResultState::FATAL_ERROR; + BIO_set_data(bio, Fd.get()); + BIO_up_ref(bio); // the following take one reference each + SSL_set0_rbio(tlsFd->ssl, bio); + SSL_set0_wbio(tlsFd->ssl, bio); } if (OwnerConf->ConfigFindB("Verify-Peer", true)) { - gnutls_session_set_verify_cert(tlsFd->session, OwnerConf->ConfigFindB("Verify-Host", true) ? tlsFd->hostname.c_str() : nullptr, 0); + SSL_set_verify(tlsFd->ssl, SSL_VERIFY_PEER, nullptr); + if (auto res = SSL_set1_host(tlsFd->ssl, OwnerConf->ConfigFindB("Verify-Host", true) ? tlsFd->hostname.c_str() : nullptr); res != 1) + { + _error->Error("Could not set hostname: %s", ssl_strerr()); + return ResultState::FATAL_ERROR; + } } // set SNI only if the hostname is really a name and not an address @@ -1034,23 +1052,37 @@ ResultState UnwrapTLS(std::string const &Host, std::unique_ptr &Fd, if (inet_pton(AF_INET, tlsFd->hostname.c_str(), &addr4) == 1 || inet_pton(AF_INET6, tlsFd->hostname.c_str(), &addr6) == 1) /* not a host name */; - else if ((err = gnutls_server_name_set(tlsFd->session, GNUTLS_NAME_DNS, tlsFd->hostname.c_str(), tlsFd->hostname.length())) < 0) + else if (auto res = SSL_set_tlsext_host_name(tlsFd->ssl, tlsFd->hostname.c_str()); res != 1) { - _error->Error("Could not set host name %s to indicate to server: %s", tlsFd->hostname.c_str(), gnutls_strerror(err)); + _error->Error("Could not set host name %s to indicate to server: %s", tlsFd->hostname.c_str(), ssl_strerr()); return ResultState::FATAL_ERROR; } } + while (true) + { + auto res = SSL_connect(tlsFd->ssl); + if (res == 1) + break; + switch (auto error = SSL_get_error(tlsFd->ssl, res)) + { + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + if (not WaitFd(Fd->Fd(), error == SSL_ERROR_WANT_WRITE, Timeout)) + { + _error->Errno("select", "Could not wait for server fd"); + return ResultState::TRANSIENT_ERROR; + } + break; + default: + _error->Error("SSL connection failed: %s / %s", ssl_strerr(), strerror(errno)); + return ResultState::TRANSIENT_ERROR; + } + } + // Set the FD now, so closing it works reliably. tlsFd->UnderlyingFd = std::move(Fd); Fd.reset(tlsFd); - // Do the handshake. - err = tlsFd->DoTLSHandshake(); - - if (err < 0) - return ResultState::TRANSIENT_ERROR; - return ResultState::SUCCESSFUL; } -#endif /*}}}*/ diff --git a/methods/copy.cc b/methods/copy.cc index 82eed15..91f831e 100644 --- a/methods/copy.cc +++ b/methods/copy.cc @@ -24,9 +24,9 @@ #include /*}}}*/ -class CopyMethod : public aptMethod +class CopyMethod final : public aptMethod { - virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; + bool URIAcquire(std::string const &Message, FetchItem *Itm) override; public: CopyMethod() : aptMethod("copy", "1.0", SingleInstance | SendConfig | SendURIEncoded) @@ -36,55 +36,71 @@ class CopyMethod : public aptMethod }; // CopyMethod::Fetch - Fetch a file /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool CopyMethod::Fetch(FetchItem *Itm) +bool CopyMethod::URIAcquire(std::string const &Message, FetchItem *Itm) { - // this ensures that relative paths work in copy - std::string const File = DecodeSendURI(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")); + struct FileCopyType { + std::string name; + struct stat stat{}; + explicit FileCopyType(std::string &&file) noexcept : name{std::move(file)} {} + }; + std::vector files; + // this ensures that relative paths work + files.emplace_back(DecodeSendURI(Itm->Uri.substr(Itm->Uri.find(':')+1))); + for (auto const &AltPath : VectorizeString(LookupTag(Message, "Alternate-Paths"), '\n')) + files.emplace_back(CombineWithAlternatePath(flNotFile(files[0].name), DecodeSendURI(AltPath))); + files.erase(std::remove_if(files.begin(), files.end(), [](auto &file) + { return stat(file.name.c_str(), &file.stat) != 0; }), + files.end()); + if (files.empty()) + return _error->Errno("copy-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") + for (auto const &File : files) { + Res.Size = File.stat.st_size; + Res.LastModified = File.stat.st_mtime; + + // just calc the hashes if the source and destination are identical + if (Itm->DestFile == "/dev/null" || File.name == Itm->DestFile) + { + URIStart(Res); + CalculateHashes(Itm, Res); + URIDone(Res); + return true; + } + + FileFd From(File.name, FileFd::ReadOnly); + FileFd To(Itm->DestFile, FileFd::WriteAtomic); + To.EraseOnFailure(); + if (not From.IsOpen() || not To.IsOpen()) + continue; + + // Copy the file + URIStart(Res); + if (not CopyFile(From, To)) + { + To.OpFail(); + continue; + } + From.Close(); + To.Close(); + CalculateHashes(Itm, Res); - URIDone(Res); - return true; - } + if (not Itm->ExpectedHashes.empty() && Itm->ExpectedHashes != Res.Hashes) + continue; - // See if the file exists - FileFd From(File,FileFd::ReadOnly); - FileFd To(Itm->DestFile,FileFd::WriteAtomic); - To.EraseOnFailure(); + if (not TransferModificationTimes(File.name.c_str(), Res.Filename.c_str(), Res.LastModified)) + continue; - // Copy the file - if (CopyFile(From,To) == false) - { - To.OpFail(); - return false; + URIDone(Res); + return true; } - 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; + return false; } /*}}}*/ diff --git a/methods/file.cc b/methods/file.cc index b2fe133..2a17336 100644 --- a/methods/file.cc +++ b/methods/file.cc @@ -27,9 +27,9 @@ #include /*}}}*/ -class FileMethod : public aptMethod +class FileMethod final : public aptMethod { - virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; + bool URIAcquire(std::string const &Message, FetchItem *Itm) override; public: FileMethod() : aptMethod("file", "1.0", SingleInstance | SendConfig | LocalOnly | SendURIEncoded) @@ -41,86 +41,101 @@ class FileMethod : public aptMethod // FileMethod::Fetch - Fetch a file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool FileMethod::Fetch(FetchItem *Itm) +bool FileMethod::URIAcquire(std::string const &Message, FetchItem *Itm) { URI Get(Itm->Uri); - std::string const File = DecodeSendURI(Get.Path); - FetchResult Res; if (Get.Host.empty() == false) return _error->Error(_("Invalid URI, local URIS must not start with //")); - struct stat Buf; + std::vector Files; + Files.emplace_back(DecodeSendURI(Get.Path)); + for (auto const &AltPath : VectorizeString(LookupTag(Message, "Alternate-Paths"), '\n')) + Files.emplace_back(CombineWithAlternatePath(flNotFile(Files[0]), DecodeSendURI(AltPath))); + + FetchResult Res; // deal with destination files which might linger around - if (lstat(Itm->DestFile.c_str(), &Buf) == 0) + struct stat Buf; + if (lstat(Itm->DestFile.c_str(), &Buf) == 0 && S_ISLNK(Buf.st_mode) && Buf.st_size > 0) + { + char name[Buf.st_size + 1]; + if (ssize_t const sp = readlink(Itm->DestFile.c_str(), name, Buf.st_size); sp == -1) + { + Itm->LastModified = 0; + RemoveFile("file", Itm->DestFile); + } + } + + int olderrno = 0; + // See if the file exists + for (auto const &File : Files) { - if ((Buf.st_mode & S_IFREG) != 0) + 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) { - if (Itm->ExpectedHashes.VerifyFile(File)) - { - Res.Filename = Itm->DestFile; + auto const filesize = Itm->ExpectedHashes.FileSize(); + if (filesize != 0 && filesize == Res.Size) Res.IMSHit = true; - } } + break; } + if (olderrno == 0) + olderrno = errno; } - if (Res.IMSHit != true) - RemoveFile("file", Itm->DestFile); - int olderrno = 0; - // See if the file exists - if (stat(File.c_str(),&Buf) == 0) + if (not Res.IMSHit) { - 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) + RemoveFile("file", Itm->DestFile); + if (not Res.Filename.empty()) { - unsigned long long const filesize = Itm->ExpectedHashes.FileSize(); - if (filesize != 0 && filesize == Res.Size) - Res.IMSHit = true; + URIStart(Res); + CalculateHashes(Itm, Res); } - - 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 extensions = APT::Configuration::getCompressorExtensions(); - for (std::vector::const_iterator ext = extensions.begin(); ext != extensions.end(); ++ext) + for (auto const &File : Files) { - if (APT::String::Endswith(File, *ext) == true) + for (const auto &ext : APT::Configuration::getCompressorExtensions()) { - std::string const unfile = File.substr(0, File.length() - ext->length()); - if (stat(unfile.c_str(),&Buf) == 0) + if (APT::String::Endswith(File, ext)) { - 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; + 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; + if (Res.Filename.empty()) + { + URIStart(Res); + CalculateHashes(Itm, AltRes); + } + break; + } + // no break here as we could have situations similar to '.gz' vs '.tar.gz' here } - // no break here as we could have situations similar to '.gz' vs '.tar.gz' here } + if (not AltRes.Filename.empty()) + break; } - if (AltRes.Filename.empty() == false) + if (not AltRes.Filename.empty()) URIDone(Res,&AltRes); - else if (Res.Filename.empty() == false) + else if (not Res.Filename.empty()) URIDone(Res); else { errno = olderrno; - return _error->Errno(File.c_str(), _("File not found")); + return _error->Errno(Files[0].c_str(), _("File not found")); } return true; diff --git a/methods/ftp.cc b/methods/ftp.cc deleted file mode 100644 index 379bf32..0000000 --- a/methods/ftp.cc +++ /dev/null @@ -1,1188 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - - 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 - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Internet stuff -#include -#include -#include - -#include "connect.h" -#include "ftp.h" -#include "rfc2553emu.h" - -#include - /*}}}*/ - -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 = 30; -URI Proxy; -string FtpMethod::FailFile; -int FtpMethod::FailFd = -1; -time_t FtpMethod::FailTime = 0; - -// FTPConn::FTPConn - Constructor /*{{{*/ -// --------------------------------------------------------------------- -/* */ -FTPConn::FTPConn(URI Srv) : Len(0), ServerFd(MethodFd::FromFd(-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() -{ - ServerFd->Close(); - 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. */ -ResultState FTPConn::Open(aptMethod *Owner) -{ - // Use the already open connection if possible. - if (ServerFd->Fd() != -1) - return ResultState::SUCCESSFUL; - - 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(); - auto result = Connect(Host, Port, "ftp", 21, ServerFd, TimeOut, Owner); - if (result != ResultState::SUCCESSFUL) - return result; - - // Login must be before getpeername otherwise dante won't work. - Owner->Status(_("Logging in")); - result = Login(); - if (result != ResultState::SUCCESSFUL) - return result; - - // Get the remote server's address - PeerAddrLen = sizeof(PeerAddr); - if (getpeername(ServerFd->Fd(), (sockaddr *)&PeerAddr, &PeerAddrLen) != 0) - { - _error->Errno("getpeername", _("Unable to determine the peer name")); - return ResultState::TRANSIENT_ERROR; - } - - // Get the local machine's address - ServerAddrLen = sizeof(ServerAddr); - if (getsockname(ServerFd->Fd(), (sockaddr *)&ServerAddr, &ServerAddrLen) != 0) - { - _error->Errno("getsockname", _("Unable to determine the local name")); - return ResultState::TRANSIENT_ERROR; - } - - return ResultState::SUCCESSFUL; -} - /*}}}*/ -// FTPConn::Login - Login to the remote server /*{{{*/ -// --------------------------------------------------------------------- -/* This performs both normal login and proxy login using a simples script - stored in the config file. */ -ResultState 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 ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("The server refused the connection and said: %s"), Msg.c_str()); - return ResultState::FATAL_ERROR; - } - - // Send the user - if (WriteMsg(Tag,Msg,"USER %s",User.c_str()) == false) - return ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("USER failed, server said: %s"), Msg.c_str()); - return ResultState::FATAL_ERROR; - } - - if (Tag == 331) { // 331 User name okay, need password. - // Send the Password - if (WriteMsg(Tag,Msg,"PASS %s",Pass.c_str()) == false) - return ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("PASS failed, server said: %s"), Msg.c_str()); - return ResultState::FATAL_ERROR; - } - } - - // 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 ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("The server refused the connection and said: %s"), Msg.c_str()); - return ResultState::TRANSIENT_ERROR; - } - - // Perform proxy script execution - Configuration::Item const *Opts = _config->Tree("Acquire::ftp::ProxyLogin"); - if (Opts == 0 || Opts->Child == 0) - { - _error->Error(_("A proxy server was specified but no login " - "script, Acquire::ftp::ProxyLogin is empty.")); - return ResultState::FATAL_ERROR; - } - 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 ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("Login script command '%s' failed, server said: %s"), Tmp.c_str(), Msg.c_str()); - return ResultState::FATAL_ERROR; - } - } - - // 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 ResultState::TRANSIENT_ERROR; - if (Tag >= 400) - { - _error->Error(_("TYPE failed, server said: %s"), Msg.c_str()); - return ResultState::FATAL_ERROR; - } - return ResultState::SUCCESSFUL; -} - /*}}}*/ -// FTPConn::ReadLine - Read a line from the server /*{{{*/ -// --------------------------------------------------------------------- -/* This performs a very simple buffered read. */ -bool FTPConn::ReadLine(string &Text) -{ - if (ServerFd->Fd() == -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->Fd(), false, TimeOut) == false) - { - Close(); - return _error->Error(_("Connection timeout")); - } - - // Suck it back - int Res = ServerFd->Read(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->Fd(), true, TimeOut) == false) - { - Close(); - return _error->Error(_("Connection timeout")); - } - - int Res = ServerFd->Write(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(_("File has unexpected size (%llu != %llu). Mirror sync in progress?"), - 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() : aptAuthConfMethod("ftp", "1.0", SendConfig | SendURIEncoded) -{ - SeccompFlags = aptMethod::BASE | aptMethod::NETWORK; - 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 (aptAuthConfMethod::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); - auto const File = DecodeSendURI(Get.Path); - FetchResult Res; - Res.Filename = Itm->DestFile; - Res.IMSHit = false; - - MaybeAddAuthTo(Get); - - // Connect to the server - if (Server == 0 || Server->Comp(Get) == false) - { - delete Server; - Server = new FTPConn(Get); - } - - // Could not connect is a transient error.. - switch (Server->Open(this)) - { - case ResultState::TRANSIENT_ERROR: - Server->Close(); - Fail(true); - return true; - case ResultState::FATAL_ERROR: - Server->Close(); - Fail(false); - return true; - case ResultState::SUCCESSFUL: - break; - } - - // Get the files information - Status(_("Query")); - unsigned long long Size; - if (not Server->Size(File.c_str(), Size) || - not Server->ModTime(File.c_str(), FailTime)) - { - 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; - (void)(FailFile.c_str()); // Make sure we don't do a malloc in the signal handler - FailFd = Fd.Fd(); - - bool Missing; - if (not Server->Get(File.c_str(), Fd, Res.ResumePoint, Hash, Missing, Itm->MaximumSize, this)) - { - 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 deleted file mode 100644 index 953a1da..0000000 --- a/methods/ftp.h +++ /dev/null @@ -1,91 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - - FTP Acquire Method - This is the FTP acquire method for APT. - - ##################################################################### */ - /*}}}*/ -#ifndef APT_FTP_H -#define APT_FTP_H - -#include "aptmethod.h" -#include "connect.h" -#include - -#include -#include -#include -#include - -class FTPConn -{ - char Buffer[1024*10]; - unsigned long Len; - std::unique_ptr 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); - ResultState 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 - ResultState Open(aptMethod *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 aptAuthConfMethod -{ - 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 index 20ef286..ecdbe58 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -68,7 +68,7 @@ struct Digest { } }; -static constexpr Digest Digests[] = { +static constexpr std::array Digests = {{ {Digest::State::Untrusted, "Invalid digest"}, {Digest::State::Untrusted, "MD5"}, {Digest::State::Untrusted, "SHA1"}, @@ -81,17 +81,14 @@ static constexpr Digest Digests[] = { {Digest::State::Trusted, "SHA384"}, {Digest::State::Trusted, "SHA512"}, {Digest::State::Trusted, "SHA224"}, -}; +}}; -static Digest FindDigest(std::string const & Digest) +static Digest FindDigest(std::string const &Digest) { int id = atoi(Digest.c_str()); - if (id >= 0 && static_cast(id) < APT_ARRAY_SIZE(Digests)) - { + if (id >= 0 && static_cast(id) < Digests.size()) return Digests[id]; - } else { - return Digests[0]; - } + return Digests[0]; } struct Signer { @@ -112,6 +109,7 @@ struct APT_HIDDEN SignersStorage { std::vector Worthless; // a worthless signature is a expired or revoked one std::vector SoonWorthless; + std::vector LaterWorthless; std::vector NoPubKey; std::vector Valid; std::vector SignedBy; @@ -123,13 +121,9 @@ class GPGVMethod : public aptMethod vector const &keyFpts, vector const &keyFiles, SignersStorage &Signers); - string VerifyGetSignersWithLegacy(const char *file, const char *outfile, - vector const &keyFpts, - vector const &keyFiles, - SignersStorage &Signers); protected: - virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE; + bool URIAcquire(std::string const &Message, FetchItem *Itm) override; public: GPGVMethod() : aptMethod("gpgv", "1.1", SingleInstance | SendConfig | SendURIEncoded){}; }; @@ -189,6 +183,12 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, if (Debug == true) std::clog << "inside VerifyGetSigners" << std::endl; + // Abort early if we can't find gpgv, before forking further. This also + // caches the invocation of --dump-options to find the working gpgv across + // our fork() below. + if (APT::Internal::FindGPGV(Debug).first.empty()) + return "Internal error: Cannot find gpgv"; + int fd[2]; if (pipe(fd) < 0) @@ -200,15 +200,14 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, else if (pid == 0) { std::ostringstream keys; - implodeVector(keyFiles, keys, ","); setenv("APT_KEY_NO_LEGACY_KEYRING", "1", true); - ExecGPGV(outfile, file, 3, fd, keys.str()); + ExecGPGV(outfile, file, 3, fd, keyFiles); } close(fd[1]); FILE *pipein = fdopen(fd[0], "r"); - // Loop over the output of apt-key (which really is gnupg), and check the signatures. + // Loop over the output of gpgv, and check the signatures. std::vector ErrSigners; std::map> SubKeyMapping; size_t buffersize = 0; @@ -261,6 +260,17 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, { return IsTheSameKey(fpr, goodsig); }), Signers.Good.end()); } + else if (not IsAssertedPubKeyAlgo(pkstr, "APT::Key::Assert-Pubkey-Algo::Next")) + { + std::string reason; + Signers.SoonWorthless.push_back({fpr, pkstr}); + } + else if (not IsAssertedPubKeyAlgo(pkstr, "APT::Key::Assert-Pubkey-Algo::Future")) + { + std::string reason; + strprintf(reason, _("%s will be deprecated in a future release"), pkstr.c_str()); + Signers.LaterWorthless.push_back({fpr, reason}); + } } else if (strncmp(buffer, GNUPGGOODSIG, sizeof(GNUPGGOODSIG)-1) == 0) PushEntryWithKeyID(Signers.Good, buffer, Debug); @@ -323,7 +333,7 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, for (auto errSigner : ErrSigners) Signers.Worthless.push_back({errSigner, ""}); - // apt-key has a --keyid parameter, but this requires gpg, so we call it without it + // gpgv has no --keyid parameter, so we call it without it // and instead check after the fact which keyids where used for verification if (keyFpts.empty() == false) { @@ -420,6 +430,8 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, std::for_each(Signers.Worthless.begin(), Signers.Worthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; }); std::cerr << "\n SoonWorthless: "; std::for_each(Signers.SoonWorthless.begin(), Signers.SoonWorthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; }); + std::cerr << "\n LaterWorthless: "; + std::for_each(Signers.LaterWorthless.begin(), Signers.LaterWorthless.end(), [](Signer const &sig) { std::cerr << sig.key << ", "; }); std::cerr << "\n NoPubKey: "; implodeVector(Signers.NoPubKey, std::cerr, ", "); std::cerr << "\n Signed-By: "; @@ -462,52 +474,9 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, 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?)"); + return _("Could not execute 'gpgv' to verify signature (is gnupg installed?)"); else - return _("Unknown error executing apt-key"); -} -string GPGVMethod::VerifyGetSignersWithLegacy(const char *file, const char *outfile, - vector const &keyFpts, - vector const &keyFiles, - SignersStorage &Signers) -{ - string const msg = VerifyGetSigners(file, outfile, keyFpts, keyFiles, Signers); - if (_error->PendingError()) - return msg; - - // Bad signature always remains bad, no need to retry against trusted.gpg - if (!Signers.Bad.empty()) - return msg; - - // We do not have a key file pinned, did not find a good signature, but found - // missing keys - let's retry with trusted.gpg - if (keyFiles.empty() && Signers.Valid.empty() && !Signers.NoPubKey.empty()) - { - std::vector legacyKeyFiles{_config->FindFile("Dir::Etc::trusted")}; - if (legacyKeyFiles[0].empty()) - return msg; - if (DebugEnabled()) - std::clog << "Retrying against " << legacyKeyFiles[0] << "\n"; - - SignersStorage legacySigners; - - string const legacyMsg = VerifyGetSigners(file, outfile, keyFpts, legacyKeyFiles, legacySigners); - if (_error->PendingError()) - return legacyMsg; - // Hooray, we found a key apparently, something verified as good or bad - if (!legacySigners.Valid.empty() || !legacySigners.Bad.empty()) - { - std::string warning; - strprintf(warning, - _("Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION section in apt-key(8) for details."), - legacyKeyFiles[0].c_str()); - Warning(std::move(warning)); - Signers = std::move(legacySigners); - return legacyMsg; - } - - } - return msg; + return _("Unknown error executing gpgv"); } static std::string GenerateKeyFile(std::string const key) { @@ -546,8 +515,8 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm) keyFpts.emplace_back(std::move(key)); } - // Run apt-key on file, extract contents and get the key ID of the signer - string const msg = VerifyGetSignersWithLegacy(Path.c_str(), Itm->DestFile.c_str(), keyFpts, keyFiles, Signers); + // Run gpgv on file, extract contents and get the key ID of the signer + string const msg = VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(), keyFpts, keyFiles, Signers); if (_error->PendingError()) return false; @@ -565,6 +534,13 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm) strprintf(msg, _("Signature by key %s uses weak algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str()); Warning(std::move(msg)); } + for (auto const &Signer : Signers.LaterWorthless) + { + std::string msg; + // TRANSLATORS: The second %s is the reason and is untranslated for repository owners. + strprintf(msg, _("Signature by key %s uses weak algorithm (%s)"), Signer.key.c_str(), Signer.note.c_str()); + Audit(std::move(msg)); + } } if (Signers.Good.empty() || !Signers.Bad.empty() || !Signers.NoPubKey.empty()) @@ -634,7 +610,7 @@ bool GPGVMethod::URIAcquire(std::string const &Message, FetchItem *Itm) Dequeue(); if (DebugEnabled()) - std::clog << "apt-key succeeded\n"; + std::clog << "gpgv succeeded\n"; return true; } diff --git a/methods/http.cc b/methods/http.cc index 66db863..8535078 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -34,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -280,14 +280,14 @@ CircleBuf::~CircleBuf() /*{{{*/ // UnwrapHTTPConnect - Does the HTTP CONNECT handshake /*{{{*/ // --------------------------------------------------------------------- /* Performs a TLS handshake on the socket */ -struct HttpConnectFd : public MethodFd +struct HttpConnectFd final : public MethodFd { std::unique_ptr UnderlyingFd; std::string Buffer; - int Fd() APT_OVERRIDE { return UnderlyingFd->Fd(); } + int Fd() override { return UnderlyingFd->Fd(); } - ssize_t Read(void *buf, size_t count) APT_OVERRIDE + ssize_t Read(void *buf, size_t count) override { if (!Buffer.empty()) { @@ -300,17 +300,17 @@ struct HttpConnectFd : public MethodFd return UnderlyingFd->Read(buf, count); } - ssize_t Write(void *buf, size_t count) APT_OVERRIDE + ssize_t Write(void *buf, size_t count) override { return UnderlyingFd->Write(buf, count); } - int Close() APT_OVERRIDE + int Close() override { return UnderlyingFd->Close(); } - bool HasPending() APT_OVERRIDE + bool HasPending() override { return !Buffer.empty(); } @@ -429,9 +429,7 @@ ResultState HttpServerState::Open() Out.Reset(); Persistent = true; -#ifdef HAVE_GNUTLS bool tls = (ServerName.Access == "https" || APT::String::Endswith(ServerName.Access, "+https")); -#endif // Determine the proxy setting // Used to run AutoDetectProxy(ServerName) here, but we now send a Proxy @@ -456,7 +454,6 @@ ResultState HttpServerState::Open() { char *result = getenv("http_proxy"); Proxy = result ? result : ""; -#ifdef HAVE_GNUTLS if (tls == true) { char *result = getenv("https_proxy"); @@ -465,7 +462,6 @@ ResultState HttpServerState::Open() Proxy = result; } } -#endif } } @@ -479,13 +475,8 @@ ResultState HttpServerState::Open() if (Proxy.empty() == false) Owner->AddProxyAuth(Proxy, ServerName); -#ifdef HAVE_GNUTLS auto const DefaultService = tls ? "https" : "http"; auto const DefaultPort = tls ? 443 : 80; -#else - auto const DefaultService = "http"; - auto const DefaultPort = 80; -#endif if (Proxy.Access == "socks5h") { auto result = Connect(Proxy.Host, Proxy.Port, "socks", 1080, ServerFd, TimeOut, Owner); @@ -519,15 +510,12 @@ ResultState HttpServerState::Open() Port = Proxy.Port; Host = Proxy.Host; -#ifdef HAVE_GNUTLS if (Proxy.Access == "https" && Port == 0) Port = 443; -#endif } auto result = Connect(Host, Port, DefaultService, DefaultPort, ServerFd, TimeOut, Owner); if (result != ResultState::SUCCESSFUL) return result; -#ifdef HAVE_GNUTLS if (Host == Proxy.Host && Proxy.Access == "https") { aptConfigWrapperForMethods ProxyConf{std::vector{"http", "https"}}; @@ -542,13 +530,10 @@ ResultState HttpServerState::Open() if (result != ResultState::SUCCESSFUL) return result; } -#endif } -#ifdef HAVE_GNUTLS if (tls) return UnwrapTLS(ServerName.Host, ServerFd, TimeOut, Owner, Owner); -#endif return ResultState::SUCCESSFUL; } @@ -974,30 +959,15 @@ void HttpMethod::SendReq(FetchItem *Itm) Req << "User-Agent: " << ConfigFind("User-Agent", "Debian APT-HTTP/1.3 (" PACKAGE_VERSION ")"); - std::string domain; - auto const found = ProperHost.substr(0, ProperHost.find_last_of(".")).find_last_of("."); - - if (found != string::npos) - domain = ProperHost.substr(found+1, ProperHost.length()); - else - domain = ProperHost; - - Configuration::MatchAgainstConfig DomainList("Acquire::SmartMirrors::DomainList"); - - if (DomainList.Match(domain) == true) - { - Req << "\r\n"; - Req << "X-Repo-Token: " << ConfigFindSmartMirrors("Token", ""); - } #ifdef HAVE_SYSTEMD if (ConfigFindB("User-Agent-Non-Interactive", false)) { - using APT::operator""_sv; + using std::literals::operator""sv; char *unit = nullptr; sd_pid_get_unit(getpid(), &unit); if (unit != nullptr && *unit != '\0' && not APT::String::Startswith(unit, "user@") // user@ _is_ interactive - && "packagekit.service"_sv != unit // packagekit likely is interactive - && "dbus.service"_sv != unit) // aptdaemon and qapt don't have systemd services + && "packagekit.service"sv != unit // packagekit likely is interactive + && "dbus.service"sv != unit) // aptdaemon and qapt don't have systemd services Req << " non-interactive"; free(unit); @@ -1055,7 +1025,7 @@ BaseHttpMethod::DealWithHeadersResult HttpMethod::DealWithHeaders(FetchResult &R /*}}}*/ HttpMethod::HttpMethod(std::string &&pProg) : BaseHttpMethod(std::move(pProg), "1.2", Pipeline | SendConfig | SendURIEncoded) /*{{{*/ { - SeccompFlags = aptMethod::BASE | aptMethod::NETWORK; + SeccompFlags = aptMethod::BASE | aptMethod::NETWORK | aptMethod::DIRECTORY; auto addName = std::inserter(methodNames, methodNames.begin()); if (Binary != "http") @@ -1076,7 +1046,7 @@ 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]); + std::string Binary{flNotDir(argv[0])}; if (Binary.find('+') == std::string::npos && Binary != "https" && Binary != "http") Binary.append("+http"); return HttpMethod(std::move(Binary)).Loop(); diff --git a/methods/http.h b/methods/http.h index cae579a..5d6a8aa 100644 --- a/methods/http.h +++ b/methods/http.h @@ -90,7 +90,7 @@ class CircleBuf ~CircleBuf(); }; -struct HttpServerState: public ServerState +struct HttpServerState final : public ServerState { // This is the connection itself. Output is data FROM the server CircleBuf In; @@ -98,37 +98,37 @@ struct HttpServerState: public ServerState std::unique_ptr ServerFd; protected: - virtual bool ReadHeaderLines(std::string &Data) APT_OVERRIDE; - virtual ResultState LoadNextResponse(bool const ToFile, RequestState &Req) APT_OVERRIDE; - virtual bool WriteResponse(std::string const &Data) APT_OVERRIDE; + bool ReadHeaderLines(std::string &Data) override; + ResultState LoadNextResponse(bool ToFile, RequestState &Req) override; + bool WriteResponse(std::string const &Data) override; public: - virtual void Reset() APT_OVERRIDE; + void Reset() override; - virtual ResultState RunData(RequestState &Req) APT_OVERRIDE; - virtual ResultState RunDataToDevNull(RequestState &Req) APT_OVERRIDE; + ResultState RunData(RequestState &Req) override; + ResultState RunDataToDevNull(RequestState &Req) override; - virtual ResultState 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 ResultState Die(RequestState &Req) APT_OVERRIDE; - virtual bool Flush(FileFd *const File, bool MustComplete = true) APT_OVERRIDE; - virtual ResultState Go(bool ToFile, RequestState &Req) APT_OVERRIDE; + ResultState Open() override; + bool IsOpen() override; + bool Close() override; + bool InitHashes(HashStringList const &ExpectedHashes) override; + Hashes * GetHashes() override; + ResultState Die(RequestState &Req) override; + bool Flush(FileFd *File, bool MustComplete = true) override; + ResultState Go(bool ToFile, RequestState &Req) override; HttpServerState(URI Srv, HttpMethod *Owner); - virtual ~HttpServerState() {Close();}; + ~HttpServerState() override {Close();}; }; -class HttpMethod : public BaseHttpMethod +class HttpMethod final : public BaseHttpMethod { public: - virtual void SendReq(FetchItem *Itm) APT_OVERRIDE; + void SendReq(FetchItem *Itm) override; - virtual std::unique_ptr CreateServerState(URI const &uri) APT_OVERRIDE; - virtual void RotateDNS() APT_OVERRIDE; - virtual DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req) APT_OVERRIDE; + std::unique_ptr CreateServerState(URI const &uri) override; + void RotateDNS() override; + DealWithHeadersResult DealWithHeaders(FetchResult &Res, RequestState &Req) override; protected: std::string AutoDetectProxyCmd; diff --git a/methods/mirror.cc b/methods/mirror.cc index 787e4c7..6da0b42 100644 --- a/methods/mirror.cc +++ b/methods/mirror.cc @@ -89,15 +89,15 @@ class MirrorMethod : public aptMethod /*{{{*/ }; std::unordered_map mirrorfilestate; - virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE; + bool URIAcquire(std::string const &Message, FetchItem *Itm) override; - void RedirectItem(MirrorListInfo const &info, FetchItem *const Itm, std::string const &Message); - bool MirrorListFileReceived(MirrorListInfo &info, FetchItem *const Itm); - std::string GetMirrorFileURI(std::string const &Message, FetchItem *const Itm); - void DealWithPendingItems(std::vector const &baseuris, MirrorListInfo const &info, FetchItem *const Itm, std::function handler); + void RedirectItem(MirrorListInfo const &info, FetchItem *Itm, std::string const &Message); + bool MirrorListFileReceived(MirrorListInfo &info, FetchItem *Itm); + std::string GetMirrorFileURI(std::string const &Message, FetchItem *Itm); + void DealWithPendingItems(std::vector const &baseuris, MirrorListInfo const &info, FetchItem *Itm, std::function handler); public: - explicit MirrorMethod(std::string &&pProg) : aptMethod(std::move(pProg), "2.0", SingleInstance | Pipeline | SendConfig | AuxRequests | SendURIEncoded), genrng(clock()) + explicit MirrorMethod(std::string pProg) : aptMethod(std::move(pProg), "2.0", SingleInstance | Pipeline | SendConfig | AuxRequests | SendURIEncoded), genrng(clock()) { SeccompFlags = aptMethod::BASE | aptMethod::DIRECTORY; } @@ -326,7 +326,11 @@ std::string MirrorMethod::GetMirrorFileURI(std::string const &Message, FetchItem { if (APT::String::Startswith(Itm->Uri, uristr)) { - uristr.erase(uristr.length() - 1); // remove the ending '/' + if (::URI uri{uristr}; uri.Path.length() > 1 && APT::String::Endswith(uri.Path, "/")) + { + uri.Path.erase(uri.Path.length() - 1); // remove the ending '/' + uristr = uri; + } auto const colon = uristr.find(':'); if (unlikely(colon == std::string::npos)) continue; @@ -375,7 +379,10 @@ bool MirrorMethod::URIAcquire(std::string const &Message, FetchItem *Itm) /*{{{* msgCache[Itm->Uri] = Message; MirrorListInfo info; info.state = REQUESTED; - info.baseuri = mirrorfileuri + '/'; + if (not APT::String::Endswith(mirrorfileuri, "/")) + info.baseuri = mirrorfileuri + '/'; + else + info.baseuri = mirrorfileuri; auto const colon = info.baseuri.find(':'); if (unlikely(colon == std::string::npos)) return false; @@ -410,5 +417,5 @@ bool MirrorMethod::URIAcquire(std::string const &Message, FetchItem *Itm) /*{{{* int main(int, const char *argv[]) { - return MirrorMethod(flNotDir(argv[0])).Run(); + return MirrorMethod(std::string{flNotDir(argv[0])}).Run(); } diff --git a/methods/rred.cc b/methods/rred.cc index aeefea5..836697a 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -598,7 +598,7 @@ class Patch { }; #ifndef APT_EXCLUDE_RRED_METHOD_CODE -class RredMethod : public aptMethod { +class RredMethod final : public aptMethod { private: bool Debug; @@ -624,7 +624,7 @@ class RredMethod : public aptMethod { } protected: - virtual bool URIAcquire(std::string const &Message, FetchItem *Itm) APT_OVERRIDE { + bool URIAcquire(std::string const &Message, FetchItem *Itm) override { Debug = DebugEnabled(); URI Get(Itm->Uri); std::string Path = DecodeSendURI(Get.Host + Get.Path); // rred:/path - no host diff --git a/methods/rsh.cc b/methods/rsh.cc deleted file mode 100644 index 4432d5a..0000000 --- a/methods/rsh.cc +++ /dev/null @@ -1,561 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - - RSH method - Transfer files via rsh compatible program - - Written by Ben Collins , Copyright (c) 2000 - - This file stated: - Licensed under the GNU General Public License v2 [no exception clauses] - - We believe that this was intended to be not a statement against future - versions of the GPL, but meant to exclude the Qt license exception in - place in APT until that time. - - We received permission from Ben in 2021 to relicense under GPL-2+, - contributions from Adam Heath and Daniel Hartwig may still have to - be considered GPL-2 for the time being. - - Other contributions are GPL-2+ - - See https://lists.debian.org/deity/2021/04/msg00013.html for details - - ##################################################################### */ - /*}}}*/ -// Include Files /*{{{*/ -#include - -#include -#include -#include -#include -#include - -#include "rsh.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - /*}}}*/ - -unsigned long TimeOut = 30; -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 const &Host, unsigned int Port, std::string const &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 const &Host, std::string const &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 | SendURIEncoded) -{ - 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); - auto const File = DecodeSendURI(Get.Path); - 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 (not Server->Size(File.c_str(), Size) || - not Server->ModTime(File.c_str(), FailTime)) - { - //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; - (void)(FailFile.c_str()); // Make sure we don't do a malloc in the signal handler - FailFd = Fd.Fd(); - - bool Missing; - if (not Server->Get(File.c_str(), Fd, Res.ResumePoint, Hash, Missing, Res.Size)) - { - 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 deleted file mode 100644 index 82ac543..0000000 --- a/methods/rsh.h +++ /dev/null @@ -1,75 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -/* ###################################################################### - - RSH method - Transfer files via rsh compatible program - - ##################################################################### */ - /*}}}*/ -#ifndef APT_RSH_H -#define APT_RSH_H - -#include -#include - -#include - -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 const &Host, std::string const &User); - bool Connect(std::string const &Host, unsigned int Port, std::string const &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/sqv.cc b/methods/sqv.cc new file mode 100644 index 0000000..6c15440 --- /dev/null +++ b/methods/sqv.cc @@ -0,0 +1,403 @@ +#include + +#include "aptmethod.h" +#include +#include +#include +#include +#include +#include + +using std::string; +using std::vector; + +class SQVMethod : public aptMethod +{ + private: + std::optional policy{}; + void SetPolicy(); + bool VerifyGetSigners(const char *file, const char *outfile, + vector keyFiles, + vector &signers); + bool ExecuteSqv(const std::vector &args, std::vector &signers); + + protected: + bool URIAcquire(std::string const &Message, FetchItem *Itm) override; + + public: + SQVMethod(); +}; + +SQVMethod::SQVMethod() : aptMethod("sqv", "1.1", SingleInstance | SendConfig | SendURIEncoded) +{ +} + +void SQVMethod::SetPolicy() +{ + constexpr const char *policies[] = { + // APT overrides + "APT_SEQUOIA_CRYPTO_POLICY", + "/etc/crypto-policies/back-ends/apt-sequoia.config", + "/var/lib/crypto-config/profiles/current/apt-sequoia.config", + // Sequoia overrides + "SEQUOIA_CRYPTO_POLICY", + "/etc/crypto-policies/back-ends/sequoia.config", + "/var/lib/crypto-config/profiles/current/sequoia.config", + // Fallback APT defaults + "/usr/share/apt/default-sequoia.config", + }; + + if (policy) + return; + + policy = ""; + + for (auto policy : policies) + { + if (not strchr(policy, '/')) + { + if (auto value = getenv(policy)) + { + this->policy = value; + break; + } + } + else if (FileExists(policy)) + { + this->policy = policy; + break; + } + } + + if (not policy->empty()) + { + if (DebugEnabled()) + std::clog << "Setting SEQUOIA_CRYPTO_POLICY=" << *policy << std::endl; + setenv("SEQUOIA_CRYPTO_POLICY", policy->c_str(), 1); + } +} +bool SQVMethod::VerifyGetSigners(const char *file, const char *outfile, + vector keyFiles, + vector &signers) +{ + bool const Debug = DebugEnabled(); + + std::vector args; + + SetPolicy(); + + args.push_back(SQV_EXECUTABLE); + auto dearmorKeyOrCheckFormat = [&](std::string const &k) -> bool + { + _error->PushToStack(); + FileFd keyFd(k, FileFd::ReadOnly); + _error->RevertToStack(); + if (not keyFd.IsOpen()) + return _error->Warning("The key(s) in the keyring %s are ignored as the file is not readable by user executing gpgv.\n", k.c_str()); + else if (APT::String::Endswith(k, ".asc")) + { + std::string b64msg; + int state = 0; + for (std::string line; keyFd.ReadLine(line);) + { + line = APT::String::Strip(line); + if (APT::String::Startswith(line, "-----BEGIN PGP PUBLIC KEY BLOCK-----")) + state = 1; + else if (state == 1 && line == "") + state = 2; + else if (state == 2 && line != "" && line[0] != '=' && line[0] != '-') + b64msg += line; + else if (APT::String::Startswith(line, "-----END")) + state = 3; + } + if (state != 3) + goto err; + + return true; + } + else + { + unsigned char c; + if (not keyFd.Read(&c, sizeof(c))) + goto err; + // Identify the leading byte of an OpenPGP public key packet + // 0x98 -- old-format OpenPGP public key packet, up to 255 octets + // 0x99 -- old-format OpenPGP public key packet, 256-65535 octets + // 0xc6 -- new-format OpenPGP public key packet, any length + if (c != 0x98 && c != 0x99 && c != 0xc6) + goto err; + return true; + } + err: + return _error->Warning("The key(s) in the keyring %s are ignored as the file has an unsupported filetype.", k.c_str()); + }; + if (keyFiles.empty()) + { + // Either trusted or trustedparts must exist + _error->PushToStack(); + auto Parts = GetListOfFilesInDir(_config->FindDir("Dir::Etc::TrustedParts"), std::vector{"gpg", "asc"}, true); + if (auto trusted = _config->FindFile("Dir::Etc::Trusted"); not trusted.empty()) + { + std::string s; + strprintf(s, "Loading %s from deprecated option Dir::Etc::Trusted\n", trusted.c_str()); + Warning(std::move(s)); + Parts.push_back(trusted); + } + if (Parts.empty()) + _error->MergeWithStack(); + else + _error->RevertToStack(); + for (auto &Part : Parts) + { + if (Debug) + std::clog << "Trying TrustedPart: " << Part << std::endl; + if (struct stat st; stat(Part.c_str(), &st) != 0 || st.st_size == 0) + continue; + if (not dearmorKeyOrCheckFormat(Part)) + { + std::string msg; + _error->PopMessage(msg); + if (not msg.empty()) + Warning(std::move(msg)); + continue; + } + keyFiles.push_back(Part); + } + } + + if (keyFiles.empty()) + return _error->Error("The signatures couldn't be verified because no keyring is specified"); + + for (auto const &keyring : keyFiles) + { + args.push_back("--keyring"); + args.push_back(keyring); + } + + FileFd signatureFd; + FileFd messageFd; + DEFER([&] + { + if (signatureFd.IsOpen()) RemoveFile("RemoveSignature", signatureFd.Name()); + if (messageFd.IsOpen()) RemoveFile("RemoveMessage", messageFd.Name()); }); + + if (strcmp(file, outfile) == 0) + { + if (GetTempFile("apt.sig", false, &signatureFd) == nullptr) + return false; + if (GetTempFile("apt.data", false, &messageFd) == nullptr) + return false; + + // FIXME: The test suite only expects the final message. + _error->PushToStack(); + if (signatureFd.Failed() || messageFd.Failed() || + not SplitClearSignedFile(file, &messageFd, nullptr, &signatureFd)) + return _error->RevertToStack(), _error->Error("Splitting up %s into data and signature failed", file); + _error->RevertToStack(); + + args.push_back(signatureFd.Name()); + args.push_back(messageFd.Name()); + } + else + { + if (not VerifyDetachedSignatureFile(file)) + return false; + args.push_back(file); + args.push_back(outfile); + } + + bool res = false; + std::vector aheadErrors; + // Check the signature with a one-year-ahead policy first + { + _error->PushToStack(); + auto time = std::time(nullptr); + auto tm = std::localtime(&time); + std::string yearAheadDate; + strprintf(yearAheadDate, "%d-%d-%d", tm->tm_year + 1900 + 1, tm->tm_mon + 1, tm->tm_mday); + + args.push_back("--policy-as-of"); + args.push_back(std::move(yearAheadDate)); + res = ExecuteSqv(args, signers); + args.pop_back(); + args.pop_back(); + + // Preserve any warnings or whatnot on success + if (res) + _error->MergeWithStack(); + else + { + while (not _error->empty()) + { + std::string msg; + _error->PopMessage(msg); + aheadErrors.push_back(msg); + } + _error->RevertToStack(); + } + } + + // The year-ahead-policy produced no valid signer, check if valid at current time. + if (not res) + { + // clear signers, args have already been cleaned post-execution + signers.clear(); + res = ExecuteSqv(args, signers); + if (res) + { + Warning(_("Policy will reject signature within a year, see --audit for details")); + for (auto &&msg : aheadErrors) + Audit(std::move(msg)); + } + } + return res; +} + +bool SQVMethod::ExecuteSqv(const std::vector &args, std::vector &signers) +{ + bool const Debug = DebugEnabled(); + + // FIXME: Use a select() loop + FileFd sqvout; + FileFd sqverr; + if (GetTempFile("apt.sqvout", false, &sqvout) == nullptr) + return "Internal error: Cannot create temporary file"; + + DEFER([&] + { RemoveFile("CleanSQVOut", sqvout.Name()); }); + + if (GetTempFile("apt.sqverr", false, &sqverr) == nullptr) + return "Internal error: Cannot create temporary file"; + + DEFER([&] + { RemoveFile("CleanSQVErr", sqverr.Name()); }); + + // Translate the argument list to a C array. This should happen before + // the fork so we don't allocate money between fork() and execvp(). + if (Debug) + std::clog << "Executing " << APT::String::Join(args, " ") << std::endl; + std::vector cArgs; + cArgs.reserve(args.size() + 1); + for (auto const &arg : args) + cArgs.push_back(arg.c_str()); + cArgs.push_back(nullptr); + pid_t pid = ExecFork({sqvout.Fd(), sqverr.Fd()}); + if (pid < 0) + return _error->Errno("VerifyGetSigners", "Couldn't spawn new process"); + else if (pid == 0) + { + dup2(sqvout.Fd(), STDOUT_FILENO); + dup2(sqverr.Fd(), STDERR_FILENO); + execvp(cArgs[0], (char **)&cArgs[0]); + _exit(123); + } + + int status; + waitpid(pid, &status, 0); + sqverr.Seek(0); + sqvout.Seek(0); + + if (Debug == true) + ioprintf(std::clog, "sqv exited with status %i\n", WEXITSTATUS(status)); + if (WEXITSTATUS(status) != 0) + { + std::string msg; + for (std::string err; sqverr.ReadLine(err);) + msg.append(err).append("\n"); + return _error->Error(_("Sub-process %s returned an error code (%u), error message is:\n%s"), cArgs[0], WEXITSTATUS(status), msg.c_str()); + } + + for (std::string signer; sqvout.ReadLine(signer);) + { + if (Debug) + std::clog << "Got GOODSIG " << signer << std::endl; + signers.push_back(signer); + } + + return true; +} + +static std::string GenerateKeyFile(std::string const key) +{ + FileFd fd; + GetTempFile("apt-key.XXXXXX.asc", false, &fd); + fd.Write(key.data(), key.size()); + return fd.Name(); +} + +bool SQVMethod::URIAcquire(std::string const &Message, FetchItem *Itm) +{ + // Quick safety check: do we have left-over errors from a previous URL? + if (unlikely(_error->PendingError())) + return _error->Error("Internal error: Error set at start of verification"); + + URI const Get(Itm->Uri); + std::string const Path = DecodeSendURI(Get.Host + Get.Path); // To account for relative paths + + std::vector Signers, keyFpts, keyFiles; + struct TemporaryFile + { + std::string name = ""; + ~TemporaryFile() { RemoveFile("~TemporaryFile", name); } + } tmpKey; + + std::string SignedBy = DeQuoteString(LookupTag(Message, "Signed-By")); + + if (SignedBy.find("-----BEGIN PGP PUBLIC KEY BLOCK-----") != std::string::npos) + { + tmpKey.name = GenerateKeyFile(SignedBy); + keyFiles.emplace_back(tmpKey.name); + } + else + { + for (auto &&key : VectorizeString(SignedBy, ',')) + if (key.empty() == false && key[0] == '/') + keyFiles.emplace_back(std::move(key)); + else + keyFpts.emplace_back(std::move(key)); + } + + // Nothing should have failed here in the setup, if it did, don't bother verifying + if (_error->PendingError()) + return false; + + // Run sqv on file, extract contents and get the key ID of the signer + VerifyGetSigners(Path.c_str(), Itm->DestFile.c_str(), keyFiles, Signers); + if (Signers.empty()) + return _error->PendingError() ? false : _error->Error("No good signature"); + + if (not keyFpts.empty()) + { + Signers.erase(std::remove_if(Signers.begin(), Signers.end(), [&](std::string const &signer) + { + bool allowedSigner = std::find(keyFpts.begin(), keyFpts.end(), signer) != keyFpts.end(); + if (not allowedSigner && DebugEnabled()) + std::cerr << "NoPubKey: GOODSIG " << signer << "\n"; + return not allowedSigner; }), + Signers.end()); + + if (Signers.empty()) + { + if (keyFpts.size() > 1) + return _error->Error(_("No good signature from required signers: %s"), APT::String::Join(keyFpts, ", ").c_str()); + return _error->Error(_("No good signature from required signer: %s"), APT::String::Join(keyFpts, ", ").c_str()); + } + } + std::unordered_map fields; + fields.emplace("URI", Itm->Uri); + fields.emplace("Filename", Itm->DestFile); + fields.emplace("Signed-By", APT::String::Join(Signers, "\n")); + SendMessage("201 URI Done", std::move(fields)); + Dequeue(); + + if (DebugEnabled()) + std::clog << "sqv succeeded\n"; + + // If we have a pending error somehow, we should still fail here... + return not _error->PendingError(); +} + +int main() +{ + return SQVMethod().Run(); +} diff --git a/methods/store.cc b/methods/store.cc index 8b30efa..14fadab 100644 --- a/methods/store.cc +++ b/methods/store.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -30,13 +31,13 @@ #include /*}}}*/ -class StoreMethod : public aptMethod +class StoreMethod final : public aptMethod { - virtual bool Fetch(FetchItem *Itm) APT_OVERRIDE; + bool Fetch(FetchItem *Itm) override; public: - explicit StoreMethod(std::string &&pProg) : aptMethod(std::move(pProg),"1.2",SingleInstance | SendConfig | SendURIEncoded) + explicit StoreMethod(std::string pProg) : aptMethod(std::move(pProg),"1.2",SingleInstance | SendConfig | SendURIEncoded) { SeccompFlags = aptMethod::BASE; if (Binary != "store") @@ -103,10 +104,10 @@ bool StoreMethod::Fetch(FetchItem *Itm) /*{{{*/ Res.Size = 0; while (1) { - unsigned char Buffer[APT_BUFFER_SIZE]; + std::array Buffer; unsigned long long Count = 0; - if (!From.Read(Buffer,sizeof(Buffer),&Count)) + if (!From.Read(Buffer.data(),Buffer.size(),&Count)) { if (To.IsOpen()) To.OpFail(); @@ -116,8 +117,8 @@ bool StoreMethod::Fetch(FetchItem *Itm) /*{{{*/ break; Res.Size += Count; - Hash.Add(Buffer,Count); - if (To.IsOpen() && To.Write(Buffer,Count) == false) + Hash.Add(Buffer.data(),Count); + if (To.IsOpen() && To.Write(Buffer.data(),Count) == false) { Failed = true; break; @@ -143,5 +144,5 @@ bool StoreMethod::Fetch(FetchItem *Itm) /*{{{*/ int main(int, char *argv[]) { - return StoreMethod(flNotDir(argv[0])).Run(); + return StoreMethod(std::string{flNotDir(argv[0])}).Run(); } diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index 73d5ddd..1984cd6 100644 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -18,7 +18,7 @@ apt_add_translation_domain( TARGETS apt apt-cache apt-get apt-config apt-cdrom apt-helper apt-mark apt-private # Methods - connectlib file copy store gpgv cdrom http ftp rred rsh mirror + connectlib file copy store gpgv cdrom http rred mirror SCRIPTS ../dselect/install ../dselect/update EXCLUDE_LANGUAGES ${languages_excluded} ) diff --git a/po/apt-all.pot b/po/apt-all.pot index baaa63f..aefda3a 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt 2.8.0\n" +"Project-Id-Version: apt 3.1.3\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-06-24 17:31+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -46,8 +46,8 @@ msgstr "" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -112,13 +112,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -174,8 +175,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -186,7 +186,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -205,6 +205,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -223,13 +230,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -607,6 +607,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -714,11 +738,11 @@ msgstr "" msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "" @@ -1021,6 +1045,12 @@ msgstr "" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1201,6 +1231,14 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1490,10 +1528,6 @@ msgid "" "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 @@ -1648,12 +1682,6 @@ msgstr "" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1752,6 +1780,10 @@ msgstr "" msgid "Broken packages" msgstr "" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1766,7 +1798,7 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" @@ -1802,6 +1834,11 @@ msgstr "" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\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-install.cc @@ -1809,6 +1846,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1816,11 +1858,52 @@ msgstr "" msgid "Need to get %sB of archives.\n" msgstr "" +#: 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 of additional disk space will be used.\n" +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included @@ -1840,17 +1923,16 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" +#: apt-private/private-install.cc +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue?" msgstr "" -#: apt-private/private-install.cc -msgid "The following are critical system packages:" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" msgstr "" #: apt-private/private-install.cc @@ -1905,6 +1987,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "" +#: 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 package was automatically installed and is no longer required:" @@ -1923,14 +2012,7 @@ 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:" +msgid "Result calculated by the 3.0 solver." msgstr "" #: apt-private/private-install.cc @@ -1941,6 +2023,10 @@ msgstr "" msgid "Recommended packages:" msgstr "" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2067,10 +2153,26 @@ msgstr "" msgid "The following packages have unmet dependencies:" msgstr "" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "" +#: apt-private/private-output.cc +msgid "Installing:" +msgstr "" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "" @@ -2079,6 +2181,14 @@ msgstr "" msgid "The following upgrades have been deferred due to phasing:" msgstr "" +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "" @@ -2087,10 +2197,22 @@ msgstr "" msgid "The following packages will be upgraded:" msgstr "" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "" +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "" @@ -2106,26 +2228,50 @@ msgid "" "This should NOT be done unless you know exactly what you are doing!" msgstr "" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" +#: apt-private/private-output.cc +#, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "" +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "" +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2153,7 +2299,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2326,8 +2472,8 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2364,6 +2510,11 @@ msgstr "" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2381,12 +2532,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2432,6 +2608,10 @@ msgstr "" msgid " Missing: " msgstr "" +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "" @@ -2731,6 +2911,10 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -2941,10 +3125,18 @@ msgstr "" msgid "edit the source information file" msgstr "" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "" @@ -3098,7 +3290,7 @@ msgstr "" msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "" @@ -3217,22 +3409,22 @@ msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" +msgid " %.*s has no override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" +msgid " %.*s maintainer is %.*s not %s\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no source override entry\n" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: methods/basehttp.cc @@ -3271,7 +3463,7 @@ msgstr "" msgid "Connection failed" msgstr "" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3311,7 +3503,7 @@ msgstr "" msgid "Disk not found." msgstr "" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "" @@ -3346,7 +3538,7 @@ msgstr "" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "" @@ -3360,9 +3552,7 @@ msgstr "" msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "" @@ -3400,146 +3590,14 @@ msgstr "" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" msgstr "" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3559,18 +3617,11 @@ msgid "" msgstr "" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." +msgid "Unknown error executing gpgv" msgstr "" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. @@ -3609,12 +3660,12 @@ msgstr "" msgid "Connection timed out" msgstr "" -#: methods/rred.cc -msgid "Failed to set modification time" +#: methods/http.cc +msgid "Problem hashing file" msgstr "" -#: methods/rsh.cc -msgid "Connection closed prematurely" +#: methods/rred.cc +msgid "Failed to set modification time" msgstr "" #: methods/store.cc diff --git a/po/apt-utils.c.pot b/po/apt-utils.c.pot deleted file mode 100644 index a7d4cb4..0000000 --- a/po/apt-utils.c.pot +++ /dev/null @@ -1,343 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: cmdline/apt-sortpkgs.cc:94 -msgid "Unknown package record!" -msgstr "" - -#: cmdline/apt-sortpkgs.cc:139 -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-extracttemplates.cc:220 -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:275 -msgid "Cannot get debconf version. Is debconf installed?" -msgstr "" - -#: cmdline/apt-internal-solver.cc:46 -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-dump-solver.cc:37 -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-dump-solver.cc:167 -#, c-format -msgid "Waited for %s but it wasn't there" -msgstr "" - -#: cmdline/apt-internal-planner.cc:46 -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 "" - -#: ftparchive/apt-ftparchive.cc:208 ftparchive/apt-ftparchive.cc:375 -msgid "Package extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:210 ftparchive/apt-ftparchive.cc:222 -#: ftparchive/apt-ftparchive.cc:245 ftparchive/apt-ftparchive.cc:294 -#: ftparchive/apt-ftparchive.cc:304 ftparchive/apt-ftparchive.cc:326 -#, c-format -msgid "Error processing directory %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:292 -msgid "Source extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:401 -msgid "Error writing header to contents file" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:431 -#, c-format -msgid "Error processing contents %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:621 -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:817 -msgid "No selections matched" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:897 -#, c-format -msgid "Some files are missing in the package file group `%s'" -msgstr "" - -#: ftparchive/cachedb.cc:64 -#, c-format -msgid "DB was corrupted, file renamed to %s.old" -msgstr "" - -#: ftparchive/cachedb.cc:82 -#, c-format -msgid "DB is old, attempting to upgrade %s" -msgstr "" - -#: ftparchive/cachedb.cc:93 -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:98 -#, c-format -msgid "Unable to open DB file %s: %s" -msgstr "" - -#: ftparchive/cachedb.cc:181 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: ftparchive/cachedb.cc:323 -msgid "Failed to read .dsc" -msgstr "" - -#: ftparchive/cachedb.cc:356 -msgid "Archive has no control record" -msgstr "" - -#: ftparchive/cachedb.cc:545 -msgid "Unable to get a cursor" -msgstr "" - -#: ftparchive/contents.cc:352 ftparchive/contents.cc:383 -msgid "realloc - Failed to allocate memory" -msgstr "" - -#: ftparchive/multicompress.cc:51 -#, c-format -msgid "Unknown compression algorithm '%s'" -msgstr "" - -#: ftparchive/multicompress.cc:98 -#, c-format -msgid "Compressed output %s needs a compression set" -msgstr "" - -#: ftparchive/multicompress.cc:153 -msgid "Failed to create IPC pipe to subprocess" -msgstr "" - -#: ftparchive/multicompress.cc:176 -msgid "Failed to fork" -msgstr "" - -#: ftparchive/multicompress.cc:189 -msgid "Compress child" -msgstr "" - -#: ftparchive/multicompress.cc:212 -#, c-format -msgid "Internal error, failed to create %s" -msgstr "" - -#: ftparchive/multicompress.cc:285 -msgid "IO to subprocess/file failed" -msgstr "" - -#: ftparchive/multicompress.cc:323 -msgid "Failed to read while computing MD5" -msgstr "" - -#: ftparchive/multicompress.cc:352 -#, c-format -msgid "Failed to rename %s to %s" -msgstr "" - -#: ftparchive/override.cc:37 ftparchive/override.cc:141 -#, c-format -msgid "Unable to open %s" -msgstr "" - -#. skip spaces -#. find end of word -#: ftparchive/override.cc:67 -#, c-format -msgid "Malformed override %s line %llu (%s)" -msgstr "" - -#: ftparchive/override.cc:126 ftparchive/override.cc:200 -#, c-format -msgid "Failed to read the override file %s" -msgstr "" - -#: ftparchive/override.cc:165 -#, c-format -msgid "Malformed override %s line %llu #1" -msgstr "" - -#: ftparchive/override.cc:177 -#, c-format -msgid "Malformed override %s line %llu #2" -msgstr "" - -#: ftparchive/override.cc:190 -#, c-format -msgid "Malformed override %s line %llu #3" -msgstr "" - -#: ftparchive/writer.cc:105 -#, c-format -msgid "W: Unable to read directory %s\n" -msgstr "" - -#: ftparchive/writer.cc:110 -#, c-format -msgid "W: Unable to stat %s\n" -msgstr "" - -#: ftparchive/writer.cc:169 -msgid "E: " -msgstr "" - -#: ftparchive/writer.cc:171 -msgid "W: " -msgstr "" - -#: ftparchive/writer.cc:178 -msgid "E: Errors apply to file " -msgstr "" - -#: ftparchive/writer.cc:196 ftparchive/writer.cc:235 -#, c-format -msgid "Failed to resolve %s" -msgstr "" - -#: ftparchive/writer.cc:209 -msgid "Tree walking failed" -msgstr "" - -#: ftparchive/writer.cc:243 -#, c-format -msgid "Failed to open %s" -msgstr "" - -#: ftparchive/writer.cc:304 -#, c-format -msgid " DeLink %s [%s]\n" -msgstr "" - -#: ftparchive/writer.cc:312 -#, c-format -msgid "Failed to readlink %s" -msgstr "" - -#: ftparchive/writer.cc:322 -#, c-format -msgid "*** Failed to link %s to %s" -msgstr "" - -#: ftparchive/writer.cc:332 -#, c-format -msgid " DeLink limit of %sB hit.\n" -msgstr "" - -#: ftparchive/writer.cc:438 -msgid "Archive had no package field" -msgstr "" - -#: ftparchive/writer.cc:446 ftparchive/writer.cc:694 -#, c-format -msgid " %s has no override entry\n" -msgstr "" - -#: ftparchive/writer.cc:509 ftparchive/writer.cc:859 -#, c-format -msgid " %s maintainer is %s not %s\n" -msgstr "" - -#: ftparchive/writer.cc:709 -#, c-format -msgid " %s has no source override entry\n" -msgstr "" - -#: ftparchive/writer.cc:713 -#, c-format -msgid " %s has no binary override entry either\n" -msgstr "" diff --git a/po/apt-utils.pot b/po/apt-utils.pot deleted file mode 100644 index 2763900..0000000 --- a/po/apt-utils.pot +++ /dev/null @@ -1,343 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: cmdline/apt-dump-solver.cc:37 -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-dump-solver.cc:167 -#, c-format -msgid "Waited for %s but it wasn't there" -msgstr "" - -#: cmdline/apt-extracttemplates.cc:220 -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:275 -msgid "Cannot get debconf version. Is debconf installed?" -msgstr "" - -#: cmdline/apt-internal-planner.cc:46 -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:46 -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-sortpkgs.cc:94 -msgid "Unknown package record!" -msgstr "" - -#: cmdline/apt-sortpkgs.cc:139 -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 "" - -#: ftparchive/apt-ftparchive.cc:208 ftparchive/apt-ftparchive.cc:375 -msgid "Package extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:210 ftparchive/apt-ftparchive.cc:222 -#: ftparchive/apt-ftparchive.cc:245 ftparchive/apt-ftparchive.cc:294 -#: ftparchive/apt-ftparchive.cc:304 ftparchive/apt-ftparchive.cc:326 -#, c-format -msgid "Error processing directory %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:292 -msgid "Source extension list is too long" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:401 -msgid "Error writing header to contents file" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:431 -#, c-format -msgid "Error processing contents %s" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:621 -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:817 -msgid "No selections matched" -msgstr "" - -#: ftparchive/apt-ftparchive.cc:897 -#, c-format -msgid "Some files are missing in the package file group `%s'" -msgstr "" - -#: ftparchive/cachedb.cc:64 -#, c-format -msgid "DB was corrupted, file renamed to %s.old" -msgstr "" - -#: ftparchive/cachedb.cc:82 -#, c-format -msgid "DB is old, attempting to upgrade %s" -msgstr "" - -#: ftparchive/cachedb.cc:93 -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:98 -#, c-format -msgid "Unable to open DB file %s: %s" -msgstr "" - -#: ftparchive/cachedb.cc:181 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: ftparchive/cachedb.cc:323 -msgid "Failed to read .dsc" -msgstr "" - -#: ftparchive/cachedb.cc:356 -msgid "Archive has no control record" -msgstr "" - -#: ftparchive/cachedb.cc:545 -msgid "Unable to get a cursor" -msgstr "" - -#: ftparchive/contents.cc:352 ftparchive/contents.cc:383 -msgid "realloc - Failed to allocate memory" -msgstr "" - -#: ftparchive/multicompress.cc:51 -#, c-format -msgid "Unknown compression algorithm '%s'" -msgstr "" - -#: ftparchive/multicompress.cc:98 -#, c-format -msgid "Compressed output %s needs a compression set" -msgstr "" - -#: ftparchive/multicompress.cc:153 -msgid "Failed to create IPC pipe to subprocess" -msgstr "" - -#: ftparchive/multicompress.cc:176 -msgid "Failed to fork" -msgstr "" - -#: ftparchive/multicompress.cc:189 -msgid "Compress child" -msgstr "" - -#: ftparchive/multicompress.cc:212 -#, c-format -msgid "Internal error, failed to create %s" -msgstr "" - -#: ftparchive/multicompress.cc:285 -msgid "IO to subprocess/file failed" -msgstr "" - -#: ftparchive/multicompress.cc:323 -msgid "Failed to read while computing MD5" -msgstr "" - -#: ftparchive/multicompress.cc:352 -#, c-format -msgid "Failed to rename %s to %s" -msgstr "" - -#: ftparchive/override.cc:37 ftparchive/override.cc:141 -#, c-format -msgid "Unable to open %s" -msgstr "" - -#. skip spaces -#. find end of word -#: ftparchive/override.cc:67 -#, c-format -msgid "Malformed override %s line %llu (%s)" -msgstr "" - -#: ftparchive/override.cc:126 ftparchive/override.cc:200 -#, c-format -msgid "Failed to read the override file %s" -msgstr "" - -#: ftparchive/override.cc:165 -#, c-format -msgid "Malformed override %s line %llu #1" -msgstr "" - -#: ftparchive/override.cc:177 -#, c-format -msgid "Malformed override %s line %llu #2" -msgstr "" - -#: ftparchive/override.cc:190 -#, c-format -msgid "Malformed override %s line %llu #3" -msgstr "" - -#: ftparchive/writer.cc:105 -#, c-format -msgid "W: Unable to read directory %s\n" -msgstr "" - -#: ftparchive/writer.cc:110 -#, c-format -msgid "W: Unable to stat %s\n" -msgstr "" - -#: ftparchive/writer.cc:169 -msgid "E: " -msgstr "" - -#: ftparchive/writer.cc:171 -msgid "W: " -msgstr "" - -#: ftparchive/writer.cc:178 -msgid "E: Errors apply to file " -msgstr "" - -#: ftparchive/writer.cc:196 ftparchive/writer.cc:235 -#, c-format -msgid "Failed to resolve %s" -msgstr "" - -#: ftparchive/writer.cc:209 -msgid "Tree walking failed" -msgstr "" - -#: ftparchive/writer.cc:243 -#, c-format -msgid "Failed to open %s" -msgstr "" - -#: ftparchive/writer.cc:304 -#, c-format -msgid " DeLink %s [%s]\n" -msgstr "" - -#: ftparchive/writer.cc:312 -#, c-format -msgid "Failed to readlink %s" -msgstr "" - -#: ftparchive/writer.cc:322 -#, c-format -msgid "*** Failed to link %s to %s" -msgstr "" - -#: ftparchive/writer.cc:332 -#, c-format -msgid " DeLink limit of %sB hit.\n" -msgstr "" - -#: ftparchive/writer.cc:438 -msgid "Archive had no package field" -msgstr "" - -#: ftparchive/writer.cc:446 ftparchive/writer.cc:694 -#, c-format -msgid " %s has no override entry\n" -msgstr "" - -#: ftparchive/writer.cc:509 ftparchive/writer.cc:859 -#, c-format -msgid " %s maintainer is %s not %s\n" -msgstr "" - -#: ftparchive/writer.cc:709 -#, c-format -msgid " %s has no source override entry\n" -msgstr "" - -#: ftparchive/writer.cc:713 -#, c-format -msgid " %s has no binary override entry either\n" -msgstr "" diff --git a/po/apt.c.pot b/po/apt.c.pot deleted file mode 100644 index f0b15aa..0000000 --- a/po/apt.c.pot +++ /dev/null @@ -1,1876 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:10+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: cmdline/apt.cc:46 -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:61 -msgid "list packages based on package names" -msgstr "" - -#: cmdline/apt.cc:62 -msgid "search in package descriptions" -msgstr "" - -#: cmdline/apt.cc:63 -msgid "show package details" -msgstr "" - -#. package stuff -#: cmdline/apt.cc:66 -msgid "install packages" -msgstr "" - -#: cmdline/apt.cc:67 -msgid "reinstall packages" -msgstr "" - -#: cmdline/apt.cc:68 -msgid "remove packages" -msgstr "" - -#: cmdline/apt.cc:69 -msgid "automatically remove all unused packages" -msgstr "" - -#. system wide stuff -#: cmdline/apt.cc:75 -msgid "update list of available packages" -msgstr "" - -#: cmdline/apt.cc:76 -msgid "upgrade the system by installing/upgrading packages" -msgstr "" - -#: cmdline/apt.cc:77 -msgid "upgrade the system by removing/installing/upgrading packages" -msgstr "" - -#. misc -#: cmdline/apt.cc:80 -msgid "edit the source information file" -msgstr "" - -#: cmdline/apt.cc:82 -msgid "satisfy dependency strings" -msgstr "" - -#: cmdline/apt-cache.cc:184 cmdline/apt-mark.cc:188 -#, c-format -msgid "%s does not take any arguments" -msgstr "" - -#: cmdline/apt-cache.cc:194 -msgid "Total package names: " -msgstr "" - -#: cmdline/apt-cache.cc:196 -msgid "Total package structures: " -msgstr "" - -#: cmdline/apt-cache.cc:235 -msgid " Normal packages: " -msgstr "" - -#: cmdline/apt-cache.cc:236 -msgid " Pure virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:237 -msgid " Single virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:238 -msgid " Mixed virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:239 -msgid " Missing: " -msgstr "" - -#: cmdline/apt-cache.cc:241 -msgid "Total distinct versions: " -msgstr "" - -#: cmdline/apt-cache.cc:243 -msgid "Total distinct descriptions: " -msgstr "" - -#: cmdline/apt-cache.cc:245 -msgid "Total dependencies: " -msgstr "" - -#: cmdline/apt-cache.cc:248 -msgid "Total ver/file relations: " -msgstr "" - -#: cmdline/apt-cache.cc:250 -msgid "Total Desc/File relations: " -msgstr "" - -#: cmdline/apt-cache.cc:252 -msgid "Total Provides mappings: " -msgstr "" - -#: cmdline/apt-cache.cc:308 -msgid "Total globbed strings: " -msgstr "" - -#: cmdline/apt-cache.cc:314 -msgid "Total slack space: " -msgstr "" - -#: cmdline/apt-cache.cc:331 -msgid "Total space accounted for: " -msgstr "" - -#: cmdline/apt-cache.cc:970 -msgid "This command is deprecated. Please use 'apt-mark showauto' instead." -msgstr "" - -#: cmdline/apt-cache.cc:1096 -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:1112 -msgid "Show source records" -msgstr "" - -#: cmdline/apt-cache.cc:1118 -msgid "Search the package list for a regex pattern" -msgstr "" - -#: cmdline/apt-cache.cc:1119 -msgid "Show raw dependency information for a package" -msgstr "" - -#: cmdline/apt-cache.cc:1120 -msgid "Show reverse dependency information for a package" -msgstr "" - -#: cmdline/apt-cache.cc:1123 -msgid "Show a readable record for the package" -msgstr "" - -#: cmdline/apt-cache.cc:1124 -msgid "List the names of all packages in the system" -msgstr "" - -#: cmdline/apt-cache.cc:1126 -msgid "Show policy settings" -msgstr "" - -#: cmdline/apt-get.cc:116 -#, c-format -msgid "Couldn't find package %s" -msgstr "" - -#: cmdline/apt-get.cc:121 cmdline/apt-mark.cc:95 -#: apt-private/private-install.cc:1111 -#, c-format -msgid "%s set to manually installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:123 cmdline/apt-mark.cc:97 -#, c-format -msgid "%s set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:131 cmdline/apt-mark.cc:137 -msgid "" -"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' " -"instead." -msgstr "" - -#: cmdline/apt-get.cc:199 cmdline/apt-get.cc:207 -msgid "Internal error, problem resolver broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:352 -msgid "Supported modules:" -msgstr "" - -#: cmdline/apt-get.cc:393 -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:408 -msgid "Retrieve new lists of packages" -msgstr "" - -#: cmdline/apt-get.cc:409 -msgid "Perform an upgrade" -msgstr "" - -#: cmdline/apt-get.cc:410 -msgid "Install new packages (pkg is libc6 not libc6.deb)" -msgstr "" - -#: cmdline/apt-get.cc:411 -msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "" - -#: cmdline/apt-get.cc:412 -msgid "Remove packages" -msgstr "" - -#: cmdline/apt-get.cc:413 -msgid "Remove packages and config files" -msgstr "" - -#: cmdline/apt-get.cc:414 -msgid "Remove automatically all unused packages" -msgstr "" - -#: cmdline/apt-get.cc:419 -msgid "Distribution upgrade, see apt-get(8)" -msgstr "" - -#: cmdline/apt-get.cc:421 -msgid "Follow dselect selections" -msgstr "" - -#: cmdline/apt-get.cc:422 -msgid "Configure build-dependencies for source packages" -msgstr "" - -#: cmdline/apt-get.cc:423 -msgid "Satisfy dependency strings" -msgstr "" - -#: cmdline/apt-get.cc:424 -msgid "Erase downloaded archive files" -msgstr "" - -#: cmdline/apt-get.cc:425 -msgid "Erase old downloaded archive files" -msgstr "" - -#: cmdline/apt-get.cc:429 -msgid "Verify that there are no broken dependencies" -msgstr "" - -#: cmdline/apt-get.cc:430 -msgid "Download source archives" -msgstr "" - -#: cmdline/apt-get.cc:431 -msgid "Download the binary package into the current directory" -msgstr "" - -#: cmdline/apt-get.cc:432 -msgid "Download and display the changelog for the given package" -msgstr "" - -#: cmdline/apt-config.cc:49 -msgid "Arguments not in pairs" -msgstr "" - -#: cmdline/apt-config.cc:82 -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:92 -msgid "get configuration values via shell evaluation" -msgstr "" - -#: cmdline/apt-config.cc:93 -msgid "show the active configuration setting" -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:140 -#, c-format -msgid "Failed to mount '%s' to '%s'" -msgstr "" - -#: cmdline/apt-cdrom.cc:179 -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:183 -msgid "Repeat this process for the rest of the CDs in your set." -msgstr "" - -#: cmdline/apt-cdrom.cc:208 -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-helper.cc:44 -msgid "Need one URL as argument" -msgstr "" - -#: cmdline/apt-helper.cc:58 -msgid "Must specify at least one pair url/filename" -msgstr "" - -#: cmdline/apt-helper.cc:101 cmdline/apt-helper.cc:105 -msgid "Download Failed" -msgstr "" - -#: cmdline/apt-helper.cc:126 cmdline/apt-helper.cc:129 -#, c-format -msgid "GetSrvRec failed for %s" -msgstr "" - -#: cmdline/apt-helper.cc:301 -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:313 -msgid "download the given uri to the target-path" -msgstr "" - -#: cmdline/apt-helper.cc:314 -msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" -msgstr "" - -#: cmdline/apt-helper.cc:315 -msgid "concatenate files, with automatic decompression" -msgstr "" - -#: cmdline/apt-helper.cc:316 -msgid "detect proxy using apt.conf" -msgstr "" - -#: cmdline/apt-helper.cc:317 -msgid "wait for system to be online" -msgstr "" - -#: cmdline/apt-helper.cc:318 -msgid "drop privileges before running given command" -msgstr "" - -#: cmdline/apt-helper.cc:319 -msgid "analyse a pattern" -msgstr "" - -#: cmdline/apt-mark.cc:57 cmdline/apt-mark.cc:116 cmdline/apt-mark.cc:327 -#: apt-private/private-depends.cc:35 apt-private/private-download.cc:255 -#: apt-private/private-show.cc:412 apt-private/private-show.cc:414 -#: apt-private/private-show.cc:469 -msgid "No packages found" -msgstr "" - -#: cmdline/apt-mark.cc:67 -#, c-format -msgid "%s can not be marked as it is not installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:73 -#, c-format -msgid "%s was already set to manually installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:75 -#, c-format -msgid "%s was already set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:255 -msgid "No changes necessary" -msgstr "" - -#: cmdline/apt-mark.cc:259 -msgid "The following packages will be marked as automatically installed:" -msgstr "" - -#: cmdline/apt-mark.cc:266 apt-private/private-install.cc:371 -msgid "Do you want to continue?" -msgstr "" - -#: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" - -#: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" - -#: cmdline/apt-mark.cc:340 -#, c-format -msgid "%s was already set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:342 -#, c-format -msgid "%s was already not on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:369 -msgid "Executing dpkg failed. Are you root?" -msgstr "" - -#: cmdline/apt-mark.cc:372 -#, c-format -msgid "%s set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:374 -#, c-format -msgid "Canceled hold on %s.\n" -msgstr "" - -#: cmdline/apt-mark.cc:376 -#, c-format -msgid "Selected %s for purge.\n" -msgstr "" - -#: cmdline/apt-mark.cc:378 -#, c-format -msgid "Selected %s for removal.\n" -msgstr "" - -#: cmdline/apt-mark.cc:380 -#, c-format -msgid "Selected %s for installation.\n" -msgstr "" - -#: cmdline/apt-mark.cc:432 -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:444 -msgid "Mark the given packages as automatically installed" -msgstr "" - -#: cmdline/apt-mark.cc:445 -msgid "Mark the given packages as manually installed" -msgstr "" - -#: cmdline/apt-mark.cc:446 -msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "" - -#: cmdline/apt-mark.cc:447 -msgid "Mark a package as held back" -msgstr "" - -#: cmdline/apt-mark.cc:448 -msgid "Unset a package set as held back" -msgstr "" - -#: cmdline/apt-mark.cc:453 -msgid "Print the list of automatically installed packages" -msgstr "" - -#: cmdline/apt-mark.cc:454 -msgid "Print the list of manually installed packages" -msgstr "" - -#: cmdline/apt-mark.cc:455 -msgid "Print the list of packages on hold" -msgstr "" - -#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update' -#: apt-private/acqprogress.cc:77 -#, 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:99 -#, 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:130 -#, 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:139 -#, c-format -msgid "Err:%lu %s" -msgstr "" - -#: apt-private/acqprogress.cc:178 -#, c-format -msgid "Fetched %sB in %s (%sB/s)\n" -msgstr "" - -#: apt-private/acqprogress.cc:247 -msgid " [Working]" -msgstr "" - -#: apt-private/acqprogress.cc:315 -#, c-format -msgid "" -"Media change: please insert the disc labeled\n" -" '%s'\n" -"in the drive '%s' and press [Enter]\n" -msgstr "" - -#: apt-private/acqprogress.cc:352 -msgid "" -"Do you want to accept these changes and continue updating from this " -"repository?" -msgstr "" - -#: apt-private/private-cachefile.cc:96 -msgid "Correcting dependencies..." -msgstr "" - -#: apt-private/private-cachefile.cc:99 -msgid " failed." -msgstr "" - -#: apt-private/private-cachefile.cc:102 -msgid "Unable to correct dependencies" -msgstr "" - -#: apt-private/private-cachefile.cc:105 -msgid "Unable to minimize the upgrade set" -msgstr "" - -#: apt-private/private-cachefile.cc:107 -msgid " Done" -msgstr "" - -#: apt-private/private-cachefile.cc:111 apt-private/private-install.cc:768 -msgid "You might want to run 'apt --fix-broken install' to correct these." -msgstr "" - -#: apt-private/private-cachefile.cc:113 apt-private/private-install.cc:770 -msgid "" -"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or " -"specify a solution)." -msgstr "" - -#: apt-private/private-cacheset.cc:37 apt-private/private-search.cc:89 -msgid "Sorting" -msgstr "" - -#: apt-private/private-cacheset.cc:226 -#, c-format -msgid "Note, selecting '%s' for task '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:232 -#, c-format -msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:238 -#, c-format -msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:266 -#, c-format -msgid "Package %s is a virtual package provided by:\n" -msgstr "" - -#: apt-private/private-cacheset.cc:280 -msgid " [Installed]" -msgstr "" - -#: apt-private/private-cacheset.cc:292 -msgid " [Not candidate version]" -msgstr "" - -#: apt-private/private-cacheset.cc:295 -msgid "You should explicitly select one to install." -msgstr "" - -#: apt-private/private-cacheset.cc:298 -#, 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:314 -msgid "However the following packages replace it:" -msgstr "" - -#: apt-private/private-cacheset.cc:386 -#, c-format -msgid "Package '%s' has no installation candidate" -msgstr "" - -#: apt-private/private-cacheset.cc:399 -#, 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:411 apt-private/private-install.cc:1191 -#, c-format -msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n" -msgstr "" - -#: apt-private/private-cacheset.cc:417 apt-private/private-install.cc:1197 -#, c-format -msgid "Package '%s' is not installed, so not removed\n" -msgstr "" - -#: apt-private/private-cacheset.cc:488 -#, c-format -msgid "Note, selecting '%s' instead of '%s'\n" -msgstr "" - -#: apt-private/private-cmndline.cc:196 -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - -#: apt-private/private-cmndline.cc:426 -msgid "Most used commands:" -msgstr "" - -#: apt-private/private-cmndline.cc:466 -#, c-format -msgid "See %s for more information about the available commands." -msgstr "" - -#: apt-private/private-cmndline.cc:470 -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:475 -msgid "This APT has Super Cow Powers." -msgstr "" - -#: apt-private/private-cmndline.cc:477 -msgid "This APT helper has Super Meep Powers." -msgstr "" - -#: apt-private/private-cmndline.cc:575 -msgid "" -"--force-yes is deprecated, use one of the options starting with --allow " -"instead." -msgstr "" - -#: apt-private/private-download.cc:59 -msgid "WARNING: The following packages cannot be authenticated!" -msgstr "" - -#: apt-private/private-download.cc:66 -msgid "Authentication warning overridden.\n" -msgstr "" - -#: apt-private/private-download.cc:71 apt-private/private-download.cc:77 -msgid "Some packages could not be authenticated" -msgstr "" - -#: apt-private/private-download.cc:76 -msgid "Install these packages without verification?" -msgstr "" - -#: apt-private/private-download.cc:85 -msgid "" -"There were unauthenticated packages and -y was used without --allow-" -"unauthenticated" -msgstr "" - -#: apt-private/private-download.cc:117 -#, c-format -msgid "Failed to fetch %s %s" -msgstr "" - -#: apt-private/private-download.cc:139 apt-private/private-download.cc:142 -#, c-format -msgid "Couldn't determine free space in %s" -msgstr "" - -#: apt-private/private-download.cc:156 -#, c-format -msgid "You don't have enough free space in %s." -msgstr "" - -#: apt-private/private-download.cc:380 -msgid "Unable to lock the download directory" -msgstr "" - -#: apt-private/private-install.cc:56 -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:71 apt-private/private-install.cc:602 -msgid "The following information may help to resolve the situation:" -msgstr "" - -#: apt-private/private-install.cc:77 -msgid "Broken packages" -msgstr "" - -#: apt-private/private-install.cc:127 -msgid "" -"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " -"system." -msgstr "" - -#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) -#: apt-private/private-install.cc:132 -#, c-format -msgid "See %s for more details." -msgstr "" - -#: apt-private/private-install.cc:206 apt-private/private-install.cc:405 -msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" -"missing?" -msgstr "" - -#: apt-private/private-install.cc:253 -msgid "Internal error, InstallPackages was called with broken packages!" -msgstr "" - -#: apt-private/private-install.cc:262 -msgid "Packages need to be removed but remove is disabled." -msgstr "" - -#: apt-private/private-install.cc:275 -msgid "" -"Essential packages were removed and -y was used without --allow-remove-" -"essential." -msgstr "" - -#: apt-private/private-install.cc:277 -msgid "Packages were downgraded and -y was used without --allow-downgrades." -msgstr "" - -#: apt-private/private-install.cc:279 -msgid "" -"Held packages were changed and -y was used without --allow-change-held-" -"packages." -msgstr "" - -#: apt-private/private-install.cc:295 -msgid "Internal error, Ordering didn't finish" -msgstr "" - -#: apt-private/private-install.cc:308 -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:315 -#, 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:320 -#, 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:328 -#, 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:333 -#, c-format -msgid "After this operation, %sB disk space will be freed.\n" -msgstr "" - -#: apt-private/private-install.cc:356 apt-private/private-install.cc:366 -msgid "Trivial Only specified but this is not a trivial operation." -msgstr "" - -#: apt-private/private-install.cc:358 -msgid "" -"Removing essential system-critical packages is not permitted. This might " -"break the system." -msgstr "" - -#: apt-private/private-install.cc:373 -msgid "Abort." -msgstr "" - -#: apt-private/private-install.cc:399 -msgid "Some files failed to download" -msgstr "" - -#: apt-private/private-install.cc:400 apt-private/private-source.cc:492 -msgid "Download complete and in download only mode" -msgstr "" - -#: apt-private/private-install.cc:408 -msgid "--fix-missing and media swapping is not currently supported" -msgstr "" - -#: apt-private/private-install.cc:413 -msgid "Unable to correct missing packages." -msgstr "" - -#: apt-private/private-install.cc:414 -msgid "Aborting install." -msgstr "" - -#: apt-private/private-install.cc:442 -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:449 -msgid "Note: This is done automatically and on purpose by dpkg." -msgstr "" - -#: apt-private/private-install.cc:492 -msgid "We are not supposed to delete stuff, can't start AutoRemover" -msgstr "" - -#: apt-private/private-install.cc:599 -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:606 -msgid "Internal Error, AutoRemover broke stuff" -msgstr "" - -#: apt-private/private-install.cc:617 -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:624 -#, 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:634 -#, c-format -msgid "Use '%s' to remove it." -msgid_plural "Use '%s' to remove them." -msgstr[0] "" -msgstr[1] "" - -#: apt-private/private-install.cc:849 apt-private/private-install.cc:856 -#: apt-private/private-install.cc:864 -#, c-format -msgid "Unsupported file %s given on commandline" -msgstr "" - -#: apt-private/private-install.cc:937 -msgid "The following additional packages will be installed:" -msgstr "" - -#: apt-private/private-install.cc:1026 -msgid "Suggested packages:" -msgstr "" - -#: apt-private/private-install.cc:1028 -msgid "Recommended packages:" -msgstr "" - -#: apt-private/private-install.cc:1070 -#, c-format -msgid "Skipping %s, it is already installed and upgrade is not set.\n" -msgstr "" - -#: apt-private/private-install.cc:1074 -#, c-format -msgid "Skipping %s, it is not installed and only upgrades are requested.\n" -msgstr "" - -#: apt-private/private-install.cc:1086 -#, 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:1092 -#, c-format -msgid "%s is already the newest version (%s).\n" -msgstr "" - -#: apt-private/private-install.cc:1144 -#, c-format -msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "" - -#: apt-private/private-install.cc:1153 -#, c-format -msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -msgstr "" - -#: apt-private/private-list.cc:130 -msgid "Listing" -msgstr "" - -#: apt-private/private-list.cc:160 -#, 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:66 -#, 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:120 apt-private/private-show.cc:241 -#: apt-private/private-show.cc:247 -msgid "unknown" -msgstr "" - -#: apt-private/private-output.cc:287 -#, c-format -msgid "[installed,upgradable to: %s]" -msgstr "" - -#: apt-private/private-output.cc:290 -msgid "[installed,local]" -msgstr "" - -#: apt-private/private-output.cc:292 -msgid "[installed,auto-removable]" -msgstr "" - -#: apt-private/private-output.cc:294 -msgid "[installed,automatic]" -msgstr "" - -#: apt-private/private-output.cc:296 -msgid "[installed]" -msgstr "" - -#: apt-private/private-output.cc:299 -#, c-format -msgid "[upgradable from: %s]" -msgstr "" - -#: apt-private/private-output.cc:303 -msgid "[residual-config]" -msgstr "" - -#: apt-private/private-output.cc:418 -#, c-format -msgid "but %s is installed" -msgstr "" - -#: apt-private/private-output.cc:420 -#, c-format -msgid "but %s is to be installed" -msgstr "" - -#: apt-private/private-output.cc:427 -msgid "but it is not installable" -msgstr "" - -#: apt-private/private-output.cc:429 -msgid "but it is a virtual package" -msgstr "" - -#: apt-private/private-output.cc:432 -msgid "but it is not installed" -msgstr "" - -#: apt-private/private-output.cc:432 -msgid "but it is not going to be installed" -msgstr "" - -#: apt-private/private-output.cc:437 -msgid " or" -msgstr "" - -#: apt-private/private-output.cc:451 apt-private/private-output.cc:461 -msgid "The following packages have unmet dependencies:" -msgstr "" - -#: apt-private/private-output.cc:471 -msgid "The following NEW packages will be installed:" -msgstr "" - -#: apt-private/private-output.cc:481 -msgid "The following packages will be REMOVED:" -msgstr "" - -#: apt-private/private-output.cc:497 -msgid "The following upgrades have been deferred due to phasing:" -msgstr "" - -#: apt-private/private-output.cc:507 -msgid "The following packages have been kept back:" -msgstr "" - -#: apt-private/private-output.cc:517 -msgid "The following packages will be upgraded:" -msgstr "" - -#: apt-private/private-output.cc:532 -msgid "The following packages will be DOWNGRADED:" -msgstr "" - -#: apt-private/private-output.cc:545 -msgid "The following held packages will be changed:" -msgstr "" - -#: apt-private/private-output.cc:572 -#, c-format -msgid "%s (due to %s)" -msgstr "" - -#: apt-private/private-output.cc:622 -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:653 -#, c-format -msgid "%lu upgraded, %lu newly installed, " -msgstr "" - -#: apt-private/private-output.cc:657 -#, c-format -msgid "%lu reinstalled, " -msgstr "" - -#: apt-private/private-output.cc:659 -#, c-format -msgid "%lu downgraded, " -msgstr "" - -#: apt-private/private-output.cc:661 -#, c-format -msgid "%lu to remove and %lu not upgraded.\n" -msgstr "" - -#: apt-private/private-output.cc:665 -#, 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:700 -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:706 -msgid "[y/N]" -msgstr "" - -#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set -#: apt-private/private-output.cc:717 -msgid "Y" -msgstr "" - -#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc:723 -msgid "N" -msgstr "" - -#: apt-private/private-output.cc:745 -#, c-format -msgid "Regex compilation error - %s" -msgstr "" - -#: apt-private/private-search.cc:65 apt-private/private-search.cc:234 -msgid "You must give at least one search pattern" -msgstr "" - -#: apt-private/private-search.cc:93 -msgid "Full Text Search" -msgstr "" - -#: apt-private/private-show.cc:396 -#, 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:404 -msgid "not a real package (virtual)" -msgstr "" - -#: apt-private/private-show.cc:464 -#, c-format -msgid "Unable to locate package %s" -msgstr "" - -#: apt-private/private-show.cc:490 -msgid "Package files:" -msgstr "" - -#: apt-private/private-show.cc:499 apt-private/private-show.cc:583 -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:513 -msgid "Pinned packages:" -msgstr "" - -#. Print the package name and the version we are forcing to -#: apt-private/private-show.cc:524 -#, c-format -msgid "%s -> %s with priority %d\n" -msgstr "" - -#: apt-private/private-show.cc:530 -msgid " Installed: " -msgstr "" - -#: apt-private/private-show.cc:531 -msgid " Candidate: " -msgstr "" - -#: apt-private/private-show.cc:549 apt-private/private-show.cc:557 -msgid "(none)" -msgstr "" - -#. Show the priority tables -#: apt-private/private-show.cc:562 -msgid " Version table:" -msgstr "" - -#: apt-private/private-show.cc:574 -msgid "phased" -msgstr "" - -#: apt-private/private-source.cc:118 -#, c-format -msgid "Can not find a package for architecture '%s'" -msgstr "" - -#: apt-private/private-source.cc:194 -#, c-format -msgid "Can not find a package '%s' with version '%s'" -msgstr "" - -#: apt-private/private-source.cc:197 -#, c-format -msgid "Can not find a package '%s' with release '%s'" -msgstr "" - -#: apt-private/private-source.cc:237 -#, c-format -msgid "Picking '%s' as source package instead of '%s'\n" -msgstr "" - -#: apt-private/private-source.cc:289 -#, c-format -msgid "Can not find version '%s' of package '%s'" -msgstr "" - -#: apt-private/private-source.cc:311 -msgid "Must specify at least one package to fetch source for" -msgstr "" - -#: apt-private/private-source.cc:345 apt-private/private-source.cc:760 -#: apt-private/private-source.cc:770 apt-private/private-source.cc:797 -#, c-format -msgid "Unable to find a source package for %s" -msgstr "" - -#: apt-private/private-source.cc:365 -#, c-format -msgid "" -"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" -"%s\n" -msgstr "" - -#: apt-private/private-source.cc:376 -#, 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:424 -#, 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:456 -#, 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:461 -#, c-format -msgid "Need to get %sB of source archives.\n" -msgstr "" - -#: apt-private/private-source.cc:467 -#, c-format -msgid "Fetch source %s\n" -msgstr "" - -#: apt-private/private-source.cc:488 -msgid "Failed to fetch some archives." -msgstr "" - -#: apt-private/private-source.cc:509 -#, c-format -msgid "Skipping unpack of already unpacked source in %s\n" -msgstr "" - -#: apt-private/private-source.cc:522 -#, c-format -msgid "Unpack command '%s' failed.\n" -msgstr "" - -#: apt-private/private-source.cc:525 -msgid "Check if the 'dpkg-dev' package is installed.\n" -msgstr "" - -#: apt-private/private-source.cc:555 -#, c-format -msgid "Build command '%s' failed.\n" -msgstr "" - -#: apt-private/private-source.cc:580 apt-private/private-source.cc:586 -#, c-format -msgid "Unable to get build-dependency information for %s" -msgstr "" - -#: apt-private/private-source.cc:591 -#, c-format -msgid "%s has no build depends.\n" -msgstr "" - -#: apt-private/private-source.cc:644 -#, c-format -msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" -msgstr "" - -#: apt-private/private-source.cc:659 -msgid "Must specify at least one package to check builddeps for" -msgstr "" - -#: apt-private/private-source.cc:702 -#, c-format -msgid "" -"Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" -msgstr "" - -#: apt-private/private-source.cc:764 -#, c-format -msgid "Note, using directory '%s' to get the build dependencies\n" -msgstr "" - -#: apt-private/private-source.cc:766 -#, c-format -msgid "Note, using file '%s' to get the build dependencies\n" -msgstr "" - -#: apt-private/private-source.cc:896 -msgid "Failed to process build dependencies" -msgstr "" - -#: apt-private/private-sources.cc:82 -#, c-format -msgid "Failed to parse %s. Edit again? " -msgstr "" - -#: apt-private/private-sources.cc:100 -#, c-format -msgid "Your '%s' file changed, please run 'apt-get update'.\n" -msgstr "" - -#: apt-private/private-unmet.cc:68 -#, c-format -msgid "Package %s version %s has an unmet dep:\n" -msgstr "" - -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-private/private-update.cc:45 -#, c-format -msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" - -#: apt-private/private-update.cc:48 -#, c-format -msgid "" -"More information about this can be found online in the Release notes at: %s" -msgstr "" - -#: apt-private/private-update.cc:53 -msgid "The update command takes no arguments" -msgstr "" - -#. TRANSLATOR: the first two are manpage references, the last the URI from a sources.list -#: apt-private/private-update.cc:123 -#, c-format -msgid "" -"Usage of %s should be preferred over embedding login information directly in " -"the %s entry for '%s'" -msgstr "" - -#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list -#: apt-private/private-update.cc:245 -#, c-format -msgid "Missing Signed-By in the %s entry for '%s'" -msgstr "" - -#: apt-private/private-update.cc:263 -#, 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:267 -msgid "All packages are up to date." -msgstr "" - -#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686) -#: methods/connect.cc:78 -#, c-format -msgid "Direct connection to %s domains is blocked by default." -msgstr "" - -#: methods/connect.cc:80 -#, c-format -msgid "If you meant to use Tor remember to use %s instead of %s." -msgstr "" - -#: methods/connect.cc:150 -#, c-format -msgid "[IP: %s %s]" -msgstr "" - -#: methods/connect.cc:152 -#, c-format -msgid "Connected to %s (%s)" -msgstr "" - -#: methods/connect.cc:169 methods/connect.cc:578 methods/http.cc:322 -#, c-format -msgid "Connecting to %s (%s)" -msgstr "" - -#: methods/connect.cc:179 -#, c-format -msgid "Could not create a socket for %s (f=%u t=%u p=%u)" -msgstr "" - -#: methods/connect.cc:188 -#, c-format -msgid "Cannot initiate the connection to %s:%s (%s)." -msgstr "" - -#: methods/connect.cc:204 methods/ftp.cc:756 methods/rsh.cc:113 -msgid "Failed" -msgstr "" - -#: methods/connect.cc:216 -#, c-format -msgid "Could not connect to %s:%s (%s)." -msgstr "" - -#: methods/connect.cc:313 -#, c-format -msgid "Could not connect to %s:%s (%s), connection timed out" -msgstr "" - -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc:363 methods/rsh.cc:471 -#, c-format -msgid "Connecting to %s" -msgstr "" - -#: methods/connect.cc:399 methods/connect.cc:420 -#, c-format -msgid "Could not resolve '%s'" -msgstr "" - -#: methods/connect.cc:427 -#, c-format -msgid "Temporary failure resolving '%s'" -msgstr "" - -#: methods/connect.cc:432 -#, c-format -msgid "System error resolving '%s:%s'" -msgstr "" - -#: methods/connect.cc:435 -#, c-format -msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "" - -#: methods/connect.cc:471 -#, c-format -msgid "Unable to connect to %s:%s:" -msgstr "" - -#: methods/file.cc:50 -msgid "Invalid URI, local URIS must not start with //" -msgstr "" - -#: methods/file.cc:123 methods/cdrom.cc:262 methods/rsh.cc:310 -msgid "File not found" -msgstr "" - -#: methods/copy.cc:49 -msgid "Failed to stat" -msgstr "" - -#: methods/store.cc:80 -msgid "Empty files can't be valid archives" -msgstr "" - -#: methods/gpgv.cc:258 -#, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" - -#. TRANSLATORS: %s is a single techy word like 'NODATA' -#: methods/gpgv.cc:435 -#, c-format -msgid "" -"Clearsigned file isn't valid, got '%s' (does the network require " -"authentication?)" -msgstr "" - -#. TRANSLATORS: %s is a single techy word like 'NODATA' -#: methods/gpgv.cc:443 -#, c-format -msgid "" -"Signed file isn't valid, got '%s' (does the network require authentication?)" -msgstr "" - -#: methods/gpgv.cc:453 methods/gpgv.cc:463 -msgid "At least one invalid signature was encountered." -msgstr "" - -#: methods/gpgv.cc:458 -msgid "" -"Internal error: Good signature, but could not determine key fingerprint?!" -msgstr "" - -#: methods/gpgv.cc:465 -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" -msgstr "" - -#: methods/gpgv.cc:467 -msgid "Unknown error executing apt-key" -msgstr "" - -#: methods/gpgv.cc:502 -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - -#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. -#: methods/gpgv.cc:565 -#, c-format -msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" - -#: methods/gpgv.cc:581 methods/gpgv.cc:587 -msgid "The following signatures were invalid:\n" -msgstr "" - -#: methods/gpgv.cc:597 -msgid "" -"The following signatures couldn't be verified because the public key is not " -"available:\n" -msgstr "" - -#: methods/cdrom.cc:203 -#, c-format -msgid "Unable to read the cdrom database %s" -msgstr "" - -#: methods/cdrom.cc:212 -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:222 -msgid "Wrong CD-ROM" -msgstr "" - -#: methods/cdrom.cc:249 -#, c-format -msgid "Unable to unmount the CD-ROM in %s, it may still be in use." -msgstr "" - -#: methods/cdrom.cc:254 -msgid "Disk not found." -msgstr "" - -#: methods/http.cc:637 methods/http.cc:875 methods/basehttp.cc:760 -#: methods/ftp.cc:970 -#, c-format -msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" -msgstr "" - -#: methods/http.cc:741 -msgid "Error reading from server. Remote end closed connection" -msgstr "" - -#: methods/http.cc:745 -msgid "Error reading from server" -msgstr "" - -#: methods/http.cc:764 -msgid "Error writing to file" -msgstr "" - -#: methods/http.cc:832 -msgid "Select failed" -msgstr "" - -#: methods/http.cc:838 -msgid "Connection timed out" -msgstr "" - -#: methods/http.cc:1047 methods/ftp.cc:918 methods/rsh.cc:348 -msgid "Problem hashing file" -msgstr "" - -#: methods/basehttp.cc:55 -msgid "Waiting for headers" -msgstr "" - -#: methods/basehttp.cc:106 methods/basehttp.cc:113 -msgid "The HTTP server sent an invalid reply header" -msgstr "" - -#: methods/basehttp.cc:144 -msgid "Bad header line" -msgstr "" - -#: methods/basehttp.cc:173 -msgid "The HTTP server sent an invalid Content-Length header" -msgstr "" - -#: methods/basehttp.cc:206 -msgid "The HTTP server sent an invalid Content-Range header" -msgstr "" - -#: methods/basehttp.cc:208 -msgid "This HTTP server has broken range support" -msgstr "" - -#: methods/basehttp.cc:247 -msgid "Unknown date format" -msgstr "" - -#: methods/basehttp.cc:688 -msgid "Bad header data" -msgstr "" - -#: methods/basehttp.cc:707 -msgid "Connection failed" -msgstr "" - -#: methods/basehttp.cc:802 -#, c-format -msgid "" -"Automatically disabled %s due to incorrect response from server/proxy. (man " -"5 apt.conf)" -msgstr "" - -#: methods/basehttp.cc:904 -msgid "Internal error" -msgstr "" - -#. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc:174 -msgid "Logging in" -msgstr "" - -#: methods/ftp.cc:183 -msgid "Unable to determine the peer name" -msgstr "" - -#: methods/ftp.cc:191 -msgid "Unable to determine the local name" -msgstr "" - -#: methods/ftp.cc:225 methods/ftp.cc:262 -#, c-format -msgid "The server refused the connection and said: %s" -msgstr "" - -#: methods/ftp.cc:234 -#, c-format -msgid "USER failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:244 -#, c-format -msgid "PASS failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:270 -msgid "" -"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " -"is empty." -msgstr "" - -#: methods/ftp.cc:303 -#, c-format -msgid "Login script command '%s' failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:332 -#, c-format -msgid "TYPE failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:371 methods/ftp.cc:483 methods/rsh.cc:224 methods/rsh.cc:272 -msgid "Connection timeout" -msgstr "" - -#: methods/ftp.cc:377 -msgid "Server closed the connection" -msgstr "" - -#: methods/ftp.cc:380 methods/rsh.cc:231 -msgid "Read error" -msgstr "" - -#: methods/ftp.cc:387 methods/rsh.cc:238 -msgid "A response overflowed the buffer." -msgstr "" - -#: methods/ftp.cc:404 methods/ftp.cc:416 -msgid "Protocol corruption" -msgstr "" - -#: methods/ftp.cc:489 methods/rsh.cc:278 -msgid "Write error" -msgstr "" - -#: methods/ftp.cc:741 methods/ftp.cc:747 methods/ftp.cc:782 -msgid "Could not create a socket" -msgstr "" - -#: methods/ftp.cc:752 -msgid "Could not connect data socket, connection timed out" -msgstr "" - -#: methods/ftp.cc:758 -msgid "Could not connect passive socket." -msgstr "" - -#: methods/ftp.cc:775 -msgid "getaddrinfo was unable to get a listening socket" -msgstr "" - -#: methods/ftp.cc:789 -msgid "Could not bind a socket" -msgstr "" - -#: methods/ftp.cc:793 -msgid "Could not listen on the socket" -msgstr "" - -#: methods/ftp.cc:800 -msgid "Could not determine the socket's name" -msgstr "" - -#: methods/ftp.cc:832 -msgid "Unable to send PORT command" -msgstr "" - -#: methods/ftp.cc:842 -#, c-format -msgid "Unknown address family %u (AF_*)" -msgstr "" - -#: methods/ftp.cc:851 -#, c-format -msgid "EPRT failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:871 -msgid "Data socket connect timed out" -msgstr "" - -#: methods/ftp.cc:878 -msgid "Unable to accept connection" -msgstr "" - -#: methods/ftp.cc:931 -#, c-format -msgid "Unable to fetch file, server said '%s'" -msgstr "" - -#: methods/ftp.cc:946 methods/rsh.cc:367 -msgid "Data socket timed out" -msgstr "" - -#: methods/ftp.cc:983 -#, c-format -msgid "Data transfer failed, server said '%s'" -msgstr "" - -#. Get the files information -#: methods/ftp.cc:1071 -msgid "Query" -msgstr "" - -#: methods/ftp.cc:1183 -msgid "Unable to invoke " -msgstr "" - -#: methods/rred.cc:755 methods/rred.cc:765 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: methods/rred.cc:762 -msgid "Failed to set modification time" -msgstr "" - -#: methods/rsh.cc:120 -msgid "Failed to create IPC pipe to subprocess" -msgstr "" - -#: methods/rsh.cc:375 -msgid "Connection closed prematurely" -msgstr "" - -#: methods/mirror.cc:313 -msgid "The list of sources could not be read." -msgstr "" diff --git a/po/apt.pot b/po/apt.pot deleted file mode 100644 index a1e2f11..0000000 --- a/po/apt.pot +++ /dev/null @@ -1,1909 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update' -#: apt-private/acqprogress.cc:77 -#, 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:99 -#, 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:130 -#, 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:139 -#, c-format -msgid "Err:%lu %s" -msgstr "" - -#: apt-private/acqprogress.cc:178 -#, c-format -msgid "Fetched %sB in %s (%sB/s)\n" -msgstr "" - -#: apt-private/acqprogress.cc:247 -msgid " [Working]" -msgstr "" - -#: apt-private/acqprogress.cc:315 -#, c-format -msgid "" -"Media change: please insert the disc labeled\n" -" '%s'\n" -"in the drive '%s' and press [Enter]\n" -msgstr "" - -#: apt-private/acqprogress.cc:352 -msgid "" -"Do you want to accept these changes and continue updating from this " -"repository?" -msgstr "" - -#: apt-private/private-cachefile.cc:96 -msgid "Correcting dependencies..." -msgstr "" - -#: apt-private/private-cachefile.cc:99 -msgid " failed." -msgstr "" - -#: apt-private/private-cachefile.cc:102 -msgid "Unable to correct dependencies" -msgstr "" - -#: apt-private/private-cachefile.cc:105 -msgid "Unable to minimize the upgrade set" -msgstr "" - -#: apt-private/private-cachefile.cc:107 -msgid " Done" -msgstr "" - -#: apt-private/private-cachefile.cc:111 apt-private/private-install.cc:768 -msgid "You might want to run 'apt --fix-broken install' to correct these." -msgstr "" - -#: apt-private/private-cachefile.cc:113 apt-private/private-install.cc:770 -msgid "" -"Unmet dependencies. Try 'apt --fix-broken install' with no packages (or " -"specify a solution)." -msgstr "" - -#: apt-private/private-cacheset.cc:37 apt-private/private-search.cc:89 -msgid "Sorting" -msgstr "" - -#: apt-private/private-cacheset.cc:226 -#, c-format -msgid "Note, selecting '%s' for task '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:232 -#, c-format -msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:238 -#, c-format -msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "" - -#: apt-private/private-cacheset.cc:266 -#, c-format -msgid "Package %s is a virtual package provided by:\n" -msgstr "" - -#: apt-private/private-cacheset.cc:280 -msgid " [Installed]" -msgstr "" - -#: apt-private/private-cacheset.cc:292 -msgid " [Not candidate version]" -msgstr "" - -#: apt-private/private-cacheset.cc:295 -msgid "You should explicitly select one to install." -msgstr "" - -#: apt-private/private-cacheset.cc:298 -#, 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:314 -msgid "However the following packages replace it:" -msgstr "" - -#: apt-private/private-cacheset.cc:386 -#, c-format -msgid "Package '%s' has no installation candidate" -msgstr "" - -#: apt-private/private-cacheset.cc:399 -#, 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:411 apt-private/private-install.cc:1191 -#, c-format -msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n" -msgstr "" - -#: apt-private/private-cacheset.cc:417 apt-private/private-install.cc:1197 -#, c-format -msgid "Package '%s' is not installed, so not removed\n" -msgstr "" - -#: apt-private/private-cacheset.cc:488 -#, c-format -msgid "Note, selecting '%s' instead of '%s'\n" -msgstr "" - -#: apt-private/private-cmndline.cc:196 -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - -#: apt-private/private-cmndline.cc:426 -msgid "Most used commands:" -msgstr "" - -#: apt-private/private-cmndline.cc:466 -#, c-format -msgid "See %s for more information about the available commands." -msgstr "" - -#: apt-private/private-cmndline.cc:470 -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:475 -msgid "This APT has Super Cow Powers." -msgstr "" - -#: apt-private/private-cmndline.cc:477 -msgid "This APT helper has Super Meep Powers." -msgstr "" - -#: apt-private/private-cmndline.cc:575 -msgid "" -"--force-yes is deprecated, use one of the options starting with --allow " -"instead." -msgstr "" - -#: apt-private/private-depends.cc:35 apt-private/private-download.cc:255 -#: apt-private/private-show.cc:412 apt-private/private-show.cc:414 -#: apt-private/private-show.cc:469 cmdline/apt-mark.cc:57 -#: cmdline/apt-mark.cc:116 cmdline/apt-mark.cc:327 -msgid "No packages found" -msgstr "" - -#: apt-private/private-download.cc:59 -msgid "WARNING: The following packages cannot be authenticated!" -msgstr "" - -#: apt-private/private-download.cc:66 -msgid "Authentication warning overridden.\n" -msgstr "" - -#: apt-private/private-download.cc:71 apt-private/private-download.cc:77 -msgid "Some packages could not be authenticated" -msgstr "" - -#: apt-private/private-download.cc:76 -msgid "Install these packages without verification?" -msgstr "" - -#: apt-private/private-download.cc:85 -msgid "" -"There were unauthenticated packages and -y was used without --allow-" -"unauthenticated" -msgstr "" - -#: apt-private/private-download.cc:117 -#, c-format -msgid "Failed to fetch %s %s" -msgstr "" - -#: apt-private/private-download.cc:139 apt-private/private-download.cc:142 -#, c-format -msgid "Couldn't determine free space in %s" -msgstr "" - -#: apt-private/private-download.cc:156 -#, c-format -msgid "You don't have enough free space in %s." -msgstr "" - -#: apt-private/private-download.cc:380 -msgid "Unable to lock the download directory" -msgstr "" - -#: apt-private/private-install.cc:56 -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:71 apt-private/private-install.cc:602 -msgid "The following information may help to resolve the situation:" -msgstr "" - -#: apt-private/private-install.cc:77 -msgid "Broken packages" -msgstr "" - -#: apt-private/private-install.cc:127 -msgid "" -"Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " -"system." -msgstr "" - -#. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) -#: apt-private/private-install.cc:132 -#, c-format -msgid "See %s for more details." -msgstr "" - -#: apt-private/private-install.cc:206 apt-private/private-install.cc:405 -msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" -"missing?" -msgstr "" - -#: apt-private/private-install.cc:253 -msgid "Internal error, InstallPackages was called with broken packages!" -msgstr "" - -#: apt-private/private-install.cc:262 -msgid "Packages need to be removed but remove is disabled." -msgstr "" - -#: apt-private/private-install.cc:275 -msgid "" -"Essential packages were removed and -y was used without --allow-remove-" -"essential." -msgstr "" - -#: apt-private/private-install.cc:277 -msgid "Packages were downgraded and -y was used without --allow-downgrades." -msgstr "" - -#: apt-private/private-install.cc:279 -msgid "" -"Held packages were changed and -y was used without --allow-change-held-" -"packages." -msgstr "" - -#: apt-private/private-install.cc:295 -msgid "Internal error, Ordering didn't finish" -msgstr "" - -#: apt-private/private-install.cc:308 -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:315 -#, 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:320 -#, 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:328 -#, 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:333 -#, c-format -msgid "After this operation, %sB disk space will be freed.\n" -msgstr "" - -#: apt-private/private-install.cc:356 apt-private/private-install.cc:366 -msgid "Trivial Only specified but this is not a trivial operation." -msgstr "" - -#: apt-private/private-install.cc:358 -msgid "" -"Removing essential system-critical packages is not permitted. This might " -"break the system." -msgstr "" - -#: apt-private/private-install.cc:371 cmdline/apt-mark.cc:266 -msgid "Do you want to continue?" -msgstr "" - -#: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" - -#: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" - -#: apt-private/private-install.cc:373 -msgid "Abort." -msgstr "" - -#: apt-private/private-install.cc:399 -msgid "Some files failed to download" -msgstr "" - -#: apt-private/private-install.cc:400 apt-private/private-source.cc:492 -msgid "Download complete and in download only mode" -msgstr "" - -#: apt-private/private-install.cc:408 -msgid "--fix-missing and media swapping is not currently supported" -msgstr "" - -#: apt-private/private-install.cc:413 -msgid "Unable to correct missing packages." -msgstr "" - -#: apt-private/private-install.cc:414 -msgid "Aborting install." -msgstr "" - -#: apt-private/private-install.cc:442 -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:449 -msgid "Note: This is done automatically and on purpose by dpkg." -msgstr "" - -#: apt-private/private-install.cc:492 -msgid "We are not supposed to delete stuff, can't start AutoRemover" -msgstr "" - -#: apt-private/private-install.cc:599 -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:606 -msgid "Internal Error, AutoRemover broke stuff" -msgstr "" - -#: apt-private/private-install.cc:617 -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:624 -#, 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:634 -#, c-format -msgid "Use '%s' to remove it." -msgid_plural "Use '%s' to remove them." -msgstr[0] "" -msgstr[1] "" - -#: apt-private/private-install.cc:849 apt-private/private-install.cc:856 -#: apt-private/private-install.cc:864 -#, c-format -msgid "Unsupported file %s given on commandline" -msgstr "" - -#: apt-private/private-install.cc:937 -msgid "The following additional packages will be installed:" -msgstr "" - -#: apt-private/private-install.cc:1026 -msgid "Suggested packages:" -msgstr "" - -#: apt-private/private-install.cc:1028 -msgid "Recommended packages:" -msgstr "" - -#: apt-private/private-install.cc:1070 -#, c-format -msgid "Skipping %s, it is already installed and upgrade is not set.\n" -msgstr "" - -#: apt-private/private-install.cc:1074 -#, c-format -msgid "Skipping %s, it is not installed and only upgrades are requested.\n" -msgstr "" - -#: apt-private/private-install.cc:1086 -#, 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:1092 -#, c-format -msgid "%s is already the newest version (%s).\n" -msgstr "" - -#: apt-private/private-install.cc:1111 cmdline/apt-get.cc:121 -#: cmdline/apt-mark.cc:95 -#, c-format -msgid "%s set to manually installed.\n" -msgstr "" - -#: apt-private/private-install.cc:1144 -#, c-format -msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "" - -#: apt-private/private-install.cc:1153 -#, c-format -msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -msgstr "" - -#: apt-private/private-list.cc:130 -msgid "Listing" -msgstr "" - -#: apt-private/private-list.cc:160 -#, 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:66 -#, 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:120 apt-private/private-show.cc:241 -#: apt-private/private-show.cc:247 -msgid "unknown" -msgstr "" - -#: apt-private/private-output.cc:287 -#, c-format -msgid "[installed,upgradable to: %s]" -msgstr "" - -#: apt-private/private-output.cc:290 -msgid "[installed,local]" -msgstr "" - -#: apt-private/private-output.cc:292 -msgid "[installed,auto-removable]" -msgstr "" - -#: apt-private/private-output.cc:294 -msgid "[installed,automatic]" -msgstr "" - -#: apt-private/private-output.cc:296 -msgid "[installed]" -msgstr "" - -#: apt-private/private-output.cc:299 -#, c-format -msgid "[upgradable from: %s]" -msgstr "" - -#: apt-private/private-output.cc:303 -msgid "[residual-config]" -msgstr "" - -#: apt-private/private-output.cc:418 -#, c-format -msgid "but %s is installed" -msgstr "" - -#: apt-private/private-output.cc:420 -#, c-format -msgid "but %s is to be installed" -msgstr "" - -#: apt-private/private-output.cc:427 -msgid "but it is not installable" -msgstr "" - -#: apt-private/private-output.cc:429 -msgid "but it is a virtual package" -msgstr "" - -#: apt-private/private-output.cc:432 -msgid "but it is not going to be installed" -msgstr "" - -#: apt-private/private-output.cc:432 -msgid "but it is not installed" -msgstr "" - -#: apt-private/private-output.cc:437 -msgid " or" -msgstr "" - -#: apt-private/private-output.cc:451 apt-private/private-output.cc:461 -msgid "The following packages have unmet dependencies:" -msgstr "" - -#: apt-private/private-output.cc:471 -msgid "The following NEW packages will be installed:" -msgstr "" - -#: apt-private/private-output.cc:481 -msgid "The following packages will be REMOVED:" -msgstr "" - -#: apt-private/private-output.cc:497 -msgid "The following upgrades have been deferred due to phasing:" -msgstr "" - -#: apt-private/private-output.cc:507 -msgid "The following packages have been kept back:" -msgstr "" - -#: apt-private/private-output.cc:517 -msgid "The following packages will be upgraded:" -msgstr "" - -#: apt-private/private-output.cc:532 -msgid "The following packages will be DOWNGRADED:" -msgstr "" - -#: apt-private/private-output.cc:545 -msgid "The following held packages will be changed:" -msgstr "" - -#: apt-private/private-output.cc:572 -#, c-format -msgid "%s (due to %s)" -msgstr "" - -#: apt-private/private-output.cc:622 -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:653 -#, c-format -msgid "%lu upgraded, %lu newly installed, " -msgstr "" - -#: apt-private/private-output.cc:657 -#, c-format -msgid "%lu reinstalled, " -msgstr "" - -#: apt-private/private-output.cc:659 -#, c-format -msgid "%lu downgraded, " -msgstr "" - -#: apt-private/private-output.cc:661 -#, c-format -msgid "%lu to remove and %lu not upgraded.\n" -msgstr "" - -#: apt-private/private-output.cc:665 -#, 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:700 -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:706 -msgid "[y/N]" -msgstr "" - -#. TRANSLATOR: "Yes" answer printed for a yes/no question if --assume-yes is set -#: apt-private/private-output.cc:717 -msgid "Y" -msgstr "" - -#. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc:723 -msgid "N" -msgstr "" - -#: apt-private/private-output.cc:745 -#, c-format -msgid "Regex compilation error - %s" -msgstr "" - -#: apt-private/private-search.cc:65 apt-private/private-search.cc:234 -msgid "You must give at least one search pattern" -msgstr "" - -#: apt-private/private-search.cc:93 -msgid "Full Text Search" -msgstr "" - -#: apt-private/private-show.cc:396 -#, 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:404 -msgid "not a real package (virtual)" -msgstr "" - -#: apt-private/private-show.cc:464 -#, c-format -msgid "Unable to locate package %s" -msgstr "" - -#: apt-private/private-show.cc:490 -msgid "Package files:" -msgstr "" - -#: apt-private/private-show.cc:499 apt-private/private-show.cc:583 -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:513 -msgid "Pinned packages:" -msgstr "" - -#. Print the package name and the version we are forcing to -#: apt-private/private-show.cc:524 -#, c-format -msgid "%s -> %s with priority %d\n" -msgstr "" - -#: apt-private/private-show.cc:530 -msgid " Installed: " -msgstr "" - -#: apt-private/private-show.cc:531 -msgid " Candidate: " -msgstr "" - -#: apt-private/private-show.cc:549 apt-private/private-show.cc:557 -msgid "(none)" -msgstr "" - -#. Show the priority tables -#: apt-private/private-show.cc:562 -msgid " Version table:" -msgstr "" - -#: apt-private/private-show.cc:574 -msgid "phased" -msgstr "" - -#: apt-private/private-source.cc:118 -#, c-format -msgid "Can not find a package for architecture '%s'" -msgstr "" - -#: apt-private/private-source.cc:194 -#, c-format -msgid "Can not find a package '%s' with version '%s'" -msgstr "" - -#: apt-private/private-source.cc:197 -#, c-format -msgid "Can not find a package '%s' with release '%s'" -msgstr "" - -#: apt-private/private-source.cc:237 -#, c-format -msgid "Picking '%s' as source package instead of '%s'\n" -msgstr "" - -#: apt-private/private-source.cc:289 -#, c-format -msgid "Can not find version '%s' of package '%s'" -msgstr "" - -#: apt-private/private-source.cc:311 -msgid "Must specify at least one package to fetch source for" -msgstr "" - -#: apt-private/private-source.cc:345 apt-private/private-source.cc:760 -#: apt-private/private-source.cc:770 apt-private/private-source.cc:797 -#, c-format -msgid "Unable to find a source package for %s" -msgstr "" - -#: apt-private/private-source.cc:365 -#, c-format -msgid "" -"NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" -"%s\n" -msgstr "" - -#: apt-private/private-source.cc:376 -#, 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:424 -#, 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:456 -#, 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:461 -#, c-format -msgid "Need to get %sB of source archives.\n" -msgstr "" - -#: apt-private/private-source.cc:467 -#, c-format -msgid "Fetch source %s\n" -msgstr "" - -#: apt-private/private-source.cc:488 -msgid "Failed to fetch some archives." -msgstr "" - -#: apt-private/private-source.cc:509 -#, c-format -msgid "Skipping unpack of already unpacked source in %s\n" -msgstr "" - -#: apt-private/private-source.cc:522 -#, c-format -msgid "Unpack command '%s' failed.\n" -msgstr "" - -#: apt-private/private-source.cc:525 -msgid "Check if the 'dpkg-dev' package is installed.\n" -msgstr "" - -#: apt-private/private-source.cc:555 -#, c-format -msgid "Build command '%s' failed.\n" -msgstr "" - -#: apt-private/private-source.cc:580 apt-private/private-source.cc:586 -#, c-format -msgid "Unable to get build-dependency information for %s" -msgstr "" - -#: apt-private/private-source.cc:591 -#, c-format -msgid "%s has no build depends.\n" -msgstr "" - -#: apt-private/private-source.cc:644 -#, c-format -msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" -msgstr "" - -#: apt-private/private-source.cc:659 -msgid "Must specify at least one package to check builddeps for" -msgstr "" - -#: apt-private/private-source.cc:702 -#, c-format -msgid "" -"Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" -msgstr "" - -#: apt-private/private-source.cc:764 -#, c-format -msgid "Note, using directory '%s' to get the build dependencies\n" -msgstr "" - -#: apt-private/private-source.cc:766 -#, c-format -msgid "Note, using file '%s' to get the build dependencies\n" -msgstr "" - -#: apt-private/private-source.cc:896 -msgid "Failed to process build dependencies" -msgstr "" - -#: apt-private/private-sources.cc:82 -#, c-format -msgid "Failed to parse %s. Edit again? " -msgstr "" - -#: apt-private/private-sources.cc:100 -#, c-format -msgid "Your '%s' file changed, please run 'apt-get update'.\n" -msgstr "" - -#: apt-private/private-unmet.cc:68 -#, c-format -msgid "Package %s version %s has an unmet dep:\n" -msgstr "" - -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-private/private-update.cc:45 -#, c-format -msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" - -#: apt-private/private-update.cc:48 -#, c-format -msgid "" -"More information about this can be found online in the Release notes at: %s" -msgstr "" - -#: apt-private/private-update.cc:53 -msgid "The update command takes no arguments" -msgstr "" - -#. TRANSLATOR: the first two are manpage references, the last the URI from a sources.list -#: apt-private/private-update.cc:123 -#, c-format -msgid "" -"Usage of %s should be preferred over embedding login information directly in " -"the %s entry for '%s'" -msgstr "" - -#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list -#: apt-private/private-update.cc:245 -#, c-format -msgid "Missing Signed-By in the %s entry for '%s'" -msgstr "" - -#: apt-private/private-update.cc:263 -#, 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:267 -msgid "All packages are up to date." -msgstr "" - -#: cmdline/apt-cache.cc:184 cmdline/apt-mark.cc:188 -#, c-format -msgid "%s does not take any arguments" -msgstr "" - -#: cmdline/apt-cache.cc:194 -msgid "Total package names: " -msgstr "" - -#: cmdline/apt-cache.cc:196 -msgid "Total package structures: " -msgstr "" - -#: cmdline/apt-cache.cc:235 -msgid " Normal packages: " -msgstr "" - -#: cmdline/apt-cache.cc:236 -msgid " Pure virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:237 -msgid " Single virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:238 -msgid " Mixed virtual packages: " -msgstr "" - -#: cmdline/apt-cache.cc:239 -msgid " Missing: " -msgstr "" - -#: cmdline/apt-cache.cc:241 -msgid "Total distinct versions: " -msgstr "" - -#: cmdline/apt-cache.cc:243 -msgid "Total distinct descriptions: " -msgstr "" - -#: cmdline/apt-cache.cc:245 -msgid "Total dependencies: " -msgstr "" - -#: cmdline/apt-cache.cc:248 -msgid "Total ver/file relations: " -msgstr "" - -#: cmdline/apt-cache.cc:250 -msgid "Total Desc/File relations: " -msgstr "" - -#: cmdline/apt-cache.cc:252 -msgid "Total Provides mappings: " -msgstr "" - -#: cmdline/apt-cache.cc:308 -msgid "Total globbed strings: " -msgstr "" - -#: cmdline/apt-cache.cc:314 -msgid "Total slack space: " -msgstr "" - -#: cmdline/apt-cache.cc:331 -msgid "Total space accounted for: " -msgstr "" - -#: cmdline/apt-cache.cc:970 -msgid "This command is deprecated. Please use 'apt-mark showauto' instead." -msgstr "" - -#: cmdline/apt-cache.cc:1096 -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:1112 -msgid "Show source records" -msgstr "" - -#: cmdline/apt-cache.cc:1118 -msgid "Search the package list for a regex pattern" -msgstr "" - -#: cmdline/apt-cache.cc:1119 -msgid "Show raw dependency information for a package" -msgstr "" - -#: cmdline/apt-cache.cc:1120 -msgid "Show reverse dependency information for a package" -msgstr "" - -#: cmdline/apt-cache.cc:1123 -msgid "Show a readable record for the package" -msgstr "" - -#: cmdline/apt-cache.cc:1124 -msgid "List the names of all packages in the system" -msgstr "" - -#: cmdline/apt-cache.cc:1126 -msgid "Show policy settings" -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:140 -#, c-format -msgid "Failed to mount '%s' to '%s'" -msgstr "" - -#: cmdline/apt-cdrom.cc:179 -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:183 -msgid "Repeat this process for the rest of the CDs in your set." -msgstr "" - -#: cmdline/apt-cdrom.cc:208 -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:49 -msgid "Arguments not in pairs" -msgstr "" - -#: cmdline/apt-config.cc:82 -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:92 -msgid "get configuration values via shell evaluation" -msgstr "" - -#: cmdline/apt-config.cc:93 -msgid "show the active configuration setting" -msgstr "" - -#: cmdline/apt-get.cc:116 -#, c-format -msgid "Couldn't find package %s" -msgstr "" - -#: cmdline/apt-get.cc:123 cmdline/apt-mark.cc:97 -#, c-format -msgid "%s set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-get.cc:131 cmdline/apt-mark.cc:137 -msgid "" -"This command is deprecated. Please use 'apt-mark auto' and 'apt-mark manual' " -"instead." -msgstr "" - -#: cmdline/apt-get.cc:199 cmdline/apt-get.cc:207 -msgid "Internal error, problem resolver broke stuff" -msgstr "" - -#: cmdline/apt-get.cc:352 -msgid "Supported modules:" -msgstr "" - -#: cmdline/apt-get.cc:393 -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:408 -msgid "Retrieve new lists of packages" -msgstr "" - -#: cmdline/apt-get.cc:409 -msgid "Perform an upgrade" -msgstr "" - -#: cmdline/apt-get.cc:410 -msgid "Install new packages (pkg is libc6 not libc6.deb)" -msgstr "" - -#: cmdline/apt-get.cc:411 -msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "" - -#: cmdline/apt-get.cc:412 -msgid "Remove packages" -msgstr "" - -#: cmdline/apt-get.cc:413 -msgid "Remove packages and config files" -msgstr "" - -#: cmdline/apt-get.cc:414 -msgid "Remove automatically all unused packages" -msgstr "" - -#: cmdline/apt-get.cc:419 -msgid "Distribution upgrade, see apt-get(8)" -msgstr "" - -#: cmdline/apt-get.cc:421 -msgid "Follow dselect selections" -msgstr "" - -#: cmdline/apt-get.cc:422 -msgid "Configure build-dependencies for source packages" -msgstr "" - -#: cmdline/apt-get.cc:423 -msgid "Satisfy dependency strings" -msgstr "" - -#: cmdline/apt-get.cc:424 -msgid "Erase downloaded archive files" -msgstr "" - -#: cmdline/apt-get.cc:425 -msgid "Erase old downloaded archive files" -msgstr "" - -#: cmdline/apt-get.cc:429 -msgid "Verify that there are no broken dependencies" -msgstr "" - -#: cmdline/apt-get.cc:430 -msgid "Download source archives" -msgstr "" - -#: cmdline/apt-get.cc:431 -msgid "Download the binary package into the current directory" -msgstr "" - -#: cmdline/apt-get.cc:432 -msgid "Download and display the changelog for the given package" -msgstr "" - -#: cmdline/apt-helper.cc:44 -msgid "Need one URL as argument" -msgstr "" - -#: cmdline/apt-helper.cc:58 -msgid "Must specify at least one pair url/filename" -msgstr "" - -#: cmdline/apt-helper.cc:101 cmdline/apt-helper.cc:105 -msgid "Download Failed" -msgstr "" - -#: cmdline/apt-helper.cc:126 cmdline/apt-helper.cc:129 -#, c-format -msgid "GetSrvRec failed for %s" -msgstr "" - -#: cmdline/apt-helper.cc:301 -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:313 -msgid "download the given uri to the target-path" -msgstr "" - -#: cmdline/apt-helper.cc:314 -msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" -msgstr "" - -#: cmdline/apt-helper.cc:315 -msgid "concatenate files, with automatic decompression" -msgstr "" - -#: cmdline/apt-helper.cc:316 -msgid "detect proxy using apt.conf" -msgstr "" - -#: cmdline/apt-helper.cc:317 -msgid "wait for system to be online" -msgstr "" - -#: cmdline/apt-helper.cc:318 -msgid "drop privileges before running given command" -msgstr "" - -#: cmdline/apt-helper.cc:319 -msgid "analyse a pattern" -msgstr "" - -#: cmdline/apt-mark.cc:67 -#, c-format -msgid "%s can not be marked as it is not installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:73 -#, c-format -msgid "%s was already set to manually installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:75 -#, c-format -msgid "%s was already set to automatically installed.\n" -msgstr "" - -#: cmdline/apt-mark.cc:255 -msgid "No changes necessary" -msgstr "" - -#: cmdline/apt-mark.cc:259 -msgid "The following packages will be marked as automatically installed:" -msgstr "" - -#: cmdline/apt-mark.cc:340 -#, c-format -msgid "%s was already set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:342 -#, c-format -msgid "%s was already not on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:369 -msgid "Executing dpkg failed. Are you root?" -msgstr "" - -#: cmdline/apt-mark.cc:372 -#, c-format -msgid "%s set on hold.\n" -msgstr "" - -#: cmdline/apt-mark.cc:374 -#, c-format -msgid "Canceled hold on %s.\n" -msgstr "" - -#: cmdline/apt-mark.cc:376 -#, c-format -msgid "Selected %s for purge.\n" -msgstr "" - -#: cmdline/apt-mark.cc:378 -#, c-format -msgid "Selected %s for removal.\n" -msgstr "" - -#: cmdline/apt-mark.cc:380 -#, c-format -msgid "Selected %s for installation.\n" -msgstr "" - -#: cmdline/apt-mark.cc:432 -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:444 -msgid "Mark the given packages as automatically installed" -msgstr "" - -#: cmdline/apt-mark.cc:445 -msgid "Mark the given packages as manually installed" -msgstr "" - -#: cmdline/apt-mark.cc:446 -msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "" - -#: cmdline/apt-mark.cc:447 -msgid "Mark a package as held back" -msgstr "" - -#: cmdline/apt-mark.cc:448 -msgid "Unset a package set as held back" -msgstr "" - -#: cmdline/apt-mark.cc:453 -msgid "Print the list of automatically installed packages" -msgstr "" - -#: cmdline/apt-mark.cc:454 -msgid "Print the list of manually installed packages" -msgstr "" - -#: cmdline/apt-mark.cc:455 -msgid "Print the list of packages on hold" -msgstr "" - -#: cmdline/apt.cc:46 -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:61 -msgid "list packages based on package names" -msgstr "" - -#: cmdline/apt.cc:62 -msgid "search in package descriptions" -msgstr "" - -#: cmdline/apt.cc:63 -msgid "show package details" -msgstr "" - -#. package stuff -#: cmdline/apt.cc:66 -msgid "install packages" -msgstr "" - -#: cmdline/apt.cc:67 -msgid "reinstall packages" -msgstr "" - -#: cmdline/apt.cc:68 -msgid "remove packages" -msgstr "" - -#: cmdline/apt.cc:69 -msgid "automatically remove all unused packages" -msgstr "" - -#. system wide stuff -#: cmdline/apt.cc:75 -msgid "update list of available packages" -msgstr "" - -#: cmdline/apt.cc:76 -msgid "upgrade the system by installing/upgrading packages" -msgstr "" - -#: cmdline/apt.cc:77 -msgid "upgrade the system by removing/installing/upgrading packages" -msgstr "" - -#. misc -#: cmdline/apt.cc:80 -msgid "edit the source information file" -msgstr "" - -#: cmdline/apt.cc:82 -msgid "satisfy dependency strings" -msgstr "" - -#: dselect/install:33 -msgid "Bad default setting!" -msgstr "" - -#: dselect/install:52 dselect/install:84 dselect/install:88 dselect/install:95 -#: dselect/install:106 dselect/update:45 -msgid "Press [Enter] to continue." -msgstr "" - -#: dselect/install:92 -msgid "Do you want to erase any previously downloaded .deb files?" -msgstr "" - -#: dselect/install:102 -msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "" - -#: dselect/install:103 -msgid "will be configured. This may result in duplicate errors" -msgstr "" - -#: dselect/install:104 -msgid "or errors caused by missing dependencies. This is OK, only the errors" -msgstr "" - -#: dselect/install:105 -msgid "" -"above this message are important. Please fix them and run [I]nstall again" -msgstr "" - -#: dselect/update:30 -msgid "Merging available information" -msgstr "" - -#: methods/basehttp.cc:55 -msgid "Waiting for headers" -msgstr "" - -#: methods/basehttp.cc:106 methods/basehttp.cc:113 -msgid "The HTTP server sent an invalid reply header" -msgstr "" - -#: methods/basehttp.cc:144 -msgid "Bad header line" -msgstr "" - -#: methods/basehttp.cc:173 -msgid "The HTTP server sent an invalid Content-Length header" -msgstr "" - -#: methods/basehttp.cc:206 -msgid "The HTTP server sent an invalid Content-Range header" -msgstr "" - -#: methods/basehttp.cc:208 -msgid "This HTTP server has broken range support" -msgstr "" - -#: methods/basehttp.cc:247 -msgid "Unknown date format" -msgstr "" - -#: methods/basehttp.cc:688 -msgid "Bad header data" -msgstr "" - -#: methods/basehttp.cc:707 -msgid "Connection failed" -msgstr "" - -#: methods/basehttp.cc:760 methods/ftp.cc:970 methods/http.cc:637 -#: methods/http.cc:875 -#, c-format -msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" -msgstr "" - -#: methods/basehttp.cc:802 -#, c-format -msgid "" -"Automatically disabled %s due to incorrect response from server/proxy. (man " -"5 apt.conf)" -msgstr "" - -#: methods/basehttp.cc:904 -msgid "Internal error" -msgstr "" - -#: methods/cdrom.cc:203 -#, c-format -msgid "Unable to read the cdrom database %s" -msgstr "" - -#: methods/cdrom.cc:212 -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:222 -msgid "Wrong CD-ROM" -msgstr "" - -#: methods/cdrom.cc:249 -#, c-format -msgid "Unable to unmount the CD-ROM in %s, it may still be in use." -msgstr "" - -#: methods/cdrom.cc:254 -msgid "Disk not found." -msgstr "" - -#: methods/cdrom.cc:262 methods/file.cc:123 methods/rsh.cc:310 -msgid "File not found" -msgstr "" - -#. TRANSLATOR: %s is e.g. Tor's ".onion" which would likely fail or leak info (RFC7686) -#: methods/connect.cc:78 -#, c-format -msgid "Direct connection to %s domains is blocked by default." -msgstr "" - -#: methods/connect.cc:80 -#, c-format -msgid "If you meant to use Tor remember to use %s instead of %s." -msgstr "" - -#: methods/connect.cc:150 -#, c-format -msgid "[IP: %s %s]" -msgstr "" - -#: methods/connect.cc:152 -#, c-format -msgid "Connected to %s (%s)" -msgstr "" - -#: methods/connect.cc:169 methods/connect.cc:578 methods/http.cc:322 -#, c-format -msgid "Connecting to %s (%s)" -msgstr "" - -#: methods/connect.cc:179 -#, c-format -msgid "Could not create a socket for %s (f=%u t=%u p=%u)" -msgstr "" - -#: methods/connect.cc:188 -#, c-format -msgid "Cannot initiate the connection to %s:%s (%s)." -msgstr "" - -#: methods/connect.cc:204 methods/ftp.cc:756 methods/rsh.cc:113 -msgid "Failed" -msgstr "" - -#: methods/connect.cc:216 -#, c-format -msgid "Could not connect to %s:%s (%s)." -msgstr "" - -#: methods/connect.cc:313 -#, c-format -msgid "Could not connect to %s:%s (%s), connection timed out" -msgstr "" - -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc:363 methods/rsh.cc:471 -#, c-format -msgid "Connecting to %s" -msgstr "" - -#: methods/connect.cc:399 methods/connect.cc:420 -#, c-format -msgid "Could not resolve '%s'" -msgstr "" - -#: methods/connect.cc:427 -#, c-format -msgid "Temporary failure resolving '%s'" -msgstr "" - -#: methods/connect.cc:432 -#, c-format -msgid "System error resolving '%s:%s'" -msgstr "" - -#: methods/connect.cc:435 -#, c-format -msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "" - -#: methods/connect.cc:471 -#, c-format -msgid "Unable to connect to %s:%s:" -msgstr "" - -#: methods/copy.cc:49 -msgid "Failed to stat" -msgstr "" - -#: methods/file.cc:50 -msgid "Invalid URI, local URIS must not start with //" -msgstr "" - -#. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc:174 -msgid "Logging in" -msgstr "" - -#: methods/ftp.cc:183 -msgid "Unable to determine the peer name" -msgstr "" - -#: methods/ftp.cc:191 -msgid "Unable to determine the local name" -msgstr "" - -#: methods/ftp.cc:225 methods/ftp.cc:262 -#, c-format -msgid "The server refused the connection and said: %s" -msgstr "" - -#: methods/ftp.cc:234 -#, c-format -msgid "USER failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:244 -#, c-format -msgid "PASS failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:270 -msgid "" -"A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " -"is empty." -msgstr "" - -#: methods/ftp.cc:303 -#, c-format -msgid "Login script command '%s' failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:332 -#, c-format -msgid "TYPE failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:371 methods/ftp.cc:483 methods/rsh.cc:224 methods/rsh.cc:272 -msgid "Connection timeout" -msgstr "" - -#: methods/ftp.cc:377 -msgid "Server closed the connection" -msgstr "" - -#: methods/ftp.cc:380 methods/rsh.cc:231 -msgid "Read error" -msgstr "" - -#: methods/ftp.cc:387 methods/rsh.cc:238 -msgid "A response overflowed the buffer." -msgstr "" - -#: methods/ftp.cc:404 methods/ftp.cc:416 -msgid "Protocol corruption" -msgstr "" - -#: methods/ftp.cc:489 methods/rsh.cc:278 -msgid "Write error" -msgstr "" - -#: methods/ftp.cc:741 methods/ftp.cc:747 methods/ftp.cc:782 -msgid "Could not create a socket" -msgstr "" - -#: methods/ftp.cc:752 -msgid "Could not connect data socket, connection timed out" -msgstr "" - -#: methods/ftp.cc:758 -msgid "Could not connect passive socket." -msgstr "" - -#: methods/ftp.cc:775 -msgid "getaddrinfo was unable to get a listening socket" -msgstr "" - -#: methods/ftp.cc:789 -msgid "Could not bind a socket" -msgstr "" - -#: methods/ftp.cc:793 -msgid "Could not listen on the socket" -msgstr "" - -#: methods/ftp.cc:800 -msgid "Could not determine the socket's name" -msgstr "" - -#: methods/ftp.cc:832 -msgid "Unable to send PORT command" -msgstr "" - -#: methods/ftp.cc:842 -#, c-format -msgid "Unknown address family %u (AF_*)" -msgstr "" - -#: methods/ftp.cc:851 -#, c-format -msgid "EPRT failed, server said: %s" -msgstr "" - -#: methods/ftp.cc:871 -msgid "Data socket connect timed out" -msgstr "" - -#: methods/ftp.cc:878 -msgid "Unable to accept connection" -msgstr "" - -#: methods/ftp.cc:918 methods/http.cc:1047 methods/rsh.cc:348 -msgid "Problem hashing file" -msgstr "" - -#: methods/ftp.cc:931 -#, c-format -msgid "Unable to fetch file, server said '%s'" -msgstr "" - -#: methods/ftp.cc:946 methods/rsh.cc:367 -msgid "Data socket timed out" -msgstr "" - -#: methods/ftp.cc:983 -#, c-format -msgid "Data transfer failed, server said '%s'" -msgstr "" - -#. Get the files information -#: methods/ftp.cc:1071 -msgid "Query" -msgstr "" - -#: methods/ftp.cc:1183 -msgid "Unable to invoke " -msgstr "" - -#: methods/gpgv.cc:258 -#, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" - -#. TRANSLATORS: %s is a single techy word like 'NODATA' -#: methods/gpgv.cc:435 -#, c-format -msgid "" -"Clearsigned file isn't valid, got '%s' (does the network require " -"authentication?)" -msgstr "" - -#. TRANSLATORS: %s is a single techy word like 'NODATA' -#: methods/gpgv.cc:443 -#, c-format -msgid "" -"Signed file isn't valid, got '%s' (does the network require authentication?)" -msgstr "" - -#: methods/gpgv.cc:453 methods/gpgv.cc:463 -msgid "At least one invalid signature was encountered." -msgstr "" - -#: methods/gpgv.cc:458 -msgid "" -"Internal error: Good signature, but could not determine key fingerprint?!" -msgstr "" - -#: methods/gpgv.cc:465 -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" -msgstr "" - -#: methods/gpgv.cc:467 -msgid "Unknown error executing apt-key" -msgstr "" - -#: methods/gpgv.cc:502 -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - -#. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. -#: methods/gpgv.cc:565 -#, c-format -msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" - -#: methods/gpgv.cc:581 methods/gpgv.cc:587 -msgid "The following signatures were invalid:\n" -msgstr "" - -#: methods/gpgv.cc:597 -msgid "" -"The following signatures couldn't be verified because the public key is not " -"available:\n" -msgstr "" - -#: methods/http.cc:741 -msgid "Error reading from server. Remote end closed connection" -msgstr "" - -#: methods/http.cc:745 -msgid "Error reading from server" -msgstr "" - -#: methods/http.cc:764 -msgid "Error writing to file" -msgstr "" - -#: methods/http.cc:832 -msgid "Select failed" -msgstr "" - -#: methods/http.cc:838 -msgid "Connection timed out" -msgstr "" - -#: methods/mirror.cc:313 -msgid "The list of sources could not be read." -msgstr "" - -#: methods/rred.cc:755 methods/rred.cc:765 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: methods/rred.cc:762 -msgid "Failed to set modification time" -msgstr "" - -#: methods/rsh.cc:120 -msgid "Failed to create IPC pipe to subprocess" -msgstr "" - -#: methods/rsh.cc:375 -msgid "Connection closed prematurely" -msgstr "" - -#: methods/store.cc:80 -msgid "Empty files can't be valid archives" -msgstr "" diff --git a/po/apt.sh.pot b/po/apt.sh.pot deleted file mode 100644 index cdb707c..0000000 --- a/po/apt.sh.pot +++ /dev/null @@ -1,51 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: dselect/install:33 -msgid "Bad default setting!" -msgstr "" - -#: dselect/install:52 dselect/install:84 dselect/install:88 dselect/install:95 -#: dselect/install:106 dselect/update:45 -msgid "Press [Enter] to continue." -msgstr "" - -#: dselect/install:92 -msgid "Do you want to erase any previously downloaded .deb files?" -msgstr "" - -#: dselect/install:102 -msgid "Some errors occurred while unpacking. Packages that were installed" -msgstr "" - -#: dselect/install:103 -msgid "will be configured. This may result in duplicate errors" -msgstr "" - -#: dselect/install:104 -msgid "or errors caused by missing dependencies. This is OK, only the errors" -msgstr "" - -#: dselect/install:105 -msgid "" -"above this message are important. Please fix them and run [I]nstall again" -msgstr "" - -#: dselect/update:30 -msgid "Merging available information" -msgstr "" diff --git a/po/ar.po b/po/ar.po index 0133b2d..d061125 100644 --- a/po/ar.po +++ b/po/ar.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2006-10-20 21:28+0300\n" "Last-Translator: Ossama M. Khayat \n" "Language-Team: Arabic \n" @@ -56,8 +56,8 @@ msgstr "المسار %s طويل جداً" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -125,13 +125,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -187,8 +188,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -199,7 +199,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -218,6 +218,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "فشل إحضار %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -236,13 +243,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "الاتصال بـ%s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -622,6 +622,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -729,11 +753,11 @@ msgstr "" msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "خطأ في القراءة" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "خطأ في الكتابة" @@ -1041,6 +1065,12 @@ msgstr "تعذر قفل دليل القائمة" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1222,6 +1252,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "حساب الترقية" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "مجموع المعتمدات:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1511,10 +1551,6 @@ msgid "" "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 @@ -1675,12 +1711,6 @@ msgstr "الحزمة %s غير مُثبّتة، لذلك لن تُزال\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "لاحظ، تحديد %s بدلاً من %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1780,6 +1810,12 @@ msgstr "قد تساعد المعلومات التالية في حل المشكل msgid "Broken packages" msgstr "حزم معطوبة" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "خطأ في الكتابة" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1794,10 +1830,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"تعذر إحضار بعض الأرشيف، ربما يمكنك محاولة تنفيذ apt-get update أو إضافة --" +"تعذر إحضار بعض الأرشيف، ربما يمكنك محاولة تنفيذ apt update أو إضافة --" "fix-missing؟" #: apt-private/private-install.cc @@ -1834,6 +1870,12 @@ msgstr "خطأ داخلي، لم تنته عملية الترتيب" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "يا للغرابة... لم تتطابق الأحجام، الرجاء مراسلة apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1841,6 +1883,11 @@ msgstr "يا للغرابة... لم تتطابق الأحجام، الرجاء msgid "Need to get %sB/%sB of archives.\n" msgstr "بحاجة إلى جلب %sب/%sب من الأرشيف.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1848,13 +1895,54 @@ msgstr "بحاجة إلى جلب %sب/%sب من الأرشيف.\n" 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\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 @@ -1872,19 +1960,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "هل تريد الاستمرار؟" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "هل تريد الاستمرار؟" + #: apt-private/private-install.cc msgid "Abort." msgstr "إجهاض." @@ -1938,6 +2025,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "خطأ داخلي، عطب AllUpgrade بعض الأشياء" +#: 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 "" @@ -1957,16 +2051,8 @@ 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 "سيتم تثبيت الحزم الإضافيّة التالية:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1976,6 +2062,11 @@ msgstr "الحزم المقترحة:" msgid "Recommended packages:" msgstr "الحزم المستحسنة:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "سيتم تثبيت الحزم الإضافيّة التالية:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2105,10 +2196,31 @@ msgstr " أو" msgid "The following packages have unmet dependencies:" msgstr "" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Unsatisfied dependencies:" +msgstr "مجموع المعتمدات:" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "سيتم تثبيت الحزم الجديدة التالية:" +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr "تم تثبيت %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "مجموع المعتمدات:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "سيتم إزالة الحزم التالية:" @@ -2119,6 +2231,16 @@ msgstr "سيتم إزالة الحزم التالية:" msgid "The following upgrades have been deferred due to phasing:" msgstr "سيتم الإبقاء على الحزم التالية:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "سيتم الإبقاء على الحزم التالية:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "سيتم الإبقاء على الحزم التالية:" @@ -2127,10 +2249,24 @@ msgstr "سيتم الإبقاء على الحزم التالية:" msgid "The following packages will be upgraded:" msgstr "ستتم ترقية الحزم التالية:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "سيتم تثبيط الحزم التالية:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "الحزم المُدبّسة:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "سيتم تغيير الحزم المبقاة التالية:" @@ -2148,26 +2284,50 @@ msgstr "" "تحذير: ستتم إزالة الحزم الأساسية التالية.\n" "لا يجب أن تقوم بهذا إلى إن كنت تعرف تماماً ما تقوم به!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu سيتم ترقيتها، %lu مثبتة حديثاً، " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "تم تثبيت %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu أعيد تثبيتها، " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "تم تثبيت %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu مثبطة، " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2195,7 +2355,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2369,8 +2529,8 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2407,6 +2567,11 @@ msgstr "فشل تغيير اسم %s إلى %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2424,12 +2589,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2476,6 +2666,12 @@ msgstr " الحزم الوهمية المختلطة:" msgid " Missing: " msgstr " مفقودة:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "مجموع النسخ الفريدة:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "مجموع النسخ الفريدة:" @@ -2784,6 +2980,10 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3008,10 +3208,18 @@ msgstr "" msgid "edit the source information file" msgstr "دمج المعلومات المتوفرة" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "إعداد افتراضيّ سيّء!" @@ -3169,7 +3377,7 @@ msgstr "" msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "" @@ -3288,22 +3496,22 @@ msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" +msgid " %.*s has no override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" +msgid " %.*s maintainer is %.*s not %s\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no source override entry\n" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: methods/basehttp.cc @@ -3342,7 +3550,7 @@ msgstr "بيانات ترويسة سيئة" msgid "Connection failed" msgstr "فشل الاتصال" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3384,7 +3592,7 @@ msgstr "تعذر فكّ القرص المدمج من %s، إذ قد يكون ل msgid "Disk not found." msgstr "لم يُعثر على القرص." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "لم يُعثر على الملف" @@ -3420,7 +3628,7 @@ msgstr "" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "تعذر تمهيد الاتصال بـ%s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "فشل" @@ -3434,9 +3642,7 @@ msgstr "تعذر الاتصال بـ%s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "الاتصال بـ%s" @@ -3474,148 +3680,14 @@ msgstr "فشيل تنفيذ stat" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" msgstr "" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3635,18 +3707,11 @@ msgid "" msgstr "" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." +msgid "Unknown error executing gpgv" msgstr "" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. @@ -3685,18 +3750,80 @@ msgstr "فشل التحديد" msgid "Connection timed out" msgstr "انتهى وقت الاتصال" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "تسجيل الدخول" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "رفض الخادم اتصالنا بالرد: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "فشل USER، ردّ الخادم: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "فشل PASS، ردّ الخادم: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "تم تحديد خادم بروكسي ولكن دون نص تسجيل دخول برمجي، " +#~ "Acquire::ftp::ProxyLogin فارغ." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "فشل أمر نص تسجيل الدخول البرمجي '%s'، ردّ الخادم: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "فشل TYPE، ردّ الخادم: %s" + +#~ msgid "Connection timeout" +#~ msgstr "انتهى وقت الاتصال" + +#~ msgid "Server closed the connection" +#~ msgstr "أغلق الخادم الاتصال" + +#~ msgid "Unable to send PORT command" +#~ msgstr "تعذر إرسال الأمر PORT" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "فشل EPRT، ردّ الخادم: %s" + +#~ msgid "Unable to accept connection" +#~ msgstr "تعذر قبول الاتصال" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "تعذر إحضار الملف، ردّ الخادم '%s'" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "فشل نقل البيانات، ردّ الخادم '%s'" + +#~ msgid "Query" +#~ msgstr "استعلام" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "سيتم تغيير الحزم المبقاة التالية:" + #~ msgid "Yes, do as I say!" #~ msgstr "نعم، افعل ما أقوله!" diff --git a/po/ast.po b/po/ast.po index 7ddc1e6..9474f4e 100644 --- a/po/ast.po +++ b/po/ast.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.18\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2010-10-02 23:35+0100\n" "Last-Translator: Iñigo Varela \n" "Language-Team: Asturian (ast)\n" @@ -49,8 +49,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -117,7 +117,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -125,8 +126,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -181,8 +182,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Conflictu de distribución: %s (esperábase %s pero obtúvose %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -193,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -212,6 +212,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Falló algamar %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -232,13 +239,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Coneutando a %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -637,6 +637,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Fallu de sintaxis %s:%u: Puxarra extra al final del ficheru" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -746,11 +770,11 @@ msgstr "El subprocesu %s devolvió un códigu d'error (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Fallu de llectura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Fallu d'escritura" @@ -1070,6 +1094,12 @@ msgstr "Nun pudo bloquiase'l direutoriu d'alministración (%s), ¿yes root?" msgid "Not locked" msgstr "Non bloquiáu" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1261,6 +1291,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calculando l'anovamientu" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Dependencies totales: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1565,10 +1605,6 @@ 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 @@ -1732,12 +1768,6 @@ msgstr "El paquete %s nun ta instalau, nun va desaniciase\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Nota, escoyendo %s nel llugar de %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1841,6 +1871,12 @@ msgstr "La siguiente información pue aidar a resolver la situación:" msgid "Broken packages" msgstr "Paquetes frañaos" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Fallu d'escritura" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1855,10 +1891,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nun pudieron algamase dellos archivos, ¿seique executando apt-get update o " +"Nun pudieron algamase dellos archivos, ¿seique executando apt update o " "tentando --fix-missing?" #: apt-private/private-install.cc @@ -1896,6 +1932,12 @@ 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Instaláu: " + #. 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 @@ -1903,6 +1945,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Hai que descargar %sB/%sB d'archivos.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1910,13 +1957,55 @@ msgstr "Hai que descargar %sB/%sB d'archivos.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Etiqueta guardada: %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 @@ -1934,19 +2023,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "¿Quies continuar?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "¿Quies continuar?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Encaboxar." @@ -2005,6 +2093,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Error internu, AutoRemover rompió coses" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2026,16 +2121,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2045,6 +2132,11 @@ msgstr "Paquetes afalaos:" msgid "Recommended packages:" msgstr "Paquetes encamentaos" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2179,10 +2271,32 @@ msgstr " o" msgid "The following packages have unmet dependencies:" msgstr "Los siguientes paquetes nun cumplen dependencies:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Fallu pa satisfacer la dependencia %s pa %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Instalando %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Dependencies totales: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Los siguientes paquetes van DESANICIASE:" @@ -2193,6 +2307,16 @@ msgstr "Los siguientes paquetes van DESANICIASE:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Los siguientes paquetes tan reteníos:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Los siguientes paquetes tan reteníos:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Los siguientes paquetes tan reteníos:" @@ -2201,10 +2325,24 @@ msgstr "Los siguientes paquetes tan reteníos:" msgid "The following packages will be upgraded:" msgstr "Los siguientes paquetes van actualizase:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Los siguientes paquetes van DESACTUALIZASE:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Paquetes na chincheta:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Van camudase los siguientes paquetes reteníos:" @@ -2222,26 +2360,52 @@ 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 +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu actualizaos, %lu nuevos instalaos, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalaos, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu desactualizaos, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2269,7 +2433,7 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2449,8 +2613,8 @@ msgstr "%s nun tien dependencies de construcción.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2489,6 +2653,11 @@ msgstr "Nun pudo renomase %s como %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2506,12 +2675,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2557,6 +2751,12 @@ msgstr " Paquetes virtuales amestaos: " msgid " Missing: " msgstr " Falten: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Versiones distintes en total: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Versiones distintes en total: " @@ -2886,6 +3086,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Hebo un problema al xenerar el hash del ficheru" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3135,12 +3341,20 @@ msgstr "" msgid "edit the source information file" msgstr "Lleendo información d'estáu" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Fallu pa satisfacer la dependencia %s pa %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "¡Mal axuste por omisión!" @@ -3342,7 +3556,7 @@ msgstr "Algoritmu de compresión desconocíu '%s'" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Falló criar un tubu IPC al soprocesu" @@ -3461,23 +3675,23 @@ 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" +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" +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" +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" +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" @@ -3515,7 +3729,7 @@ msgstr "Datos de testera incorreutos" msgid "Connection failed" msgstr "Fallo la conexón" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3557,7 +3771,7 @@ msgstr "Nun se pudo desmontar el CD-ROM de %s; puede que se tea usando entá." msgid "Disk not found." msgstr "Nun s'atopa'l discu." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Nun s'atopa'l ficheru." @@ -3593,7 +3807,7 @@ msgstr "Nun se pudo crear un socket pa %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Nun se pudo coneutar a %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Falló" @@ -3607,9 +3821,7 @@ msgstr "Nun se pudo coneutar a %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Coneutando a %s" @@ -3647,148 +3859,14 @@ msgstr "Falló al lleer" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3809,21 +3887,19 @@ 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Fallu desconocíu al executar apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3862,18 +3938,133 @@ msgstr "Falló la escoyeta" msgid "Connection timed out" msgstr "Gandió'l tiempu de conexón" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Hebo un problema al xenerar el hash del ficheru" + #: 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 "" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Fallu GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Entrando" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Nun se pudo determinar el nome del par" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nun se pudo determinar el nome llocal" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "El sirvidor refugó la conexón, y dixo: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "L'usuariu (USER) falló; el sirvidor dixo: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "La contraseña (PASS) falló; el sirvidor dixo: %s" + +#~ 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." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "La triba (TYPE) falló; el sirvidor dixo: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Gandió'l tiempu de conexón" + +#~ msgid "Server closed the connection" +#~ msgstr "El sirvidor zarró la conexón" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Una rempuesta revirtió'l buffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Corrupción del protocolu" + +#~ msgid "Could not create a socket" +#~ msgstr "Nun se pudo crear un socket" + +#~ 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" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Nun se pudo coneutar un socket pasivu." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo nun pudo obtener un zócalu oyente" + +#~ msgid "Could not bind a socket" +#~ msgstr "Nun se pudo enllazar con un socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Nun se pudo escuchar nel socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Nun se pudo determinar el nome del socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Nun se pudo mandar la orde PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Direición de familia %u desconocida (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT falló; el sirvidor dixo: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Gandió'l tiempu de conexón col zócalu de datos" + +#~ msgid "Unable to accept connection" +#~ msgstr "Nun se pudo aceptar la conexón" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nun se pudo descargar el ficheru; el sirvidor dixo '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Gandió'l tiempu del zócalu de datos" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Falló la tresferencia de datos; el sirvidor dixo '%s'" + +#~ msgid "Query" +#~ msgstr "Consulta" + +#~ msgid "Unable to invoke " +#~ msgstr "Nun se pudo invocar " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Conexón encaboxada prematuramente" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Van camudase los siguientes paquetes reteníos:" + #~ msgid "Yes, do as I say!" #~ msgstr "Sí, ¡facer lo que digo!" diff --git a/po/bg.po b/po/bg.po index 8fce7f3..def4a8b 100644 --- a/po/bg.po +++ b/po/bg.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.21\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2012-06-25 17:23+0300\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" @@ -55,8 +55,8 @@ msgstr "Директорията %s е отклонена" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -123,7 +123,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "Грешка при проверка на цифровия подпис. Хранилището не е обновено и ще се " "използват старите индексни файлове. Грешка от GPG: %s: %s\n" @@ -131,8 +132,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "Грешка от GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -194,8 +195,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Конфликт в дистрибуцията: %s (очаквана: %s, намерена: %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -206,7 +206,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -225,6 +225,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Неуспех при изтеглянето на %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -245,13 +252,6 @@ msgstr "Не е открит източник, от който да се изт msgid "Changelog unavailable for %s=%s" msgstr "Журнал на промените в %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -654,6 +654,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Синтактична грешка %s:%u: Излишни символи в края на файла" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -766,11 +790,11 @@ msgstr "Подпроцесът %s върна код за грешка (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Подпроцесът %s завърши неочаквано" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Грешка при четене" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Грешка при запис" @@ -1096,6 +1120,12 @@ msgstr "" msgid "Not locked" msgstr "Без заключване" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1290,6 +1320,16 @@ msgstr "" "Външната програма за удовлетворяване на зависимости се провали без да изведе " "съобщение за грешка" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Изчисляване на актуализацията" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Общо зависимости: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Изпълняване на външна програма за удовлетворяване на зависимости" @@ -1602,10 +1642,6 @@ 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 @@ -1773,12 +1809,6 @@ msgstr "Пакетът „%s“ не е инсталиран, така че не msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Избиране на „%s“ вместо „%s“\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1883,6 +1913,12 @@ msgstr "" msgid "Broken packages" msgstr "Счупени пакети" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Грешка при запис" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1897,10 +1933,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Неуспех при изтеглянето на някои архиви, може да изпълните „apt-get update“ " +"Неуспех при изтеглянето на някои архиви, може да изпълните „apt update“ " "или да опитате с „--fix-missing“?" #: apt-private/private-install.cc @@ -1938,6 +1974,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" "Странно... Размерите не съвпадат, изпратете е-поща на apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Изтегляне на %s %s" + #. 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 @@ -1945,6 +1987,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Необходимо е да се изтеглят %sB/%sB архиви.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Изтегляне на %s %s" + #. 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 @@ -1952,8 +2000,6 @@ msgstr "Необходимо е да се изтеглят %sB/%sB архиви. 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" @@ -1961,6 +2007,50 @@ 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1978,19 +2068,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Искате ли да продължите?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Искате ли да продължите?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Прекъсване." @@ -2049,6 +2138,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Вътрешна грешка, AutoRemover счупи нещо в системата" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2069,16 +2165,8 @@ 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 "Следните допълнителни пакети ще бъдат инсталирани:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2088,6 +2176,11 @@ msgstr "Предложени пакети:" msgid "Recommended packages:" msgstr "Препоръчвани пакети:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "Следните допълнителни пакети ще бъдат инсталирани:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2222,10 +2315,32 @@ msgstr " или" msgid "The following packages have unmet dependencies:" msgstr "Следните пакети имат неудовлетворени зависимости:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Неуспех при удовлетворяването на зависимост %s за пакета %s: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Следните НОВИ пакети ще бъдат инсталирани:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Инсталиране на %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Общо зависимости: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Следните пакети ще бъдат ПРЕМАХНАТИ:" @@ -2236,6 +2351,16 @@ msgstr "Следните пакети ще бъдат ПРЕМАХНАТИ:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Следните пакети няма да бъдат променени:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Следните пакети няма да бъдат променени:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Следните пакети няма да бъдат променени:" @@ -2244,10 +2369,24 @@ msgstr "Следните пакети няма да бъдат променен msgid "The following packages will be upgraded:" msgstr "Следните пакети ще бъдат актуализирани:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Следните пакети ще бъдат ВЪРНАТИ КЪМ ПО-СТАРА ВЕРСИЯ:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Отбити пакети:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Следните задържани пакети ще бъдат променени:" @@ -2265,26 +2404,53 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: Следните необходими пакети ще бъдат премахнати.\n" "Това НЕ би трябвало да става освен ако знаете точно какво правите!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu актуализирани, %lu нови инсталирани, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Инсталиране на %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu преинсталирани, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Инсталиране на %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu върнати към по-стара версия, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Изтегляне на %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2312,7 +2478,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2495,11 +2661,11 @@ msgstr "%s няма зависимости за компилиране.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" -"Липсва информация за архитектурата %s. Прегледайте информацията за APT::" -"Architectures в apt.conf(5)." +"Липсва информация за архитектурата %s. Прегледайте информацията за " +"APT::Architectures в apt.conf(5)." #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2536,6 +2702,11 @@ msgstr "Неуспех при преименуването на %s на %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2553,12 +2724,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2604,6 +2800,12 @@ msgstr " Смесени виртуални пакети: " msgid " Missing: " msgstr " Липсващи: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Общо уникални версии: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Общо уникални версии: " @@ -2936,6 +3138,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Проблем при хеширане на файла" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3186,12 +3394,20 @@ msgstr "" msgid "edit the source information file" msgstr "Четене на информацията за състоянието" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Неуспех при удовлетворяването на зависимост %s за пакета %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Лоша стандартна настройка!" @@ -3394,7 +3610,7 @@ msgstr "Непознат алгоритъм за компресия „%s“" msgid "Compressed output %s needs a compression set" msgstr "Компресираният изход %s изисква настройка за компресирането" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Неуспех при създаването на IPC pipe към подпроцеса" @@ -3513,23 +3729,23 @@ msgstr "Архивът няма поле „package“" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s няма запис „override“\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s няма също и запис „binary override“\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3567,7 +3783,7 @@ msgstr "Невалидни данни на заглавната част" msgid "Connection failed" msgstr "Неуспех при свързването" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3609,7 +3825,7 @@ msgstr "Неуспех при демонтирането на CD-ROM в %s, мо msgid "Disk not found." msgstr "Дискът не е намерен." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Файлът не е намерен" @@ -3645,7 +3861,7 @@ msgstr "Неуспех при създаването на гнездо за %s ( msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Не може да се започне свързване с %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Неуспех" @@ -3659,9 +3875,7 @@ msgstr "Неуспех при свързване с %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Свързване с %s" @@ -3699,150 +3913,14 @@ msgstr "Неуспех при получаването на атрибути" 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 +#: methods/gpgv.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" +msgid "untrusted public key algorithm: %s" 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 "Неуспех при извикването на " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3864,22 +3942,20 @@ msgstr "" "ключа?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "Неуспех при изпълнение на „apt-key“ за проверка на подписа (инсталиран ли е " "gnupg?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Неизвестна грешка при изпълнението на apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3918,18 +3994,141 @@ msgstr "Неуспех на избора" msgid "Connection timed out" msgstr "Допустимото време за свързване изтече" +#: methods/http.cc +msgid "Problem hashing file" +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 "Празни файлове не могат да бъдат валидни архиви" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Грешка от GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Влизане" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Неуспех при установяването на името на отдалечения сървър" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Неуспех при установяването на локалното име" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Сървърът отказа свързване и съобщи: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER се провали, сървърът съобщи: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS се провали, сървърът съобщи: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "Беше указан сървър-посредник, но няма скрипт за влизане, " +#~ "Acquire::ftp::ProxyLogin е празен." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "" +#~ "Командата „%s“ на скрипта за влизане се провали, сървърът съобщи: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE се провали, сървърът съобщи: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Допустимото време за свързването изтече" + +#~ msgid "Server closed the connection" +#~ msgstr "Сървърът разпадна връзката" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Отговорът препълни буфера." + +#~ msgid "Protocol corruption" +#~ msgstr "Развален протокол" + +#~ msgid "Could not create a socket" +#~ msgstr "Неуспех при създаването на гнездо" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Неуспех при свързването на гнездо за данни, допустимото време за " +#~ "свързване изтече" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Неуспех при свързването на пасивно гнездо." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo не успя да се добере до слушащо гнездо" + +#~ msgid "Could not bind a socket" +#~ msgstr "Неуспех при свързването на гнездо" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Неуспех при слушането на гнездото" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Неуспех при определянето на името на гнездото" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Неуспех при изпращането на командата PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Неизвестно семейство адреси %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT се провали, сървърът съобщи: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Времето за установяване на връзка с гнездо за данни изтече" + +#~ msgid "Unable to accept connection" +#~ msgstr "Невъзможно е да се приеме свързването" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Неуспех при изтеглянето на файла, сървърът съобщи „%s“" + +#~ msgid "Data socket timed out" +#~ msgstr "Времето за връзка с гнездо за данни изтече" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Неуспех при прехвърлянето на данни, сървърът съобщи: „%s“" + +#~ msgid "Query" +#~ msgstr "Запитване" + +#~ msgid "Unable to invoke " +#~ msgstr "Неуспех при извикването на " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Връзката прекъсна преждевременно" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Инсталирана: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Следните задържани пакети ще бъдат променени:" + #~ msgid "Yes, do as I say!" #~ msgstr "Да, прави каквото казвам!" @@ -4150,8 +4349,8 @@ msgstr "Празни файлове не могат да бъдат валидн #~ " -q Премахване на индикатора за напредък.\n" #~ " -i Показване само на важни зависимости при командата „unmet“.\n" #~ " -c=? Указване на файл с настройки.\n" -#~ " -o=? Настройване на произволна конфигурационна опция, например -o dir::" -#~ "cache=/tmp\n" +#~ " -o=? Настройване на произволна конфигурационна опция, например -o " +#~ "dir::cache=/tmp\n" #~ "За повече информация вижте наръчниците apt-cache(8) и apt.conf(5).\n" #, fuzzy @@ -4187,8 +4386,8 @@ msgstr "Празни файлове не могат да бъдат валидн #~ "Опции:\n" #~ " -h Този помощен текст.\n" #~ " -c=? Четене на този конфигурационен файл.\n" -#~ " -o=? Настройване на произволна конфигурационна опция, т.е. -o dir::" -#~ "cache=/tmp\n" +#~ " -o=? Настройване на произволна конфигурационна опция, т.е. -o " +#~ "dir::cache=/tmp\n" #~ msgid "" #~ "Options:\n" @@ -4234,8 +4433,8 @@ msgstr "Празни файлове не могат да бъдат валидн #~ " -h Този помощен текст.\n" #~ " -s Използване на сортиране по изходен код.\n" #~ " -c=? Четене на този конфигурационен файл.\n" -#~ " -o=? Настройване на произволна конфигурационна опция, т.е. -o dir::" -#~ "cache=/tmp\n" +#~ " -o=? Настройване на произволна конфигурационна опция, т.е. -o " +#~ "dir::cache=/tmp\n" #~ msgid "Child process failed" #~ msgstr "Процесът-потомък пропадна" @@ -4365,9 +4564,6 @@ msgstr "Празни файлове не могат да бъдат валидн #~ 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“" diff --git a/po/bs.po b/po/bs.po index 1bf0fd9..ee6378b 100644 --- a/po/bs.po +++ b/po/bs.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2004-05-06 15:25+0100\n" "Last-Translator: Safir Šećerović \n" "Language-Team: Bosnian \n" @@ -52,8 +52,8 @@ msgstr "" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -119,13 +119,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -181,8 +182,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -193,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -212,6 +212,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Ne mogu otvoriti %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -230,13 +237,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -617,6 +617,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -724,11 +748,11 @@ msgstr "" msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Greška pri čitanju" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Greška pri pisanju" @@ -1035,6 +1059,12 @@ msgstr "" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, fuzzy, c-format @@ -1216,6 +1246,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Računam nadogradnju" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Ukupno zavisnosti:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1506,10 +1546,6 @@ msgid "" "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 @@ -1666,12 +1702,6 @@ msgstr "" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1771,6 +1801,12 @@ msgstr "" msgid "Broken packages" msgstr "Oštećeni paketi" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Greška pri pisanju" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1785,7 +1821,7 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" @@ -1821,6 +1857,12 @@ msgstr "" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Instalirano:" + #. 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 @@ -1828,6 +1870,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1835,11 +1882,52 @@ msgstr "" msgid "Need to get %sB of archives.\n" msgstr "" +#: 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 of additional disk space will be used.\n" +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included @@ -1859,19 +1947,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Da li želite nastaviti?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Da li želite nastaviti?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Odustani." @@ -1924,6 +2011,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "" +#: 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 "" @@ -1943,16 +2037,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1962,6 +2048,11 @@ msgstr "Predloženi paketi:" msgid "Recommended packages:" msgstr "Preporučeni paketi:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2091,10 +2182,31 @@ msgstr " ili" msgid "The following packages have unmet dependencies:" msgstr "" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Building dependency tree" +msgid "Unsatisfied dependencies:" +msgstr "Gradim stablo zavisnosti" + #: 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 +#, fuzzy +msgid "Installing:" +msgstr " Instalirano:" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Ukupno zavisnosti:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Slijedeći paketi će biti UKLONJENI:" @@ -2104,6 +2216,15 @@ msgstr "Slijedeći paketi će biti UKLONJENI:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Slijedeći paketi su zadržani:" +#: apt-private/private-output.cc +#, fuzzy +msgid "Not upgrading yet due to phasing:" +msgstr "Slijedeći paketi su zadržani:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc #, fuzzy msgid "The following packages have been kept back:" @@ -2113,10 +2234,24 @@ msgstr "Slijedeći paketi su zadržani:" msgid "The following packages will be upgraded:" msgstr "Slijedeći paketi će biti nadograđeni:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Suggested packages:" +msgid "Changing held packages:" +msgstr "Predloženi paketi:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "" @@ -2132,26 +2267,50 @@ msgid "" "This should NOT be done unless you know exactly what you are doing!" msgstr "" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr " Instalirano:" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "" +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr " Instalirano:" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "" +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2179,7 +2338,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2352,8 +2511,8 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2390,6 +2549,11 @@ msgstr "Ne mogu otvoriti %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2407,12 +2571,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2459,6 +2648,12 @@ msgstr " Miješani virtuelni paketi:" msgid " Missing: " msgstr " Nedostajući:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Ukupno različitih verzija:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Ukupno različitih verzija:" @@ -2770,6 +2965,10 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -2994,12 +3193,20 @@ msgstr "" msgid "edit the source information file" msgstr "Sastavljam dostupne informacije" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Building dependency tree" msgid "satisfy dependency strings" msgstr "Gradim stablo zavisnosti" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Loša podrazumjevana postavka!" @@ -3155,7 +3362,7 @@ msgstr "" msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "" @@ -3274,22 +3481,22 @@ msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" +msgid " %.*s has no override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" +msgid " %.*s maintainer is %.*s not %s\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no source override entry\n" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: methods/basehttp.cc @@ -3328,7 +3535,7 @@ msgstr "" msgid "Connection failed" msgstr "Povezivanje neuspješno" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3370,7 +3577,7 @@ msgstr "Ne mogu demontirati CD-ROM na %s, moguće je da se još uvijek koristi." msgid "Disk not found." msgstr "Datoteka nije pronađena" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Datoteka nije pronađena" @@ -3406,7 +3613,7 @@ msgstr "" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Neuspješno" @@ -3420,9 +3627,7 @@ msgstr "" msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Povezujem se sa %s" @@ -3460,147 +3665,14 @@ msgstr "" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" msgstr "" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3620,18 +3692,11 @@ msgid "" msgstr "" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." +msgid "Unknown error executing gpgv" msgstr "" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. @@ -3671,18 +3736,28 @@ msgstr "" msgid "Connection timed out" msgstr "" -#: methods/rred.cc -msgid "Failed to set modification time" +#: methods/http.cc +msgid "Problem hashing file" msgstr "" -#: methods/rsh.cc -msgid "Connection closed prematurely" +#: methods/rred.cc +msgid "Failed to set modification time" msgstr "" #: methods/store.cc msgid "Empty files can't be valid archives" msgstr "" +#~ msgid "Logging in" +#~ msgstr "Prijavljujem se" + +#~ msgid "Server closed the connection" +#~ msgstr "Server je zatvorio vezu" + +#, fuzzy +#~ msgid "Protocol corruption" +#~ msgstr "Oštećenje protokola" + #~ msgid "Yes, do as I say!" #~ msgstr "Da, uradi kako kažem!" diff --git a/po/ca.po b/po/ca.po index 1174786..1cbff7a 100644 --- a/po/ca.po +++ b/po/ca.po @@ -9,20 +9,22 @@ # Jordi Mallach , 2004, 2005, 2006, 2008, 2009, 2011, 2012. # Agustí Grau , 2010. # Oriol Debian , 2016. +# Carles Pina i Estany , 2024. +# poc senderi , 2025. msgid "" msgstr "" "Project-Id-Version: apt 1.4~beta1\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2020-08-09 22:43+0200\n" -"Last-Translator: Aleix Vidal i Gaya \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-03-13 16:18+0100\n" +"Last-Translator: poc senderi \n" "Language-Team: Catalan \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: Poedit 2.2.1\n" +"X-Generator: Poedit 2.4.2\n" "X-Poedit-Bookmarks: 502,178,-1,-1,-1,-1,-1,-1,-1,-1\n" #: apt-pkg/acquire-item.cc @@ -61,11 +63,11 @@ msgstr "El dipòsit «%s» ja no té un fitxer Release." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"Això normalment no està permès, però s'ha donat l'opció «Acquire::" -"AllowDowngradeToInsecureRepositories» per anul·lar-ho." +"Això normalment no està permès, però s'ha donat l'opció " +"«Acquire::AllowDowngradeToInsecureRepositories» per anul·lar-ho." #: apt-pkg/acquire-item.cc #, c-format @@ -131,17 +133,18 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "S'ha produït un error durant la verificació de la signatura. El dipòsit no " -"està actualitzat i s'empraran els fitxers d'índex anteriors. Error GPG: %s: " -"%s" +"està actualitzat i s'emprarà el fitxer d'índex anteriors. Ha fallat la " +"verificació de la signatura OpenGPG: %s: %s" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "Error GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "Ha fallat la verificació de la signatura OpenPGP: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -208,8 +211,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribució conflictiva: %s (s'esperava %s però s'ha obtingut %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "El dipòsit «%s» ha canviat el seu valor «%s» de «%s» a «%s»" @@ -222,7 +224,7 @@ msgstr "" "%hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -243,6 +245,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "No s'ha pogut obtenir %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Els repositoris han de tenir un fitxer «InRelease» signat, però no se n'ha " +"trobat cap a %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -263,15 +274,6 @@ msgstr "No es troba una font per baixar la versió «%s» de «%s»" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"No s'admet el mètode «%s» i està desactivat per defecte. Considereu canviar " -"a http(s). Establiu Dir::Bin::Methods::%s a «%s» per tornar-lo a activar." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -681,6 +683,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Error de sintaxi %s:%u: Hi ha brossa extra al final del fitxer" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Error:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Avís:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Notificació:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Auditoria:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Depuració:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -795,11 +821,11 @@ msgstr "El subprocés %s ha retornat un codi d'error (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "El subprocés %s ha sortit inesperadament" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Error de lectura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Error d'escriptura" @@ -1105,8 +1131,8 @@ msgstr "" msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " msgstr "" -"S'ha interromput el dpkg. Cal que executeu manualment «%s» per a corregir el " -"problema. " +"El «dpkg» ha estat interromput. Cal que executeu manualment «%s» per a " +"corregir el problema. " #: apt-pkg/deb/debsystem.cc #, c-format @@ -1126,6 +1152,14 @@ msgstr "No es pot bloquejar el directori d'administració (%s). Sou root?" msgid "Not locked" msgstr "No bloquejat" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"L'executable del «dpkg» establert a «Dir::Bin::dpkg» no hi és, i en " +"conseqüència s'usarà el «dpkg» predeterminat." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1316,6 +1350,14 @@ msgstr "Prepara per a rebre una solució" msgid "External solver failed without a proper error message" msgstr "El solucionador extern ha fallat sense un missatge d'error adequat" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "S'està calculant l'actualització" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "S'està resolent les dependències" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Executa un solucionador extern" @@ -1393,8 +1435,8 @@ 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 dins de APT::Immediate-Configure per a més detalls. (%d)" +"No s'ha pogut realitzar la configuració immediata de «%s». Vegeu man 5 " +"apt.conf dins de APT::Immediate-Configure per a més detalls. (%d)" #: apt-pkg/packagemanager.cc #, c-format @@ -1632,10 +1674,6 @@ msgstr "" "Alguns fitxers d'índex no s'han pogut baixar. S'han omès, 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 @@ -1804,12 +1842,6 @@ msgstr "El paquet «%s» no està instal·lat, així que no se suprimirà\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Tingueu en compte que s'està seleccionant «%s» en lloc de «%s»\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Ordres més utilitzades:" @@ -1922,26 +1954,31 @@ msgstr "La informació següent pot ajudar-vos a resoldre la situació:" msgid "Broken packages" msgstr "Paquets trencats" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "S'està escrivint l'informe d'error" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Un «usr» no unificat ja no està suportat, useu «usrmerge» per convertir-lo " +"en un sistema amb l'«usr» unificat." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "Seleccionat %s per eliminar.\n" +msgstr "Per més detalls, vegeu %s." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"No es poden obtenir alguns arxius. Proveu a executar apt-get update o " -"intenteu-ho amb --fix-missing." +"No es poden obtenir alguns arxius. Voleu provar a executar «apt update» " +"o intentar-ho amb «--fix-missing»?" #: apt-private/private-install.cc msgid "Internal error, InstallPackages was called with broken packages!" @@ -1984,6 +2021,11 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" "Que estrany… Les mides no coincideixen, informeu-ho a apt@packages.debian.org" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Mida de la descàrrega: %sB / %sB\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 @@ -1991,6 +2033,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Mida de la descàrrega: %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 @@ -1998,14 +2045,58 @@ msgstr "S'ha d'obtenir %sB/%sB d'arxius.\n" 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'utilitzaran %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 "Space needed: %sB / %sB available\n" +msgstr "Espai necessari: %sB / %sB disponible\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Cal més espai del que hi ha disponible: %sB > %sB, la instal·lació pot fallar" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "a %s: %sB / %sB disponible\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Cal més espai a %s del que hi ha disponible: %sB > %sB, la instal·lació pot " +"fallar" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Espai necessari: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Espai recuperat: %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 @@ -2022,19 +2113,20 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Voleu continuar?" +"No està permès eliminar paquets essencials crítics pel sistema. Això podria " +"inutilitzar el sistema." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Voleu continuar igualment?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Voleu continuar?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Voleu continuar?" #: apt-private/private-install.cc msgid "Abort." @@ -2096,6 +2188,13 @@ msgstr "" 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 +#, 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 package was automatically installed and is no longer required:" @@ -2118,15 +2217,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "Resultat calculat pel solucionador 3.0." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2136,6 +2228,10 @@ msgstr "Paquets suggerits:" msgid "Recommended packages:" msgstr "Paquets recomanats:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2270,19 +2366,53 @@ msgstr " o" msgid "The following packages have unmet dependencies:" msgstr "Els següents paquets tenen dependències sense satisfer:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Dependències no satisfetes:" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "S'instal·laran els paquets NOUS següents:" +# No es fa servir "S'està instal·lant:" perquè és un títol i després ve una pregunta per veure si s'instal·larà o no. E.g. fent "apt install PAQUET" l'apt ensenya "Instal·lant" (llistat de paquets) i "Instal·lant les dependències:" (llistat de paquets). I a continuació "Voleu continuar?" +# Amb "S'està instal·lant" ens sembla que l'acció està passant ara, i encara no passa. +# Una alternativa a considerar és "S'instal·laran" però potser és massa diferent de l'origen. +#: apt-private/private-output.cc +msgid "Installing:" +msgstr "Instal·lant:" + +# No es fa servir "S'està instal·lant:" perquè és un títol i després ve +# una pregunta per veure si s'instal·larà o no. E.g. fent "apt install +# PAQUET" l'apt ensenya "Instal·lant" (llistat de paquets) i "Instal·lant +# les dependències:" (llistat de paquets). I a continuació "Voleu +# continuar?" +# Amb "S'està instal·lant" ens sembla que l'acció està passant ara, i +# encara no passa. +# Una alternativa a considerar és "S'instal·laran" però potser és massa +# diferent de l'origen. +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Instal·lant les dependències:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "S'ESTÀ SUPRIMINT:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Se SUPRIMIRAN els paquets següents:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "S'han mantingut els paquets següents:" +msgstr "S'han ajornat les actualitzacions següents degut a escalonament:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "No s'està actualitzant encara degut a escalonament:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "No s'està actualitzant:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2292,10 +2422,22 @@ msgstr "S'han mantingut els paquets següents:" msgid "The following packages will be upgraded:" msgstr "S'actualitzaran els paquets següents:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "S'està actualitzant:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "S'ESTÀ DESACTUALITZANT:" + #: 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 "Changing held packages:" +msgstr "S'està canviant els paquets retinguts:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Es canviaran els paquets retinguts següents:" @@ -2313,26 +2455,50 @@ msgstr "" "AVÍS: Es suprimiran els paquets essencials següents.\n" "Això NO s'hauria de fer llevat que sapigueu exactament el que esteu fent!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Resum:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "S'està actualitzant: %lu, s'està instal·lant: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstal·lats, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "S'està reinstal·lant: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu desactualitzats, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "S'està desactualitzant: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "S'està suprimint: %lu, no s'està actualitzant: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2360,7 +2526,7 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2424,7 +2590,7 @@ msgstr " Taula de versions:" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "escalonada" #: apt-private/private-source.cc #, c-format @@ -2544,8 +2710,8 @@ msgstr "%s no té dependències de muntatge.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" @@ -2591,6 +2757,11 @@ msgstr "No s'ha pogut analitzar %s. Voleu tornar a editar-lo? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "El fitxer «%s» ha canviat, executeu «apt-get update».\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Voleu reescriure les fonts %zu?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2610,11 +2781,46 @@ msgstr "" "És preferible l'ús de %s abans que incrustar la informació d'inici de sessió " "directament a l'entrada %s per «%s»" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" +"L'entrada %s de «%s» s'hauria d'actualitzar a un «.sources» en format " +"«deb822»" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "No hi ha «Signed-By» a l'entrada %s de «%s»" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Considereu migrar totes les entrades de «sources.list(5)» al format «deb822» " +"de fitxer «.sources»" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" msgstr "" +"El format «deb822» de fitxer «.sources» és compatible amb claus OpenPGP tant " +"incloses com externes" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Consulteu «apt-secure(8)» per conèixer les bones pràctiques per configurar " +"la signatura de repositoris." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" +"Algunes fonts es poden modernitzar. Executeu «apt modernize-sources» per a " +"fer-ho." #: apt-private/private-update.cc #, c-format @@ -2664,6 +2870,10 @@ msgstr " Paquets virtuals mixtes: " msgid " Missing: " msgstr " Falten: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Nombre total de versions de fonts diferents: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Nombre total de versions diferents: " @@ -3021,6 +3231,10 @@ msgstr "cerca un registre SRV (per exemple, _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "concatena fitxers, amb descompressió automàtica" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "fitxer de «hash»" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "detecta el servidor intermediari usant apt.conf" @@ -3241,10 +3455,8 @@ msgid "remove packages" msgstr "elimina paquets" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "Suprimeix automàticament tots els paquets no utilitzats" +msgstr "suprimeix automàticament tots els paquets no utilitzats" #. system wide stuff #: cmdline/apt.cc @@ -3264,10 +3476,18 @@ msgstr "actualitza el sistema eliminant/instal·lant/actualitzant paquets" msgid "edit the source information file" msgstr "edita el fitxer d'informació d'origen" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "modernitza fitxers «.list» a fitxers «.sources»" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "satisfà cadenes de dependència" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Paràmetre per defecte incorrecte!" @@ -3461,14 +3681,14 @@ 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'" +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 conjunt de compressió" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "No s'ha pogut crear el conducte IPC al subprocés" @@ -3587,23 +3807,23 @@ msgstr "L'arxiu no té cap camp paquet" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s no té una entrada dominant\n" +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" +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" +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 tampoc no té una entrada dominant de binari\n" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s tampoc no té una entrada dominant de binari\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3641,7 +3861,7 @@ msgstr "Capçalera de dades no vàlida" msgid "Connection failed" msgstr "Ha fallat la connexió" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3687,7 +3907,7 @@ msgstr "No es pot muntar el CD-ROM en %s. Potser s'està utilitzant encara." msgid "Disk not found." msgstr "No s'ha trobat el disc." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fitxer no trobat" @@ -3722,7 +3942,7 @@ msgstr "No s'ha pogut crear un sòcol per a %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "No es pot iniciar la connexió a %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Ha fallat" @@ -3737,9 +3957,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" "No s'ha pogut connectar a %s:%s (%s). S'ha excedit el temps de connexió" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "S'està connectant a %s" @@ -3777,152 +3995,15 @@ msgstr "No s'ha pogut fer «stat»" msgid "Invalid URI, local URIS must not start with //" msgstr "URI no vàlid, els URI locals no poden començar per //" -#. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc -msgid "Logging in" -msgstr "S'està iniciant sessió" - -#: 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 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» de l'script 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 "S'ha esgotat el temps d'espera de la connexió" - -#: 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 malmès" - -#: 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. El temps de connexió s'ha " -"excedit" - -#: 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 ha pogut obtenir un sòcol d'escolta" - -# abastar? huh? jm -#: methods/ftp.cc -msgid "Could not bind a socket" -msgstr "No s'ha pogut vincular a un sòcol" - -#: methods/ftp.cc -msgid "Could not listen on the socket" -msgstr "No s'ha pogut escoltar al 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 "Hi ha hagut un problema calcul·lant la suma «hash» del 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "no es confia en l'algoritme de clau pública: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s serà considerat obsolet en una versió futura" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3945,29 +4026,20 @@ msgstr "" "l'empremta digital de la clau?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"No s'ha pogut executar «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 apt-key" +"No s'ha pogut executar «gpgv» per a verificar la signatura (està instal·lat " +"el «gnupg»?)" #: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" +msgid "Unknown error executing gpgv" +msgstr "S'ha produït un error desconegut en executar «gpgv»" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" -"La signatura per la clau %s usa un algoritme de resum «hash» dèbil (%s)" +msgstr "La signatura amb la clau %s usa un algoritme dèbil (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4003,18 +4075,163 @@ msgstr "Ha fallat la selecció" msgid "Connection timed out" msgstr "S'ha esgotat el temps d'espera de la connexió" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Hi ha hagut un problema calcul·lant la suma «hash» del fitxer" + #: methods/rred.cc msgid "Failed to set modification time" msgstr "No s'ha pogut establir l'hora 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Error GPG: %s: %s" + +# Si mai es tradueix el «apt-key»(8) canviar de DEPRECATION a la paraula feta servir al manual. +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "La clau està desada en un antic anell de claus «trusted.gpg» (%s); per " +#~ "més detalls, consulteu la secció DEPRECATION d'«apt-key»(8)." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "No s'admet el mètode «%s» i està desactivat per defecte. Considereu " +#~ "canviar a http(s). Establiu Dir::Bin::Methods::%s a «%s» per tornar-lo a " +#~ "activar." + +#~ msgid "Logging in" +#~ msgstr "S'està iniciant sessió" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "No es pot determinar el nom de la màquina distant" + +#~ msgid "Unable to determine the local name" +#~ msgstr "No es pot determinar el nom local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "El servidor ha rebutjat la connexió i ha dit: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER ha fallat, el servidor ha dit: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS ha fallat, el servidor ha dit: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "L'ordre «%s» de l'script d'accés ha fallat, el servidor ha dit: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE ha fallat, el servidor ha dit: %s" + +#~ msgid "Connection timeout" +#~ msgstr "S'ha esgotat el temps d'espera de la connexió" + +#~ msgid "Server closed the connection" +#~ msgstr "El servidor ha tancat la connexió" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Una resposta ha desbordat la memòria intermèdia." + +#~ msgid "Protocol corruption" +#~ msgstr "Protocol malmès" + +#~ msgid "Could not create a socket" +#~ msgstr "No s'ha pogut crear un sòcol" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "No s'ha pogut connectar amb el sòcol de dades. El temps de connexió s'ha " +#~ "excedit" + +#~ msgid "Could not connect passive socket." +#~ msgstr "No s'ha pogut connectar amb el sòcol passiu." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "gettaddrinfo no ha pogut obtenir un sòcol d'escolta" + +# abastar? huh? jm +#~ msgid "Could not bind a socket" +#~ msgstr "No s'ha pogut vincular a un sòcol" + +#~ msgid "Could not listen on the socket" +#~ msgstr "No s'ha pogut escoltar al sòcol" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "No s'ha pogut determinar el nom del sòcol" + +#~ msgid "Unable to send PORT command" +#~ msgstr "No es pot enviar l'ordre PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "La família d'adreces %u és desconeguda (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT ha fallat, el servidor ha dit: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "S'ha esgotat el temps de connexió al sòcol de dades" + +#~ msgid "Unable to accept connection" +#~ msgstr "No es pot acceptar la connexió" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "No és possible obtenir el fitxer, el servidor ha dit «%s»" + +#~ msgid "Data socket timed out" +#~ msgstr "S'ha esgotat el temps d'espera per al sòcol de dades" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Ha fallat la transferència de dades, el servidor ha dit '%s'" + +#~ msgid "Query" +#~ msgstr "Consulta" + +#~ msgid "Unable to invoke " +#~ msgstr "No es pot invocar " + +#~ msgid "Connection closed prematurely" +#~ msgstr "La connexió s'ha tancat prematurament" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Instal·lat: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Es canviaran els paquets retinguts següents:" + #~ msgid "Yes, do as I say!" #~ msgstr "Sí, fes el que et dic!" diff --git a/po/cs.po b/po/cs.po index 05da93f..e79d7f9 100644 --- a/po/cs.po +++ b/po/cs.po @@ -5,15 +5,15 @@ # # This file originally stated: # This file is put in the public domain. -# Miroslav Kure , 2004-2023. +# Miroslav Kure , 2004-2025. # # msgid "" msgstr "" -"Project-Id-Version: apt 2.5.6\n" +"Project-Id-Version: apt 3.0.2\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2023-02-10 12:58+0100\n" +"POT-Creation-Date: 2025-06-13 12:44+0200\n" +"PO-Revision-Date: 2025-05-20 15:18+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" "Language: cs\n" @@ -27,7 +27,7 @@ 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 " +"Aktualizaci z takového repozitáře nelze provést zabezpečeně a je proto " "implicitně zakázána." #: apt-pkg/acquire-item.cc @@ -35,7 +35,7 @@ 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í " +"Data z takového repozitáře nelze ověřit a proto je jejich použití " "potenciálně nebezpečné." #: apt-pkg/acquire-item.cc @@ -43,46 +43,46 @@ 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 " +"Podrobnosti o vytváření a nastavení repozitářů 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." +msgstr "Repozitář „%s“ již není podepsán." #: apt-pkg/acquire-item.cc #, c-format msgid "The repository '%s' no longer has a Release file." -msgstr "Repositář „%s“ již neobsahuje soubor Release." +msgstr "Repozitář „%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." +"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." +"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." +msgstr "Repozitář „%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." +msgstr "Repozitář „%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í." +msgstr "Repozitář „%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" +msgstr "Nelze přečíst odkaz %s" #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc #, c-format @@ -128,16 +128,18 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" +"Při ověřování podpisů se objevila chyba. Repozitář není aktualizovaný, tudíž " +"se použijí předchozí indexové soubory. Ověření OpenPGP podpisu selhalo: %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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "Ověření OpenPGP podpisu selhalo: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -145,7 +147,7 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" -"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ neobsahuje " +"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ neobsahuje " "komponentu „%s“ (není v sources.list překlep v názvu?)" #: apt-pkg/acquire-item.cc @@ -154,7 +156,7 @@ 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 " +"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ nepodporuje " "architekturu „%s“" #: apt-pkg/acquire-item.cc @@ -163,7 +165,7 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' does not seem to " "provide it (sources.list entry misspelt?)" msgstr "" -"Přeskakuje se stažení souboru „%s“, protože repositář „%s“ ho neposkytuje " +"Přeskakuje se stažení souboru „%s“, protože repozitář „%s“ ho neposkytuje " "(překlep v sources.list?)" #: apt-pkg/acquire-item.cc @@ -172,7 +174,7 @@ 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 " +"Přeskakuje se stažení souboru „%s“, protože repozitář „%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 @@ -185,7 +187,7 @@ msgid "" "repository will not be applied." msgstr "" "Soubor Release pro %s již expiroval (neplatný od %s). Aktualizace z tohoto " -"repositáře se nepoužijí." +"repozitáře se nepoužijí." #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is #. the time until the file will be valid - formatted in the same way as in @@ -197,26 +199,25 @@ msgid "" "this repository will not be applied." msgstr "" "Soubor Release pro %s ještě není platný (a nebude po dalších %s). " -"Aktualizace z tohoto repositáře se nepoužijí." +"Aktualizace z tohoto repozitář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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "Repositář „%s“ změnil svou hodnotu „%s“ z „%s“ na „%s“" +msgstr "Repozitář „%s“ změnil svou hodnotu „%s“ z „%s“ na „%s“" #: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its default priority for %s from %hi to %hi." -msgstr "Repositář „%s“ změnil svou výchozí prioritu pro %s z %hi na %hi." +msgstr "Repozitář „%s“ změnil svou výchozí prioritu pro %s z %hi na %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -229,7 +230,7 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" -"Než se začnou používat aktualizace z tohoto repositáře, je nutné to " +"Než se začnou používat aktualizace z tohoto repozitáře, je nutné to " "explicitně akceptovat. Podrobnosti naleznete v manuálové stránce %s." #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc @@ -237,6 +238,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Selhalo stažení %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Repozitáře by měly poskytovat podepsaný soubor InRelease, ale ten na %s " +"chybí." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -257,16 +267,6 @@ msgstr "Nelze najít zdroj pro stažení verze „%s“ balíku „%s“" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Metoda „%s“ není podporovaná a je ve výchozím nastavení zakázaná. Zvažte " -"přechod na http(s). Pro znovupovolení nastavte Dir::Bin::Methods::%s na " -"\"%s\"." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -663,6 +663,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaktická chyba %s:%u: Na konci souboru je zbytečné smetí" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Chyba:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Varování:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Upozornění:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audit:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Ladění:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -771,11 +795,11 @@ msgstr "Podproces %s vrátil chybový kód (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Chyba čtení" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Chyba zápisu" @@ -1086,6 +1110,13 @@ msgstr "Nelze uzamknout administrační adresář (%s). Jste root?" msgid "Not locked" msgstr "Není uzamčen" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"Program dpkg nastavený v Dir::Bin::dpkg neexistuje, použije se výchozí dpkg." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1277,6 +1308,14 @@ msgstr "Příprava na obdržení řešení" 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 apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Propočítává se aktualizace" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Řešení závislostí" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Spuštění externího řešitele" @@ -1576,10 +1615,6 @@ 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 @@ -1631,7 +1666,7 @@ msgstr "" msgid "" "Do you want to accept these changes and continue updating from this " "repository?" -msgstr "Chcete přijmout tyto změny a pokračovat v používání tohoto repositáře?" +msgstr "Chcete přijmout tyto změny a pokračovat v používání tohoto repozitáře?" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." @@ -1743,12 +1778,6 @@ msgstr "Balík „%s“ není nainstalován, nelze tedy odstranit\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Pozn: Vybírám „%s“ místo „%s“\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Nejpoužívanější příkazy:" @@ -1856,26 +1885,31 @@ msgstr "Následující informace vám mohou pomoci vyřešit tuto situaci:" msgid "Broken packages" msgstr "Poškozené balíky" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "Vytváří se chybové hlášení" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Nesloučený adresář usr již není podporován, převeďte systém na sloučený " +"nástrojem usrmerge." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "%s byl vybrán pro odstranění.\n" +msgstr "Více informací naleznete na %s." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nelze stáhnout některé archivy. Možná spusťte apt-get update nebo zkuste --" -"fix-missing?" +"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!" @@ -1907,13 +1941,18 @@ msgstr "" #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" -msgstr "Vnitřní chyba, třídění nedoběhlo do konce" +msgstr "Vnitřní chyba, řazení 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" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Stáhne se: %sB / %sB\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 @@ -1921,6 +1960,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Nutno stáhnout %sB/%sB archivů.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Stáhne se: %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 @@ -1928,13 +1972,57 @@ msgstr "Nutno stáhnout %sB/%sB archivů.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Požadované místo: %sB / %sB volných\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Je vyžadováno více místa, než je volného: %sB > %sB, instalace může selhat" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "v %s: %sB / %sB volných\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"V %s je vyžadováno více místa, než je volného: %sB > %sB, instalace může " +"selhat" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Požadované místo: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Uvolněné místo: %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 @@ -1954,18 +2042,17 @@ msgstr "" "Odstranění nezbytných systémově-kritických balíků není povoleno. Může to " "rozbít systém." -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Chcete pokračovat?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Přesto pokračovat?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Pokračovat?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Chcete pokračovat?" #: apt-private/private-install.cc msgid "Abort." @@ -2028,6 +2115,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Vnitřní chyba, AutoRemover pokazil věci" +#: 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 package was automatically installed and is no longer required:" @@ -2050,16 +2145,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "Výsledek spočítán řešitelem 3.0." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2069,6 +2156,10 @@ msgstr "Navrhované balíky:" msgid "Recommended packages:" msgstr "Doporučované balíky:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2202,19 +2293,41 @@ msgstr " nebo" msgid "The following packages have unmet dependencies:" msgstr "Následující balíky mají nesplněné závislosti:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "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 "Installing:" +msgstr "K instalaci:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Instalace závislostí:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "K ODSTRANĚNÍ:" + #: 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 -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Následující balíky jsou podrženy v aktuální verzi:" +msgstr "Následující aktualizace jsou odloženy kvůli fázování:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Zatím neaktualizováno kvůli fázování:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Neaktualizováno:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2224,10 +2337,22 @@ msgstr "Následující balíky jsou podrženy v aktuální verzi:" msgid "The following packages will be upgraded:" msgstr "Následující balíky budou aktualizovány:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "K aktualizaci:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "K DEGRADACI:" + #: 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 "Changing held packages:" +msgstr "Změna podržených balíků:" + #: 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:" @@ -2245,26 +2370,50 @@ 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 +msgid "Summary:" +msgstr "Souhrn:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Aktualizací: %lu, Instalací: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu přeinstalováno, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Přeinstalací: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu degradováno, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Degradací: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Odstranění: %lu, Neaktualizovaných: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2292,7 +2441,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2471,8 +2620,8 @@ msgstr "%s nemá žádné závislosti pro sestavení.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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)" @@ -2514,6 +2663,11 @@ msgstr "Nepodařilo se zpracovat %s. Zkusit znovu upravit?" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Soubor „%s“ se změnil, spusťte prosím „apt-get update“.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Přepsat %zu zdrojů?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2533,11 +2687,43 @@ msgstr "" "Použití %s je preferováno před zadáním přihlašovacích údajů přímo v %s v " "záznamu „%s“" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "%s záznam pro „%s“ by měl být aktualizován na deb822 .sources" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Chybí Signed-By v %s pro „%s“" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Zvažte migraci všech záznamů sources.list(5) do formátu deb822 .sources" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"Formát deb822 .sources podporuje jak klíče OpenPGP vložené v souboru, tak i " +"externí" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Nejlepší praktiky pro nastavení podepisování repozitářů naleznete v " +"manuálové stránce apt-secure(8)." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" +"Některé zdroje mohou být modernizovány. Provedete to příkazem „apt modernize-" +"sources“." #: apt-private/private-update.cc #, c-format @@ -2588,6 +2774,10 @@ msgstr " Smíšených virtuálních balíků: " msgid " Missing: " msgstr " Chybějících: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Celkem různých zdrojových verzí: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Celkem různých verzí: " @@ -2933,6 +3123,10 @@ msgstr "vyhledá SRV záznam (např. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "spojí soubory, automaticky je rozbalí" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "spočítá kontrolní součet souboru" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "detekuje proxy pomocí apt.conf" @@ -3167,10 +3361,18 @@ msgstr "aktualizuje systém instalací/aktualizací/odstraněním balíků" msgid "edit the source information file" msgstr "upraví soubor se zdroji balíků" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "modernizuje soubory .list na .sources" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "splní řetězec závislostí" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Chybné standardní nastavení!" @@ -3364,7 +3566,7 @@ msgstr "Neznámý kompresní algoritmus „%s“" msgid "Compressed output %s needs a compression set" msgstr "Komprimovaný výstup %s potřebuje kompresní sadu" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Selhalo vytvoření meziprocesové roury k podprocesu" @@ -3483,23 +3685,23 @@ 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" +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" +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" +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" +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" @@ -3537,7 +3739,7 @@ msgstr "Špatné datové záhlaví" msgid "Connection failed" msgstr "Spojení selhalo" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3550,8 +3752,8 @@ 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)" +"Automaticky zakázáno %s kvůli chybné odpovědi od serveru/proxy. (man 5 " +"apt.conf)" #: methods/basehttp.cc msgid "Internal error" @@ -3583,7 +3785,7 @@ msgstr "Nelze odpojit CD-ROM v %s - možná se stále používá." msgid "Disk not found." msgstr "Disk nebyl nalezen." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Soubor nebyl nalezen" @@ -3618,7 +3820,7 @@ msgstr "Nelze vytvořit socket pro %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Nelze navázat spojení na %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Selhalo" @@ -3632,9 +3834,7 @@ msgstr "Nelze se připojit k %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Nelze se připojit k %s:%s (%s), čas spojení vypršel" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Připojování k %s" @@ -3672,149 +3872,15 @@ msgstr "Selhalo vyhodnocení" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "nedůvěryhodný algoritmus veřejného klíče: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s bude v budoucím vydání odstraněn" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3835,26 +3901,16 @@ msgid "" 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?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" +msgstr "Nelze spustit „gpgv“ 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" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"Klíč je uložen v zastaralé klíčence trusted.gpg (%s), podrobnosti viz část " -"DEPRECATION v manuálové stránce apt-key(8)." +msgid "Unknown error executing gpgv" +msgstr "Neznámá chyba při spouštění gpgv" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" msgstr "Podpis klíčem %s používá slabý algoritmus (%s)" @@ -3890,18 +3946,151 @@ msgstr "Výběr selhal" msgid "Connection timed out" msgstr "Čas spojení vypršel" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problém s kontrolním součtem souboru" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Chyba GPG: %s: %s" + +#, c-format +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "Klíč je uložen v zastaralé klíčence trusted.gpg (%s). Použijte Signed-By. " +#~ "Podrobnosti naleznete v manuálové stránce apt-secure(8) v části " +#~ "UŽIVATELSKÉ NASTAVENÍ." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Metoda „%s“ není podporovaná a je ve výchozím nastavení zakázaná. Zvažte " +#~ "přechod na http(s). Pro znovupovolení nastavte Dir::Bin::Methods::%s na " +#~ "\"%s\"." + +#~ msgid "Logging in" +#~ msgstr "Přihlašování" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Nelze určit jméno druhé strany" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nelze určit lokální jméno" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Server zamítl naše spojení a řekl: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER selhal, server řekl: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS selhal, server řekl: %s" + +#~ 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ý." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Příkaz „%s“ přihlašovacího skriptu selhal, server řekl: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE selhal, server řekl: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Čas spojení vypršel" + +#~ msgid "Server closed the connection" +#~ msgstr "Server uzavřel spojení" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Odpověď přeplnila buffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Porušení protokolu" + +#~ msgid "Could not create a socket" +#~ msgstr "Nelze vytvořit socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Nelze připojit datový socket, čas spojení vypršel" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Nelze připojit pasivní socket." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo nezískal naslouchající socket" + +#~ msgid "Could not bind a socket" +#~ msgstr "Nelze navázat socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Nelze naslouchat na socketu" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Nelze určit jméno socketu" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Nelze odeslat příkaz PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Neznámá rodina adres %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT selhal, server řekl: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Spojení datového socketu vypršelo" + +#~ msgid "Unable to accept connection" +#~ msgstr "Nelze přijmout spojení" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nelze stáhnout soubor, server řekl „%s“" + +#~ msgid "Data socket timed out" +#~ msgstr "Datový socket vypršel" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Přenos dat selhal, server řekl „%s“" + +#~ msgid "Query" +#~ msgstr "Dotaz" + +#~ msgid "Unable to invoke " +#~ msgstr "Nelze vyvolat " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Spojení bylo předčasně ukončeno" + +#, c-format +#~ msgid " Installed size: %sB\n" +#~ msgstr " Velikost po instalaci: %sB\n" + #~ msgid "Yes, do as I say!" #~ msgstr "Ano, udělej to tak, jak říkám!" @@ -4018,8 +4207,8 @@ msgstr "Prázdné soubory nejsou platnými archivy" #~ "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)" +#~ "V souboru Release nelze najít očekávanou položku „%s“ (chybný " +#~ "sources.list nebo porušený soubor)" #~ msgid "Unmet dependencies. Try using --fix-broken." #~ msgstr "Nesplněné závislosti. Zkuste použít --fix-broken." @@ -4186,15 +4375,15 @@ msgstr "Prázdné soubory nejsou platnými archivy" #~ "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 " +#~ "Data z „%s“ nejsou podepsaná. Balíky z tohoto repozitář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." +#~ "Repozitář „%s“ neobsahuje soubor Release. To již není podporováno, " +#~ "kontaktujte prosím správce repozitáře." #~ msgid "Child process failed" #~ msgstr "Synovský proces selhal" @@ -4307,9 +4496,6 @@ msgstr "Prázdné soubory nejsou platnými archivy" #~ 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“" diff --git a/po/cy.po b/po/cy.po index e08af6b..3caef53 100644 --- a/po/cy.po +++ b/po/cy.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2005-06-06 13:46+0100\n" "Last-Translator: Dafydd Harries \n" "Language-Team: Welsh \n" @@ -50,8 +50,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -119,13 +119,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -181,8 +182,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -193,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -212,6 +212,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Methwyd cyrchu %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + # FIXME: case #: apt-pkg/acquire-item.cc #, c-format @@ -233,13 +240,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Yn cysylltu i %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -634,6 +634,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Gwall cystrawen %s:%u: Sbwriel ychwanegol ar ddiwedd y ffeil" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -744,11 +768,11 @@ msgstr "Dychwelodd is-broses %s gôd gwall (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Gorffenodd is-broses %s yn annisgwyl" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Gwall darllen" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Gwall ysgrifennu" @@ -1061,6 +1085,12 @@ msgstr "Ni ellir cloi'r cyfeiriadur rhestr" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, fuzzy, c-format @@ -1245,6 +1275,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +#, fuzzy +msgid "Calculating upgrade" +msgstr "Yn Cyfrifo'r Uwchraddiad" + +#: apt-pkg/edsp.cc +#, fuzzy +msgid "Solving dependencies" +msgstr "Cyfanswm Dibyniaethau: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1553,11 +1593,6 @@ 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 @@ -1726,12 +1761,6 @@ msgstr "Nid yw'r pecyn %s wedi ei sefydlu, felly ni chaif ei dynnu\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Sylwer, yn dewis %s yn hytrach na %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1838,6 +1867,12 @@ msgstr "Gall y wybodaeth canlynol gynorthwyo'n datrys y sefyllfa:" msgid "Broken packages" msgstr "Pecynnau wedi torri" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Gwall ysgrifennu" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1852,10 +1887,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Ni ellir cyrchu rhai archifau, efallai dylwch rhedeg apt-get update, neu " +"Ni ellir cyrchu rhai archifau, efallai dylwch rhedeg apt update, neu " "geidio defnyddio --fix-missing?" #: apt-private/private-install.cc @@ -1894,6 +1929,12 @@ msgstr "Gwall Mewnol wrth ychwanegu dargyfeiriad" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Wedi Sefydlu: " + #. 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 @@ -1901,6 +1942,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Mae angeyn cyrchu %sB/%sB o archifau.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1908,13 +1954,54 @@ msgstr "Mae angeyn cyrchu %sB/%sB o archifau.\n" 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\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 @@ -1932,19 +2019,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Ydych chi eisiau mynd ymlaen?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Ydych chi eisiau mynd ymlaen?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Erthylu." @@ -1999,6 +2085,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Gwall Mewnol, torrodd AllUpgrade bethau" +#: 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 "" @@ -2018,16 +2111,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2037,6 +2122,11 @@ msgstr "Pecynnau a awgrymmir:" msgid "Recommended packages:" msgstr "Pecynnau a argymhellir:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2166,10 +2256,30 @@ msgstr " neu" msgid "The following packages have unmet dependencies:" msgstr "Mae gan y pecynnau canlynol ddibyniaethau heb eu bodloni:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Methwyd bodloni dibyniaeth %s am %s: %s" + #: 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 +#, fuzzy +msgid "Installing:" +msgstr " Wedi Sefydlu: " + +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing dependencies:" +msgstr "Cyfanswm Dibyniaethau: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Caiff y pecynnau canlynol eu TYNNU:" @@ -2179,6 +2289,15 @@ msgstr "Caiff y pecynnau canlynol eu TYNNU:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl" +#: apt-private/private-output.cc +#, fuzzy +msgid "Not upgrading yet due to phasing:" +msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc #, fuzzy msgid "The following packages have been kept back:" @@ -2189,11 +2308,24 @@ msgstr "Mae'r pecynnau canlynol wedi eu dal yn ôl" msgid "The following packages will be upgraded:" msgstr "Caiff y pecynnau canlynol eu uwchraddio" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +msgid "Changing held packages:" +msgstr "Pecynnau wedi eu Pinio:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:" @@ -2213,26 +2345,50 @@ msgstr "" "NI DDYLIR gwneud hyn os nad ydych chi'n gwybod yn union beth rydych chi'n\n" "ei wneud!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr " Wedi Sefydlu: " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu wedi ailsefydlu, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr " Wedi Sefydlu: " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu wedi eu israddio, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2260,7 +2416,7 @@ msgid "Y" msgstr "I" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2437,8 +2593,8 @@ msgstr "Nid oes dibyniaethau adeiladu gan %s.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2476,6 +2632,11 @@ msgstr "Methwyd ailenwi %s at %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2493,12 +2654,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2550,6 +2736,11 @@ msgstr " Pecynnau Rhithwir Cymysg: " msgid " Missing: " msgstr " Ar Goll: " +#: cmdline/apt-cache.cc +#, fuzzy +msgid "Total distinct source versions: " +msgstr "Cyfanswm Fersiynau Gwahanol: " + #: cmdline/apt-cache.cc #, fuzzy msgid "Total distinct versions: " @@ -2894,6 +3085,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problem wrth stwnshio ffeil" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3142,12 +3339,20 @@ msgstr "" msgid "edit the source information file" msgstr "Yn cyfuno manylion Ar Gael" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Methwyd bodloni dibyniaeth %s am %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Rhagosodiad gwael!" @@ -3349,7 +3554,7 @@ msgstr "Dull Cywasgu Anhysbys '%s'" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Methwyd creu pibell cyfathrebu at isbroses" @@ -3470,23 +3675,23 @@ 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" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " Does dim cofnod gwrthwneud gan %.*s\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3529,7 +3734,7 @@ msgstr "Data pennawd gwael" msgid "Connection failed" msgstr "Methodd y cysylltiad" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3575,7 +3780,7 @@ msgstr "" msgid "Disk not found." msgstr "Ffeil heb ei ganfod" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Ffeil heb ei ganfod" @@ -3611,7 +3816,7 @@ msgstr "Methwyd creu soced ar gyfer %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Ni ellir cychwyn y cysylltiad i %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Methwyd" @@ -3625,9 +3830,7 @@ msgstr "Methwyd cysylltu i %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Methwyd cysylltu i %s:%s (%s), goramserodd y cysylltiad" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Yn cysylltu i %s" @@ -3665,152 +3868,14 @@ msgstr "Methwyd stat()" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3830,18 +3895,11 @@ msgid "" 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" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." +msgid "Unknown error executing gpgv" msgstr "" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. @@ -3882,18 +3940,133 @@ msgstr "Methwyd dewis" msgid "Connection timed out" msgstr "Goramserodd y cysylltiad" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem wrth stwnshio ffeil" + #: 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 "Logging in" +#~ msgstr "Yn mewngofnodi" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Ni ellir darganfod enw'r cymar" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Ni ellir darganfod yr enw lleol" + +#, fuzzy, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Gwrthodwyd y gweinydd ein cysyllriad, a dwedodd: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Methodd gorchymyn USER; meddai'r gweinydd: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Methodd gorchymyn PASS; meddai'r gweinydd: %s" + +#~ 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 +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Methodd y gorchymyn sgript mewngofnodi '%s'; meddai'r gweinydd: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Methodd gorchymyn TYPE; meddai'r gweinydd: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Goramser cysylltu" + +#~ msgid "Server closed the connection" +#~ msgstr "Caeodd y gweinydd y cysylltiad" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Gorlifodd ateb y byffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Llygr protocol" + +#~ msgid "Could not create a socket" +#~ msgstr "Methwyd creu soced" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Methwyd cysylltu soced data, goramserodd y cyslltiad" + +#, fuzzy +#~ msgid "Could not connect passive socket." +#~ msgstr "Methwyd cysylltu soced goddefol" + +# FIXME +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "Methodd getaddrinfo gael soced gwrando" + +#~ msgid "Could not bind a socket" +#~ msgstr "Methwyd rhwymo soced" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Methwyd gwrando ar y soced" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Methwyd canfod enw'r soced" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Methwyd danfod gorchymyn PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Teulu cyfeiriad anhysbys %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Methodd gorchymyn EPRT; meddai'r gweinydd: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Goramserodd cysylltiad y soced data" + +#~ msgid "Unable to accept connection" +#~ msgstr "Methwyd derbyn cysylltiad" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Methwyd cyrchu ffeil; meddai'r gweinydd '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Goramserodd soced data" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Methodd trosgludiad data; meddai'r gweinydd '%s'" + +#~ msgid "Query" +#~ msgstr "Ymholiad" + +# FIXME +#~ msgid "Unable to invoke " +#~ msgstr "Methwyd gweithredu " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Caewyd y cysylltiad yn gynnar" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Caiff y pecynnau wedi eu dal canlynol eu newid:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ie, gwna fel rydw i'n dweud!" diff --git a/po/da.po b/po/da.po index 958213b..de094bf 100644 --- a/po/da.po +++ b/po/da.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.4~rc2\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2017-03-02 23:51+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -62,11 +62,11 @@ 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." +"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." +"Dette er normalt ikke tilladt, men tilvalget " +"Acquire::AllowDowngradeToInsecureRepositories blev angivet for at overskrive." #: apt-pkg/acquire-item.cc #, c-format @@ -131,10 +131,14 @@ msgstr "" "autentificering?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -142,8 +146,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, fuzzy, c-format @@ -219,8 +223,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Konfliktdistribution: %s (forventede %s men fik %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -231,7 +234,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -250,6 +253,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Kunne ikke hente %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -270,13 +280,6 @@ msgstr "Kan ikke finde en kilde til at hente version »%s« for »%s«" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -673,6 +676,30 @@ msgstr "Syntaksfejl %s:%u: ryd direktiv kræver et tilvalgstræ som argument" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaksfejl %s:%u: Overskydende affald i slutningen af filen" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -782,11 +809,11 @@ msgstr "Underprocessen %s returnerede en fejlkode (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Underprocessen %s afsluttedes uventet" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Læsefejl" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Skrivefejl" @@ -1110,6 +1137,12 @@ msgstr "Kunne ikke låse administrationsmappen (%s), er du rod (root)?" msgid "Not locked" msgstr "Ikke låst" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1298,6 +1331,16 @@ msgstr "Forbered for modtagelse af løsning" msgid "External solver failed without a proper error message" msgstr "Ekstern problemløser fejlede uden en korrekt fejlbesked" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Beregner opgraderingen" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Sammenlagt afhængigheder: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Kør ekstern problemløser" @@ -1373,8 +1416,8 @@ 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)" +"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 @@ -1603,10 +1646,6 @@ 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 @@ -1770,12 +1809,6 @@ msgstr "Pakken »%s« er ikke installeret, så blev ikke fjernet\n" 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "De mest anvendte kommandoer:" @@ -1885,6 +1918,12 @@ msgstr "Følgende oplysninger kan hjælpe dig med at klare situationen:" msgid "Broken packages" msgstr "Ødelagte pakker" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Skrivefejl" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1900,10 +1939,10 @@ msgstr "Valgte %s for fjernelse.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Kunne ikke hente nogle af arkiverne. Prøv evt. at køre »apt-get update« " +"Kunne ikke hente nogle af arkiverne. Prøv evt. at køre »apt update« " "eller prøv med --fix-missing." #: apt-private/private-install.cc @@ -1943,6 +1982,12 @@ 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB / %sB\n" +msgstr "Kunne ikke hente pakkerne" + #. 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 @@ -1950,6 +1995,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "%sB/%sB skal hentes fra arkiverne.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB\n" +msgstr "Kunne ikke hente pakkerne" + #. 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 @@ -1957,13 +2008,55 @@ msgstr "%sB/%sB skal hentes fra arkiverne.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Gemt mærkat: %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 @@ -1981,19 +2074,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Vil du fortsætte?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Vil du fortsætte?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Afbryder." @@ -2054,6 +2146,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Intern fejl. AutoRemover ødelagde noget" +#: 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 package was automatically installed and is no longer required:" @@ -2075,15 +2174,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2093,6 +2185,10 @@ msgstr "Foreslåede pakker:" msgid "Recommended packages:" msgstr "Anbefalede pakker:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2230,10 +2326,32 @@ msgstr " eller" msgid "The following packages have unmet dependencies:" msgstr "Følgende pakker har uopfyldte afhængigheder:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Building dependency tree" +msgid "Unsatisfied dependencies:" +msgstr "Opbygger afhængighedstræ" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Installerer %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Sammenlagt afhængigheder: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Følgende pakker vil blive AFINSTALLERET:" @@ -2244,6 +2362,16 @@ msgstr "Følgende pakker vil blive AFINSTALLERET:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Følgende pakker er blevet holdt tilbage:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Følgende pakker er blevet holdt tilbage:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Følgende pakker er blevet holdt tilbage:" @@ -2252,10 +2380,24 @@ msgstr "Følgende pakker er blevet holdt tilbage:" msgid "The following packages will be upgraded:" msgstr "Følgende pakker vil blive opgraderet:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Følgende pakker vil blive NEDGRADERET:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "»Pinned« pakker:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Følgende tilbageholdte pakker vil blive ændret:" @@ -2273,26 +2415,52 @@ 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 +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu opgraderes, %lu nyinstalleres, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Installerer %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu geninstalleres, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Installerer %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu nedgraderes, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2320,7 +2488,7 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2502,11 +2670,11 @@ msgstr "%s har ingen opbygningsafhængigheder.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"Ingen arkitekturinformation tilgængelig for %s. Se apt.conf(5) " +"APT::Architectures for opsætning" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2542,6 +2710,11 @@ msgstr "Kunne ikke fortolke %s. Rediger igen? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Din »%s« fil blev ændret, kør venligst »apt-get update«.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2559,12 +2732,43 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Se apt-secure(8)-manualsiden for detaljer om arkivoprettelse og " +"brugerkonfiguration." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2612,6 +2816,12 @@ msgstr " Blandede virtuelle pakker: " msgid " Missing: " msgstr " Manglende: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Totale forskellige versioner: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Totale forskellige versioner: " @@ -2967,6 +3177,12 @@ msgstr "slå en SRV-post op (f.eks. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "sammenkæd filer, med automatisk dekomprimering" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problem ved \"hashing\" af fil" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "detekter proxy via apt.conf" @@ -3215,12 +3431,20 @@ msgstr "" msgid "edit the source information file" msgstr "rediger source-informationsfilen (kildefilen)" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Building dependency tree" msgid "satisfy dependency strings" msgstr "Opbygger afhængighedstræ" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Ugyldig standardindstilling!" @@ -3419,7 +3643,7 @@ msgstr "Ukendt komprimeringsalgoritme »%s«" msgid "Compressed output %s needs a compression set" msgstr "Komprimerede uddata %s kræver et komprimeringssæt" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Kunne ikke oprette IPC-videreførsel til underproces" @@ -3538,24 +3762,25 @@ 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" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" msgstr "" -" %s har ingen linje med tilsidesættelse af standard for binøre filer\n" +" %.*s har ingen linje med tilsidesættelse af standard for binøre filer\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3594,7 +3819,7 @@ msgstr "Ugyldige hoved-data" msgid "Connection failed" msgstr "Forbindelsen mislykkedes" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3638,7 +3863,7 @@ msgstr "Kunne ikke afmontere cdrommen i %s, den er muligvis stadig i brug." msgid "Disk not found." msgstr "Disk blev ikke fundet." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fil blev ikke fundet" @@ -3674,7 +3899,7 @@ msgstr "Kunne ikke oprette sokkel til %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Kan ikke oprette forbindelse til %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Mislykkedes" @@ -3688,9 +3913,7 @@ msgstr "Kunne ikke forbinde til %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Kunne ikke forbinde til %s:%s (%s) grundet tidsudløb" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Forbinder til %s" @@ -3728,148 +3951,14 @@ msgstr "Kunne ikke finde" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3891,22 +3980,20 @@ 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Ukendt fejl ved kørsel af apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, fuzzy, c-format @@ -3946,18 +4033,138 @@ msgstr "Valg mislykkedes" msgid "Connection timed out" msgstr "Tidsudløb på forbindelsen" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem ved \"hashing\" af fil" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG-fejl: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Logget på" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Kunne ikke bestemme serverens navn" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Kunne ikke bestemme det lokale navn" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Serveren nægtede os forbindelse og sagde: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "angivelse af brugernavn mislykkedes, serveren sagde: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "angivelse af adgangskode mislykkedes, serveren sagde: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Logpå-skriptets kommando »%s« mislykkedes. Serveren sagde: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE mislykkedes. Serveren sagde: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Tidsudløb på forbindelsen" + +#~ msgid "Server closed the connection" +#~ msgstr "Serveren lukkede forbindelsen" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Mellemlageret blev overfyldt af et svar." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokolfejl" + +#~ msgid "Could not create a socket" +#~ msgstr "Kunne ikke oprette sokkel" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Kunne ikke forbinde datasokkel, tidsudløb på forbindelsen" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Kunne ikke forbinde passiv sokkel." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo kunne ikke få en lyttesokkel" + +#~ msgid "Could not bind a socket" +#~ msgstr "Kunne ikke tilknytte en sokkel" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Kunne ikke lytte på soklen" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Kunne ikke finde soklens navn" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Kunne ikke sende PORT-kommando" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Ukendt adressefamilie %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT mislykkedes. Serveren sagde: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Tidsudløb på datasokkel-forbindelse" + +#~ msgid "Unable to accept connection" +#~ msgstr "Kunne ikke acceptere forbindelse" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Kunne ikke hente fil. Serveren sagde »%s«" + +#~ msgid "Data socket timed out" +#~ msgstr "Tidsudløb ved datasokkel" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Dataoverførsel mislykkedes, serveren sagde »%s«" + +#~ msgid "Query" +#~ msgstr "Forespørgsel" + +#~ msgid "Unable to invoke " +#~ msgstr "Kunne ikke udføre " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Forbindelsen lukkedes for hurtigt" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installeret: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Følgende tilbageholdte pakker vil blive ændret:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ja, gør som jeg siger!" diff --git a/po/de.po b/po/de.po index a072597..51af4c7 100644 --- a/po/de.po +++ b/po/de.po @@ -4,7 +4,7 @@ # Licensing is complex as the msgid come from several files, please see # the individual files for licensing information. # -# Helge Kreutzmann , 2020-2023. +# Helge Kreutzmann , 2020-2023, 2025. # Holger Wansing , 2008, 2009, 2010, 2012, 2014, 2017, 2018. # Jens Seidel , 2008. # Michael Piefel , 2001, 2002, 2003, 2004, 2006. @@ -13,10 +13,10 @@ # msgid "" msgstr "" -"Project-Id-Version: apt 2.7.2\n" +"Project-Id-Version: apt 2.9.33\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2023-07-17 19:13+0200\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-03-15 08:18+0100\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: German \n" "Language: de\n" @@ -61,8 +61,8 @@ msgstr "Das Depot »%s« enthält keine Release-Datei mehr." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" "Dies ist normalerweise nicht erlaubt, was aber wegen der angegebenen Option " "»Acquire::AllowDowngradeToInsecureRepositories« unbeachtet blieb." @@ -134,17 +134,18 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "Während der Überprüfung der Signatur trat ein Fehler auf. Das Depot wurde " -"nicht aktualisiert und die vorherigen Indexdateien werden verwendet. GPG-" -"Fehler: %s: %s" +"nicht aktualisiert und die vorherigen Indexdateien werden verwendet. OpenPGP-" +"Signaturüberprüfung fehlgeschlagen: %s: %s" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "OpenPGP-Signaturüberprüfung fehlgeschlagen: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -213,8 +214,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Konflikt bei Distribution: %s (%s erwartet, aber %s bekommen)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Für das Depot »%s« wurde der »%s«-Wert von »%s« in »%s« geändert." @@ -227,7 +227,7 @@ msgstr "" "geändert." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -251,6 +251,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Fehlschlag beim Holen von %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Depots sollten eine InRelease-Datei mit Klartextsignatur bereitstellen, aber " +"unter %s wurde keine gefunden." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -274,16 +283,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Änderungsprotokoll (Changelog) nicht verfügbar für %s=%s" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Die Methode »%s« wird nicht unterstützt und ist standardmäßig deaktiviert. " -"Wechseln Sie, falls möglich, auf http(s). Um sie wieder zu aktivieren, " -"setzen Sie Dir::Bin::Methods::%s auf »%s«." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -700,6 +699,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaxfehler %s:%u: Zusätzlicher Unsinn am Dateiende" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Fehler:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Warnung:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Hinweis:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audit:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Fehlersuche:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -816,11 +839,11 @@ msgstr "Unterprozess %s hat Fehlercode zurückgegeben (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Unterprozess %s unerwartet beendet" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Lesefehler" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Schreibfehler" @@ -926,8 +949,8 @@ 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.)" +"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 @@ -1151,6 +1174,14 @@ msgstr "" msgid "Not locked" msgstr "Nicht gesperrt" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"Das in Dir::Bin::dpkg gesetzte Programm für Dpkg fehlt, es wird auf das " +"Standard-Dpkg zurückgefallen." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1343,6 +1374,14 @@ msgstr "Vorbereiten, eine Lösung zu erhalten" msgid "External solver failed without a proper error message" msgstr "Externer Problemlöser ohne ordnungsgemäße Fehlermeldung fehlgeschlagen" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Paketaktualisierung (Upgrade) wird berechnet" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Auflösen von Abhängigkeiten" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Externen Problemlöser ausführen" @@ -1420,8 +1459,8 @@ 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)" +"»%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 @@ -1662,10 +1701,6 @@ 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 @@ -1832,12 +1867,6 @@ msgstr "Paket »%s« ist nicht installiert, wird also auch nicht entfernt.\n" 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Meist verwendete Befehle:" @@ -1953,25 +1982,30 @@ msgstr "" msgid "Broken packages" msgstr "Beschädigte Pakete" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "Fehlerbericht wird geschrieben" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Nicht zusammengeführtes usr wird nicht mehr unterstützt, verwenden Sie " +"usrmerge, um auf ein zusammengeführtes-usr-System zu wechseln." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "%s zum Entfernen vorgewählt.\n" +msgstr "Siehe %s für weitere Details." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Einige Archive konnten nicht heruntergeladen werden; vielleicht »apt-get " +"Einige Archive konnten nicht heruntergeladen werden; vielleicht »apt " "update« ausführen oder mit »--fix-missing« probieren?" #: apt-private/private-install.cc @@ -2014,6 +2048,11 @@ msgstr "" "Wie merkwürdig … die Größen haben nicht übereingestimmt; schreiben Sie eine " "E-Mail an apt@packages.debian.org (auf Englisch bitte)." +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Herunterlade-Größe: %sB / %sB\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 @@ -2021,6 +2060,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Es müssen noch %sB von %sB an Archiven heruntergeladen werden.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Herunterlade-Größe: %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 @@ -2028,13 +2072,57 @@ msgstr "Es müssen noch %sB von %sB an Archiven heruntergeladen werden.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Benötigter Platz: %sB / %sB verfügbar\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Mehr Platz benötigt als verfügbar: %sB > %sB, Installation kann fehlschlagen" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "in %s: %sB / %sB verfügbar\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"In %s wird mehr Platz als verfügbar benötigt: %sB > %sB, Installation kann " +"fehlschlagen" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Benötigter Platz: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Freigegebener Platz: %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 @@ -2055,18 +2143,17 @@ msgstr "" "Das Entfernen essenzieller, system-kritischer Pakete ist nicht erlaubt. Dies " "kann das System beschädigen." -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Möchten Sie fortfahren?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Trotzdem fortfahren?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Fortfahren?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Möchten Sie fortfahren?" #: apt-private/private-install.cc msgid "Abort." @@ -2128,6 +2215,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Interner Fehler, AutoRemover hat etwas beschädigt." +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2152,15 +2246,8 @@ 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 -msgid "The following additional packages will be installed:" -msgstr "Die folgenden zusätzlichen Pakete werden installiert:" +msgid "Result calculated by the 3.0 solver." +msgstr "Ergebnis wurde vom 3.0-Problemlöser berechnet." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2170,6 +2257,10 @@ msgstr "Vorgeschlagene Pakete:" msgid "Recommended packages:" msgstr "Empfohlene Pakete:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Die folgenden zusätzlichen Pakete werden installiert:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2311,19 +2402,43 @@ msgstr " oder" msgid "The following packages have unmet dependencies:" msgstr "Die folgenden Pakete haben unerfüllte Abhängigkeiten:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Nichterfü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 "Installing:" +msgstr "Installiere:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Installiere Abhängigkeiten: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "ENTFERNE:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Die folgenden Pakete werden ENTFERNT:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Die folgenden Pakete sind zurückgehalten worden:" +msgstr "" +"Die folgenden Aktualisierungen sind wegen Phasenstufung zurückgestellt " +"worden:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Noch keine Aktualisierung wegen Phasenstufung:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Aktualisiere nicht:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2333,11 +2448,23 @@ msgstr "Die folgenden Pakete sind zurückgehalten worden:" msgid "The following packages will be upgraded:" msgstr "Die folgenden Pakete werden aktualisiert (Upgrade):" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Aktualisiere:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "ERSETZE DURCH ÄLTERE VERSION:" + #: 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 "Changing held packages:" +msgstr "Änderung von gehaltenen Paketen:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:" @@ -2355,26 +2482,50 @@ 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 +msgid "Summary:" +msgstr "Zusammenfassung:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Aktualisiere: %lu, Installiere: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu erneut installiert, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Installiere erneut: %lu, " + #: 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 "Downgrading: %lu, " +msgstr "Ersetze durch ältere Version: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Entferne: %lu, Aktualisiere nicht: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2402,7 +2553,7 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2591,8 +2742,8 @@ msgstr "%s hat keine Bauabhängigkeiten.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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." @@ -2639,6 +2790,12 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" "Ihre »%s«-Datei wurde verändert, bitte führen Sie »apt-get update« aus.\n" +# FIXME a TRANSLATOR note explaining this string would be helpful +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "%zu an »sources« umschreiben?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2658,12 +2815,47 @@ msgstr "" "Die Verwendung von %s sollte gegenüber der Methode bevorzugt werden, Login-" "Informationen direkt in den %s-Abschnitt für »%s« einzutragen." +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" +"Der Eintrag %s für »%s« sollte auf .sources im Format deb822 aktualisiert " +"werden." + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "Fehlendes Signed-By im Eintrag %s für »%s«" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Es wird empfohlen, alle sources.list(5)-Einträge in das deb822-Format " +"für .sources umzuwandeln" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"Das deb822-Format für .sources unterstützt sowohl eingebettete als auch " +"externe OpenPGP-Schlüssel" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Bewährte Vorgehensweisen zur Konfiguration des Signierens von Depots finden " +"Sie in apt-secure(8)." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" +"Einige Quellen können modernisiert werden. Führen Sie dafür »apt modernize-" +"sources« aus." + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2713,6 +2905,10 @@ msgstr " davon gemischte virtuelle Pakete: " msgid " Missing: " msgstr " davon fehlend: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Gesamtzahl an unterschiedlichen Quellversionen: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Gesamtzahl an unterschiedlichen Versionen: " @@ -2894,9 +3090,8 @@ msgstr "" "Aufruf: apt-dump-solver\n" "\n" "apt-dump-solver ist eine Schnittstelle zur Speicherung eines EDSP-Szenarios\n" -"in einer Datei sowie zur optionalen Weiterleitung an ein anderes " -"Problemlöser-\n" -"Programm.\n" +"in einer Datei sowie zur optionalen Weiterleitung an ein anderes\n" +"Problemlöser-Programm.\n" #: cmdline/apt-extracttemplates.cc msgid "" @@ -3082,6 +3277,10 @@ msgstr "einen SRV-Eintrag abfragen (z.B. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "verketten von Dateien, mit automatischer Dekomprimierung" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "Hash-Datei" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "erkennen eines Proxy-Servers mittels apt.conf" @@ -3331,10 +3530,18 @@ msgstr "" msgid "edit the source information file" msgstr "die Datei für die Paketquellen bearbeiten" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr ".list-Dateien wurden zu .sources-Dateien modernisiert" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "Abhängigkeitszeichenketten erfüllen" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Fehlerhafte Voreinstellung!" @@ -3540,7 +3747,7 @@ msgstr "Unbekannter Komprimierungsalgorithmus »%s«" msgid "Compressed output %s needs a compression set" msgstr "Komprimierte Ausgabe %s benötigt einen Komprimierungssatz." -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "" "Interprozesskommunikation mit Unterprozess konnte nicht aufgebaut werden." @@ -3660,23 +3867,23 @@ 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" +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" +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" +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" +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" @@ -3717,7 +3924,7 @@ msgstr "Fehlerhafte Kopfzeilendaten" msgid "Connection failed" msgstr "Verbindung fehlgeschlagen" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3765,7 +3972,7 @@ msgstr "" msgid "Disk not found." msgstr "Medium nicht gefunden" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Datei nicht gefunden" @@ -3800,7 +4007,7 @@ msgstr "Socket für %s konnte nicht erzeugt werden (f=%u t=%u p=%u)." msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Verbindung mit %s:%s kann nicht aufgebaut werden (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Fehlgeschlagen" @@ -3816,9 +4023,7 @@ msgstr "" "Verbindung mit %s:%s konnte nicht aufgebaut werden (%s), Zeitüberschreitung " "aufgetreten" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Verbindung mit %s" @@ -3857,151 +4062,15 @@ msgstr "Abfrage mit »stat« fehlgeschlagen" 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 +#: methods/gpgv.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: " +msgid "untrusted public key algorithm: %s" +msgstr "nicht vertrauenswürdiger »public key«-Algorithmus: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s wird in einer zukünftigen Veröffentlichung als veraltet markiert" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -4024,31 +4093,20 @@ msgstr "" "jedoch nicht ermittelt werden?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"»apt-key« konnte zur Überprüfung der Signatur nicht ausgeführt werden (ist " -"gnupg installiert?)" +"»gpgv« 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" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"Schlüssel ist im veralteten Schlüsselbund trusted.gpg gespeichert (%s), " -"siehe den Abschnitt MISSBILLIGUNG in apt-key(8) für Details." +msgid "Unknown error executing gpgv" +msgstr "Unbekannter Fehler beim Ausführen von gpgv" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" -"Signatur von Schlüssel %s verwendet einen schwachen Hash-Algorithmus (%s)" +msgstr "Signatur von Schlüssel %s verwendet einen schwachen Algorithmus (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4085,18 +4143,151 @@ msgstr "Auswahl fehlgeschlagen" msgid "Connection timed out" msgstr "Zeitüberschreitung bei Verbindung" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem bei Bestimmung des Hashwertes einer Datei" + #: 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." +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG-Fehler: %s: %s" + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Die Methode »%s« wird nicht unterstützt und ist standardmäßig " +#~ "deaktiviert. Wechseln Sie, falls möglich, auf http(s). Um sie wieder zu " +#~ "aktivieren, setzen Sie Dir::Bin::Methods::%s auf »%s«." + +#~ msgid "Logging in" +#~ msgstr "Anmeldung läuft" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Name des Kommunikationspartners kann nicht bestimmt werden." + +#~ msgid "Unable to determine the local name" +#~ msgstr "Lokaler Name kann nicht bestimmt werden." + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Verbindung durch Server abgelehnt; Server meldet: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Befehl USER fehlgeschlagen, Server meldet: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Befehl PASS fehlgeschlagen, Server meldet: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Befehl »%s« des Login-Skriptes fehlgeschlagen, Server meldet: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Befehl TYPE fehlgeschlagen: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Zeitüberschreitung der Verbindung" + +#~ msgid "Server closed the connection" +#~ msgstr "Verbindung durch Server geschlossen" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Durch eine Antwort wurde der Puffer zum Überlaufen gebracht." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokoll beschädigt" + +#~ msgid "Could not create a socket" +#~ msgstr "Socket konnte nicht erzeugt werden." + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Daten-Socket konnte wegen Zeitüberschreitung nicht verbunden werden." + +#~ msgid "Could not connect passive socket." +#~ msgstr "Passiver Socket konnte nicht verbunden werden." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "" +#~ "Von der Funktion getaddrinfo wurde kein auf Verbindungen wartender Socket " +#~ "gefunden." + +#~ msgid "Could not bind a socket" +#~ msgstr "Verbindung des Sockets nicht möglich" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Warten auf Verbindungen auf dem Socket nicht möglich" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Name des Sockets konnte nicht bestimmt werden." + +#~ msgid "Unable to send PORT command" +#~ msgstr "PORT-Befehl konnte nicht gesendet werden." + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Unbekannte Adressfamilie %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Befehl EPRT fehlgeschlagen: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Zeitüberschreitung bei Datenverbindungsaufbau" + +#~ msgid "Unable to accept connection" +#~ msgstr "Verbindung konnte nicht angenommen werden." + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Datei konnte nicht heruntergeladen werden; Server meldet: »%s«" + +#~ msgid "Data socket timed out" +#~ msgstr "Zeitüberschreitung bei Datenverbindung" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Datenübertragung fehlgeschlagen; Server meldet: »%s«" + +#~ msgid "Query" +#~ msgstr "Abfrage" + +#~ msgid "Unable to invoke " +#~ msgstr "Aufruf nicht möglich: " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Verbindung vorzeitig beendet" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installiert: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Die folgenden zurückgehaltenen Pakete werden verändert:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ja, tue was ich sage!" @@ -4506,9 +4697,6 @@ msgstr "Leere Dateien können kein gültiges Archiv sein." #~ 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« " diff --git a/po/dz.po b/po/dz.po index 21baf74..80b6244 100644 --- a/po/dz.po +++ b/po/dz.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2006-09-19 09:49+0530\n" "Last-Translator: Kinley Tshering \n" "Language-Team: Dzongkha \n" @@ -52,8 +52,8 @@ msgstr "སྣོད་ཐོ་%s་འདི་ཁ་ཕྱོགས་སྒ #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,13 +121,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -183,8 +184,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -195,7 +195,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -214,6 +214,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s %s་ ལེན་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོད།" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -234,13 +241,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "%s (%s)་ལུ་མཐུད་དོ།" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -625,6 +625,30 @@ msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u:བཀོད་ msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "ཚིག་སྦྱོར་འཛོལ་བ་%s:%u: ཡིག་སྣོད་ཀྱི་མཇུག་ལུ་མཁོ་མེད་ཐེབས།" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -735,11 +759,11 @@ msgstr "ཡན་ལག་ལས་སྦྱོར་%s་གིས་འཛོ msgid "Sub-process %s exited unexpectedly" msgstr "ཡན་ལག་ལས་སྦྱོར་་%s་གིས་རེ་བ་མེད་པར་ཕྱིར་ཐོན་ཡོདཔ་ཨིན།" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "འཛོལ་བ་ལྷབ།" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "འཛོལ་བ་འབྲི།" @@ -1047,6 +1071,12 @@ msgstr "ཐོ་བཀོད་འབད་ཡོད་པའི་སྣོད msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1228,6 +1258,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "ཡར་བསྐྱེད་རྩིས་བཏོན་དོ་" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "རྟེན་འབྲེལ་བསྡོམས:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1531,10 +1571,6 @@ 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 @@ -1700,12 +1736,6 @@ msgstr "ཐུམ་སྒྲིལ་%s་འདི་གཞི་བཙུག msgid "Note, selecting '%s' instead of '%s'\n" msgstr "%s་གི་ཚབ་ལུ་%s་སེལ་འཐུ་འབད་ནི་སེམས་ཁར་བཞག\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1809,6 +1839,12 @@ msgstr "འོག་གི་བརྡ་དོན་དེ་གིས་དུ msgid "Broken packages" msgstr "ཆད་པ་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ།" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "འཛོལ་བ་འབྲི།" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1823,10 +1859,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"ཡིག་མཛོད་ལ་ལུ་ཅིག་ལེན་མི་ཚུགས་པས་ apt-get་དུས་མཐུན་བཟོ་ནི་གཡོག་བཀོལ་ནི་ཨིན་ན་ཡང་ན་--fix-" +"ཡིག་མཛོད་ལ་ལུ་ཅིག་ལེན་མི་ཚུགས་པས་ apt་དུས་མཐུན་བཟོ་ནི་གཡོག་བཀོལ་ནི་ཨིན་ན་ཡང་ན་--fix-" "missing་དང་གཅིག་ཁར་འབད་རྩོལ་བསྐྱེད་ནི་ཨིན་ན་?" #: apt-private/private-install.cc @@ -1867,6 +1903,12 @@ msgstr "" "ག་ཅི་གི་ཡ་མཚན་ཆེ་མི་ཆེ་ ཚད་འདི་གིས་ email apt@packages.debian.org་ལུ་མཐུན་སྒྲིག་མི་འབད་" "བས།" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1874,6 +1916,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "%sBལེན་ནི་ལུ་དགོཔ་པས། ཡིག་མཛོད་ཚི་གི་%sB་\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1881,13 +1928,55 @@ msgstr "%sBལེན་ནི་ལུ་དགོཔ་པས། ཡིག་ 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1905,20 +1994,19 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -#, fuzzy -msgid "Do you want to continue?" -msgstr "ཁྱོན་ཀྱི་འཕྲོ་མཐུད་ནི་འབད་ནི་ཨིན་ན་" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +#, fuzzy +msgid "Do you want to continue?" +msgstr "ཁྱོན་ཀྱི་འཕྲོ་མཐུད་ནི་འབད་ནི་ཨིན་ན་" + #: apt-private/private-install.cc msgid "Abort." msgstr "བར་བཤོལ་འབད།" @@ -1972,6 +2060,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "ནང་འཁོད་འཛོལ་བ་ དཀའ་ངལ་མོས་མཐུན་འབད་མི་ཅ་ཆས་ཚུ་མེདཔ་ཐལ་ཡོད།" +#: 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 "" @@ -1991,16 +2086,8 @@ 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 "འོག་གི་ཐུམ་སྒྲིལ་ཐེབས་ཚུ་གཞི་བཙུགས་འབད་འོང་:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2010,6 +2097,11 @@ msgstr "བསམ་འཆར་བཀོད་ཡོད་པའི་ཐུམ msgid "Recommended packages:" msgstr "འོས་སྦྱོར་འབད་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "འོག་གི་ཐུམ་སྒྲིལ་ཐེབས་ཚུ་གཞི་བཙུགས་འབད་འོང་:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2143,10 +2235,31 @@ msgstr "ཡང་ན།" msgid "The following packages have unmet dependencies:" msgstr "འོག་གི་ཐུམ་སྒྲིལ་ཚུ་ལུ་རྟེན་འབྲེལ་མ་ཚང་པས:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "%s: %s་གི་དོན་ལུ་་%s་རྟེན་འབྲེལ་འདི་ངལ་རངས་འབད་ནི་འཐུས་ཤོར་བྱུང་ནུག" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "འོག་གི་ཐུམ་སྒྲིས་གསརཔ་འདི་ཚུ་ཁཞི་བཙུགས་འབད་འོང་:" +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "རྟེན་འབྲེལ་བསྡོམས:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་རྩ བསྐྲད་གཏང་འོང་:" @@ -2157,6 +2270,16 @@ msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ msgid "The following upgrades have been deferred due to phasing:" msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ལོག་སྟེ་རང་བཞག་ནུག:" @@ -2165,10 +2288,24 @@ msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ msgid "The following packages will be upgraded:" msgstr "འོག་གི་ཐུམ་སྒྲིལ་འདི་ཚུ་ཡར་བསྐྱེད་འབད་འོང་:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "འོག་གི་ཐུམ་སྒྲལ་འདི་ཚུ་མར་ཕབ་འབད་འོང་:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "ཁབ་གཟེར་བཏབ་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "འོག་གི་འཆང་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ་བསྒྱུར་བཅོས་འབད་འོང་:" @@ -2186,26 +2323,50 @@ msgstr "" "ཉེན་བརྡ:འོག་གི་ཉོ་མཁོ་བའི་ཐུམ་སྒྲིལ་ཚུ་རྩ་བསྐྲད་གཏང་འོང་།\n" "ཁྱོད་ཀྱིས་ཁྱོད་རང་ག་ཅི་འབདཝ་ཨིན་ན་ངེས་སྦེ་མ་ཤེས་ཚུན་འདི་འབད་ནི་མི་འོང་།!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu་ཡར་བསྐྱེད་འབད་ཡོད་ %lu་འདི་གསརཔ་སྦེ་གཞི་བཙུགས་འབད་ཡོད།" +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu་འདི་ལོག་གཞི་བཙུགས་འབད་ཡོད།" +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "གཞི་བཙུགས་འབད་ཡོད་པའི་%s།" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu་འདི་མར་ཕབ་འབད་ཡོད།" +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2233,7 +2394,7 @@ msgid "Y" msgstr "ཝའི།" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2408,8 +2569,8 @@ msgstr "%s ལུ་བཟོ་བརྩིགས་རྟེན་འབྲེ #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2446,6 +2607,11 @@ msgstr "%s་ལུ་%s་བསྐྱར་མིང་བཏགས་ནི msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2463,12 +2629,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2515,6 +2706,12 @@ msgstr "བར་ཅུ་ཡལ་ཐུམ་སྒྲིལ་སླ་བས msgid " Missing: " msgstr "བརླག་སྟོར་ཞུགས་པ:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "ཁྱད་རྟགས་ཅན་གྱི་ཐོན་རིམ་ཚུ་གི་བསྡོམས:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "ཁྱད་རྟགས་ཅན་གྱི་ཐོན་རིམ་ཚུ་གི་བསྡོམས:" @@ -2848,6 +3045,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "ཡིག་སྣོད་ལུ་་དྲྭ་རྟགས་བཀལ་བའི་བསྒང་དཀའ་ངལ།" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3094,12 +3297,20 @@ msgstr "" msgid "edit the source information file" msgstr "འཐོབ་ཚུགས་པའི་བརྡ་དོན་མཉམ་བསྡོམས་འབད་དོ།" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "%s: %s་གི་དོན་ལུ་་%s་རྟེན་འབྲེལ་འདི་ངལ་རངས་འབད་ནི་འཐུས་ཤོར་བྱུང་ནུག" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "སྔོན་སྒྲིག་བྱང་ཉེས་གཞི་སྒྲིག་འབད་དོ་!" @@ -3306,7 +3517,7 @@ msgstr " མ་ཤེས་ཨེབ་བཙུགས་ཨཱལ་གོ་ msgid "Compressed output %s needs a compression set" msgstr "ཨེབ་བཙུགས་འབད་ཡོད་པའི་ཨའུཊི་པུཊི་%sལུ་ཨེབ་བཙུགས་ཆ་ཚན་ཅིག་དགོཔ་འདུག" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "ཡན་ལག་ལས་སྦྱོར་ལུ་ཨའི་པི་སི་རྒྱུད་དུང་གསར་བསྐྲུན་འབད་ནི་ལུ་འཐུས་ཤོར་བྱུང་ཡོདཔ།" @@ -3425,23 +3636,23 @@ msgstr "ཡིག་མཛོད་ལུ་ཐུམ་སྒྲིལ་ཅི #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %sལུ་ཟུར་བཞག་ཐོ་བཀོད་མེད།\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*sལུ་ཟུང་ལྡན་མེདཔ་གཏང་ནིའི་་ཐོ་བཀོད་གང་རུང་ཡང་མིན་འདུག།\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3479,7 +3690,7 @@ msgstr "མགོ་ཡིག་གནད་སྡུད་བྱང་ཉེས msgid "Connection failed" msgstr "བཐུད་ལམ་འཐུས་ཤོར་བྱུང་ཡོད།" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3522,7 +3733,7 @@ msgstr "" msgid "Disk not found." msgstr "ཌིཀསི་དེ་འཚོལ་མ་ཐོབ།" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "ཡིག་སྣོད་འཚོལ་མ་ཐོབ།" @@ -3558,7 +3769,7 @@ msgstr "%s (f=%u t=%u p=%u)གི་དོན་ལུ་སོ་ཀེཊི msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "%s:%s (%s)ལུ་མཐུད་ལམ་དེ་འགོ་འབྱེད་འབད་མ་ཚུགས།" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "འཐུས་ཤོར་བྱུང་ཡོད།" @@ -3572,9 +3783,7 @@ msgstr " %s:%s (%s)ལུ་མཐུད་མ་ཚུགས།" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "%s་ལུ་མཐུད་དོ།" @@ -3612,148 +3821,14 @@ msgstr "ངོ་བཤུས་འབད་ནི་ལུ་འཐུས་ཤ 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "ལས་བཀོལ་འབད་མ་ཚུགས།" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3776,22 +3851,17 @@ msgstr "" #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "མིང་རྟགས་བདེན་སྦྱོར་འབད་ནི་ལུ་'%s'འདི་ལག་ལེན་འཐབ་མ་ཚུགས། (gnupg་དེ་ཁཞི་བཙུགས་འབད་ཡོདཔ་ཨིན་" "ན།?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key་ལག་ལེན་འཐབ་ནི་ལུ་མ་ཤེས་པའི་འཛོལ་བ་།" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3829,18 +3899,129 @@ msgstr "སེལ་འཐུ་འཐུས་ཤོར་བྱུང་ཡོ msgid "Connection timed out" msgstr "མཐུད་ལམ་ངལ་མཚམས་འབད་ཡོད།" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "ནང་བསྐྱོད་འབད་དོ།" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "དོ་བཉམ་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།" + +#~ msgid "Unable to determine the local name" +#~ msgstr "ཉེ་གནས་མིང་འདི་གཏན་འབེེབས་བཟོ་མ་ཚུགས།" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "སར་བར་འདི་གིས་ མཐུད་ལམ་འདི་ངོས་ལེན་འབད་མ་བཏུབ་པར་སླབ་མས: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "ལག་ལེན་པ་འཐུས་ཤོར་བྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས་: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "རྩི་སྤྲོད་འཐུས་ཤོར་བྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས་: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "པོརོ་སི་སར་བར་ཅིག་གསལ་བཀོད་འབད་ཡོད་འདི་འབདཝ་ད་ ནང་བསྐྱོད་ཡིག་ཚུགས་མིན་འདུག་ " +#~ "Acquire::ftp::ProxyLoginའདི་སྟོངམ་ཨིན་པས།" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "ནང་བསྐྱོད་ཡིག་ཚུགས་ བརྡ་བཀོད་'%s'་འདི་འཐོས་ཤོར་བྱུང་ཡོད་ སར་བར་གྱིས་སླབ་མས:%s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "ཡིག་དཔར་རྐྱབ་མ་བཏུབ་སར་བར་གྱིས་སླབ་མས། %s" + +#~ msgid "Connection timeout" +#~ msgstr "མཐུད་ལམ་ངལ་མཚམས" + +#~ msgid "Server closed the connection" +#~ msgstr "སར་བར་གྱིས་མཐུད་ལམ་འདི་ཁ་བསྡམས་ཏེ་ཡོདཔ་ཨིན།" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "ལན་གྱིས་ གནད་ཁོངས་གུར་ལས་ ལུད་སོང་སྟེ་ཡོདཔ་ཨིན།" + +#~ msgid "Protocol corruption" +#~ msgstr "གནད་སྤེལ་ལམ་ལུགས་ ངན་ཅན།" + +#~ msgid "Could not create a socket" +#~ msgstr "སོ་ཀེཊི་ཅིག་གསར་བསྐྲུན་འབད་མ་ཚུགས་པར་ཡོདཔ་ཨིན།" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་མཐུད་མ་ཚུགས་པར་ཡོདཔ་ཨིན་ མཐུད་ལམ་ངལ་མཚམས།" + +#~ msgid "Could not connect passive socket." +#~ msgstr "བྱ་ཡུལ་གྱི་སོ་ཀེཊི་མཐུད་མ་ཚུགས།" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo་འདི་གིས་ཉན་ནིའི་སོ་ཀེཊི་ཅིག་ལེན་མ་ཚུགས།" + +#~ msgid "Could not bind a socket" +#~ msgstr "སོ་ཀེཊི་ཅིག་བསྡམས་མ་ཚུགས།" + +#~ msgid "Could not listen on the socket" +#~ msgstr "སོ་ཀེཊི་གུར་ཉེན་མ་ཚུགས།" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "སོ་ཀེཊི་གི་མིང་འདི་གཏན་འབེབས་བཟོ་མ་ཚུགས།" + +#~ msgid "Unable to send PORT command" +#~ msgstr "འདྲེན་ལམ་གྱི་བརྡ་བཀོད་འདི་བཏང་མ་ཚུགས།" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "མ་ཤེས་པའི་ཁ་བྱང་གི་རིགས་ཚན་%u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "ཨི་པི་ཨར་ཊི་ འཐུས་ཤོར་བྱུང་ཡོད་ སར་བར་གིས་སླབ་མས:%s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་ མཐུད་ནི་ངལ་མཚམས་བྱུང་ནུག" + +#~ msgid "Unable to accept connection" +#~ msgstr "མཐུད་ལམ་འདི་དང་ལེན་འབད་མ་ཚུགས།" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "ཡིག་སྣོད་ལེན་མ་ཚུགས་ སར་བར་'%s'གིས་སླབ་མས" + +#~ msgid "Data socket timed out" +#~ msgstr "གནད་སྡུད་སོ་ཀེཊི་ངལ་མཚམས།" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "གནད་སྡུད་གནས་སོར་དེ་འཐུས་ཤོར་བྱུང་ཡོད་ སར་བར་'%s'་གིས་སླབ་མས།" + +#~ msgid "Query" +#~ msgstr "འདྲི་དཔྱད།" + +#~ msgid "Unable to invoke " +#~ msgstr "ལས་བཀོལ་འབད་མ་ཚུགས།" + +#~ msgid "Connection closed prematurely" +#~ msgstr "དུས་སུ་མ་འབབ་པ་རང་མཐུད་ལམ་འདི་ག་བསྡམས་ཡོད།" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "འོག་གི་འཆང་ཡོད་པའི་ཐུམ་སྒྲིལ་ཚུ་བསྒྱུར་བཅོས་འབད་འོང་:" + #~ msgid "Yes, do as I say!" #~ msgstr "ཨིན་ ང་གིས་སླབ་དོ་བཟུམ་སྦེ་རང་འབད!" @@ -4041,8 +4222,8 @@ msgstr "" #~ " -q འདི་གིས་ ཡར་འཕེལ་བརྡ་སྟོན་པ་འདི་ལྕོགས་མིན་བཟོཝ་ཨིན།.\n" #~ " -i འདི་གིས་ མ་ཚང་པའི་བརྡ་བཀོད་ཚུ་གི་དོན་ལུ་ གལ་ཅན་གྱི་ཌེཔསི་རྐྱངམ་ཅིག་སྟོན།.\n" #~ " -c=? འདི་གིས་ འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིན།.\n" -#~ " -o=? འདི་གིས་ མཐུན་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་ཁ་འདི་གཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་ eg -o dir::" -#~ "cache=/tmp\n" +#~ " -o=? འདི་གིས་ མཐུན་སྒྲིག་རིམ་སྒྲིག་གི་གདམ་ཁ་འདི་གཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་ eg -o " +#~ "dir::cache=/tmp\n" #~ " ཧེང་བཀལ་བརྡ་དོན་གི་དོན་ལུ་ ཨེ་apt-cache(8)དང་apt.conf(5)ལག་ཐོག་ཤོག་ལེབ་ཚུ་བལྟ།.\n" #~ msgid "" @@ -4071,16 +4252,16 @@ msgstr "" #~ msgstr "" #~ "ལག་ལེན: apt-sortpkgs [options] file1 [file2 ...]\n" #~ "\n" -#~ "apt-sortpkgs་ འདི་ཐུམ་སྒྲིལ་གི་ཡིག་སྣོད་ཚུ་དབྱེ་སེལ་འབད་ནི་ལུ་ འཇམ་སམ་གྱི་ལག་ཆས་ཅིག་ཨིན། -" -#~ "s གདམ་ཁ་འདི་ ཡིག་སྣོད་ཀྱི་དབྱེ་ཁག་ག་ཅི་བཟུམ་ཅིག་ཨིན་ན\n" +#~ "apt-sortpkgs་ འདི་ཐུམ་སྒྲིལ་གི་ཡིག་སྣོད་ཚུ་དབྱེ་སེལ་འབད་ནི་ལུ་ འཇམ་སམ་གྱི་ལག་ཆས་ཅིག་ཨིན། " +#~ "-s གདམ་ཁ་འདི་ ཡིག་སྣོད་ཀྱི་དབྱེ་ཁག་ག་ཅི་བཟུམ་ཅིག་ཨིན་ན\n" #~ "་བརྡ་སྟོན་འབད་ནིའི་དོན་ལུ་ལག་ལེན་འཐབ་སྟེ་ཡོདཔ་ཨིན།\n" #~ "\n" #~ "གདམ་ཁ་ཚུ:\n" #~ " -h འ་ནི་འདི་གིས་ཚིག་ཡིག་ལུ་གྲོགས་རམ་འབདཝ་ཨིན།\n" #~ " -s འདི་གིས་འབྱུང་ཁུངས་ ཡིག་སྣོད་གསོག་འཇོག་འབད་དོན་ལུ་ལག་ལེན་འཐབ་ཨིན།\n" #~ " -c=? འདི་གིས་འ་ནི་རིམ་སྒྲིག་ཡིག་སྣོད་འདི་ལྷགཔ་ཨིན།\n" -#~ " -o=? འདི་གིས་ མཐུན་སྒྲིག་ རིམ་སྒྲིག་གི་གདམ་ཁ་ཚུ་ཁཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་-o dir::" -#~ "cache=/tmp\n" +#~ " -o=? འདི་གིས་ མཐུན་སྒྲིག་ རིམ་སྒྲིག་གི་གདམ་ཁ་ཚུ་ཁཞི་སྒྲིག་འབདཝ་ཨིན་ དཔེར་ན་-o " +#~ "dir::cache=/tmp\n" #~ msgid "Child process failed" #~ msgstr "ཆ་ལག་ལས་སྦྱོར་དེ་འཐུས་ཤོར་བྱུང་ནུག" diff --git a/po/el.po b/po/el.po index efe8b91..854f8a9 100644 --- a/po/el.po +++ b/po/el.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2020-12-30 12:20+0200\n" "Last-Translator: Vangelis Skarmoutsos \n" "Language-Team: Greek \n" @@ -67,8 +67,8 @@ msgstr "Το αποθετήριο '%s' δεν έχει πια ένα αρχεί #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -133,13 +133,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -195,8 +196,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -207,7 +207,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -226,6 +226,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Αποτυχία ανάκτησης του %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -246,13 +253,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Το changelog δεν είναι διαθέσιμο για %s=%s" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -650,6 +650,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Συντακτικό σφάλμα %s:%u: Άχρηστοι χαρακτήρες στο τέλος του αρχείου" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -760,11 +784,11 @@ msgstr "Η υποδιεργασία %s επέστρεψε ένα κωδικός msgid "Sub-process %s exited unexpectedly" msgstr "Η υποδιεργασία %s εγκατέλειψε απρόσμενα" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Σφάλμα ανάγνωσης" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Σφάλμα εγγραφής" @@ -1067,6 +1091,12 @@ msgstr "Αδύνατο το κλείδωμα του διαχειριστικού msgid "Not locked" msgstr "Μη κλειδωμένο" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1247,6 +1277,16 @@ msgstr "Προετοιμασία για λήψη λύσης" msgid "External solver failed without a proper error message" msgstr "Ο εξωτερικός solver απέτυχε χωρίς κανονικό μήνυμα σφάλματος" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Υπολογισμός της αναβάθμισης" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Σύνολο Εξαρτήσεων: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Εκτέλεση εξωτερικού solver" @@ -1548,10 +1588,6 @@ msgstr "" "Μερικά αρχεία index απέτυχαν να ληφθούν. Είτε αγνοήθηκαν ή χρησιμοποιήθηκαν " "παλαιότερα στη θέση τους." -#: 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 @@ -1718,12 +1754,6 @@ msgstr "Το πακέτο %s δεν είναι εγκατεστημένο και msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Σημείωση, επιλέχθηκε το %s αντί του %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Οι πιο συχνές εντολές:" @@ -1831,6 +1861,12 @@ msgstr "Οι ακόλουθες πληροφορίες ίσως βοηθήσου msgid "Broken packages" msgstr "Χαλασμένα πακέτα" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Σφάλμα εγγραφής" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1846,10 +1882,10 @@ msgstr "Επιλέχθηκαν %s για αφαίρεση.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Αδύνατη η μεταφόρτωση μερικών αρχείων, ίσως αν δοκιμάζατε με apt-get update " +"Αδύνατη η μεταφόρτωση μερικών αρχείων, ίσως αν δοκιμάζατε με apt update " "ή το --fix-missing;" #: apt-private/private-install.cc @@ -1888,8 +1924,14 @@ msgstr "Εσωτερικό Σφάλμα, η Ταξινόμηση δεν ολοκ #: apt-private/private-install.cc msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" -"Πολύ περίεργο! Τα μεγέθη δεν ταιριάζουν, στείλτε μήνυμα στο apt@packages." -"debian.org" +"Πολύ περίεργο! Τα μεγέθη δεν ταιριάζουν, στείλτε μήνυμα στο " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB / %sB\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 @@ -1898,6 +1940,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Χρειάζεται να μεταφορτωθούν %sB/%sB από αρχεία.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB\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 @@ -1905,14 +1953,56 @@ msgstr "Χρειάζεται να μεταφορτωθούν %sB/%sB από αρ 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1931,19 +2021,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Θέλετε να συνεχίσετε;" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Θέλετε να συνεχίσετε;" + #: apt-private/private-install.cc msgid "Abort." msgstr "Εγκατάλειψη." @@ -2000,6 +2089,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Εσωτερικό Σφάλμα, το AutoRemover δημιούργησε κάποιο πρόβλημα" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2019,15 +2115,8 @@ msgstr[0] "%lu πακέτο εγκαταστάθηκε αυτόματα και 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 -msgid "The following additional packages will be installed:" -msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθούν:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2037,6 +2126,10 @@ msgstr "Προτεινόμενα πακέτα:" msgid "Recommended packages:" msgstr "Συνιστώμενα πακέτα:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Τα ακόλουθα επιπλέον πακέτα θα εγκατασταθούν:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2167,10 +2260,32 @@ msgstr " η" msgid "The following packages have unmet dependencies:" msgstr "Τα ακόλουθα πακέτα έχουν ανεπίλυτες εξαρτήσεις:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "satisfy dependency strings" +msgid "Unsatisfied dependencies:" +msgstr "εκπλήρωση των συμβολοσειρών εξαρτήσεων" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Τα ακόλουθα ΝΕΑ πακέτα θα εγκατασταθούν:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Εγκατάσταση του %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Σύνολο Εξαρτήσεων: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Τα ακόλουθα πακέτα θα ΑΦΑΙΡΕΘΟΥΝ:" @@ -2181,6 +2296,16 @@ msgstr "Τα ακόλουθα πακέτα θα ΑΦΑΙΡΕΘΟΥΝ:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:" @@ -2189,10 +2314,24 @@ msgstr "Τα ακόλουθα πακέτα θα μείνουν ως έχουν:" msgid "The following packages will be upgraded:" msgstr "Τα ακόλουθα πακέτα θα αναβαθμιστούν:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Τα ακόλουθα πακέτα θα ΥΠΟΒΑΘΜΙΣΤΟΥΝ:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Καθηλωμένα Πακέτα:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Τα ακόλουθα κρατημένα πακέτα θα αλλαχθούν:" @@ -2210,26 +2349,52 @@ msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Τα ακόλουθα απαραίτητα πακέτα θα αφαιρεθούν\n" "Αυτό ΔΕΝ θα έπρεπε να συμβεί, εκτός αν ξέρετε τι ακριβώς κάνετε!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu αναβαθμίστηκαν, %lu νέο εγκατεστημένα, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Εγκατάσταση του %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu επανεγκατεστημένα, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Εγκατάσταση του %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu υποβαθμισμένα, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2257,7 +2422,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "Ο" @@ -2433,8 +2598,8 @@ msgstr "το %s δεν έχει εξαρτήσεις χτισίματος.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2472,6 +2637,11 @@ msgstr "Αποτυχία ανάλυσης του %s. Επεξεργασία ξα msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Το αρχείο '%s' άλλαξε, παρακαλώ τρέξτε το 'apt-get update'.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2489,12 +2659,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2544,6 +2739,12 @@ msgstr " Μικτά Εικονικά Πακέτα: " msgid " Missing: " msgstr " Αγνοούμενα: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Σύνολο Διαφορετικών Εκδόσεων: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Σύνολο Διαφορετικών Εκδόσεων: " @@ -2866,6 +3067,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Πρόβλημα κατά το hashing του αρχείου" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3090,10 +3297,18 @@ msgstr "" msgid "edit the source information file" msgstr "επεξεργασία του αρχείου με τις πληροφορίες πηγής" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "εκπλήρωση των συμβολοσειρών εξαρτήσεων" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Κακή προκαθορισμένη ρύθμιση!" @@ -3295,7 +3510,7 @@ msgstr "Άγνωστος Αλγόριθμος Συμπίεσης '%s'" msgid "Compressed output %s needs a compression set" msgstr "Η συμπιεσμένη έξοδος του %s χρειάζεται καθορισμό συμπίεσης" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Αποτυχία κατά τη δημιουργία διασωλήνωσης IPC στην υποδιεργασία" @@ -3414,23 +3629,23 @@ msgstr "Η αρχειοθήκη δεν περιέχει πεδίο πακέτω #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s δεν περιέχει εγγραφή παράκαμψης\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s δεν έχει ούτε εγγραφή δυαδικής παράκαμψης\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3468,7 +3683,7 @@ msgstr "Ελαττωματικά δεδομένα επικεφαλίδας" msgid "Connection failed" msgstr "Η σύνδεση απέτυχε" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3510,7 +3725,7 @@ msgstr "Αδυναμία απόσυναρμογής του CD-ROM στο %s, μ msgid "Disk not found." msgstr "Ο δίσκος δεν βρέθηκε." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Το αρχείο Δε Βρέθηκε" @@ -3545,7 +3760,7 @@ msgstr "Αδύνατη η δημιουργία υποδοχής για το %s ( msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Αδύνατη η αρχικοποίηση της σύνδεσης στο %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Απέτυχε" @@ -3559,9 +3774,7 @@ msgstr "Αδύνατη η σύνδεση στο %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Σύνδεση στο %s" @@ -3599,148 +3812,14 @@ msgstr "Αποτυχία εύρεσης της κατάστασης" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "Αδύνατη η επίκληση " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3762,22 +3841,20 @@ msgstr "" "αποτυπώματος?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "Δεν μπόρεσε να εκτελεστεί το 'apt-key' για επιβεβαίωση της υπογραφής (είναι " "εγκατεστημένο το gnupg;)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Άγνωστο σφάλμα κατά την εκτέλεση του apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3817,18 +3894,135 @@ msgstr "Η επιλογή απέτυχε" msgid "Connection timed out" msgstr "Λήξη χρόνου σύνδεσης" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Πρόβλημα κατά το hashing του αρχείου" + #: 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 "Logging in" +#~ msgstr "Σύνδεση στο σύστημα" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Αδύνατος ο καθορισμός του ονόματος του ομότιμου (peer)" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Αδύνατος ο καθορισμός του τοπικού ονόματος" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Ο διακομιστής αρνήθηκε την σύνδεση με μήνυμα: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Η εντολή USER απέτυχε, ο διακομιστής απάντησε: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Η εντολή PASS απέτυχε, ο διακομιστής απάντησε: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "Ο διαμεσολαβητής έχει οριστεί αλλά χωρίς σενάριο εισόδου, το " +#~ "Acquire::ftp::ProxyLogin είναι άδειο." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "" +#~ "Η εντολή '%s' στο σενάριο εισόδου απέτυχε, ο διακομιστής απάντησε: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Η εντολή TYPE απέτυχε, ο διακομιστής απάντησε: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Λήξη χρόνου σύνδεσης" + +#~ msgid "Server closed the connection" +#~ msgstr "Ο διακομιστής έκλεισε την σύνδεση" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Το μήνυμα απάντησης υπερχείλισε την ενδιάμεση μνήμη." + +#~ msgid "Protocol corruption" +#~ msgstr "Αλλοίωση του πρωτοκόλλου" + +#~ msgid "Could not create a socket" +#~ msgstr "Αδύνατη η δημιουργία μιας υποδοχής (socket)" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Αδύνατη η σύνδεση υποδοχής δεδομένων, λήξη χρόνου σύνδεσης" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Αδύνατη η σύνδεση σε παθητική υποδοχή (socket)." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "Το getaddrinfo ήταν αδύνατο να δεσμεύσει υποδοχή παρακολούθησης" + +#~ msgid "Could not bind a socket" +#~ msgstr "Αδύνατη η πρόσδεση στην υποδοχή (socket)" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Αδύνατη η παρακολούθηση της υποδοχής (socket)" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Αδύνατος ο καθορισμός του ονόματος της υποδοχής (socket)" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Αδύνατη η αποστολή της εντολής PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Άγνωστη οικογένεια διευθύνσεων %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Το EPRT απέτυχε, ο διακομιστής απάντησε: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Λήξη χρόνου σύνδεσης στην υποδοχή δεδομένων" + +#~ msgid "Unable to accept connection" +#~ msgstr "Αδύνατη η αποδοχή συνδέσεων" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Αδυναμία λήψης του αρχείου, ο διακομιστής απάντησε '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Λήξη χρόνου υποδοχής δεδομένων" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Αποτυχία κατά τη μεταφορά δεδομένων, ο διακομιστής απάντησε '%s'" + +#~ msgid "Query" +#~ msgstr "Επερώτηση" + +#~ msgid "Unable to invoke " +#~ msgstr "Αδύνατη η επίκληση " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Η σύνδεση έκλεισε πρόωρα" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Εγκατεστημένα: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Τα ακόλουθα κρατημένα πακέτα θα αλλαχθούν:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ναι, κανε ότι λέω!" @@ -4072,8 +4266,8 @@ msgstr "" #~ " -V Εμφάνισε λεπτομερείς αριθμούς εκδόσεων\n" #~ " -c=? Διάβασε αυτό το αρχείο ρυθμίσεων\n" #~ " -o=? Θέσε μια αυθαίρετη παράμετρο, πχ -o dir::cache=/tmp\n" -#~ "Δείτε τις σελίδες εγχειριδίου apt-get(8), sources.list(5) και apt." -#~ "conf(5)\n" +#~ "Δείτε τις σελίδες εγχειριδίου apt-get(8), sources.list(5) και " +#~ "apt.conf(5)\n" #~ "για περισσότερες πληροφορίες και επιλογές.\n" #~ " This APT has Super Cow Powers.\n" diff --git a/po/es.po b/po/es.po index b94449e..fe417b1 100644 --- a/po/es.po +++ b/po/es.po @@ -37,10 +37,10 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.10\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2016-01-26 01:51+0100\n" -"Last-Translator: Manuel \"Venturi\" Porras Peralta \n" +"Last-Translator: Manuel \"Venturi\" Porras Peralta " +"\n" "Language-Team: Español; Castellano \n" "Language: es\n" "MIME-Version: 1.0\n" @@ -114,11 +114,11 @@ 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." +"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." +"Normalmente no está permitido, pero se ha dado la opción " +"«Acquire::AllowDowngradeToInsecureRepositories» para anularlo." #: apt-pkg/acquire-item.cc #, c-format @@ -183,10 +183,14 @@ msgstr "" "autenticación?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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 " @@ -195,8 +199,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, fuzzy, c-format @@ -272,8 +276,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribución conflictiva: %s (se esperaba %s, pero se obtuvo %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -284,7 +287,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -303,6 +306,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Fallo al obtener %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -325,13 +335,6 @@ msgstr "" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -750,6 +753,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Error de sintaxis %s:%u: Basura extra al final del archivo" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -865,11 +892,11 @@ msgstr "El subproceso %s devolvió un código de error (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Error de lectura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Error de escritura" @@ -1202,6 +1229,12 @@ msgstr "" msgid "Not locked" msgstr "No bloqueado" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1394,6 +1427,16 @@ msgstr "Preparar para recibir una solución" msgid "External solver failed without a proper error message" msgstr "Falló solucionador externo sin un mensaje de error apropiado" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calculando la actualización" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Dependencias totales: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Ejecutar solucionador externo" @@ -1492,8 +1535,8 @@ msgid "" 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»." +"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" @@ -1707,10 +1750,6 @@ 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 @@ -1874,12 +1913,6 @@ msgstr "El paquete «%s» no está instalado, no se eliminará\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Nota, seleccionando «%s» en lugar de «%s»\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Órdenes más utilizadas:" @@ -1897,8 +1930,8 @@ msgid "" "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" +"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" @@ -1991,6 +2024,12 @@ msgstr "La siguiente información puede ayudar a resolver la situación:" msgid "Broken packages" msgstr "Paquetes rotos" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Error de escritura" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -2006,10 +2045,10 @@ msgstr "Seleccionado %s para eliminar.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"No se pudieron obtener algunos archivos, ¿quizás deba ejecutar «apt-get " +"No se pudieron obtener algunos archivos, ¿quizás deba ejecutar «apt " "update» o deba intentarlo de nuevo con --fix-missing?" #: apt-private/private-install.cc @@ -2051,8 +2090,14 @@ 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" +"Qué extraño... Los tamaños no concuerdan, mande un correo a " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB / %sB\n" +msgstr "Falló la descarga" #. 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 @@ -2061,6 +2106,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Se necesita descargar %sB/%sB de archivos.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB\n" +msgstr "Falló la descarga" + #. 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 @@ -2068,14 +2119,56 @@ msgstr "Se necesita descargar %sB/%sB de archivos.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Etiqueta guardada: %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 @@ -2093,19 +2186,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "¿Desea continuar?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "¿Desea continuar?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Anulado." @@ -2165,6 +2257,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Error interno, «AutoRemover» rompió cosas" +#: 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 package was automatically installed and is no longer required:" @@ -2188,15 +2287,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2206,6 +2298,10 @@ msgstr "Paquetes sugeridos:" msgid "Recommended packages:" msgstr "Paquetes recomendados:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2338,10 +2434,32 @@ msgstr " o" msgid "The following packages have unmet dependencies:" msgstr "Los siguientes paquetes tienen dependencias incumplidas:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "No se pudo satisfacer la dependencia %s para %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Instalando %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Dependencias totales: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Los siguientes paquetes se ELIMINARÁN:" @@ -2352,6 +2470,16 @@ msgstr "Los siguientes paquetes se ELIMINARÁN:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Los siguientes paquetes se han retenido:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Los siguientes paquetes se han retenido:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Los siguientes paquetes se han retenido:" @@ -2360,10 +2488,24 @@ msgstr "Los siguientes paquetes se han retenido:" msgid "The following packages will be upgraded:" msgstr "Se actualizarán los siguientes paquetes:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Se DESACTUALIZARÁN los siguientes paquetes:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Paquetes con pin:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Se cambiarán los siguientes paquetes retenidos:" @@ -2381,26 +2523,52 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalados, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu desactualizados, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2428,7 +2596,7 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2610,11 +2778,11 @@ msgstr "%s no tiene dependencias de construcción.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"No hay información disponible de arquitectura para %s. Vea apt.conf(5) " +"APT::Arquitecturas para la configuración" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2655,6 +2823,11 @@ msgstr "Fallo al analizar %s. ¿Editar de nuevo?" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "El fichero «%s» cambió, ejecute «apt-get update».\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2672,12 +2845,43 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +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-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2726,6 +2930,12 @@ msgstr " Paquetes virtuales mixtos: " msgid " Missing: " msgstr " Faltan: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Versiones diferentes totales: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Versiones diferentes totales: " @@ -3084,6 +3294,12 @@ msgstr "buscar un registro SRV (por ejemplo, _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "concatenar ficheros, con descompresión automática" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid " files " +msgid "hash file" +msgstr " archivos " + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "detecta el proxy usando apt.conf" @@ -3334,12 +3550,20 @@ msgstr "actualiza el sistema eliminando/instalando/actualizando paquetes" msgid "edit the source information file" msgstr "edita el fichero de información de fuentes" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "No se pudo satisfacer la dependencia %s para %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "¡Parámetro predeterminado incorrecto!" @@ -3544,7 +3768,7 @@ msgstr "Algoritmo desconocido de compresión «%s»" msgid "Compressed output %s needs a compression set" msgstr "Salida comprimida %s necesita una herramienta de compresión" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Fallo al crear una tubería IPC para el subproceso" @@ -3663,23 +3887,23 @@ 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" +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" +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" +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" +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" @@ -3717,7 +3941,7 @@ msgstr "Datos de cabecera incorrectos" msgid "Connection failed" msgstr "Falló la conexión" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3761,7 +3985,7 @@ msgstr "No se puede desmontar el CD-ROM de %s, tal vez aún se está utilizando. msgid "Disk not found." msgstr "Disco no encontrado." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fichero no encontrado" @@ -3797,7 +4021,7 @@ msgstr "No se pudo crear un socket para %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "No se puede iniciar la conexión a %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Falló" @@ -3811,9 +4035,7 @@ msgstr "No se pudo conectar a %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" @@ -3851,148 +4073,14 @@ msgstr "Fallo al leer" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -4016,22 +4104,20 @@ msgstr "" "digital?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Error desconocido ejecutando «apt-key»" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -4070,18 +4156,139 @@ msgstr "Falló la selección" msgid "Connection timed out" msgstr "Caducó la conexión" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problema al cifrar el fichero" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Error de GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Ingresando" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "No se pudo determinar el nombre del par" + +#~ msgid "Unable to determine the local name" +#~ msgstr "No se pudo determinar el nombre local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "El servidor rechazó la conexión y devolvió: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Usuario (USER) falló, el servidor devolvió: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Clave (PASS) falló, el servidor devolvió: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Falló la orden «%s» del script de entrada, el servidor devolvió: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Tipo (TYPE) falló, el servidor devolvió: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Caducó la conexión" + +#~ msgid "Server closed the connection" +#~ msgstr "El servidor cerró la conexión" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "La respuesta desbordó la memoria intermedia (buffer)." + +#~ msgid "Protocol corruption" +#~ msgstr "Fallo del protocolo" + +#~ msgid "Could not create a socket" +#~ msgstr "No se pudo crear el socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "No se pudo conectar el socket de datos, caducó el tiempo de conexión" + +#~ msgid "Could not connect passive socket." +#~ msgstr "No se pudo conectar el socket pasivo." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "«getaddrinfo» no pudo obtener un socket pasivo" + +#~ msgid "Could not bind a socket" +#~ msgstr "No se pudo asociar el socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "No se pudo escuchar en el socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "No se pudo determinar el nombre del socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "No se pudo mandar la orden PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Familia de direcciones %u desconocida (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT falló, el servidor devolvió: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Caducó conexión al socket de datos" + +#~ msgid "Unable to accept connection" +#~ msgstr "No se pudo aceptar la conexión" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "No se pudo obtener el fichero, el servidor devolvió «%s»" + +#~ msgid "Data socket timed out" +#~ msgstr "Caducó el socket de datos" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Falló transferencia de datos, el servidor devolvió «%s»" + +#~ msgid "Query" +#~ msgstr "Consulta" + +#~ msgid "Unable to invoke " +#~ msgstr "No se pudo invocar " + +#~ msgid "Connection closed prematurely" +#~ msgstr "La conexión se cerró prematuramente" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Instalados: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Se cambiarán los siguientes paquetes retenidos:" + #~ msgid "Yes, do as I say!" #~ msgstr "Sí, ¡haga lo que le digo!" @@ -4300,8 +4507,8 @@ msgstr "Los ficheros vacíos no pueden ser archivos válidos" #~ " -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" +#~ " -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" @@ -5013,9 +5220,6 @@ msgstr "Los ficheros vacíos no pueden ser archivos válidos" #~ msgid "B " #~ msgstr "B " -#~ msgid " files " -#~ msgstr " archivos " - #~ msgid " pkgs in " #~ msgstr " paquetes en " diff --git a/po/eu.po b/po/eu.po index c82b7e3..a2cc493 100644 --- a/po/eu.po +++ b/po/eu.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2009-05-17 00:41+0200\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -52,8 +52,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -120,13 +120,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -182,8 +183,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -194,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -213,6 +213,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Ezin da lortu %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -233,13 +240,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Konektatzen -> %s.(%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -625,6 +625,30 @@ msgstr "Sintaxi errorea, %s:%u: Direktibak goi-mailan bakarrik egin daitezke" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Sintaxi errorea, %s:%u: Zabor gehigarria fitxategi amaieran" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -737,11 +761,11 @@ msgstr "%s azpiprozesuak errore kode bat itzuli du (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "%s azpiprozesua ustekabean amaitu da" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Irakurketa errorea" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Idazketa errorea" @@ -1050,6 +1074,12 @@ msgstr "Ezin da zerrenda direktorioa blokeatu" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1230,6 +1260,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Berriketak kalkulatzen" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Dependentziak Guztira: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1530,10 +1570,6 @@ 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 @@ -1698,12 +1734,6 @@ msgstr "%s paketea ez dago instalatuta, eta, beraz, ez da kenduko\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Oharra, %s hautatzen %s(r)en ordez\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1807,6 +1837,12 @@ msgstr "Informazio honek arazoa konpontzen lagun dezake:" msgid "Broken packages" msgstr "Hautsitako paketeak" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Idazketa errorea" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1821,10 +1857,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Ezin izan dira artxibo batzuk lortu; beharbada apt-get update exekutatu, edo " +"Ezin izan dira artxibo batzuk lortu; beharbada apt update exekutatu, edo " "--fix-missing aukerarekin saiatu?" #: apt-private/private-install.cc @@ -1863,6 +1899,12 @@ msgstr "" "Hau bitxia... Tamainak ez dira berdina, idatzi apt@packages.debian.org-ra " "berri emanez (ingelesez)" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Instalatuta: " + #. 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 @@ -1870,6 +1912,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Artxiboetako %sB/%sB eskuratu behar dira.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1877,13 +1924,55 @@ msgstr "Artxiboetako %sB/%sB eskuratu behar dira.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Gordetako Etiketa: %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 @@ -1901,19 +1990,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Aurrera jarraitu nahi al duzu?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Aurrera jarraitu nahi al duzu?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Abortatu." @@ -1968,6 +2056,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Barne Errorea, AutoRemover-ek zerbait apurtu du" +#: 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 "" @@ -1995,16 +2090,8 @@ msgstr[1] "" "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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2014,6 +2101,11 @@ msgstr "Iradokitako paketeak:" msgid "Recommended packages:" msgstr "Gomendatutako paketeak:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2143,10 +2235,32 @@ msgstr " edo" msgid "The following packages have unmet dependencies:" msgstr "Ondorengo paketeetan bete gabeko mendekotasunak daude:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Huts egin du %2$s(r)en %1$s mendekotasuna betetzean: %3$s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Ondorengo pakete BERRIAK instalatuko dira:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s Instalatzen" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Dependentziak Guztira: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Ondorengo paketeak KENDUKO dira:" @@ -2157,6 +2271,16 @@ msgstr "Ondorengo paketeak KENDUKO dira:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Ondorengo paketeak mantendu egin dira:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Ondorengo paketeak mantendu egin dira:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Ondorengo paketeak mantendu egin dira:" @@ -2165,10 +2289,24 @@ msgstr "Ondorengo paketeak mantendu egin dira:" msgid "The following packages will be upgraded:" msgstr "Ondorengo paketeak bertsio-berrituko dira:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Ondorengo paketeak AURREKO BERTSIORA itzuliko dira:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Pin duten Paketeak:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Ondorengo pakete atxikiak aldatu egingo dira:" @@ -2186,26 +2324,52 @@ msgstr "" "KONTUZ: Ondorengo funtsezko paketeak kendu egingo dira\n" "EZ ezazu horrelakorik egin, ez badakizu ondo zertan ari zaren!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s Instalatzen" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu berrinstalatuta, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s Instalatzen" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu aurreko bertsiora itzulita, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2233,7 +2397,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2410,8 +2574,8 @@ msgstr "%s: ez du eraikitze mendekotasunik.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2449,6 +2613,11 @@ msgstr "Huts egin du %s izenaren ordez %s ipintzean" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2466,12 +2635,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2518,6 +2712,12 @@ msgstr " Nahastutako pakete birtualak: " msgid " Missing: " msgstr " Falta direnak: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Bertsio Ezberdinak Guztira: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Bertsio Ezberdinak Guztira: " @@ -2848,6 +3048,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Arazoa fitxategiaren hash egitean" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3095,12 +3301,20 @@ msgstr "" msgid "edit the source information file" msgstr "Egoera argibideak irakurtzen" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Huts egin du %2$s(r)en %1$s mendekotasuna betetzean: %3$s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Okerreko ezarpen lehenetsia!" @@ -3300,7 +3514,7 @@ msgstr "'%s' Konpresio Algoritmo Ezezaguna" msgid "Compressed output %s needs a compression set" msgstr "%s irteera konprimituak konpresio-tresna bat behar du" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Huts egin du azpiprozesuarentzako IPC kanalizazio bat sortzean" @@ -3419,23 +3633,23 @@ 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" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s: ez du bitar gainidazketa sarrerarik\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3473,7 +3687,7 @@ msgstr "Goiburu data gaizki dago" msgid "Connection failed" msgstr "Konexioak huts egin du" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3516,7 +3730,7 @@ msgstr "" msgid "Disk not found." msgstr "Ez da diska aurkitu" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Ez da fitxategia aurkitu" @@ -3552,7 +3766,7 @@ msgstr "Ezin izan da socket-ik sortu honentzat: %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Ezin izan da konexioa hasi -> %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Huts egin du" @@ -3567,9 +3781,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" "Ezin izan da konektatu -> %s:%s (%s). Konexioak denbora muga gainditu du" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Konektatzen -> %s..." @@ -3607,151 +3819,14 @@ msgstr "Huts egin du atzitzean" 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 +#: methods/gpgv.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" +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3772,21 +3847,16 @@ 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?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Errore ezezaguna apt-key exekutatzean" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3825,18 +3895,133 @@ msgstr "Hautapenak huts egin du" msgid "Connection timed out" msgstr "Konexioaren denbora muga gainditu da" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Arazoa fitxategiaren hash egitean" + #: 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 "Logging in" +#~ msgstr "Sartzen" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Ezin izan da peer edo parekoaren izena zehaztu" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Ezin izan da izen lokala zehaztu" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Zerbitzariak gure konexioa ukatu eta hau esan du: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USERek huts egin du, eta zerbitzariak hau esan du: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASSek huts egin du, eta zerbitzariak hau esan du: %s" + +#~ 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." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPEk huts egin du, eta zerbitzariak hau esan du: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Konexioa denboraz kanpo" + +#~ msgid "Server closed the connection" +#~ msgstr "Zerbitzariak konexioa itxi du" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Erantzun batek bufferrari gainez eragin dio." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokolo hondatzea" + +#~ msgid "Could not create a socket" +#~ msgstr "Ezin izan da socket-a sortu" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Ezin izan da datu-socketa konektatu; konexioak denbora muga gainditu du" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Ezin izan da socket pasibora konektatu." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo-k ezin izan du socket entzule bat eskuratu" + +#~ msgid "Could not bind a socket" +#~ msgstr "Ezin izan da socket bat lotu" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Ezin izan da socket-ean entzun" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Ezin izan da socket-aren izena zehaztu" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Ezin da PORT komandoa bidali" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Helbide familia ezezagunaa: %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRTek huts egin du, eta zerbitzariak hau esan du: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Datu-socket konexioak denbora muga gainditu du" + +#~ msgid "Unable to accept connection" +#~ msgstr "Ezin da konexioa onartu" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Ezin da fitxategia lortu; zerbitzariak hau esan du: '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Datu-socketak denbora muga gainditu du" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "" +#~ "Datu transferentziak huts egin du, eta zerbitzariak hau esan du: '%s'" + +#~ msgid "Query" +#~ msgstr "Kontsulta" + +#~ msgid "Unable to invoke " +#~ msgstr "Ezin da deitu " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Konexioa behar baino lehenago itxi da" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Ondorengo pakete atxikiak aldatu egingo dira:" + #~ msgid "Yes, do as I say!" #~ msgstr "Bai, egin esandakoa!" diff --git a/po/fi.po b/po/fi.po index 3871b63..6050c3b 100644 --- a/po/fi.po +++ b/po/fi.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2008-12-11 14:52+0200\n" "Last-Translator: Tapio Lehtonen \n" "Language-Team: Finnish \n" @@ -53,8 +53,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,13 +121,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -183,8 +184,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -195,7 +195,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -214,6 +214,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Tiedoston %s nouto ei onnistunut %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -234,13 +241,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Avataan yhteys %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -625,6 +625,30 @@ msgstr "Syntaksivirhe %s: %u: Direktiivejä voi olla vain ylimmällä tasolla" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaksivirhe %s: %u: Ylimääräistä roskaa tiedoston lopussa" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -734,11 +758,11 @@ msgstr "Aliprosessi %s palautti virhekoodin (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Aliprosessi %s lopetti odottamatta" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Lukuvirhe" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Virhe kirjoitettaessa" @@ -1045,6 +1069,12 @@ msgstr "Luettelokansiota ei voitu lukita" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1225,6 +1255,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Käsitellään päivitystä" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Riippuvuuksia yhteensä: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1526,10 +1566,6 @@ 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 @@ -1694,12 +1730,6 @@ msgstr "Pakettia %s ei ole asennettu, niinpä sitä ei poisteta\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Huomautus, valitaan %s eikä %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1802,6 +1832,12 @@ msgstr "Seuraavista tiedoista voi olla hyötyä selvitettäessä tilannetta:" msgid "Broken packages" msgstr "Rikkinäiset paketit" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Virhe kirjoitettaessa" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1816,10 +1852,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Joidenkin arkistojen nouto ei onnistunut, ehkä \"apt-get update\" auttaa tai " +"Joidenkin arkistojen nouto ei onnistunut, ehkä \"apt update\" auttaa tai " "kokeile --fix-missing?" #: apt-private/private-install.cc @@ -1857,6 +1893,12 @@ 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Asennettu: " + #. 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 @@ -1864,6 +1906,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Noudettavaa arkistoa %st/%st.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1871,13 +1918,55 @@ msgstr "Noudettavaa arkistoa %st/%st.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Tallennettu nimio: %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 @@ -1896,19 +1985,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Haluatko jatkaa?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Haluatko jatkaa?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Keskeytä." @@ -1964,6 +2052,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Sisäinen virhe, AutoRemover rikkoi jotain" +#: 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 "" @@ -1991,16 +2086,8 @@ msgstr[1] "" "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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2010,6 +2097,11 @@ msgstr "Ehdotetut paketit:" msgid "Recommended packages:" msgstr "Suositellut paketit:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2139,10 +2231,32 @@ msgstr " tai" msgid "The following packages have unmet dependencies:" msgstr "Näillä paketeilla on tyydyttämättömiä riippuvuuksia:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Riippuvuutta %s paketille %s ei voi tyydyttää: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Seuraavat UUDET paketit asennetaan:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Asennetaan %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Riippuvuuksia yhteensä: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Seuraavat paketit POISTETAAN:" @@ -2153,6 +2267,16 @@ msgstr "Seuraavat paketit POISTETAAN:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Nämä paketit on jätetty odottamaan:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Nämä paketit on jätetty odottamaan:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Nämä paketit on jätetty odottamaan:" @@ -2161,10 +2285,24 @@ msgstr "Nämä paketit on jätetty odottamaan:" msgid "The following packages will be upgraded:" msgstr "Nämä paketit päivitetään:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Nämä paketit VARHENNETAAN:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Paketit joissa tunniste:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Seuraavat pysytetyt paketit muutetaan:" @@ -2182,26 +2320,52 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Asennetaan %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu uudelleen asennettua, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Asennetaan %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu varhennettua, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2229,7 +2393,7 @@ msgid "Y" msgstr "K" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2403,8 +2567,8 @@ msgstr "Paketille %s ei ole määritetty paketointiriippuvuuksia.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2442,6 +2606,11 @@ msgstr "Nimen muuttaminen %s -> %s ei onnistunut" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2459,12 +2628,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2511,6 +2705,12 @@ msgstr " Sekanäennäispaketteja: " msgid " Missing: " msgstr " Puuttuu: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Eri versioita yhteensä: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Eri versioita yhteensä: " @@ -2840,6 +3040,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Pulmia tiedoston hajautuksessa" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3087,12 +3293,20 @@ msgstr "" msgid "edit the source information file" msgstr "Luetaan tilatiedot" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Riippuvuutta %s paketille %s ei voi tyydyttää: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Oletusasetus ei kelpaa!" @@ -3297,7 +3511,7 @@ msgstr "Tuntematon pakkausalgoritmi \"%s\"" msgid "Compressed output %s needs a compression set" msgstr "Pakattu tulostus %s tarvitsee pakkausjoukon" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "IPC-putken luominen aliprosessiin ei onnistunut" @@ -3416,23 +3630,23 @@ msgstr "Arkistossa ei ollut pakettikenttää" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s:llä ei ole poikkeustietuetta\n" +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" +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" +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" +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" @@ -3470,7 +3684,7 @@ msgstr "Virheellinen otsikkotieto" msgid "Connection failed" msgstr "Yhteys ei toiminut" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3512,7 +3726,7 @@ msgstr "Rompun %s irrottaminen ei onnistu, se on ehkä käytössä." msgid "Disk not found." msgstr "Levyä ei löydy" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Tiedostoa ei löydy" @@ -3548,7 +3762,7 @@ msgstr "Pistokeen luonti ei onnistu %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Yhteyden %s avaus ei onnistu: %s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Ei onnistunut" @@ -3562,9 +3776,7 @@ msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s)" msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Yhteyttä %s ei voitu muodostaa: %s (%s), yhteys aikakatkaistiin" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Avataan yhteys %s" @@ -3602,148 +3814,14 @@ msgstr "Komento stat ei toiminut" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3765,21 +3843,16 @@ msgstr "" #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Tapahtui tuntematon virhe suoritettaessa apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3818,18 +3891,129 @@ msgstr "Select ei toiminut" msgid "Connection timed out" msgstr "Yhteys aikakatkaistiin" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Pulmia tiedoston hajautuksessa" + #: 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 "Logging in" +#~ msgstr "Kirjaudutaan sisään" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Vastapään nimeä ei saa selville" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Paikallista nimeä ei saa selville" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Palvelin ei huolinut yhteyttä ilmoituksella: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER ei onnistunut, palvelimen ilmoitus: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS ei onnistunut, palvelimen ilmoitus: %s" + +#~ 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ä." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Komentotiedoston rivi \"%s\" ei toiminut, palvelin ilmoitti: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE ei toiminut, palvelin ilmoitti: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Yhteys aikakatkaistiin" + +#~ msgid "Server closed the connection" +#~ msgstr "Palvelin sulki yhteyden" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Vastaus aiheutti puskurin ylivuodon." + +#~ msgid "Protocol corruption" +#~ msgstr "Yhteyskäytäntö on turmeltunut" + +#~ msgid "Could not create a socket" +#~ msgstr "Pistoketta ei voitu luoda" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Pistoketta ei voitu kytkeä, yhteys aikakatkaistiin" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Passiivista pistoketta ei voitu kytkeä." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo ei saanut kuuntelupistoketta" + +#~ msgid "Could not bind a socket" +#~ msgstr "Pistoketta ei voitu nimetä" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Pistoketta ei voitu kuunnella" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Pistokkeen nimeä ei saatu selville" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Komennon PORT lähetys ei onnistu" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Tuntematon osoiteperhe %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT ei onnistunut, palvelin ilmoitti: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Pistokkeen kytkeminen aikakatkaistiin" + +#~ msgid "Unable to accept connection" +#~ msgstr "Yhteyttä ei voitu hyväksyä" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Tiedostoa ei saatu noudettua, palvelin ilmoitti \"%s\"" + +#~ msgid "Data socket timed out" +#~ msgstr "Pistoke aikakatkaistiin" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Tiedonsiirto ei onnistunut, palvelin ilmoitti \"%s\"" + +#~ msgid "Query" +#~ msgstr "Kysely" + +#~ msgid "Unable to invoke " +#~ msgstr "Käynnistys ei onnistu" + +#~ msgid "Connection closed prematurely" +#~ msgstr "Yhteys katkesi ennenaikaisesti" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Seuraavat pysytetyt paketit muutetaan:" + #~ msgid "Yes, do as I say!" #~ msgstr "Kyllä, tee kuten käsketään!" diff --git a/po/fr.po b/po/fr.po index 334559d..005231b 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,20 +9,21 @@ # Christian Perrier , 2004-2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013. # Julien Patriarca , 2013, 2017, 2018. # Baptiste Jammet , 2019. +# bubu , 2025. msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2019-01-21 09:19+0100\n" -"Last-Translator: Julien Patriarca \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-03-07 12:02+0100\n" +"Last-Translator: bubu \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.5\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 3.2.2\n" #: apt-pkg/acquire-item.cc msgid "" @@ -51,7 +52,7 @@ msgstr "" #: apt-pkg/acquire-item.cc #, c-format msgid "The repository '%s' is no longer signed." -msgstr "Le dépôt %s n'est plus signé" +msgstr "Le dépôt %s n'est plus signé." #: apt-pkg/acquire-item.cc #, c-format @@ -60,11 +61,12 @@ msgstr "Le dépôt %s ne contient plus de fichier Release." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"Ceci n'est généralement pas autorisé, mais l'option Acquire::" -"AllowDowngradeToInsecureRepositories a été passée pour l'outrepasser." +"Cela n'est généralement pas autorisé, mais l'option " +"Acquire::AllowDowngradeToInsecureRepositories a été passée pour " +"l'outrepasser." #: apt-pkg/acquire-item.cc #, c-format @@ -99,7 +101,7 @@ msgstr "Somme de contrôle de hachage incohérente" msgid "Insufficient information available to perform this download securely" msgstr "" "Manque d'information disponible pour réaliser ce téléchargement de manière " -"sécurisée." +"sécurisée" #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc #, c-format @@ -129,10 +131,11 @@ msgstr "" "Peut-être le réseau nécessite-t-il une authentification." #: apt-pkg/acquire-item.cc -#, c-format +#, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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 " @@ -141,8 +144,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -209,8 +212,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribution en conflit : %s (%s attendu, mais %s obtenu)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Le dépôt « %s » a modifié sa valeur « %s » de « %s » à « %s »" @@ -223,11 +225,11 @@ msgstr "" "« %hi »." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" -msgstr "Plus d'information disponible dans la note de mise à jour ici : %s" +msgstr "Plus d'informations disponibles dans la note de mise à jour ici : %s" #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) #: apt-pkg/acquire-item.cc @@ -236,7 +238,7 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" -"Ceci doit être pleinement accepté avant que les mises à jour depuis ce dépôt " +"Cela doit être pleinement accepté avant que les mises à jour depuis ce dépôt " "puissent être appliquées. Veuillez vous référer aux pages de manuel « %s » " "pour plus de détails." @@ -245,6 +247,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Impossible de récupérer %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Les dépôts devraient fournir un fichier InRelease clairement signé, mais " +"aucun n'a été trouvé à %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -267,13 +278,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Journal des modifications indisponible pour %s=%s" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -289,7 +293,7 @@ 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é." +msgstr "Le pilote pour la méthode %s n'a pas pu être trouvé." #: apt-pkg/acquire-worker.cc #, c-format @@ -306,7 +310,7 @@ msgstr "La méthode %s n'a pas démarré correctement" msgid "" "Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]." msgstr "" -"Veuillez insérer le disque nommé « %s » dans le lecteur « %s » et appuyez " +"Veuillez insérer le disque nommé « %s » dans le lecteur « %s » et appuyer " "sur la touche Entrée." #: apt-pkg/acquire.cc apt-pkg/cdrom.cc @@ -317,7 +321,7 @@ msgstr "Le répertoire %s pour les listes n'existe pas." #: apt-pkg/acquire.cc #, c-format msgid "Archives directory %s is missing." -msgstr "Le répertoire d'archive %s n'existe pas." +msgstr "Le répertoire d'archives %s n'existe pas." #: apt-pkg/acquire.cc #, c-format @@ -337,8 +341,9 @@ msgid "" "Download is performed unsandboxed as root as file '%s' couldn't be accessed " "by user '%s'." msgstr "" -"Le téléchargement est effectué en dehors du bac à sable en tant que « root » " -"car le fichier « %s » n'est pas accessible par l'utilisateur « %s »." +"Le téléchargement est effectué en dehors du bac à sable en tant que " +"superutilisateur car le fichier « %s » n'est pas accessible par " +"l'utilisateur « %s »." #: apt-pkg/acquire.cc apt-pkg/clean.cc #, c-format @@ -520,8 +525,8 @@ 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." +"Aucun fichier de paquets trouvé. Ce n'est peut-être pas un disque Debian ou " +"bien l'architecture est incorrecte ?" #: apt-pkg/cdrom.cc #, c-format @@ -696,6 +701,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Erreur syntaxique %s:%u : valeur aberrante à la fin du fichier" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Erreur :" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Attention :" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Notification :" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audit :" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Débogage :" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -710,10 +739,9 @@ msgid "Tar checksum failed, archive corrupted" msgstr "Échec dans la somme de contrôle de tar, l'archive est corrompue" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Type d'en-tête %u inconnu pour TAR, partie %s" +msgstr "Type d'en-tête %u inconnu pour TAR" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -736,15 +764,15 @@ 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 -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Impossible d'obtenir le verrou %s" +msgstr "Impossible d'obtenir le verrou %s. Il est occupé par le processus %d" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s. It is held by process %d (%s)" msgstr "" +"Impossible d'obtenir le verrou %s. Il est occupé par le processus %d (%s)" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -756,6 +784,8 @@ msgid "" "Be aware that removing the lock file is not a solution and may break your " "system." msgstr "" +"Soyez conscient qu'enlever le fichier verrou n'est pas une solution et peut " +"casser votre système." #: apt-pkg/contrib/fileutl.cc #, c-format @@ -775,16 +805,16 @@ msgstr "" #, 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" +"Le fichier « %s » dans le répertoire « %s » a été ignoré car il ne possède " +"pas d'extension de nom de fichier" #: 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" +"Le fichier « %s » dans le répertoire « %s » a été ignoré car il possède une " +"extension non valable" #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc #: cmdline/apt-dump-solver.cc @@ -813,11 +843,11 @@ msgstr "Le sous-processus %s a renvoyé un code d'erreur (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Erreur de lecture" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Erreur d'écriture" @@ -945,6 +975,8 @@ msgid "" "%s: Credentials for %s match, but the protocol is not encrypted. Annotate " "with %s:// to use." msgstr "" +"%s : Les informations d'identification pour %s correspondent, mais le " +"protocole n'est pas chiffré. Annoter avec %s:// pour utilisation." #: apt-pkg/contrib/progress.cc #, c-format @@ -961,16 +993,14 @@ msgid "..." msgstr "…" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s… %u%%" +msgstr "%c%s… %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llus" -msgstr "%c%s… %u%%" +msgstr "%c%s… %llus" #: apt-pkg/contrib/progress.cc #, c-format @@ -1014,17 +1044,16 @@ msgstr "Ce n'est pas une archive DEB valable, partie « %s » manquante" #: apt-pkg/deb/debfile.cc #, c-format msgid "Internal error, could not locate member %s" -msgstr "Erreur interne, ne peut localiser la partie %s" +msgstr "Erreur interne, impossible de localiser la partie %s" #: apt-pkg/deb/debfile.cc msgid "Unparsable control file" msgstr "Fichier de contrôle non traitable" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Impossible d'obtenir le verrou %s" +msgstr "Impossible de lire les méta-données de %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -1100,10 +1129,9 @@ msgid "Unable to parse package file %s (%d)" msgstr "Impossible de traiter le fichier %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "Attente des fichiers d'en-tête" +msgstr "Attente du verrou du cache : %s" #: apt-pkg/deb/debsystem.cc #, c-format @@ -1150,6 +1178,14 @@ msgstr "" msgid "Not locked" msgstr "Non verrouillé" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"L'exécutable dpkg défini dans Dir::Bin::dpkg est manquant, retour à " +"l'utilisation du dpkg par défaut." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1339,6 +1375,14 @@ msgstr "Préparation à la réception de la solution" msgid "External solver failed without a proper error message" msgstr "Échec du solveur externe sans message d'erreur adapté" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calcul de la mise à jour" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Résolution des dépendances  " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Exécution du solveur externe" @@ -1585,7 +1629,7 @@ msgstr "" #, 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 " +"Enregistrement non valable dans le fichier de préférences %s, aucune en-tête " "« Package »." #: apt-pkg/policy.cc @@ -1598,6 +1642,8 @@ msgstr "Type d'épinglage %s inconnu" msgid "" "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" msgstr "" +"%s: Le « Pin-Priority : %s » ne peut être utilisé qu'avec les " +"enregistrements « Paquet : * »" #: apt-pkg/policy.cc #, c-format @@ -1641,58 +1687,52 @@ msgstr "" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format msgid "Unsupported file %s given on commandline" -msgstr "Le fichier donné %s n'est pas compris sur la ligne de commande" +msgstr "Le fichier %s donné sur la ligne de commande n'est pas pris en charge" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" msgstr "" -"Vous devez insérer quelques adresses « sources » dans votre sources.list" +"Vous devez insérer certaines adresses « deb-src » dans votre sources.list" #: apt-pkg/tagfile.cc #, c-format msgid "Cannot convert %s to integer: out of range" -msgstr "Impossible de convertir %s en entier : en dehors de la plage" +msgstr "Impossible de convertir %s en entier : en dehors de la plage" #: 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é " +"Le téléchargement de certains 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" +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" +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" +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" +msgstr "Err : %lu %s" #: apt-private/acqprogress.cc #, c-format @@ -1712,7 +1752,7 @@ msgid "" msgstr "" "Changement de support : veuillez insérer le disque nommé\n" "« %s »\n" -"dans le lecteur « %s » et appuyez sur la touche Entrée\n" +"dans le lecteur « %s » et appuyer sur la touche Entrée\n" #: apt-private/acqprogress.cc msgid "" @@ -1736,7 +1776,7 @@ 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" +msgstr "Impossible de minimiser le nombre de paquets mis à jour" #: apt-private/private-cachefile.cc msgid " Done" @@ -1836,12 +1876,6 @@ msgstr "Le paquet « %s » n'est pas installé, et ne peut donc être supprim 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Commandes les plus utilisées :" @@ -1860,15 +1894,14 @@ msgid "" "Package and version choices can be expressed via apt_preferences(5).\n" "Security details are available in apt-secure(8).\n" msgstr "" -"Les options de configuration ainsi que la syntaxe sont détaillées dans apt." -"conf(5).\n" +"Les options de configuration ainsi que la syntaxe sont détaillées dans " +"apt.conf(5).\n" "Des informations sur la configuration des sources sont disponibles dans " "sources.list(5).\n" "Les choix de paquet ainsi que la version peuvent être renseignés grâce à " "apt_preferences(5).\n" "Les informations à propos de la sécurité sont disponibles dans apt-" "secure(8).\n" -"\n" #: apt-private/private-cmndline.cc msgid "This APT has Super Cow Powers." @@ -1876,7 +1909,7 @@ msgstr "Cet APT a les « Super Cow Powers »" #: apt-private/private-cmndline.cc msgid "This APT helper has Super Meep Powers." -msgstr "Cet assistant APT a les « Super Meep Powers »." +msgstr "Cet assistant APT a les « Super Meep Powers »." #: apt-private/private-cmndline.cc msgid "" @@ -1936,7 +1969,7 @@ msgid "" "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" +"Certains paquets ne peuvent être installés. Cela 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." @@ -1959,22 +1992,28 @@ msgstr "L'information suivante devrait vous aider à résoudre la situation : " msgid "Broken packages" msgstr "Paquets défectueux" +#: apt-private/private-install.cc +#, fuzzy +msgid "Writing error report" +msgstr "Erreur d'écriture" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Défusionner usr n'est plus pris en charge, utilisez usrmerge pour convertir " +"en un système usr-fusionné" #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "Sélection de %s pour suppression.\n" +msgstr "Voir %s pour plus de détails." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" "Impossible de récupérer certaines archives, peut-être devrez-vous lancer apt-" @@ -2007,7 +2046,7 @@ msgid "" "Held packages were changed and -y was used without --allow-change-held-" "packages." msgstr "" -"Les paquets gelés ont été modifiés et -y a été utilisé dans --allow-change-" +"Les paquets gelés ont été modifiés et -y a été utilisé sans --allow-change-" "held-packages." #: apt-private/private-install.cc @@ -2020,6 +2059,11 @@ msgstr "" "Étrangement, les tailles ne correspondent pas. Veuillez le signaler par " "courriel à apt@packages.debian.org" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr "Taille du téléchargement : %sB / %sB\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 @@ -2027,27 +2071,77 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Il est nécessaire de prendre %so/%so dans les archives.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr "Taille du téléchargement : %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 "Il est nécessaire de prendre %so dans les archives.\n" +msgstr "Il est nécessaire de prendre %sB 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 "Space needed: %sB / %sB available\n" +msgstr "Espace nécessaire : %sB / %sB disponible\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Besoin de plus d'espace que disponible : %sB > %sB, l'installation risque " +"d'échouer" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "dans %s : %sB / %sB disponible\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Besoin de plus d'espace dans %s que disponible : %sB > %sB, l'installation " +"risque d'échouer" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Espace nécessaire : %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Espace libéré : %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 "Après cette opération, %so d'espace disque seront libérés.\n" +msgstr "Après cette opération, %sB d'espace disque seront libérés.\n" #: apt-private/private-install.cc msgid "Trivial Only specified but this is not a trivial operation." @@ -2060,19 +2154,20 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Souhaitez-vous continuer ?" +"Enlever des paquets critiques du système étiquetés « Essentiel » n'est pas " +"permis. Cela pourrait casser votre système." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Continuer malgré tout ?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Continuer ?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Souhaitez-vous continuer ?" #: apt-private/private-install.cc msgid "Abort." @@ -2138,6 +2233,13 @@ msgid "Internal Error, AutoRemover broke stuff" msgstr "" "Erreur interne, l'outil de suppression automatique a cassé quelque chose." +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2161,15 +2263,8 @@ 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 -msgid "The following additional packages will be installed:" -msgstr "Les paquets supplémentaires suivants seront installés : " +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2179,6 +2274,10 @@ msgstr "Paquets suggérés :" msgid "Recommended packages:" msgstr "Paquets recommandés :" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Les paquets supplémentaires suivants seront installés : " + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2257,11 +2356,11 @@ msgstr "inconnu" #: apt-private/private-output.cc #, c-format msgid "[installed,upgradable to: %s]" -msgstr "[installé, pouvant être mis à jour vers : %s]" +msgstr "[installé, pouvant être mis à jour vers : %s]" #: apt-private/private-output.cc msgid "[installed,local]" -msgstr " [installé, local]" +msgstr "[installé, local]" #: apt-private/private-output.cc msgid "[installed,auto-removable]" @@ -2269,11 +2368,11 @@ msgstr "[installé, pouvant être supprimé automatiquement]" #: apt-private/private-output.cc msgid "[installed,automatic]" -msgstr " [installé, automatique]" +msgstr "[installé, automatique]" #: apt-private/private-output.cc msgid "[installed]" -msgstr " [installé]" +msgstr "[installé]" #: apt-private/private-output.cc #, c-format @@ -2318,19 +2417,41 @@ msgstr " ou" msgid "The following packages have unmet dependencies:" msgstr "Les paquets suivants contiennent des dépendances non satisfaites :" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Impossible de satisfaire les dépendances : " + #: 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 "Installing:" +msgstr "Installation de :" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Installation de dépendances : " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "SUPPRESSION :" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Les paquets suivants seront ENLEVÉS :" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Les paquets suivants ont été conservés :" +msgstr "Les mises à jour suivantes ont été différées à cause du phasage :" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Aucune mise à jour pour le moment à cause du phasage :" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Pas mis à jour :" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2340,10 +2461,22 @@ msgstr "Les paquets suivants ont été conservés :" msgid "The following packages will be upgraded:" msgstr "Les paquets suivants seront mis à jour :" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Mis à jour :" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "RÉTROGRADÉ :" + #: 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 "Changing held packages:" +msgstr "Changement des paquets retenus :" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Les paquets retenus suivants seront changés :" @@ -2359,29 +2492,53 @@ msgid "" "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" +"Vous NE devez PAS faire cela, à moins de savoir exactement ce\n" "que vous êtes en train de faire." +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Sommaire :" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Mise à niveau de : %lu. Installation de : %lu" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu réinstallés, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Réinstallation de : %lu." + #: 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 "Downgrading: %lu, " +msgstr "Rétrogradage de : %lu." + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Supprimé : %lu. Non mis à jour : %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2409,7 +2566,7 @@ msgid "Y" msgstr "O" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2430,8 +2587,8 @@ msgstr[0] "" "Il y a %i enregistrement supplémentaire. Veuillez utiliser l'opérande « -a » " "pour le voir" msgstr[1] "" -"Il y a %i enregistrements supplémentaires. Veuillez utiliser l'opérande « -" -"a » pour les voir." +"Il y a %i enregistrements supplémentaires. Veuillez utiliser l'opérande " +"« -a » pour les voir." #: apt-private/private-show.cc msgid "not a real package (virtual)" @@ -2475,7 +2632,7 @@ msgstr " Table de version :" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "en phase" #: apt-private/private-source.cc #, c-format @@ -2511,7 +2668,7 @@ 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" +msgstr "Impossible de trouver un paquet source %s" #: apt-private/private-source.cc #, c-format @@ -2545,14 +2702,14 @@ msgstr "Saut du téléchargement du fichier « %s », déjà téléchargé\n" #: 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" +msgstr "Nécessité de prendre %sB/%sB 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" +msgstr "Nécessité de prendre %sB dans les sources.\n" #: apt-private/private-source.cc #, c-format @@ -2561,7 +2718,7 @@ 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." +msgstr "Échec lors de la récupération de certaines archives." #: apt-private/private-source.cc #, c-format @@ -2595,8 +2752,8 @@ msgstr "%s n'a pas de dépendance de construction.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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 " @@ -2613,6 +2770,8 @@ msgstr "" msgid "" "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" msgstr "" +"Opérateur « %c » non valable au décalage %d, voulez-vous dire « %c%c » ou " +"« %c= » ? - dans : %s" #: apt-private/private-source.cc #, c-format @@ -2642,6 +2801,11 @@ msgstr "Impossible de lire %s. Faut-il l'éditer à nouveau ?" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Votre fichier « %s » a changé, veuillez lancer « apt-get update ».\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Réécrire les sources %zu ?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2661,11 +2825,44 @@ msgstr "" "L'utilisation de %s devrait être préférée plutôt que d'embarquer les " "informations d'identification directement dans %s pour « %s »" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "L'entrée %s pour « %s » devrait être mise à jour en .sources deb822" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Il manque « Signed-By » dans l'entrée %s pour « %s »" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Veuillez migrer toutes les entrées du sources.list(5) au format .sources " +"deb822" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" msgstr "" +"Le format .sources deb822 prend en charge les clefs OpenPGP intégrées aussi " +"bien qu'externes" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Voir les pages de manuel d'apt-secure(8) sur les meilleures manières de " +"configurer une signature de dépôt " + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" +"Des sources peuvent être modernisées. Veuillez lancer « apt modernize-" +"sources » pour le faire." #: apt-private/private-update.cc #, c-format @@ -2684,10 +2881,9 @@ msgid "All packages are up to date." msgstr "Tous les paquets sont à jour." #: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format -#| msgid "apt-cache stats does not take any arguments" +#, c-format msgid "%s does not take any arguments" -msgstr "La commande apt-cache ne prend pas de paramètre" +msgstr "%s ne prend aucun argument" #: cmdline/apt-cache.cc msgid "Total package names: " @@ -2718,9 +2914,13 @@ msgid " Missing: " msgstr " Manquants : " #: cmdline/apt-cache.cc -msgid "Total distinct versions: " +msgid "Total distinct source versions: " msgstr "Nombre de versions distinctes : " +#: cmdline/apt-cache.cc +msgid "Total distinct versions: " +msgstr "Nombre de versions de source distinctes : " + #: cmdline/apt-cache.cc msgid "Total distinct descriptions: " msgstr "Nombre de descriptions distinctes : " @@ -2769,7 +2969,7 @@ msgid "" "too long ago, but in exchange apt-cache works independently of the\n" "availability of the configured sources (e.g. offline).\n" msgstr "" -"Utilisation : apt-cache [options] commande\n" +"Usage : apt-cache [options] commande\n" "\tapt-cache [options] show pkg1 [pkg2 ...]\n" "\n" "apt-cache recherche et affiche les informations disponibles à propos\n" @@ -2783,31 +2983,31 @@ msgstr "" #: cmdline/apt-cache.cc msgid "Show source records" -msgstr "Affiche les enregistrements des sources" +msgstr "Afficher 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" +msgstr "Chercher 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" +msgstr "Afficher 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" +msgstr "Afficher 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" +msgstr "Afficher 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" +msgstr "Lister le nom de tous les paquets du système" #: cmdline/apt-cache.cc msgid "Show policy settings" -msgstr "Affiche l'épinglage (Pin) en vigueur" +msgstr "Afficher 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'" @@ -2817,7 +3017,7 @@ msgstr "" #: cmdline/apt-cdrom.cc 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]" +"Veuillez insérer un disque dans le lecteur et appuyer sur la touche [Entrée]" #: cmdline/apt-cdrom.cc #, c-format @@ -2851,11 +3051,11 @@ msgid "" "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 "" -"Utilisation : apt-cdrom [options] commande\n" +"Usage : apt-cdrom [options] commande\n" "\n" -"apt-cdrom est utilisé pour ajouter des CDROMS, clés USB et autre\n" +"apt-cdrom est utilisé pour ajouter des CDROM, clés USB et autre\n" "périphériques démontables en tant que sources pour APT. Les détails\n" -"du point de montage et du périphérique sont extraits depuis apt-conf(5)\n" +"du point de montage et du périphérique sont extraits depuis apt.conf(5)\n" "udev(7) et fstab(5).\n" #: cmdline/apt-config.cc @@ -2971,77 +3171,73 @@ msgstr "" #: cmdline/apt-get.cc msgid "Retrieve new lists of packages" -msgstr "Récupère les nouvelles listes de paquets" +msgstr "Récupérer les nouvelles listes de paquets" #: cmdline/apt-get.cc msgid "Perform an upgrade" -msgstr "Réalise une mise à jour" +msgstr "Réaliser 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)" +msgstr "Installer de nouveaux paquets (pkg est libc6 et non libc6.deb)" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Install new packages (pkg is libc6 not libc6.deb)" msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Installe de nouveaux paquets (pkg1 est libc6 et non libc6.deb)" +msgstr "Réinstaller des paquets (pkg est libc6 et non libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" -msgstr "Supprime des paquets" +msgstr "Supprimer des paquets" #: cmdline/apt-get.cc msgid "Remove packages and config files" -msgstr "Supprime des paquets et leurs fichiers de configuration" +msgstr "Supprimer des paquets et leurs fichiers de configuration" #: cmdline/apt-get.cc msgid "Remove automatically all unused packages" -msgstr "Supprime automatiquement les dépendances inutilisées" +msgstr "Supprimer automatiquement les dépendances inutilisées" #: cmdline/apt-get.cc msgid "Distribution upgrade, see apt-get(8)" -msgstr "Met à jour la distribution, reportez-vous à apt-get(8)" +msgstr "Mettre à jour la distribution, reportez-vous à apt-get(8)" #: cmdline/apt-get.cc msgid "Follow dselect selections" -msgstr "Suit les sélections de dselect" +msgstr "Suivre les sélections de dselect" #: cmdline/apt-get.cc msgid "Configure build-dependencies for source packages" -msgstr "Configure build-dependencies pour les paquets sources" +msgstr "Configurer build-dependencies pour les paquets sources" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Construction de l'arbre des dépendances" +msgstr "Satisfaire les chaînes de dépendances" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" -msgstr "Supprime dans le cache local tous les fichiers téléchargés" +msgstr "Supprimer 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" +msgstr "Supprimer 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" +msgstr "Vérifier 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" +msgstr "Télécharger 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" +msgstr "Télécharger 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é" +"Télécharger et afficher le journal des modifications (« changelog ») du " +"paquet indiqué" #: cmdline/apt-helper.cc msgid "Need one URL as argument" @@ -3085,13 +3281,17 @@ msgstr "Télécharger l'adresse uri donnée vers le chemin cible" #: cmdline/apt-helper.cc msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" msgstr "" -"Cherche à résoudre l'enregistrement SRV (par exemple : _http._tcp.ftp.debian." -"org)" +"Chercher à résoudre l'enregistrement SRV (par exemple : " +"_http._tcp.ftp.debian.org)" #: cmdline/apt-helper.cc msgid "concatenate files, with automatic decompression" msgstr "Concaténer des fichiers, avec décompression automatique" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "hachage du fichier" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "Détecter la configuration proxy en utilisant apt.conf" @@ -3106,7 +3306,7 @@ msgstr "Se débarrasser des privilèges avant d'exécuter la commande donnée" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "analyse d'un motif" #: cmdline/apt-internal-planner.cc msgid "" @@ -3130,7 +3330,7 @@ msgid "" "resolver for the APT family like an external one, for debugging or\n" "the like.\n" msgstr "" -"Utilisation : apt-internal-solver\n" +"Usage : apt-internal-solver\n" "\n" "apt-internal-solver est une interface en ligne de commande\n" "permettant d'utiliser la résolution interne pour la famille d'APT\n" @@ -3155,13 +3355,11 @@ msgstr "%s était déjà marqué comme installé automatiquement.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" -msgstr "" +msgstr "Aucun changement nécessaire" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Les NOUVEAUX paquets suivants seront installés :" +msgstr "Les paquets suivants seront marqués comme installés automatiquement :" #: cmdline/apt-mark.cc #, c-format @@ -3212,13 +3410,12 @@ msgid "" "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" +"Usage : 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'utiliser la sélection d'états de dpkg(1), " -"et de\n" -"lister tous les paquets avec ou sans un certain marquage.\n" +"Cette commande permet également d'utiliser la sélection d'états de\n" +"dpkg(1), et de lister tous les paquets avec ou sans un certain marquage.\n" #: cmdline/apt-mark.cc msgid "Mark the given packages as automatically installed" @@ -3229,10 +3426,10 @@ msgid "Mark the given packages as manually installed" msgstr "Marquer les paquets indiqués comme installés manuellement" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "Mark the given packages as automatically installed" msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "Marquer les paquets indiqués comme installés automatiquement" +msgstr "" +"Marquer toutes les dépendances des méta-paquets comme installées " +"automatiquement" #: cmdline/apt-mark.cc msgid "Mark a package as held back" @@ -3295,61 +3492,63 @@ msgstr "" #. query #: cmdline/apt.cc msgid "list packages based on package names" -msgstr "liste les paquets selon leur nom" +msgstr "lister les paquets selon leur nom" #: cmdline/apt.cc msgid "search in package descriptions" -msgstr "cherche dans les descriptions de paquet" +msgstr "chercher dans les descriptions de paquet" #: cmdline/apt.cc msgid "show package details" -msgstr "affiche les détails du paquet" +msgstr "afficher les détails du paquet" #. package stuff #: cmdline/apt.cc msgid "install packages" -msgstr "installes les paquets" +msgstr "installer les paquets" #: cmdline/apt.cc -#, fuzzy -#| msgid "install packages" msgid "reinstall packages" -msgstr "installes les paquets" +msgstr "réinstaller les paquets" #: cmdline/apt.cc msgid "remove packages" -msgstr "supprime des paquets" +msgstr "supprimer des paquets" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "Supprime automatiquement les dépendances inutilisées" +msgstr "Supprimer automatiquement tous les paquets inutilisés" #. system wide stuff #: cmdline/apt.cc msgid "update list of available packages" -msgstr "met à jour la liste des paquets disponibles" +msgstr "mettre à jour la liste des paquets disponibles" #: cmdline/apt.cc msgid "upgrade the system by installing/upgrading packages" -msgstr "met à jour le système en installant/mettant à jour les paquets" +msgstr "mettre à jour le système en installant/mettant à jour les paquets" #: cmdline/apt.cc msgid "upgrade the system by removing/installing/upgrading packages" msgstr "" -"met à jour le système en supprimant/installant/mettant à jour les paquets" +"mettre à jour le système en supprimant/installant/mettant à jour les paquets" #. misc #: cmdline/apt.cc msgid "edit the source information file" -msgstr "édite le fichier d'information source" +msgstr "éditer le fichier d'information source" + +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "moderniser les fichiers .list en fichiers .sources" #: cmdline/apt.cc -#, fuzzy -#| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" -msgstr "Impossible de satisfaire les dépendances %s pour %s : %s" +msgstr "satisfaire les chaînes de dépendances" + +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" #: dselect/install msgid "Bad default setting!" @@ -3514,7 +3713,7 @@ 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\"" +msgstr "Base de données ancienne, tentative de mise à jour de %s" #: ftparchive/cachedb.cc msgid "" @@ -3555,7 +3754,7 @@ msgstr "Algorithme de compression « %s » inconnu" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Impossible de créer le tube IPC sur le sous-processus" @@ -3565,7 +3764,7 @@ msgstr "Échec du fork" #: ftparchive/multicompress.cc msgid "Compress child" -msgstr "Fils compressé" +msgstr "Compresser l'enfant" #: ftparchive/multicompress.cc #, c-format @@ -3666,7 +3865,7 @@ 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" +msgstr " Seuil de déliaison de %sB atteint.\n" #: ftparchive/writer.cc msgid "Archive had no package field" @@ -3674,23 +3873,23 @@ 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" +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" +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" +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 d'entrée « binary override »\n" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s ne possède pas également d'entrée « binary override »\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3722,18 +3921,18 @@ msgstr "Format de date inconnu" #: methods/basehttp.cc msgid "Bad header data" -msgstr "Mauvais en-tête de donnée" +msgstr "Mauvaises données d'en-tête" #: methods/basehttp.cc msgid "Connection failed" msgstr "Échec de la connexion" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" "Le fichier a une taille incohérente (%llu != %llu). Le miroir est peut-être " -"en cours de mise à jour ?" +"en cours de mise à jour ?" #: methods/basehttp.cc #, c-format @@ -3776,7 +3975,7 @@ msgstr "" msgid "Disk not found." msgstr "Disque non trouvé." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fichier non trouvé" @@ -3811,7 +4010,7 @@ msgstr "Impossible de créer de connexion pour %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Impossible d'initialiser la connexion à %s: %s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Échec" @@ -3825,9 +4024,7 @@ msgstr "Connexion à %s: %s (%s) impossible." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Connexion à %s: %s (%s) impossible, délai de connexion dépassé" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Connexion à %s" @@ -3852,7 +4049,7 @@ msgstr "Erreur système lors de la résolution de « %s:%s »" 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)" +"%s » (%i - %s)" #: methods/connect.cc #, c-format @@ -3865,153 +4062,17 @@ 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" +msgstr "Liens invalides, les liens locaux ne doivent pas débuter par //" -#: 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "algorithme de clef publique inconnu : %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s va devenir obsolète dans une prochaine version" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -4034,29 +4095,20 @@ msgstr "" "l'empreinte de la clé." #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Impossible d'exécuter « apt-key » pour contrôler la signature (veuillez " +"Impossible d'exécuter « gpgv » 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" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" +msgid "Unknown error executing gpgv" +msgstr "Erreur inconnue à l'exécution de gpgv" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" -"la signature par la clé %s utilise des algorithmes « digest » faibles (%s)" +msgstr "la signature par la clé %s utilise un algorithme faible (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4090,18 +4142,142 @@ msgstr "Sélection défaillante" msgid "Connection timed out" msgstr "Délai de connexion dépassé" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problème de hachage du fichier" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Erreur de GPG : %s : %s" + +#~ msgid "Logging in" +#~ msgstr "Connexion en cours" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Impossible de déterminer le nom de la machine distante" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Impossible de déterminer le nom local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Le serveur a refusé la connexion et a répondu : %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER incorrect, le serveur a répondu : %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS incorrect, le serveur a répondu : %s" + +#~ 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." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Échec de TYPE, le serveur a répondu : %s" + +#~ msgid "Connection timeout" +#~ msgstr "Dépassement du délai de connexion" + +#~ msgid "Server closed the connection" +#~ msgstr "Le serveur a fermé la connexion" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Une réponse a fait déborder le tampon." + +#~ msgid "Protocol corruption" +#~ msgstr "Corruption du protocole" + +#~ msgid "Could not create a socket" +#~ msgstr "Impossible de créer un connecteur" + +#~ 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é" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Impossible de se connecter au port en mode passif." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo n'a pu obtenir un port d'écoute" + +#~ msgid "Could not bind a socket" +#~ msgstr "Impossible de se connecter à un port" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Impossible d'écouter sur le port" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Impossible de déterminer le nom du port" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Impossible d'envoyer la commande PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Famille d'adresses %u inconnue (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT a échoué, le serveur a répondu : %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Délai de connexion au port de données dépassé" + +#~ msgid "Unable to accept connection" +#~ msgstr "Impossible d'accepter une connexion" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Impossible de récupérer le fichier, le serveur a répondu « %s »" + +#~ msgid "Data socket timed out" +#~ msgstr "Pas de réponse du port de données dans les délais" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Le transfert de données a échoué, le serveur a répondu « %s »" + +#~ msgid "Query" +#~ msgstr "Requête" + +#~ msgid "Unable to invoke " +#~ msgstr "Impossible d'invoquer " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Connexion fermée prématurément" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installé : " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Les paquets retenus suivants seront changés :" + # 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. #~ msgid "Yes, do as I say!" @@ -4423,11 +4599,11 @@ msgstr "Les fichiers vides ne peuvent être des archives valables" #~ " -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" +#~ " -o=? Place une option de configuration arbitraire, p. ex. -o " +#~ "dir::cache=/tmp\n" #~ msgid "Child process failed" -#~ msgstr "Échec du processus fils" +#~ msgstr "Échec du processus enfant" #, fuzzy #~ msgid "Must specifc at least one srv record" @@ -4565,9 +4741,6 @@ msgstr "Les fichiers vides ne peuvent être des archives valables" #~ "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 », " @@ -4748,8 +4921,8 @@ msgstr "Les fichiers vides ne peuvent être des archives valables" #~ "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." +#~ "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 »." diff --git a/po/gl.po b/po/gl.po index 63f3cf5..d6b3f50 100644 --- a/po/gl.po +++ b/po/gl.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2011-05-12 15:28+0100\n" "Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: galician \n" @@ -57,8 +57,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -125,7 +125,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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: " @@ -134,8 +135,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -190,8 +191,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Conflito na distribución: %s (agardábase %s mais obtívose %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -202,7 +202,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -221,6 +221,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Non foi posíbel obter %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -241,13 +248,6 @@ msgstr "" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -652,6 +652,30 @@ msgstr "" 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" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -764,11 +788,11 @@ msgstr "O subproceso %s devolveu un código de erro (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Produciuse un erro de lectura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Produciuse un erro de escritura" @@ -1092,6 +1116,12 @@ msgstr "" msgid "Not locked" msgstr "Non está bloqueado" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1285,6 +1315,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calculando a anovación" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Número total de dependencias: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1590,10 +1630,6 @@ 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 @@ -1757,12 +1793,6 @@ msgstr "O paquete %s non está instalado, así que non foi retirado\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Nota, seleccione «%s» no canto de «%s»\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1867,6 +1897,12 @@ msgstr "A seguinte información pode axudar a solucionar a situación:" msgid "Broken packages" msgstr "Paquetes estragados" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Produciuse un erro de escritura" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1881,10 +1917,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Non foi posíbel obter algúns arquivos; probe con apt-get update ou --fix-" +"Non foi posíbel obter algúns arquivos; probe con apt update ou --fix-" "missing." #: apt-private/private-install.cc @@ -1922,8 +1958,14 @@ 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" +"Que estraño... Os tamaños non coinciden; envíe un correo-e a " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Descargando %s %s" #. 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 @@ -1932,6 +1974,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Ten que recibir %sB/%sB de arquivos.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Descargando %s %s" + #. 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 @@ -1939,13 +1987,55 @@ msgstr "Ten que recibir %sB/%sB de arquivos.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Etiqueta almacenada: %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 @@ -1963,19 +2053,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Quere continuar?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Quere continuar?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Interromper." @@ -2037,6 +2126,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Produciuse un erro interno, o Retirado automático estragou cousas" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2059,16 +2155,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2078,6 +2166,11 @@ msgstr "Paquetes suxeridos:" msgid "Recommended packages:" msgstr "Paquetes recomendados:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2211,10 +2304,32 @@ msgstr " ou" msgid "The following packages have unmet dependencies:" msgstr "Os seguintes paquetes teñen dependencias sen cumprir:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Non foi posíbel satisfacer a dependencia «%s» de %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Instalando %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Número total de dependencias: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Vanse RETIRAR os paquetes seguintes:" @@ -2225,6 +2340,16 @@ msgstr "Vanse RETIRAR os paquetes seguintes:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Consérvanse os seguintes paquetes:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Consérvanse os seguintes paquetes:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Consérvanse os seguintes paquetes:" @@ -2233,10 +2358,24 @@ msgstr "Consérvanse os seguintes paquetes:" msgid "The following packages will be upgraded:" msgstr "Vanse anovar os paquetes seguintes:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Vanse REVERTER os seguintes paquetes :" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Paquetes inmobilizados:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Vanse modificar os paquetes retidos seguintes:" @@ -2254,26 +2393,53 @@ 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 +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu anovados, %lu instalados, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalados, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Instalando %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu revertidos, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Descargando %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2301,7 +2467,7 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2482,8 +2648,8 @@ msgstr "%s non ten dependencias de compilación.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2522,6 +2688,11 @@ msgstr "Non foi posíbel cambiar o nome de %s a %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2539,12 +2710,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2590,6 +2786,12 @@ msgstr " Paquetes virtuais mixtos: " msgid " Missing: " msgstr " Non atopados: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Número total de versións distintas: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Número total de versións distintas: " @@ -2919,6 +3121,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Xurdiu un problema ao calcular o hash do ficheiro" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3168,12 +3376,20 @@ msgstr "" msgid "edit the source information file" msgstr "Lendo a información do estado" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Non foi posíbel satisfacer a dependencia «%s» de %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Configuración predeterminada incorrecta!" @@ -3375,7 +3591,7 @@ msgstr "Algoritmo de compresión «%s» descoñecido" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Non foi posíbel crear a canle IPC ao subproceso" @@ -3494,23 +3710,23 @@ 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" +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" +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" +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" +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" @@ -3549,7 +3765,7 @@ msgstr "Datos da cabeceira incorrectos" msgid "Connection failed" msgstr "Produciuse un fallo na conexión" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3591,7 +3807,7 @@ msgstr "Non é posíbel desmontar o CD-ROM de %s, pode estarse empregando aínda msgid "Disk not found." msgstr "Non se atopou o disco" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Non se atopou o ficheiro" @@ -3627,7 +3843,7 @@ msgstr "Non foi posíbel crear un socket para %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Non é posíbel iniciar a conexión a %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Fallou" @@ -3641,9 +3857,7 @@ msgstr "Non foi posíbel conectar a %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" @@ -3681,149 +3895,14 @@ msgstr "Non foi posíbel determinar o estado" 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 +#: methods/gpgv.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" +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3845,22 +3924,20 @@ msgstr "" "dixital da chave" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Produciuse un erro descoñecido ao executar apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3900,18 +3977,141 @@ msgstr "Fallou a chamada a select" msgid "Connection timed out" msgstr "A conexión esgotou o tempo" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Xurdiu un problema ao calcular o hash do ficheiro" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Produciuse un erro de GPG: %s %s" + +#~ msgid "Logging in" +#~ msgstr "Identificándose" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Non é posíbel determinar o nome do outro extremo" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Non é posíbel determinar o nome local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "O servidor rexeitou a conexión e dixo: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Fallou a orde USER, o servidor dixo: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Fallou a orde PASS, o servidor dixo: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Fallou a orde do script de acceso «%s», o servidor dixo: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Fallou a orde TYPE, o servidor dixo: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Esgotouse o tempo para a conexión" + +#~ msgid "Server closed the connection" +#~ msgstr "O servidor pechou a conexión" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Unha resposta desbordou o búfer." + +#~ msgid "Protocol corruption" +#~ msgstr "Dano no protocolo" + +#~ msgid "Could not create a socket" +#~ msgstr "Non é posíbel crear un socket" + +#~ 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" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Non é posíbel conectar o socket pasivo." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo non puido obter un socket no que atender" + +#~ msgid "Could not bind a socket" +#~ msgstr "Non é posíbel ligar un socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Non é posíbel escoitar no socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Non é posíbel determinar o nome do socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Non é posíbel enviar a orde PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Familia de enderezos %u (AF_*) descoñecida" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Produciuse un fallou na orde EPRT, o servidor dixo: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "A conexión do socket de datos esgotou o tempo" + +#~ msgid "Unable to accept connection" +#~ msgstr "Non é posíbel aceptar a conexión" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Non é posíbel obter o ficheiro, o servidor dixo «%s»" + +#~ msgid "Data socket timed out" +#~ msgstr "O socket de datos esgotou o tempo" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "" +#~ "Produciuse un fallou na transferencia de datos, o servidor dixo «%s»" + +#~ msgid "Query" +#~ msgstr "Petición" + +#~ msgid "Unable to invoke " +#~ msgstr "Non é posíbel chamar a " + +#~ msgid "Connection closed prematurely" +#~ msgstr "A conexión pechouse prematuramente" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Instalado: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Vanse modificar os paquetes retidos seguintes:" + #~ msgid "Yes, do as I say!" #~ msgstr "Si, fai o que digo!" @@ -4145,8 +4345,8 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos" #~ "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" +#~ " -o=? Estabelece unha opción de configuración, por exemplo: -o " +#~ "dir::cache=/tmp\n" #~ msgid "" #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n" @@ -4171,8 +4371,8 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos" #~ " -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" +#~ " -o=? Estabelece unha opción de configuración; por exemplo, -o " +#~ "dir::cache=/tmp\n" #~ msgid "Child process failed" #~ msgstr "O proceso fillo fallou" @@ -4294,9 +4494,6 @@ msgstr "Os ficheiros baleiros non poden ser arquivadores válidos" #~ 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»" diff --git a/po/he.po b/po/he.po index 50581bc..8daefee 100644 --- a/po/he.po +++ b/po/he.po @@ -433,22 +433,22 @@ msgstr "" #: ftparchive/writer.cc:396 ftparchive/writer.cc:627 #, c-format -msgid " %s has no override entry\n" +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" +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" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc:641 #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: ftparchive/contents.cc:321 @@ -795,9 +795,9 @@ msgstr "כשלון בהורדת חלק מהקבצים" msgid "Download complete and in download only mode" msgstr "ההורדה הסתיימה במסגרת מצב הורדה בלבד." -#: cmdline/apt-get.cc:1018 +#: cmdline/apt.cc:1018 msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" diff --git a/po/hu.po b/po/hu.po index d287e68..7c359d2 100644 --- a/po/hu.po +++ b/po/hu.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2016-04-10 19:46+0200\n" "Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \n" @@ -58,11 +58,11 @@ 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." +"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 " +"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 @@ -128,10 +128,14 @@ msgstr "" "hitelesítést?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -139,8 +143,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, fuzzy, c-format @@ -216,8 +220,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Ütköző disztribúció: %s (a várt %s helyett %s érkezett)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -228,7 +231,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -247,6 +250,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Sikertelen letöltés: %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -267,13 +277,6 @@ msgstr "Nem található forrás a(z) „%2$s” „%1$s” verziójának letölt 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -681,6 +684,30 @@ msgstr "" 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" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -795,11 +822,11 @@ msgstr "%s alfolyamat hibakóddal tért vissza (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "%s alfolyamat váratlanul kilépett" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Olvasási hiba" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Írási hiba" @@ -1134,6 +1161,12 @@ msgstr "" msgid "Not locked" msgstr "Nincs zárolva" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1323,6 +1356,16 @@ msgstr "Felkészülés megoldás fogadására" 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 apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Frissítés kiszámítása" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Függőségek összesen: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Külső solver végrehajtása" @@ -1629,10 +1672,6 @@ 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 @@ -1796,12 +1835,6 @@ msgstr "A(z) „%s” csomag nincs telepítve, így nem lett törölve\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Megjegyzés: „%s” kijelölése „%s” helyett\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Legtöbbet használt parancsok:" @@ -1913,6 +1946,12 @@ msgstr "Az alábbi információk segíthetnek megoldani a problémát:" msgid "Broken packages" msgstr "Törött csomagok" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Írási hiba" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1928,10 +1967,10 @@ msgstr "%s kijelölve eltávolításra.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nem lehet letölteni néhány archívumot. Próbálja futtatni az „apt-get update” " +"Nem lehet letölteni néhány archívumot. Próbálja futtatni az „apt update” " "parancsot, vagy használja a --fix-missing kapcsolót." #: apt-private/private-install.cc @@ -1972,6 +2011,12 @@ msgstr "Belső hiba, a rendezés nem fejeződött be" 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Letöltés: %s %s" + #. 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 @@ -1979,6 +2024,12 @@ msgstr "A méretek nem egyeznek, írjon az apt@packages.debian.org címre" msgid "Need to get %sB/%sB of archives.\n" msgstr "Letöltendő adatmennyiség: %sB/%sB.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Letöltés: %s %s" + #. 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 @@ -1986,13 +2037,55 @@ msgstr "Letöltendő adatmennyiség: %sB/%sB.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Tárolt címke: %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 @@ -2010,19 +2103,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Folytatni akarja?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Folytatni akarja?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Megszakítva." @@ -2081,6 +2173,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Belső hiba, az AutoRemover sérült" +#: 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 package was automatically installed and is no longer required:" @@ -2103,15 +2202,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2121,6 +2213,10 @@ msgstr "Javasolt csomagok:" msgid "Recommended packages:" msgstr "Ajánlott csomagok:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2253,10 +2349,32 @@ msgstr " vagy" msgid "The following packages have unmet dependencies:" msgstr "Az alábbi csomagoknak teljesítetlen függőségei vannak:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "%2$s csomag %1$s függősége nem elégíthető ki: %3$s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s telepítése" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Függőségek összesen: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Az alábbi csomagok el lesznek TÁVOLÍTVA:" @@ -2267,6 +2385,16 @@ msgstr "Az alábbi csomagok el lesznek TÁVOLÍTVA:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Az alábbi csomagok vissza lesznek tartva:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Az alábbi csomagok vissza lesznek tartva:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Az alábbi csomagok vissza lesznek tartva:" @@ -2275,10 +2403,24 @@ msgstr "Az alábbi csomagok vissza lesznek tartva:" msgid "The following packages will be upgraded:" msgstr "Az alábbi csomagok frissítve lesznek:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Rögzített csomagok:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "A következő visszatartott csomagok cseréje:" @@ -2296,26 +2438,53 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s telepítése" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu újratelepítendő, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s telepítése" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu visszafejlesztendő, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Letöltés: %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2343,7 +2512,7 @@ msgid "Y" msgstr "I" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2526,8 +2695,8 @@ msgstr "Nincs fordítási függősége a következőnek: %s.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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." @@ -2569,6 +2738,11 @@ msgstr "%s feldolgozása sikertelen. Újra szerkeszti? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "A(z) „%s” fájl megváltozott, adja ki az „apt-get update” parancsot.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2586,12 +2760,43 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +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-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2641,6 +2846,12 @@ msgstr " Vegyes virtuális csomagok: " msgid " Missing: " msgstr " Hiányzik: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Különböző verziók összesen: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Különböző verziók összesen: " @@ -2990,6 +3201,12 @@ msgstr "SRV rekord kikeresése (például: _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "fájlok összefűzése, automatikus kibontással" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Probléma a fájl hash értékének meghatározásakor" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "proxyfelismerés az apt-conf használatával" @@ -3237,12 +3454,20 @@ msgstr "" msgid "edit the source information file" msgstr "a forrásinformációs fájl szerkesztése" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "%2$s csomag %1$s függősége nem elégíthető ki: %3$s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Hibás alapértelmezett beállítás!" @@ -3440,7 +3665,7 @@ msgstr "„%s” tömörítési algoritmus ismeretlen" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Nem sikerült IPC-adatcsatornát létrehozni az alfolyamathoz" @@ -3559,23 +3784,23 @@ 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" +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" +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" +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" +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" @@ -3613,7 +3838,7 @@ msgstr "Rossz fejlécadatok" msgid "Connection failed" msgstr "Sikertelen kapcsolódás" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3658,7 +3883,7 @@ msgstr "" msgid "Disk not found." msgstr "A lemez nem található." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "A fájl nem található" @@ -3694,7 +3919,7 @@ msgstr "Foglalat létrehozása sikertelen ehhez: %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Kapcsolat létrehozása sikertelen ehhez: %s: %s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Sikertelen" @@ -3708,9 +3933,7 @@ msgstr "Nem lehet kapcsolódni ehhez: %s: %s (%s)." 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)" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Kapcsolódás: %s" @@ -3748,151 +3971,14 @@ msgstr "Nem érhető el" 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 +#: methods/gpgv.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" +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3914,22 +4000,20 @@ msgid "" 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Ismeretlen apt-key futtatási hiba" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, fuzzy, c-format @@ -3969,18 +4053,142 @@ msgstr "A kiválasztás sikertelen" msgid "Connection timed out" msgstr "Időtúllépés a kapcsolatban" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Probléma a fájl hash értékének meghatározásakor" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG hiba: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Bejelentkezés" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Nem lehet a partner nevét megállapítani" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nem lehet a helyi nevet megállapítani" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "A kiszolgáló visszautasította a kapcsolatot: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Hibás USER, a kiszolgáló üzenete: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Hibás PASS, a kiszolgáló üzenete: %s" + +#~ 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." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Hibás TYPE, a kiszolgáló üzenete: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Időtúllépés a kapcsolatban" + +#~ msgid "Server closed the connection" +#~ msgstr "A kiszolgáló lezárta a kapcsolatot" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "A válasz túlcsordította a puffert." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokollhiba" + +#~ msgid "Could not create a socket" +#~ msgstr "Nem lehet létrehozni a foglalatot" + +#~ 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" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Nem lehet kapcsolódni a passzív foglalathoz." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "A getaddrinfo nem talált figyelőfoglalatot" + +#~ msgid "Could not bind a socket" +#~ msgstr "Nem lehet összekapcsolódni a foglalattal" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Nem lehet figyelni a foglalaton" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Nem lehet megállapítani a foglalat nevét" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Nem lehet PORT parancsot küldeni" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Ismeretlen címcsalád: %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Hibás EPRT, a kiszolgáló üzenete: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Az adatfoglalathoz kapcsolódás túllépte az időkorlátot" + +#~ msgid "Unable to accept connection" +#~ msgstr "Nem lehet elfogadni a kapcsolatot" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nem lehet letölteni a fájlt, a kiszolgáló üzenete: „%s”" + +#~ msgid "Data socket timed out" +#~ msgstr "Az adatfoglalat túllépte az időkorlátot" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Az adatátvitel sikertelen, a kiszolgáló üzenete: „%s”" + +#~ msgid "Query" +#~ msgstr "Lekérdezés" + +#~ msgid "Unable to invoke " +#~ msgstr "Nem lehet meghívni " + +#~ msgid "Connection closed prematurely" +#~ msgstr "A kapcsolat idő előtt lezárult" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Telepítve: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "A következő visszatartott csomagok cseréje:" + #~ msgid "Yes, do as I say!" #~ msgstr "Igen, tedd amit mondok!" @@ -4421,9 +4629,6 @@ msgstr "Az üres fájlok biztosan nem érvényes csomagok" #~ "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" diff --git a/po/it.po b/po/it.po index bc6b188..57a23a5 100644 --- a/po/it.po +++ b/po/it.po @@ -1,5 +1,5 @@ # Italian translation of apt -# Copyright (C) 2002-2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2019 The Free Software Foundation, Inc. +# Copyright (C) 2002-2024 The Free Software Foundation, Inc. # # Licensing is complex as the msgid come from several files, please see # the individual files for licensing information. @@ -7,15 +7,16 @@ # This file is distributed under the same license as the apt package. # Samuele Giovanni Tonon , 2002. # Milo Casagrande , 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018, 2019. +# Luca Vercelli 2024 # msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2019-03-04 11:05+0100\n" -"Last-Translator: Milo Casagrande \n" -"Language-Team: Italian \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2024-09-06 10:21+0100\n" +"Last-Translator: Luca Vercelli \n" +"Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,8 +29,8 @@ msgid "" "Updating from such a repository can't be done securely, and is therefore " "disabled by default." msgstr "" -"L'aggiornamento da tale repository non può essere eseguito in modo sicuro ed " -"è quindi disabilitato come impostazione predefinita." +"L'aggiornamento da tale repository non può essere eseguito in modo sicuro e " +"quindi è disabilitato come impostazione predefinita." #: apt-pkg/acquire-item.cc msgid "" @@ -44,8 +45,8 @@ msgid "" "See apt-secure(8) manpage for repository creation and user configuration " "details." msgstr "" -"Consultare la pagina man apt-secure(8) per la creazione di un repository e " -"la configurazione utente." +"Consultare la pagina man apt-secure(8) per la creazione di repository e la " +"configurazione utente." #: apt-pkg/acquire-item.cc #, c-format @@ -59,11 +60,11 @@ msgstr "Il repository \"%s\" non ha più un file Release." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"Ciò non è solitamente consentito, ma è stata fornita l'opzione Acquire::" -"AllowDowngradeToInsecureRepositories per aggirare il problema." +"Questo normalmente non è consentito, ma è stata impostata l'opzione " +"Acquire::AllowDowngradeToInsecureRepositories per permetterlo." #: apt-pkg/acquire-item.cc #, c-format @@ -89,7 +90,7 @@ msgstr "Esecuzione di readlink su %s non riuscita" #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc #, c-format msgid "Failed to stat %s" -msgstr "Impossibile eseguire stat su %s" +msgstr "Esecuzione di stat su %s non riuscita" #: apt-pkg/acquire-item.cc msgid "Hash Sum mismatch" @@ -104,7 +105,7 @@ 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)." +msgstr "Comando rename fallito: %s (%s -> %s)." #: apt-pkg/acquire-item.cc msgid "Size mismatch" @@ -125,14 +126,18 @@ 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 " +"Il file con la firma in chiaro non è valido, ottenuto \"%s\" (forse la rete " "richiede autenticazione?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -140,8 +145,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -149,8 +154,9 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" -"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non " -"presenta il componente \"%s\" (nome del componente errato in sources.list?)" +"Acquisizione del file configurato \"%s\" saltata in quanto il repository " +"\"%s\" non presenta il componente \"%s\" (nome del componente errato in " +"sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -158,8 +164,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't support " "architecture '%s'" msgstr "" -"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non " -"supporta l'architettura \"%s\"" +"Acquisizione del file configurato \"%s\" saltata in quanto il repository " +"\"%s\" non supporta l'architettura \"%s\"" #: apt-pkg/acquire-item.cc #, c-format @@ -167,8 +173,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' does not seem to " "provide it (sources.list entry misspelt?)" msgstr "" -"Acquisizione del file \"%s\" saltata in quanto il repository \"%s\" non " -"sembra fornire tale file (voce in sources.list errata?)" +"Acquisizione del file configurato \"%s\" saltata in quanto il repository " +"\"%s\" non sembra fornire tale file (voce in sources.list errata?)" #: apt-pkg/acquire-item.cc #, c-format @@ -188,7 +194,7 @@ 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 " +"Il file Release per %s è scaduto (non valido da %s). Gli aggiornamenti per " "questo repository non verranno applicati." #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is @@ -200,16 +206,15 @@ msgid "" "Release file for %s is not valid yet (invalid for another %s). Updates for " "this repository will not be applied." msgstr "" -"Il file Release per %s non è ancora valido (non valido per %s). Gli " -"aggiornamenti per questo repository non verranno applicati." +"Il file Release per %s non è ancora valido (mancano %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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Il repository \"%s\" ha modificato il valore \"%s\" da \"%s\" a \"%s\"" @@ -222,13 +227,13 @@ msgstr "" "%hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" msgstr "" -"Maggiori informazioni possono essere trovare online nel file Release presso: " -"%s" +"Maggiori informazioni possono essere trovate online nelle Note di rilascio " +"presso: %s" #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) #: apt-pkg/acquire-item.cc @@ -237,14 +242,24 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" -"Ciò deve essere accettato prima di poter applicare gli aggiornamenti da " -"questo repository. Per maggiori informazioni consultare la pagina man %s." +"Questo deve essere accettato esplicitamente prima di poter applicare gli " +"aggiornamenti da questo repository. Per maggiori informazioni consultare la " +"pagina man %s." #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc #, c-format msgid "Failed to fetch %s %s" msgstr "Impossibile recuperare %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"I repository dovrebbero fornire un file InRelease con firma in chiaro, ma " +"non ne è stato trovato alcuno per %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -252,7 +267,8 @@ msgid "" "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)." +"sistemare manualmente questo pacchetto. (Errore dovuto all'architettura " +"mancante)" #: apt-pkg/acquire-item.cc #, c-format @@ -266,19 +282,11 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Changelog per %s=%s non disponibile" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Il metodo \"%s\" non è supportato ed è disabilitato: passare a http(s). Per " -"abilitarlo nuovamente, impostare Dir::Bin::Methods::%s a \"%s\"." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." -msgstr "Il metodo \"%s\" è disabilitato tramite la configurazione." +msgstr "" +"Il metodo \"%s\" è stato espressamente disabilitato da una configurazione." #: apt-pkg/acquire-worker.cc methods/connect.cc #, c-format @@ -306,16 +314,15 @@ 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 %s is missing." -msgstr "Manca la directory di liste %s." +msgstr "Manca la directory delle liste %s." #: apt-pkg/acquire.cc #, c-format msgid "Archives directory %s is missing." -msgstr "Manca la directory di archivio %s." +msgstr "Manca la directory degli archivi %s." #: apt-pkg/acquire.cc #, c-format @@ -326,7 +333,8 @@ msgstr "Impossibile bloccare la directory %s" #, c-format msgid "No sandbox user '%s' on the system, can not drop privileges" msgstr "" -"Nessun utente sandbox \"%s\" sul sistema, impossibile perdere i privilegi" +"L'utente sandbox \"%s\" non esiste nel sistema, impossibile perdere i " +"privilegi" #: apt-pkg/acquire.cc #, c-format @@ -366,8 +374,8 @@ msgstr "Scaricamento file %li di %li" 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." +"Il pacchetto %s deve essere reinstallato, ma non è possibile trovare un " +"archivio corrispondente." #: apt-pkg/algorithms.cc msgid "" @@ -390,11 +398,11 @@ msgstr "" #: 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" +"Si può provare a eseguire \"apt-get update\" per correggere questi problemi" #: apt-pkg/cachefile.cc methods/mirror.cc msgid "The list of sources could not be read." -msgstr "Impossibile leggere l'elenco dei sorgenti." +msgstr "Impossibile leggere l'elenco delle sorgenti." #: apt-pkg/cachefilter-patterns.cc apt-pkg/cachefilter.cc #: apt-private/private-output.cc @@ -405,36 +413,36 @@ msgstr "Errore di compilazione dell'espressione regolare - %s" #: apt-pkg/cacheset.cc #, c-format msgid "Couldn't find task '%s'" -msgstr "Impossibile trovare il task \"%s\"" +msgstr "Task \"%s\" non trovato" #: 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\"" +msgstr "Nessun pacchetto trovato 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\"" +msgstr "Nessun pacchetto trovato 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" +msgstr "Pacchetto \"%s\" non trovato" #: 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" +"Impossibile selezionare versioni dal pacchetto \"%s\" poiché è un pacchetto " +"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" +"è un pacchetto virtuale" #: apt-pkg/cacheset.cc #, c-format @@ -457,7 +465,7 @@ msgid "" "neither of them" msgstr "" "Impossibile selezionare la versione installata o la candidata dal pacchetto " -"\"%s\" poiché non sono presenti" +"\"%s\" poiché nessuna delle due è presente" # (ndt) dovrebbe essere inteso il file Release #: apt-pkg/cacheset.cc @@ -499,7 +507,7 @@ msgstr "Etichetta archiviata: %s\n" #: apt-pkg/cdrom.cc msgid "Scanning disc for index files...\n" -msgstr "Analisi del disco per file indice...\n" +msgstr "Ricerca di file indice sul disco...\n" #: apt-pkg/cdrom.cc #, c-format @@ -507,16 +515,16 @@ 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" +"Trovati %zu indici di pacchetti, %zu indici di sorgenti, %zu indici di " +"traduzioni 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." +"Impossibile trovare file di pacchetto. Questo disco potrebbe non essere un " +"disco Debian, oppure potrebbe essere relativo all'architettura errata." #: apt-pkg/cdrom.cc #, c-format @@ -525,7 +533,7 @@ 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" +msgstr "Nome non valido, riprovare.\n" #: apt-pkg/cdrom.cc #, c-format @@ -559,11 +567,11 @@ msgstr "Firma dell'archivio non valida" #: apt-pkg/contrib/arfile.cc msgid "Error reading archive member header" -msgstr "Errore nel leggere l'intestazione membro dell'archivio" +msgstr "Errore nel leggere l'intestazione dell'elemento dell'archivio" #: apt-pkg/contrib/arfile.cc msgid "Invalid archive member header" -msgstr "Intestazione membro dell'archivio non valida" +msgstr "Intestazione dell'elemento dell'archivio non valida" #: apt-pkg/contrib/arfile.cc msgid "Archive is too short" @@ -620,7 +628,7 @@ msgstr "" #: 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\"" +msgstr "L'opzione %s richiede come argomento un numero intero, non \"%s\"" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -630,7 +638,7 @@ 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\"." +msgstr "Il valore \"%s\" non è comprensibile, provare \"true\" o \"false\"." #: apt-pkg/contrib/cmndline.cc #, c-format @@ -640,7 +648,7 @@ msgstr "Operazione %s non valida" #: apt-pkg/contrib/configuration.cc #, c-format msgid "Unrecognized type abbreviation: '%c'" -msgstr "Tipo di abbreviazione non riconosciuto: \"%c\"" +msgstr "Abbreviazione di tipo non riconosciuta: \"%c\"" #: apt-pkg/contrib/configuration.cc #, c-format @@ -650,7 +658,7 @@ 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" +msgstr "Errore di sintassi %s:%u: tag malformato" #: apt-pkg/contrib/configuration.cc #, c-format @@ -692,6 +700,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Errore di sintassi %s:%u: caratteri extra alla fine del file" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Errore:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Attenzione:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Avviso:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audit:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Debug:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -703,13 +735,12 @@ msgstr "Archivio danneggiato" #: apt-pkg/contrib/extracttar.cc msgid "Tar checksum failed, archive corrupted" -msgstr "Checksum di tar non riuscito, archivio danneggiato" +msgstr "Checksum del file tar non corrispondente, archivio danneggiato" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Intestazione TAR di tipo %u sconosciuta, membro %s" +msgstr "Intestazione TAR di tipo %u sconosciuta" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -732,15 +763,14 @@ 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 -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Impossibile impostare il blocco %s" +msgstr "Impossibile impostare il blocco %s. È bloccato dal processo %d" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s. It is held by process %d (%s)" -msgstr "" +msgstr "Impossibile impostare il blocco %s. È bloccato dal processo %d (%s)" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -752,6 +782,8 @@ msgid "" "Be aware that removing the lock file is not a solution and may break your " "system." msgstr "" +"Si noti che la rimozione del file di blocco non è una soluzione e potrebbe " +"danneggiare il sistema." #: apt-pkg/contrib/fileutl.cc #, c-format @@ -784,7 +816,7 @@ msgstr "" #: 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" +msgstr "Si era in attesa di %s ma non era presente" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -807,11 +839,11 @@ msgstr "Il sottoprocesso %s ha restituito un codice d'errore (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Il sottoprocesso %s è uscito inaspettatamente" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Errore di lettura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Errore di scrittura" @@ -830,7 +862,7 @@ msgstr "Creazione di un sottoprocesso IPC non riuscita" #: apt-pkg/contrib/fileutl.cc msgid "Failed to exec compressor " -msgstr "Esecuzione non riuscita del compressore " +msgstr "Esecuzione del compressore non riuscita " #: apt-pkg/contrib/fileutl.cc #, c-format @@ -840,12 +872,12 @@ 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" +msgstr "Impossibile aprire il descrittore di 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" +msgstr "lettura, ancora %llu da leggere, ma 0 rimanenti" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -888,7 +920,7 @@ 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" +msgstr "Impossibile duplicare il descrittore di file %i" #: apt-pkg/contrib/mmap.cc msgid "Unable to close mmap" @@ -901,7 +933,7 @@ 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" +msgstr "Impossibile creare mmap di %lu byte" #: apt-pkg/contrib/mmap.cc msgid "Failed to truncate file" @@ -922,8 +954,8 @@ 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." +"Impossibile incrementare la dimensione della MMap poiché è già stato " +"raggiunto il limite di %lu byte." # (ndt) lunghetta... #: apt-pkg/contrib/mmap.cc @@ -939,6 +971,8 @@ msgid "" "%s: Credentials for %s match, but the protocol is not encrypted. Annotate " "with %s:// to use." msgstr "" +"%s: Le credenziali per %s corrispondono, ma il protocollo non è criptato. " +"Annotare con %s:// per utilizzarlo. " #: apt-pkg/contrib/progress.cc #, c-format @@ -955,16 +989,14 @@ msgid "..." msgstr "..." #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s... %u%%" +msgstr "%c%s... %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llus" -msgstr "%c%s... %u%%" +msgstr "%c%s... %llus" #: apt-pkg/contrib/progress.cc #, c-format @@ -1012,13 +1044,12 @@ msgstr "Errore interno, impossibile trovare il membro %s" #: apt-pkg/deb/debfile.cc msgid "Unparsable control file" -msgstr "File \"control\" non analizzabile" +msgstr "File \"control\" formalmente scorretto" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Impossibile impostare il blocco %s" +msgstr "Impossibile leggere metadati da %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -1035,7 +1066,7 @@ msgstr "" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "L'obiettivo %s (%s) è configurato molteplici volte in %s e %s" +msgstr "L'obiettivo %s (%s) è configurato più volte in %s e %s" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -1064,7 +1095,7 @@ 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" +msgstr "Voce \"%s\" non valida nel file Release %s" #. TRANSLATOR: The first is an option name from sources.list manpage, the other two URI and Suite #: apt-pkg/deb/debmetaindex.cc @@ -1090,13 +1121,12 @@ 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)" +msgstr "File di pacchetto formalmente scorretto %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "In attesa degli header" +msgstr "In attesa del blocco della cache: %s" #: apt-pkg/deb/debsystem.cc #, c-format @@ -1110,7 +1140,7 @@ msgstr "" #, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" msgstr "" -"Impossibile acquisire il blocco sul frontend dpkg (%s). È necessario essere " +"Impossibile acquisire il blocco sul frontend dpkg (%s). Verificare di essere " "root." #. TRANSLATORS: the %s contains the recovery command, usually @@ -1129,20 +1159,26 @@ msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" msgstr "" -"Impossibile acquisire il blocco sulla directory di amministrazione (%s). Un " +"Impossibile acquisire il blocco sulla directory amministrativa (%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." +"Impossibile acquisire il blocco sulla directory amministrativa (%s). " +"Verificare di essere root." #: apt-pkg/deb/debsystem.cc msgid "Not locked" msgstr "Non bloccato" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1167,12 +1203,12 @@ msgstr "Preparazione alla rimozione completa di %s" #: apt-pkg/deb/dpkgpm.cc #, c-format msgid "Noting disappearance of %s" -msgstr "Notata la sparizione di %s" +msgstr "Rilevata la sparizione di %s" #: apt-pkg/deb/dpkgpm.cc #, c-format msgid "Running post-installation trigger %s" -msgstr "Esecuzione comando di post installazione %s" +msgstr "Esecuzione comando di post-installazione %s" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1223,15 +1259,15 @@ msgstr "Pacchetto %s rimosso completamente" #: apt-pkg/deb/dpkgpm.cc #, c-format msgid "Can not write log (%s)" -msgstr "Impossibile scrivere il registro (%s)" +msgstr "Impossibile scrivere il log (%s)" #: apt-pkg/deb/dpkgpm.cc msgid "Is /dev/pts mounted?" -msgstr "È /dev/pts montato?" +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" +msgstr "L'operazione è stata interrotta prima che potesse completare" #: apt-pkg/deb/dpkgpm.cc msgid "No apport report written because MaxReports is reached already" @@ -1249,8 +1285,8 @@ 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." +"Segnalazione apport non scritta poiché il messaggio di errore indica che è " +"conseguenza di un fallimento precedente." #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1307,7 +1343,7 @@ 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" +msgstr "Scrittura del file di stato temporaneo %s non riuscita" #: apt-pkg/dirstream.cc #, c-format @@ -1321,11 +1357,11 @@ msgstr "Chiusura del file %s non riuscita" #: apt-pkg/edsp.cc msgid "Send scenario to solver" -msgstr "Invia lo scenario al solver" +msgstr "Invio dello scenario al solver" #: apt-pkg/edsp.cc msgid "Send request to solver" -msgstr "Invia la richiesta al solver" +msgstr "Invio della richiesta al solver" #: apt-pkg/edsp.cc msgid "Prepare for receiving solution" @@ -1333,7 +1369,15 @@ 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 messaggio di errore" +msgstr "Il solver esterno è fallito senza un messaggio di errore" + +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calcolo dell'aggiornamento" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Risoluzione dipendenze" #: apt-pkg/edsp.cc msgid "Execute external solver" @@ -1345,15 +1389,15 @@ msgstr "Esecuzione planner esterno" #: apt-pkg/edsp.cc msgid "Send request to planner" -msgstr "Invia la richiesta al planner" +msgstr "Invio della richiesta al planner" #: apt-pkg/edsp.cc msgid "Send scenario to planner" -msgstr "Invia lo scenario al planner" +msgstr "Invio dello scenario al planner" #: apt-pkg/edsp.cc msgid "External planner failed without a proper error message" -msgstr "Il planner esterno è terminato senza un messaggio di errore" +msgstr "Il planner esterno è fallito senza un messaggio di errore appropriato" #: apt-pkg/indexcopy.cc #, c-format @@ -1393,7 +1437,7 @@ 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" +msgstr "Impossibile determinare un tipo di sistema di pacchetti idoneo" #: apt-pkg/install-progress.cc #, c-format @@ -1412,8 +1456,8 @@ msgid "" "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)." +"maggiori informazioni, consultare \"man 5 apt.conf\" alla sezione " +"\"APT::Immediate-Configure\" (%d)." #: apt-pkg/packagemanager.cc #, c-format @@ -1428,8 +1472,8 @@ msgid "" "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 " +"essenziale %s a causa di un ciclo Conflicts/Pre-Depends. Questo spesso è " +"pericoloso, ma se si vuole realmente procedere, attivare l'opzione " "APT::Force-LoopBreak." #: apt-pkg/pkgcache.cc @@ -1447,19 +1491,19 @@ 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\"" +msgstr "Questo APT non supporta il sistema di gestione delle versioni \"%s\"" #: apt-pkg/pkgcache.cc #, 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: %s vs. %s" +"La cache dei pacchetti è stata generata per un'altra architettura: %s vs. %s" #: apt-pkg/pkgcache.cc msgid "The package cache file is corrupted, it has the wrong hash" -msgstr "Il file della cache dei pacchetti è danneggiato, hash non corretto" +msgstr "Il file della cache dei pacchetti è danneggiato, ha hash errato" +# (ndt) ma Depends/PreDepends/Suggests/... sono da tradurre o no? #: apt-pkg/pkgcache.cc msgid "Depends" msgstr "Dipende" @@ -1548,14 +1592,15 @@ msgstr "È stato superato il numero di dipendenze che questo APT può gestire." msgid "Reading package lists" msgstr "Lettura elenco dei pacchetti" +# (ndt) forse si intendeva status cache e non source cache? #: apt-pkg/pkgcachegen.cc msgid "IO Error saving source cache" -msgstr "Errore di I/O nel salvare la cache sorgente" +msgstr "Errore di I/O nel salvare la source cache" #: apt-pkg/pkgrecords.cc #, c-format msgid "Index file type '%s' is not supported" -msgstr "Il file indice di tipo \"%s\" non è supportato" +msgstr "Il tipo di file indice \"%s\" non è supportato" #: apt-pkg/policy.cc #, c-format @@ -1570,13 +1615,13 @@ msgstr "" #, 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 " +"Voce non valida 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" +msgstr "Impossibile comprendere il tipo di pin %s" #: apt-pkg/policy.cc #, c-format @@ -1590,39 +1635,40 @@ msgstr "" #, c-format msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" msgstr "" -"%s: il valore %s non rientra nell'intervallo di priorità di gancio valide " -"(%d - %d)" +"%s: il valore %s non rientra nell'intervallo di priorità di pin valide (%d - " +"%d)" #: apt-pkg/policy.cc msgid "No priority (or zero) specified for pin" -msgstr "Priorità per il gancio non specificata (o zero)" +msgstr "Priorità per il pin 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 #, c-format msgid "Malformed entry %u in %s file %s (%s)" -msgstr "Voce %u non corretta nel file %s (%s %s)" +msgstr "Voce %u sintatticamente errata nel file %s (%s %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)" +msgstr "Riga %u sintatticamente errata nel file delle sorgenti %s (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" +# (ndt) cos'è una stanza è decisamente da capire #: apt-pkg/sourcelist.cc #, c-format msgid "Malformed stanza %u in source list %s (type)" -msgstr "La stanza %u nell'elenco delle sorgenti %s non è corretta (type)" +msgstr "Sezione %u sintatticamente errata nel file delle sorgenti %s (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" +"Tipo \"%s\" non riconosciuto nella sezione %u nel file delle sorgenti %s" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format @@ -1630,16 +1676,14 @@ msgid "Unsupported file %s given on commandline" msgstr "File %s non supportato passato sulla riga di comando" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" msgstr "" -"È necessario inserire alcuni URI di tipo \"source\" nel file sources.list" +"È necessario inserire alcuni URI di tipo \"deb-src\" nel file sources.list" #: apt-pkg/tagfile.cc #, c-format msgid "Cannot convert %s to integer: out of range" -msgstr "Impossibile convertire %s a intero: fuori dall'intervallo" +msgstr "Impossibile convertire %s in intero: fuori dall'intervallo" #: apt-pkg/update.cc msgid "" @@ -1649,10 +1693,6 @@ 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 @@ -1729,7 +1769,7 @@ 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ò." +msgstr "È possibile eseguire \"apt --fix-broken install\" per correggere." #: apt-private/private-cachefile.cc apt-private/private-install.cc msgid "" @@ -1773,7 +1813,7 @@ msgstr " [Versione non candidata]" #: apt-private/private-cacheset.cc msgid "You should explicitly select one to install." -msgstr "È necessario sceglierne uno da installare." +msgstr "È necessario sceglierne esplicitamente uno da installare." #: apt-private/private-cacheset.cc #, c-format @@ -1818,12 +1858,6 @@ msgstr "Il pacchetto \"%s\" non è installato e quindi non è stato rimosso\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Nota, viene selezionato \"%s\" al posto di \"%s\"\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Comandi più utilizzati:" @@ -1841,9 +1875,9 @@ msgid "" "Package and version choices can be expressed via apt_preferences(5).\n" "Security details are available in apt-secure(8).\n" msgstr "" -"Le opzioni di configurazione e la sintassi sono dettagliate in atp.conf(5).\n" -"Le informazioni per configurare le sorgenti sono dettagliate in sources." -"list(5).\n" +"Le opzioni di configurazione e la sintassi sono dettagliate in apt.conf(5).\n" +"Informazioni per configurare le sorgenti sono dettagliate in " +"sources.list(5).\n" "Scelte di pacchetti e versioni possono essere espresse tramite " "apt_preferences(5).\n" "Informazioni di sicurezza sono presenti in apt-secure(8).\n" @@ -1937,22 +1971,29 @@ msgstr "Le seguenti informazioni possono aiutare a risolvere la situazione:" msgid "Broken packages" msgstr "Pacchetti danneggiati" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Errore di scrittura" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Le cartelle usr \"unmerged\" non sono più supportate, usare il comando " +"usrmerge per trasformarle in cartelle \"merged\"" #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "Selezionato %s per la rimozione.\n" +msgstr "Si veda %s per dettagli." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" "Impossibile scaricare alcuni pacchetti. Potrebbe essere utile eseguire \"apt-" @@ -1966,8 +2007,7 @@ msgstr "" #: 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." +msgstr "Occorre rimuovere pacchetti, ma l'azione di rimozione è disabilitata." #: apt-private/private-install.cc msgid "" @@ -1980,7 +2020,7 @@ msgstr "" #: apt-private/private-install.cc msgid "Packages were downgraded and -y was used without --allow-downgrades." msgstr "" -"Pacchetti sono stati retrocessi è stata usata -y senza --allow-downgrades." +"Pacchetti sono stati retrocessi ed è stata usata -y senza --allow-downgrades." #: apt-private/private-install.cc msgid "" @@ -1992,13 +2032,18 @@ msgstr "" #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" -msgstr "Errore interno, l'ordinamento non è stato terminato" +msgstr "Errore interno, l'ordinamento non è 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" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Dimensione scaricamento: %sB / %sB\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 @@ -2006,6 +2051,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "È necessario scaricare %sB/%sB di archivi.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Dimensione scaricamento: %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 @@ -2013,12 +2063,58 @@ msgstr "È necessario scaricare %sB/%sB di archivi.\n" msgid "Need to get %sB of archives.\n" msgstr "È necessario scaricare %sB di archivi.\n" +#: 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 in più.\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" +msgid "Space needed: %sB / %sB available\n" +msgstr "Spazio richiesto: %sB / %sB disponibile\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"È richiesto più spazio di quanto sia disponibile: %sB > %sB, l'installazione " +"potrebbe fallire" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "in %s: %sB / %sB disponibile\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"È richiesto più spazio in %s di quanto sia disponibile: %sB > %sB, " +"l'installazione potrebbe fallire" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Spazio richiesto: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Spazio liberato: %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 @@ -2038,19 +2134,20 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Continuare?" +"Rimuovere pacchetti critici del sistema non è permesso. Questo potrebbe " +"danneggiare il sistema." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Continuare ugualmente?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Continuare?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Continuare?" #: apt-private/private-install.cc msgid "Abort." @@ -2062,11 +2159,11 @@ 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" +msgstr "Scaricamento completato e modalità solo scaricamento richiesta" #: apt-private/private-install.cc msgid "--fix-missing and media swapping is not currently supported" -msgstr "--fix-missing su supporti estraibili non è ancora supportato" +msgstr "--fix-missing su supporti estraibili non è attualmente supportato" #: apt-private/private-install.cc msgid "Unable to correct missing packages." @@ -2105,12 +2202,19 @@ msgid "" "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." +"non doveva accadere. Si consiglia di segnalare un bug di 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 +#, 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2136,15 +2240,8 @@ msgstr[1] "" "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 -msgid "The following additional packages will be installed:" -msgstr "I seguenti pacchetti aggiuntivi saranno inoltre installati:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2154,11 +2251,16 @@ msgstr "Pacchetti suggeriti:" msgid "Recommended packages:" msgstr "Pacchetti raccomandati:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "I seguenti pacchetti aggiuntivi saranno inoltre installati:" + #: 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" +"Viene saltato %s poiché è già installato e non è stato richiesto " +"l'aggiornamento.\n" #: apt-private/private-install.cc #, c-format @@ -2181,21 +2283,22 @@ msgstr "%s è già alla versione più recente (%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 "È stato impostato %s per l'installazione manuale.\n" +msgstr "%s è stato contrassegnato come installato manualmente.\n" #: apt-private/private-install.cc #, c-format msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "Versione \"%s\" (%s) selezionata per \"%s\"\n" +msgstr "Selezionata la versione \"%s\" (%s) 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" +msgstr "Selezionata la versione \"%s\" (%s) per \"%s\" per via di \"%s\"\n" +# (ndt) da ricontrollare #: apt-private/private-list.cc msgid "Listing" -msgstr "Elencazione" +msgstr "Elenco" #: apt-private/private-list.cc #, c-format @@ -2215,9 +2318,9 @@ msgid "" " 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" +" %s necessita dei privilegi di root per l’esecuzione reale.\n" +" Tuttavia il meccanismo di blocco non è attivo,\n" +" quindi questo non è un problema in questa precisa situazione.\n" #: apt-private/private-output.cc apt-private/private-show.cc msgid "unknown" @@ -2234,7 +2337,7 @@ msgstr "[installato, locale]" #: apt-private/private-output.cc msgid "[installed,auto-removable]" -msgstr "[installato, auto-rimovibile]" +msgstr "[installato, rimovibile automaticamente]" #: apt-private/private-output.cc msgid "[installed,automatic]" @@ -2287,19 +2390,42 @@ msgstr " oppure" msgid "The following packages have unmet dependencies:" msgstr "I seguenti pacchetti hanno dipendenze non soddisfatte:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "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 "Installing:" +msgstr "Installazione:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Installazione dipendenze: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "RIMOZIONE:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "I seguenti pacchetti saranno RIMOSSI:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "I seguenti pacchetti sono stati mantenuti alla versione attuale:" +msgstr "" +"I seguenti aggiornamenti sono stati posticipati per via dello scaglionamento:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Non ancora aggiornati per via dello scaglionamento:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Non aggiornati:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2309,10 +2435,22 @@ msgstr "I seguenti pacchetti sono stati mantenuti alla versione attuale:" msgid "The following packages will be upgraded:" msgstr "I seguenti pacchetti saranno aggiornati:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Aggiornamento:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "RETROCESSIONE:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "I seguenti pacchetti saranno RETROCESSI:" +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "Modifica di pacchetti bloccati:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "I seguenti pacchetti bloccati saranno cambiati:" @@ -2328,29 +2466,53 @@ msgid "" "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 " +"Questo NON dovrebbe essere fatto a meno che non si sappia esattamente cosa " "si sta facendo." +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Riepilogo:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Aggiornamento: %lu, Installazione: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstallati, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Reinstallazione: %lu" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu retrocessi, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Retrocessione: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Rimozione: %lu, Non aggiornati: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2378,17 +2540,18 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.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" +msgstr "È necessario specificare almeno un criterio di ricerca" +# (ndt) Full Text potrebbe essere da lasciare in inglese? #: apt-private/private-search.cc msgid "Full Text Search" -msgstr "Ricerca sul testo" +msgstr "Ricerca nel testo" #: apt-private/private-show.cc #, c-format @@ -2414,7 +2577,7 @@ msgstr "" #. Show any packages have explicit pins #: apt-private/private-show.cc msgid "Pinned packages:" -msgstr "Pacchetti con gancio:" +msgstr "Pacchetti in evidenza (pin):" #. Print the package name and the version we are forcing to #: apt-private/private-show.cc @@ -2441,7 +2604,7 @@ msgstr " Tabella versione:" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "scaglionato" #: apt-private/private-source.cc #, c-format @@ -2497,20 +2660,20 @@ msgid "" msgstr "" "Utilizzare:\n" "%s\n" -"per recuperare gli ultimi (forse non rilasciati) aggiornamenti del " +"per recuperare gli ultimi aggiornamenti (potenzialmente non rilasciati) 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" +msgstr "Il file \"%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" +msgstr "È necessario scaricare %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 @@ -2522,16 +2685,16 @@ msgstr "È necessario scaricare %sB di sorgenti.\n" #: apt-private/private-source.cc #, c-format msgid "Fetch source %s\n" -msgstr "Recupero sorgente %s\n" +msgstr "Scaricamento sorgente %s\n" #: apt-private/private-source.cc msgid "Failed to fetch some archives." -msgstr "Recupero di alcuni archivi non riuscito." +msgstr "Lo scaricamento di alcuni archivi è fallito." #: 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" +msgstr "Saltata l'estrazione del pacchetto sorgente già estratto in %s\n" #: apt-private/private-source.cc #, c-format @@ -2545,60 +2708,64 @@ 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" +msgstr "Comando \"%s\" di compilazione 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" +msgstr "" +"Impossibile ottenere informazioni sulle dipendenze di compilazione per %s" #: apt-private/private-source.cc #, c-format msgid "%s has no build depends.\n" -msgstr "%s non ha dipendenze di generazione.\n" +msgstr "%s non ha dipendenze di compilazione.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"Informazioni sull'architettura non disponibili per %s. Consultare " +"apt.conf(5) APT::Architectures per l'impostazione" #: 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" +"dipendenze di compilazione" #: apt-private/private-source.cc #, c-format msgid "" "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" msgstr "" +"Operatore non valido \"%c\" all'offset %d, si intendeva \"%c%c\" oppure " +"\"%c=\"? - in: %s" #: apt-private/private-source.cc #, c-format msgid "Note, using directory '%s' to get the build dependencies\n" msgstr "" -"Viene usata la directory \"%s\" per recuperare le dipendenze di generazione\n" +"Nota, viene usata la directory \"%s\" per recuperare le dipendenze di " +"compilazione\n" #: apt-private/private-source.cc #, c-format msgid "Note, using file '%s' to get the build dependencies\n" msgstr "" "Nota, viene usato il file \"%s\" per recuperare le dipendenze di " -"generazione\n" +"compilazione\n" #: apt-private/private-source.cc msgid "Failed to process build dependencies" -msgstr "Elaborazione delle dipendenze di generazione non riuscita" +msgstr "Elaborazione delle dipendenze di compilazione non riuscita" #: apt-private/private-sources.cc #, c-format msgid "Failed to parse %s. Edit again? " -msgstr "Analisi di %s non riuscita: modificare nuovamente?" +msgstr "Analisi di %s non riuscita. Modificare nuovamente?" #: apt-private/private-sources.cc #, c-format @@ -2606,6 +2773,11 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" "Il proprio file \"%s\" è stato modificato: eseguire \"apt-get update\".\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2625,10 +2797,41 @@ msgstr "" "È preferibile usare %s invece di incorporare le informazioni di accesso " "direttamente nella voce %s di \"%s\"" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Clausola Signed-By mancante nella voce %s per \"%s\"" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Consultare la pagina man apt-secure(8) per la creazione di repository e la " +"configurazione utente." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" #: apt-private/private-update.cc @@ -2678,7 +2881,13 @@ msgstr " Pacchetti virtuali misti: " #: cmdline/apt-cache.cc msgid " Missing: " -msgstr " Mancante: " +msgstr " Mancanti: " + +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Totale versioni distinte: " #: cmdline/apt-cache.cc msgid "Total distinct versions: " @@ -2702,7 +2911,7 @@ msgstr "Totale relazioni desc/file: " #: cmdline/apt-cache.cc msgid "Total Provides mappings: " -msgstr "Totale corrispondenze fornite: " +msgstr "Totale corrispondenze Provides fornite: " #: cmdline/apt-cache.cc msgid "Total globbed strings: " @@ -2738,21 +2947,19 @@ msgstr "" "\n" "apt-cache interroga e visualizza informazioni riguardo ai pacchetti " "installati\n" -"e che possono essere installati. Funziona esclusivamente con i dati " -"acquisiti\n" -"nella cache locale tramite il comando \"update\" di, per esempio, apt-get. " -"Le\n" -"informazioni potrebbero quindi non essere aggiornate in base alla data\n" +"e installabili. Funziona esclusivamente con i dati acquisiti\n" +"nella cache locale tramite il comando \"update\" di, per esempio, apt-get.\n" +"Le informazioni potrebbero quindi non essere aggiornate, in base alla data\n" "dell'ultimo aggiornamento, ma apt-cache può funzionare comunque anche in\n" -"assenza delle sorgenti configurate (mancanza di connessione di rete).\n" +"assenza delle sorgenti configurate (es. mancanza di connessione di rete).\n" #: cmdline/apt-cache.cc msgid "Show source records" -msgstr "Mostra i campi dei sorgenti" +msgstr "Mostra le voci relative alle sorgenti" #: cmdline/apt-cache.cc msgid "Search the package list for a regex pattern" -msgstr "Cerca nell'elenco dei pacchetti un'espressione regolare" +msgstr "Cerca nell'elenco dei pacchetti in base a un'espressione regolare" #: cmdline/apt-cache.cc msgid "Show raw dependency information for a package" @@ -2764,7 +2971,7 @@ 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" +msgstr "Mostra una nota leggibile per il pacchetto" #: cmdline/apt-cache.cc msgid "List the names of all packages in the system" @@ -2886,7 +3093,7 @@ msgstr "Impossibile trovare il pacchetto %s" #: cmdline/apt-get.cc cmdline/apt-mark.cc #, c-format msgid "%s set to automatically installed.\n" -msgstr "È stato impostato %s per l'installazione automatica.\n" +msgstr "%s è stato contrassegnato come installato automaticamente.\n" #: cmdline/apt-get.cc cmdline/apt-mark.cc msgid "" @@ -2898,7 +3105,7 @@ msgstr "" #: cmdline/apt-get.cc msgid "Internal error, problem resolver broke stuff" -msgstr "Errore interno, \"problem resolver\" ha rovinato qualcosa" +msgstr "Errore interno, il \"problem resolver\" ha rovinato qualcosa" #: cmdline/apt-get.cc msgid "Supported modules:" @@ -2935,19 +3142,19 @@ 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)" +msgstr "Installa nuovi pacchetti (PACCHETTO è libc6 non libc6.deb)" #: cmdline/apt-get.cc msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Installa nuovamente pacchetti (PKG è libc6 non libc6.deb)" +msgstr "Reinstalla pacchetti (PACCHETTO è libc6 non libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" -msgstr "Rimuove i pacchetti" +msgstr "Rimuove pacchetti" #: cmdline/apt-get.cc msgid "Remove packages and config files" -msgstr "Rimuove i pacchetti e la loro configurazione" +msgstr "Rimuove pacchetti e relativi file di configurazione" #: cmdline/apt-get.cc msgid "Remove automatically all unused packages" @@ -2963,13 +3170,11 @@ 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" +msgstr "Configura le dipendenze di compilazione per i pacchetti sorgente" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Generazione albero delle dipendenze" +msgstr "Risolve stringhe di dipendenze" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" @@ -2985,7 +3190,7 @@ msgstr "Verifica che non ci siano dipendenze insoddisfatte" #: cmdline/apt-get.cc msgid "Download source archives" -msgstr "Scarica i pacchetti sorgente" +msgstr "Scarica pacchetti sorgente" #: cmdline/apt-get.cc msgid "Download the binary package into the current directory" @@ -3023,16 +3228,16 @@ msgid "" msgstr "" "Uso: apt-helper [OPZIONI] COMANDO\n" " apt-helper [OPZIONI] cat-file FILE ...\n" -" apt-helper [OPZIONI] download-file URI PERCORSO\n" +" apt-helper [OPZIONI] download-file URI PERCORSO_DESTINAZIONE\n" "\n" "apt-helper integra una serie di comandi utilizzabili da programmi shell " "per,\n" -"per esempio, sfruttare la stessa configurazione proxy o l'acquisizione del\n" -"sistema allo stesso modo di APT.\n" +"per esempio, sfruttare la stessa configurazione proxy o lo stesso sistema\n" +"di acquisizione di APT.\n" #: cmdline/apt-helper.cc msgid "download the given uri to the target-path" -msgstr "Scarica l'URI fornito in percorso" +msgstr "Scarica l'URI fornito in PERCORSO_DESTINAZIONE" #: cmdline/apt-helper.cc msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" @@ -3042,6 +3247,12 @@ msgstr "Cerca un record SRV (per es. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "Concatena i file con decompressione automatica" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Si è verificato un problema nel creare l'hash del file" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "Rileva proxy utilizzando apt.conf" @@ -3056,7 +3267,7 @@ msgstr "Rilascia i privilegi prima di eseguire il comando fornito" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "Analizza un pattern" #: cmdline/apt-internal-planner.cc msgid "" @@ -3069,9 +3280,9 @@ msgstr "" "Uso: apt-internal-planner\n" "\n" "apt-internal-planner è un'interfaccia per l'utilizzo del pianificatore di\n" -"installazione interno come pianificatore esterno per eseguire il debug " -"degli\n" -"strumenti APT.\n" +"installazione interno degli strumenti APT come se fosse un pianificatore " +"esterno,\n" +"principalmente a scopo di debug.\n" #: cmdline/apt-internal-solver.cc msgid "" @@ -3084,23 +3295,23 @@ msgstr "" "Uso: apt-internal-solver\n" "\n" "apt-internal-solver è un'interfaccia per l'utilizzo del resolver interno\n" -"come resolver esterno per eseguire il debug degli strumenti APT.\n" -"\n" +"degli strumenti APT come se fosse un resolver esterno,\n" +"principalmente a scopo di debug.\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" +msgstr "%s non può essere contrassegnato 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" +msgstr "%s è già stato contrassegnato 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" +msgstr "%s è già stato contrassegnato come installato automaticamente.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" @@ -3108,12 +3319,13 @@ msgstr "Nessuna modifica necessaria" #: cmdline/apt-mark.cc msgid "The following packages will be marked as automatically installed:" -msgstr "I seguenti pacchetti verranno segnati come installati automaticamente:" +msgstr "" +"I seguenti pacchetti verranno contrassegnati come installati automaticamente:" #: cmdline/apt-mark.cc #, c-format msgid "%s was already set on hold.\n" -msgstr "%s è già stato impostato come bloccato.\n" +msgstr "%s è già stato contrassegnato come bloccato.\n" #: cmdline/apt-mark.cc #, c-format @@ -3127,7 +3339,7 @@ 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" +msgstr "%s contrassegnato come bloccato.\n" #: cmdline/apt-mark.cc #, c-format @@ -3160,30 +3372,31 @@ msgid "" msgstr "" "Uso: apt-mark [OPZIONI] {auto|manual} PACCHETTO1 [PACCHETTO2 ...]\n" "\n" -"apt-mark è una semplice interfaccia a riga di comando per segnalare i " +"apt-mark è una semplice interfaccia a riga di comando per contrassegnare i " "pacchetti\n" "come installati manualmente o automaticamente. Può essere utilizzato anche " "per\n" "manipolare gli stati di selezione dei pacchetti tramite dpkg(1) e per " "elencare\n" -"tutti i pacchetti con o senza alcune segnalazioni.\n" +"tutti i pacchetti con o senza un determinato contrassegno.\n" #: cmdline/apt-mark.cc msgid "Mark the given packages as automatically installed" -msgstr "Segna i pacchetti forniti come installati automaticamente" +msgstr "Contrassegna 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" +msgstr "Contrassegna i pacchetti forniti come installati manualmente" #: cmdline/apt-mark.cc msgid "Mark all dependencies of meta packages as automatically installed." msgstr "" -"Segna tutte le dipendenze dei meta pacchetti come installate automaticamente" +"Contrassegna tutte le dipendenze dei metapacchetti come installate " +"automaticamente" #: cmdline/apt-mark.cc msgid "Mark a package as held back" -msgstr "Segna un pacchetto come bloccato a una vecchia versione" +msgstr "Contrassegna un pacchetto come bloccato a una vecchia versione" #: cmdline/apt-mark.cc msgid "Unset a package set as held back" @@ -3237,8 +3450,8 @@ msgstr "" "apt è un gestore di pacchetti a riga di comando che fornisce comandi per la\n" "gestione, la ricerca e la ricerca di informazioni sui pacchetti. Dispone\n" "delle stesse funzionalità degli strumenti APT specifici (come apt-get e\n" -"apt-cache), abilitando opzioni aggiuntive utili per un utilizzo " -"interattivo.\n" +"apt-cache), ma per impostazione predefinita abilita opzioni più adatte\n" +"ad un utilizzo interattivo.\n" #. query #: cmdline/apt.cc @@ -3260,15 +3473,13 @@ msgstr "Installa pacchetti" #: cmdline/apt.cc msgid "reinstall packages" -msgstr "Installa nuovamente pacchetti" +msgstr "Reinstalla pacchetti" #: cmdline/apt.cc msgid "remove packages" msgstr "Rimuove pacchetti" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" msgstr "Rimuove automaticamente i pacchetti inutilizzati" @@ -3279,15 +3490,11 @@ 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" +msgstr "Aggiorna il sistema installando e aggiornando 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" +msgstr "Aggiorna il sistema rimuovendo, installando e aggiornando pacchetti" #. misc #: cmdline/apt.cc @@ -3295,10 +3502,16 @@ msgid "edit the source information file" msgstr "Modifica il file sulle informazioni delle sorgenti" #: cmdline/apt.cc -#, fuzzy -#| msgid "Building dependency tree" +msgid "modernize .list files to .sources files" +msgstr "" + +#: cmdline/apt.cc msgid "satisfy dependency strings" -msgstr "Generazione albero delle dipendenze" +msgstr "Risolve stringhe di dipendenze" + +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" #: dselect/install msgid "Bad default setting!" @@ -3317,28 +3530,27 @@ msgstr "Eliminare tutti i file .deb precedentemente scaricati?" # 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" +msgstr "" +"Si sono verificati alcuni errori nell'estrazione. I pacchetti installati" #: dselect/install msgid "will be configured. This may result in duplicate errors" -msgstr "" -"configurazione dei pacchetti installati. Questo potrebbe generare errori" +msgstr "verranno configurati. Questo potrebbe generare errori duplicati " #: dselect/install msgid "or errors caused by missing dependencies. This is OK, only the errors" -msgstr "" -"duplicati o causati da dipendenze mancanti. Ciò non causa problemi, solo gli" +msgstr "o causati da dipendenze mancanti. Questo non è un problema, solo gli" #: dselect/install msgid "" "above this message are important. Please fix them and run [I]nstall again" msgstr "" -"errori precedenti sono importanti. Correggerli e rieseguire l'installazione " +"errori precedenti sono importanti. Correggerli e rilanciare l'installazione " "[I]" #: dselect/update msgid "Merging available information" -msgstr "Unione delle informazioni disponibili" +msgstr "Composizione informazioni disponibili" #: ftparchive/apt-ftparchive.cc msgid "Package extension list is too long" @@ -3501,7 +3713,7 @@ msgstr "Algoritmo di compressione \"%s\" sconosciuto" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Creazione di una pipe IPC verso il sottoprocesso non riuscita" @@ -3621,25 +3833,26 @@ msgstr " Raggiunto il limite di DeLink di %sB.\n" msgid "Archive had no package field" msgstr "L'archivio non ha un campo \"package\"" +# (ndt) non mi è chiaro cosa siano overrride entry, source override entry, binary override entry #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s non ha un campo override\n" +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" +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" +msgid " %.*s has no source override entry\n" +msgstr " %.*s non ha un campo sorgente 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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s non ha neanche un campo binario override\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3677,12 +3890,12 @@ msgstr "Header dati non corretto" msgid "Connection failed" msgstr "Connessione non riuscita" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" -"Il file ha una dimensione non attesa (%llu != %llu). Sincronizzazione del " -"mirror in corso?" +"Dimensione del file diversa da quella attesa (%llu != %llu). " +"Sincronizzazione del mirror in corso?" #: methods/basehttp.cc #, c-format @@ -3723,7 +3936,7 @@ msgstr "Impossibile smontare il CD-ROM in %s, potrebbe essere ancora in uso." msgid "Disk not found." msgstr "Disco non trovato." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "File non trovato" @@ -3759,7 +3972,7 @@ msgstr "Impossibile creare un socket per %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Impossibile iniziare la connessione a %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Non riuscito" @@ -3774,9 +3987,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" "Impossibile connettersi a %s:%s (%s), tempo esaurito per la connessione" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Connessione a %s" @@ -3815,151 +4026,15 @@ msgstr "Esecuzione di stat non riuscita" 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 al socket passivo." - -#: 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "algoritmo pubblico inaffidabile: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s verrà deprecato in una futura release" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3982,28 +4057,25 @@ msgstr "" "della chiave." #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "Impossibile eseguire \"apt-key\" per verificare la firma (forse gnupg non è " -"installato)" +"installato?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Errore sconosciuto durante l'esecuzione di apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "La firma con chiave %s utilizza un algoritmo di digest debole (%s)" +msgstr "La firma con chiave %s utilizza un algoritmo debole (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4035,20 +4107,159 @@ msgstr "Select non riuscita" #: methods/http.cc msgid "Connection timed out" -msgstr "Connessione terminata" +msgstr "Connessione scaduta" + +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Si è verificato un problema nel creare l'hash del file" #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Errore GPG: %s: %s" + +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "La chiave è conservata nel portachiavi obsoleto \"trusted.gpg\" (%s), per " +#~ "dettagli si veda la sezione DEPRECATO in apt-key(8)" + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Il metodo \"%s\" non è supportato ed è disabilitato per impostazione " +#~ "predefinita. Valutare se passare a http(s). Per abilitarlo nuovamente, " +#~ "impostare Dir::Bin::Methods::%s a \"%s\"." + +#~ msgid "Logging in" +#~ msgstr "Accesso in corso" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Impossibile determinare il nome del nodo" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Impossibile determinare il nome locale" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Il server ha rifiutato la connessione e riporta: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER non riuscito, il server riporta: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS non riuscito, il server riporta: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "" +#~ "Comando dello script di accesso \"%s\" non riuscito, il server riporta: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE non riuscito, il server riporta: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Connessione scaduta" + +#~ msgid "Server closed the connection" +#~ msgstr "Il server ha chiuso la connessione" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Una risposta ha superato le dimensioni del buffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Protocollo danneggiato" + +#~ msgid "Could not create a socket" +#~ msgstr "Impossibile creare un socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Impossibile connettersi al socket dati, tempo esaurito per la connessione" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Impossibile connettersi al socket passivo." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "Impossibile ottenere un socket in ascolto con getaddrinfo()" + +#~ msgid "Could not bind a socket" +#~ msgstr "Impossibile eseguire bind() su un socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Impossibile eseguire listen() su un socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Impossibile determinare il nome del socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Impossibile inviare il comando PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Famiglia di indirizzamento %u (AF_*) sconosciuta" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT non riuscito, il server riporta: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Connessione al socket dati scaduta" + +#~ msgid "Unable to accept connection" +#~ msgstr "Impossibile accettare connessioni" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Impossibile recuperare il file, il server riporta: \"%s\"" + +#~ msgid "Data socket timed out" +#~ msgstr "Socket dati scaduto" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Trasferimento dati non riuscito, il server riporta: \"%s\"" + +#~ msgid "Query" +#~ msgstr "Interrogazione" + +#~ msgid "Unable to invoke " +#~ msgstr "Impossibile invocare " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Connessione chiusa prematuramente" + +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installati: %sB\n" + +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Modifica pacchetti bloccati:" + #~ msgid "Yes, do as I say!" #~ msgstr "Sì, esegui come da richiesta." diff --git a/po/ja.po b/po/ja.po index 80159cf..059c484 100644 --- a/po/ja.po +++ b/po/ja.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2022-08-14 14:30+0900\n" "Last-Translator: Hideki Yamane \n" "Language-Team: Japanese \n" @@ -60,11 +60,12 @@ msgstr "リポジトリ %s には Release ファイルがなくなっていま #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"通常は許可されませんが、オプション Acquire::" -"AllowDowngradeToInsecureRepositories が上書きするために指定されました。" +"通常は許可されませんが、オプション " +"Acquire::AllowDowngradeToInsecureRepositories が上書きするために指定されまし" +"た。" #: apt-pkg/acquire-item.cc #, c-format @@ -127,10 +128,14 @@ msgstr "" "が必要?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックス" "ファイルが使われます。GPG エラー: %s: %s" @@ -138,8 +143,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "GPG エラー: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, fuzzy, c-format @@ -217,8 +222,7 @@ msgstr "" "ディストリビューションが競合しています: %s (%s を期待していたのに %s を取得し" "ました)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -229,7 +233,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -248,6 +252,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s の取得に失敗しました %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -268,13 +279,6 @@ msgstr "'%2$s' のバージョン '%1$s' をダウンロードするソースが msgid "Changelog unavailable for %s=%s" msgstr "%s=%s のため変更履歴が利用できません" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -682,6 +686,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "文法エラー %s:%u: ファイルの最後に余計なゴミがあります" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -794,11 +822,11 @@ msgstr "子プロセス %s がエラーコード (%u) を返しました" msgid "Sub-process %s exited unexpectedly" msgstr "子プロセス %s が予期せず終了しました" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "読み込みエラー" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "書き込みエラー" @@ -1126,6 +1154,12 @@ msgstr "" msgid "Not locked" msgstr "ロックされていません" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1316,6 +1350,16 @@ msgstr "解決を受け取る準備" msgid "External solver failed without a proper error message" msgstr "外部ソルバが適切なエラーメッセージなしに失敗しました" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "アップグレードパッケージを検出しています" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "依存関係総数: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "外部ソルバを実行" @@ -1393,8 +1437,8 @@ 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)" +"'%s' の即時設定は動作しません。詳細については man 5 apt.conf の " +"APT::Immediate-Configure の項を参照してください。(%d)" #: apt-pkg/packagemanager.cc #, c-format @@ -1621,10 +1665,6 @@ 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 @@ -1792,12 +1832,6 @@ msgstr "パッケージ '%s' はインストールされていないため削除 msgid "Note, selecting '%s' instead of '%s'\n" msgstr "注意、'%2$s' の代わりに '%1$s' を選択します\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "最も使用されているコマンド:" @@ -1908,6 +1942,12 @@ msgstr "以下の情報がこの問題を解決するために役立つかもし msgid "Broken packages" msgstr "壊れたパッケージ" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "書き込みエラー" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1923,10 +1963,10 @@ msgstr "%s は削除で選択されました。\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-" +"いくつかのアーカイブを取得できません。apt update を実行するか --fix-" "missing オプションを付けて試してみてください。" #: apt-private/private-install.cc @@ -1968,6 +2008,12 @@ msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" "おっと、サイズがマッチしません。apt@packages.debian.org にメールしてください" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB / %sB\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-install.cc @@ -1975,6 +2021,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "%2$sB 中 %1$sB のアーカイブを取得する必要があります。\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB\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 @@ -1982,13 +2034,55 @@ msgstr "%2$sB 中 %1$sB のアーカイブを取得する必要があります 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -2006,19 +2100,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "続行しますか?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "続行しますか?" + #: apt-private/private-install.cc msgid "Abort." msgstr "中断しました。" @@ -2075,6 +2168,12 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "内部エラー、AutoRemover が何かを破壊しました" +#: 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 package was automatically installed and is no longer required:" @@ -2094,14 +2193,8 @@ msgstr[0] "" "ん:\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 "以下の追加パッケージがインストールされます:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2111,6 +2204,10 @@ msgstr "提案パッケージ:" msgid "Recommended packages:" msgstr "推奨パッケージ:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "以下の追加パッケージがインストールされます:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2245,10 +2342,32 @@ msgstr " または" msgid "The following packages have unmet dependencies:" msgstr "以下のパッケージには満たせない依存関係があります:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Building dependency tree" +msgid "Unsatisfied dependencies:" +msgstr "依存関係ツリーを作成しています" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "以下のパッケージが新たにインストールされます:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s をインストールしています" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "依存関係総数: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "以下のパッケージは「削除」されます:" @@ -2259,6 +2378,16 @@ msgstr "以下のパッケージは「削除」されます:" msgid "The following upgrades have been deferred due to phasing:" msgstr "以下のパッケージは保留されます:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "以下のパッケージは保留されます:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "以下のパッケージは保留されます:" @@ -2267,10 +2396,24 @@ msgstr "以下のパッケージは保留されます:" msgid "The following packages will be upgraded:" msgstr "以下のパッケージはアップグレードされます:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "以下のパッケージは「ダウングレード」されます:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Pin されたパッケージ:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "以下の変更禁止パッケージは変更されます:" @@ -2288,26 +2431,52 @@ msgstr "" "警告: 以下の不可欠パッケージが削除されます。\n" "何をしようとしているか本当にわかっていない場合は、実行してはいけません!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "アップグレード: %lu 個、新規インストール: %lu 個、" +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s をインストールしています" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "再インストール: %lu 個、" +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s をインストールしています" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "ダウングレード: %lu 個、" +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2335,7 +2504,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2517,11 +2686,11 @@ msgstr "%s にはビルド依存情報が指定されていません。\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" -"%s に利用可能なアーキテクチャ情報がありません。セットアップのために apt." -"conf(5) の APT::Architectures を参照してください。" +"%s に利用可能なアーキテクチャ情報がありません。セットアップのために " +"apt.conf(5) の APT::Architectures を参照してください。" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2559,6 +2728,11 @@ msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" "'%s' ファイルが変更されています。「apt-get update」を実行してください。\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2576,12 +2750,43 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してくだ" +"さい。" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2628,6 +2833,12 @@ msgstr " 複合仮想パッケージ: " msgid " Missing: " msgstr " 欠落: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "個別バージョン総数: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "個別バージョン総数: " @@ -2988,6 +3199,12 @@ msgstr "SRV レコードを検索 (例えば _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "自動解凍とファイル結合" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "ファイルのハッシュでの問題" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "apt.conf を使ってプロキシを検出する" @@ -3231,12 +3448,20 @@ msgstr "パッケージを削除/インストール/更新してシステムを msgid "edit the source information file" msgstr "ソース情報ファイルを編集" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Building dependency tree" msgid "satisfy dependency strings" msgstr "依存関係ツリーを作成しています" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "不正なデフォルト設定です!" @@ -3431,7 +3656,7 @@ msgstr "'%s' は未知の圧縮アルゴリズムです" msgid "Compressed output %s needs a compression set" msgstr "圧縮出力 %s には圧縮セットが必要です" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "子プロセスへの IPC パイプの作成に失敗しました" @@ -3550,23 +3775,23 @@ msgstr "アーカイブにパッケージフィールドがありませんでし #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s に override エントリがありません\n" +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" +msgid " %.*s maintainer is %.*s not %s\n" +msgstr " %2$.*1$s メンテナは %5$s ではなく %4$.*3$s です\n" #: ftparchive/writer.cc #, c-format -msgid " %s has no source override entry\n" -msgstr " %s にソース override エントリがありません\n" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s にバイナリ override エントリがありません\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3604,7 +3829,7 @@ msgstr "不正なヘッダです" msgid "Connection failed" msgstr "接続失敗" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3648,7 +3873,7 @@ msgstr "%s の CD-ROM は使用中のためアンマウントすることがで msgid "Disk not found." msgstr "ディスクが見つかりません。" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "ファイルが見つかりません" @@ -3684,7 +3909,7 @@ msgstr "%s (f=%u t=%u p=%u) に対するソケットを作成できません" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "%s:%s (%s) への接続を開始できません。" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "失敗" @@ -3698,9 +3923,7 @@ msgstr "%s:%s (%s) へ接続できませんでした。" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "%s へ接続しています" @@ -3738,148 +3961,14 @@ msgstr "状態の取得に失敗しました" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "呼び出せません" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3900,22 +3989,20 @@ msgid "" msgstr "内部エラー: 正しい署名ですが、鍵指紋を確定できません?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "署名を検証するための 'apt-key' の実行ができませんでした (gnupg はインストール" "されていますか?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key の実行中に未知のエラーが発生" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, fuzzy, c-format @@ -3953,18 +4040,138 @@ msgstr "select に失敗しました" msgid "Connection timed out" msgstr "接続タイムアウト" +#: methods/http.cc +msgid "Problem hashing file" +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 "空のファイルは有効なアーカイブと認められません" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG エラー: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "ログインしています" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "ピアネームを決定することができません" + +#~ msgid "Unable to determine the local name" +#~ msgstr "ローカルネームを決定することができません" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "サーバから接続を拒絶されました。応答: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER 失敗、サーバ応答: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS 失敗、サーバ応答: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "プロキシサーバが指定されていますが、ログインスクリプトが設定されていませ" +#~ "ん。Acquire::ftp::ProxyLogin が空です。" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "ログインスクリプトのコマンド '%s' 失敗、サーバ応答: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE 失敗、サーバ応答: %s" + +#~ msgid "Connection timeout" +#~ msgstr "接続タイムアウト" + +#~ msgid "Server closed the connection" +#~ msgstr "サーバが接続を切断しました" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "レスポンスがバッファをオーバフローさせました。" + +#~ msgid "Protocol corruption" +#~ msgstr "プロトコルが壊れています" + +#~ msgid "Could not create a socket" +#~ msgstr "ソケットを作成できません" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "データソケットへ接続できませんでした。接続がタイムアウトしました" + +#~ msgid "Could not connect passive socket." +#~ msgstr "パッシブソケットに接続できません。" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo はリスニングソケットを取得できませんでした" + +#~ msgid "Could not bind a socket" +#~ msgstr "ソケットをバインドできませんでした" + +#~ msgid "Could not listen on the socket" +#~ msgstr "ソケットをリスンできませんでした" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "ソケットの名前を特定できませんでした" + +#~ msgid "Unable to send PORT command" +#~ msgstr "PORT コマンドを送信できません" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "未知のアドレスファミリ %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT に失敗しました。サーバ応答: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "データソケット接続タイムアウト" + +#~ msgid "Unable to accept connection" +#~ msgstr "接続を accept できません" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "ファイルを取得できません。サーバ応答 '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "データソケットタイムアウト" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "データ転送に失敗しました。サーバ応答 '%s'" + +#~ msgid "Query" +#~ msgstr "問い合わせ" + +#~ msgid "Unable to invoke " +#~ msgstr "呼び出せません" + +#~ msgid "Connection closed prematurely" +#~ msgstr "途中で接続がクローズされました" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " インストールされているバージョン: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "以下の変更禁止パッケージは変更されます:" + #~ msgid "Yes, do as I say!" #~ msgstr "Yes, do as I say!" diff --git a/po/km.po b/po/km.po index 1fec862..bf61409 100644 --- a/po/km.po +++ b/po/km.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2006-10-10 09:48+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" @@ -55,8 +55,8 @@ msgstr "ថត​ %s ត្រូវបាន​បង្វែរ" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -124,13 +124,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -186,8 +187,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -198,7 +198,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -217,6 +217,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "បរាជ័យ​ក្នុង​ការ​ទៅ​ប្រមូល​យក​ %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -237,13 +244,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "កំពុង​តភ្ជាប់​ទៅ​កាន់​ %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -626,6 +626,30 @@ msgstr "កំហុសវាក្យ​សម្ពន្ធ %s:%u ៖ សេ msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "កំហុស​វាក្យសម្ពន្ធ %s:%u ៖ សារឥតបានការ​បន្ថែម ដែលនៅខាងចុង​ឯកសារ" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -735,11 +759,11 @@ msgstr "ដំណើរការ​រង​ %s បានត្រឡប់​ msgid "Sub-process %s exited unexpectedly" msgstr "ដំណើរការ​រង​ %s បានចេញ ដោយ​មិន​រំពឹង​ទុក​ " -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "ការអាន​មានកំហុស" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "ការសរសេរ​មានកំហុស" @@ -1047,6 +1071,12 @@ msgstr "មិន​អាច​ចាក់​សោ​ថត​បញ្ជី msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1228,6 +1258,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "កំពុង​គណនា​ការ​ធ្វើ​ឲ្យ​ប្រសើរ" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "ភាព​អាស្រ័យ​សរុប ៖ " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1317,8 +1357,8 @@ msgid "" "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" "ការរត់​ការដំឡើង​នេះ នឹងទាមទារ​ឲ្យយកកញ្ចប់ចាំបាច់ %s បណ្ដោះអាសន្ន ដោយសារ រង្វិល ការប៉ះទង្គិច/" -"ភាពអាស្រ័យជាមុន ។ ជាញឹកញាប់គឺ មិនត្រឹមត្រូវ ប៉ុន្តែ ប្រសិនបើអ្នក​ពិតជាចង់ធ្វើវា ធ្វើឲ្យជម្រើស APT::" -"Force-LoopBreak សកម្ម ។" +"ភាពអាស្រ័យជាមុន ។ ជាញឹកញាប់គឺ មិនត្រឹមត្រូវ ប៉ុន្តែ ប្រសិនបើអ្នក​ពិតជាចង់ធ្វើវា ធ្វើឲ្យជម្រើស " +"APT::Force-LoopBreak សកម្ម ។" #: apt-pkg/pkgcache.cc msgid "Empty package cache" @@ -1526,10 +1566,6 @@ msgid "" 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 @@ -1694,12 +1730,6 @@ msgstr "មិនទាន់បានដំឡើង​កញ្ចប់​ %s msgid "Note, selecting '%s' instead of '%s'\n" msgstr "ចំណាំ កំពុង​ជ្រើស​ %s ជំនួស​ %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1804,6 +1834,12 @@ msgstr "ព័ត៌មាន​ដូចតទៅនេះ អាចជួយ msgid "Broken packages" msgstr "កញ្ចប់​ដែល​បាន​ខូច​" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "ការសរសេរ​មានកំហុស" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1818,10 +1854,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"អនុញ្ញាត​ឲ្យ​ទៅ​ប្រមូល​យក​ប័ណ្ណសារ​មួយ​ចំនួន​ ប្រហែល​ជា​រត់​ភាព​ទាន់​សម័យ apt-get ឬ ព្យាយាមប្រើ​ជាមួយ --" +"អនុញ្ញាត​ឲ្យ​ទៅ​ប្រមូល​យក​ប័ណ្ណសារ​មួយ​ចំនួន​ ប្រហែល​ជា​រត់​ភាព​ទាន់​សម័យ apt ឬ ព្យាយាមប្រើ​ជាមួយ --" "fix- ដែលបាត់ឬ់ ?" #: apt-private/private-install.cc @@ -1858,6 +1894,12 @@ msgstr "កំហុស​ខាងក្នុង​ ការ​រៀប​ msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "យី អី​ក៏​ចម្លែង​ម្លេះ.. ទំហំ​មិន​ដូច​គ្នា​ឡើយ ។ សូម​ផ្ញើ​អ៊ីមែល​ទៅ apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1865,6 +1907,11 @@ msgstr "យី អី​ក៏​ចម្លែង​ម្លេះ.. ទំ msgid "Need to get %sB/%sB of archives.\n" msgstr "ត្រូវការ​​យក​ %sB/%sB នៃ​ប័ណ្ណសារ ។​\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1872,13 +1919,55 @@ msgstr "ត្រូវការ​​យក​ %sB/%sB នៃ​ប័ណ្ណ 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1896,20 +1985,19 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -#, fuzzy -msgid "Do you want to continue?" -msgstr "តើ​អ្នក​ចង់​បន្តឬ​ [បាទ ចាស/ទេ​] ? " - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +#, fuzzy +msgid "Do you want to continue?" +msgstr "តើ​អ្នក​ចង់​បន្តឬ​ [បាទ ចាស/ទេ​] ? " + #: apt-private/private-install.cc msgid "Abort." msgstr "បោះបង់ ។" @@ -1963,6 +2051,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "កំហុស​ខាងក្នុង អ្នក​ដោះស្រាយ​បញ្ហា​បានធ្វើឲ្យខូច​ឧបករណ៍" +#: 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 "" @@ -1982,16 +2077,8 @@ 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 "កញ្ចប់​បន្ថែម​ដូចតទៅនេះ នឹងត្រូវបាន​ដំឡើង ៖" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2001,6 +2088,11 @@ msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​យោប msgid "Recommended packages:" msgstr "កញ្ចប់​ដែល​បាន​ផ្ដល់​អនុសាសន៍ ៖" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "កញ្ចប់​បន្ថែម​ដូចតទៅនេះ នឹងត្រូវបាន​ដំឡើង ៖" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2130,10 +2222,31 @@ msgstr " ឬ" msgid "The following packages have unmet dependencies:" msgstr "កញ្ចប់​ខាងក្រោម​មាន​ភាពអាស្រ័យ​ដែល​ខុស​គ្នា ៖" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "បរាជ័យ​ក្នុងការ​តម្រូវចិត្តភាពអាស្រ័យ %s សម្រាប់ %s: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "កញ្ចប់​ថ្មី​ខាងក្រោម​នឹង​ត្រូវ​បាន​ដំឡើង​ ៖" +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr "បាន​ដំឡើង %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "ភាព​អាស្រ័យ​សរុប ៖ " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "កញ្ចប់​ខាងក្រោម​នឹងត្រូវ​បាន​យកចេញ ៖" @@ -2144,6 +2257,16 @@ msgstr "កញ្ចប់​ខាងក្រោម​នឹងត្រូវ msgid "The following upgrades have been deferred due to phasing:" msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​បាន​យក​ត្រឡប់​មក​វិញ ៖" @@ -2152,10 +2275,24 @@ msgstr "​កញ្ចប់​ខាង​ក្រោម​ត្រូវ​ msgid "The following packages will be upgraded:" msgstr "កញ្ចប់​ខាងក្រោម​នឹង​​ត្រូវ​បាន​​ធ្វើ​ឲ្យប្រសើ​ឡើង ៖" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "កញ្ចប់​ខាងក្រោម​នឹង​​ត្រូវ​បាន​បន្ទាប ៖" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "កញ្ចប់​ដែល​បាន​ខ្ទាស់ ៖" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "កញ្ចប់​រង់ចាំ​ខាងក្រោម​នឹង​ត្រូវ​​បានផ្លាស់​​ប្តូរ​ ៖" @@ -2173,26 +2310,50 @@ msgstr "" "ព្រមាន​ ៖ កញ្ចប់ដែល​ចាំបាច់​ខាងក្រោម​នឹង​ត្រូវ​បាន​យកចេញ ។\n" "ការយកចេញ​នេះ​មិន​ត្រូវ​បានធ្វើ​ទេ​លុះត្រា​តែ​អ្នកដឹង​ថា​​អ្នក​កំពុង​ធ្វើ​អ្វីឲ្យប្រាកដ !" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu ត្រូវ​បាន​ធ្វើ​ឲ្យ​ប្រសើរ %lu ត្រូវ​បានដំឡើង​ថ្មី " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "បាន​ដំឡើង %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu ត្រូវ​បាន​ដំឡើង​ឡើង​វិញ " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "បាន​ដំឡើង %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu ​ត្រូវបានបន្ទាប់ " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2220,7 +2381,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2394,8 +2555,8 @@ msgstr "%s មិនមានភាពអាស្រ័យ​ស្ថាបន #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2432,6 +2593,11 @@ msgstr "បរាជ័យ​ក្នុង​ការ​ប្តូរ​ឈ msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2449,12 +2615,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2501,6 +2692,12 @@ msgstr " កញ្ចប់​និម្មិត​លាយ ៖ " msgid " Missing: " msgstr " បាត់បង់ ៖ " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "កំណែ​ផ្សេងៗ​សរុប ៖ " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "កំណែ​ផ្សេងៗ​សរុប ៖ " @@ -2833,6 +3030,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "បញ្ហា​ធ្វើឲ្យខូច​ឯកសារ" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3079,12 +3282,20 @@ msgstr "" msgid "edit the source information file" msgstr "បញ្ចូល​​ព័ត៌មាន​ដែលមាន​ចូល​គ្នា" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "បរាជ័យ​ក្នុងការ​តម្រូវចិត្តភាពអាស្រ័យ %s សម្រាប់ %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "ការ​កំណត់​លំនាំ​ដើម​មិន​ល្អ !" @@ -3284,7 +3495,7 @@ msgstr "មិន​ស្គាល់​ក្បួន​ដោះស្រា msgid "Compressed output %s needs a compression set" msgstr "​ទិន្នផល​ដែល​បាន​បង្ហាប់​​ %s ត្រូវ​ការ​កំណត់​ការបង្ហាប់​" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "បរាជ័យ​ក្នុង​ការ​បង្កើត​បំពង់​ IPC សម្រាប់​ដំណើរ​ការ​រង​" @@ -3403,23 +3614,23 @@ msgstr "ប័ណ្ណសារ​គ្មាន​វាល​កញ្ចប #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s គ្មាន​ធាតុធាតុបញ្ចូល​​បដិសេធឡើយ\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s គ្មាន​ធាតុប​ដិសេធគោល​ពីរ​ដែរ\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3457,7 +3668,7 @@ msgstr "ទិន្នន័យ​បឋមកថា​ខូច" msgid "Connection failed" msgstr "ការតភ្ជាប់​បាន​បរាជ័យ​" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3499,7 +3710,7 @@ msgstr "មិនអាចអាន់ម៉ោន ស៊ីឌី​-រ៉ូ msgid "Disk not found." msgstr "រក​ថាសមិ​ន​ឃើញ​ ។" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "រកឯកសារ​មិន​ឃើញ​" @@ -3535,7 +3746,7 @@ msgstr "មិន​អាច​បង្កើត​រន្ធ​សម្រ msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "មិនអាច​ចាប់ផ្ដើម​ការតភ្ជាប់​​ទៅ​កាន់​ %s:%s (%s) បានឡើយ ។" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "បាន​បរាជ័យ" @@ -3549,9 +3760,7 @@ msgstr "មិន​អាច​តភ្ជាប់​ទៅកាន់​ %s msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "កំពុង​តភ្ជាប់​ទៅកាន់ %s" @@ -3589,147 +3798,14 @@ msgstr "បរាជ័យ​ក្នុងការថ្លែង" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "មិន​អាច​ហៅ​ " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3750,20 +3826,15 @@ msgstr "កំហុស​ខាងក្នុង​ ៖ ហត្ថលេខ #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "មិន​អាច​ប្រតិបត្តិ '%s' ដើម្បី​ផ្ទៀងផ្ទាត់​ហត្ថលេខា (តើ gnupg ត្រូវ​បាន​ដំឡើង​ឬនៅ ?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "មិនស្គាល់កំហុស ក្នុងការប្រតិបត្តិ apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3800,18 +3871,128 @@ msgstr "ជ្រើស​បាន​បរាជ័យ​" msgid "Connection timed out" msgstr "ការតភ្ជាប់​បាន​អស់ពេល​" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "កំពុង​ចូល​" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "មិន​អាច​កំណត់ឈ្មោះដែលត្រូវបង្ហាញ​បានឡើយ​" + +#~ msgid "Unable to determine the local name" +#~ msgstr "មិន​អាច​កំណត់ឈ្មោះមូលដ្ឋាន​បានឡើយ" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "ម៉ាស៊ីន​បម្រើបានបដិសេធ​ការតភ្ជាប់ ហើយ​ បាននិយាយ ៖ %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER បរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើបាន​​និយាយ ៖ %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី​ត្រូវ​បាន​បញ្ជាក់​ ប៉ុន្តែ​គ្មាន​ស្គ្រីប​ចូល​ទេ Acquire::ftp::ProxyLogin គឺ ទទេ ។" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "ពាក្យ​បញ្ជា​ស្គ្រីប​ចូល​ '%s' បានបរាជ័យ ម៉ាស៊ីន​បម្រើ​បាននិយាយ ៖ %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE បានបរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាននិយាយ​ ៖ %s" + +#~ msgid "Connection timeout" +#~ msgstr "អស់ពេល​ក្នុងការតភ្ជាប់​" + +#~ msgid "Server closed the connection" +#~ msgstr "ម៉ាស៊ីន​បម្រើ​បាន​បិទ​ការតភ្ជាប់​" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "ឆ្លើយតប​សតិ​បណ្តោះអាសន្ន​​អស់ចំណុះ ។" + +#~ msgid "Protocol corruption" +#~ msgstr "ការបង្ខូច​ពិធីការ​" + +#~ msgid "Could not create a socket" +#~ msgstr "មិន​អាច​បង្កើត​រន្ធបានឡើយ" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "មិន​អាច​តភ្ជាប់​​រន្ធទិន្នន័យ​បានឡើយ អស់​ពេល​ក្នុងការតភ្ជាប់​" + +#~ msgid "Could not connect passive socket." +#~ msgstr "មិនអាចតភ្ជាប់​​រន្ធអកម្ម​​បានឡើយ ។" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo មិន​អាច​​ទទួល​យក​រន្ធ​សម្រាប់​ស្តាប់​​បានឡើយ" + +#~ msgid "Could not bind a socket" +#~ msgstr "មិន​អាច​ចងរន្ធ​បានបានឡើយ​" + +#~ msgid "Could not listen on the socket" +#~ msgstr "មិនអាច​ស្ដាប់នៅលើរន្ធ​បានឡើយ" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "មិន​អាច​កំណត់​ឈ្មោះរបស់​រន្ធ​បានឡើយ" + +#~ msgid "Unable to send PORT command" +#~ msgstr "មិនអាច​ផ្ញើពាក្យ​បញ្ជា​ PORT បានឡើយ" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "មិន​ស្គាល់​អាសយដ្ឋាន​គ្រួសារ​ %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT បរាជ័យ​ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ ៖ %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "ការតភ្ជាប់​រន្ធ​​ទិន្នន័បានអស់ពេល​" + +#~ msgid "Unable to accept connection" +#~ msgstr "មិនអាច​ទទួលយក​ការតភ្ជាប់​បានឡើយ" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "មិន​អាច​ទៅ​ប្រមូល​យក​ឯកសារ​បានឡើយ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "រន្ធ​ទិន្នន័យ​បាន​អស់​ពេល​" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "បរាជ័យក្នុងការ​ផ្ទេរ​ទិន្នន័យ ម៉ាស៊ីន​បម្រើ​បាន​និយាយ​ '%s'" + +#~ msgid "Query" +#~ msgstr "សំណួរ​" + +#~ msgid "Unable to invoke " +#~ msgstr "មិន​អាច​ហៅ​ " + +#~ msgid "Connection closed prematurely" +#~ msgstr "បាន​បិទ​ការ​តភ្ជាប់​មុន​ពេល" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "កញ្ចប់​រង់ចាំ​ខាងក្រោម​នឹង​ត្រូវ​​បានផ្លាស់​​ប្តូរ​ ៖" + #~ msgid "Yes, do as I say!" #~ msgstr "បាទ/ចាស ធ្វើ​ដូច​ដែល​ខ្ញុំ​និយាយ !" diff --git a/po/ko.po b/po/ko.po index 597938d..23e5aa4 100644 --- a/po/ko.po +++ b/po/ko.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2010-08-30 02:31+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" @@ -48,8 +48,8 @@ msgstr "%s 디렉터리가 전환되었습니다" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -116,7 +116,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "디지털 서명 확인에 오류가 발생했습니다. 저장고를 업데이트하지 않고\n" "예전의 인덱스 파일을 사용합니다. GPG 오류: %s: %s\n" @@ -124,8 +125,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "GPG 오류: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -180,8 +181,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "배포판 충돌: %s (예상값 %s, 실제값 %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -192,7 +192,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -211,6 +211,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s 파일을 받는데 실패했습니다 %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -231,13 +238,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "%s(%s)에 연결하는 중입니다" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -625,6 +625,30 @@ msgstr "문법 오류 %s:%u: clear 지시어는 인수로 option 트리를 지 msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "문법 오류 %s:%u: 파일의 끝에 쓰레기 데이터가 더 있습니다" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -734,11 +758,11 @@ msgstr "하위 프로세스 %s 프로세스가 오류 코드(%u)를 리턴했습 msgid "Sub-process %s exited unexpectedly" msgstr "하위 프로세스 %s 프로세스가 예상치 못하게 끝났습니다" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "읽기 오류" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "쓰기 오류" @@ -1055,6 +1079,12 @@ msgstr "관리 디렉터리를 (%s) 잠글 수 없습니다. 루트 사용자가 msgid "Not locked" msgstr "잠기지 않음" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1241,6 +1271,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "업그레이드를 계산하는 중입니다" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "전체 의존성: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1541,10 +1581,6 @@ 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 @@ -1711,12 +1747,6 @@ msgstr "%s 패키지를 설치하지 않았으므로, 지우지 않습니다\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "주의, '%2$s' 대신에 '%1$s' 패키지를 선택합니다\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1819,6 +1849,12 @@ msgstr "이 상황을 해결하는데 다음 정보가 도움이 될 수도 있 msgid "Broken packages" msgstr "망가진 패키지" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "쓰기 오류" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1833,10 +1869,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"아카이브를 받을 수 없습니다. 아마도 apt-get update를 실행해야 하거나 --fix-" +"아카이브를 받을 수 없습니다. 아마도 apt update를 실행해야 하거나 --fix-" "missing 옵션을 줘서 실행해야 할 것입니다." #: apt-private/private-install.cc @@ -1875,6 +1911,12 @@ msgstr "" "이상하게도 크기가 서로 다릅니다. apt@packages.debian.org로 이메일을 보내주십" "시오." +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1882,6 +1924,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "%s바이트/%s바이트 아카이브를 받아야 합니다.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1889,13 +1936,55 @@ msgstr "%s바이트/%s바이트 아카이브를 받아야 합니다.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1915,19 +2004,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "계속 하시겠습니까?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "계속 하시겠습니까?" + #: apt-private/private-install.cc msgid "Abort." msgstr "중단." @@ -1983,6 +2071,12 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "내부 오류, 문제 해결 프로그램이 무언가를 망가뜨렸습니다" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -1999,15 +2093,8 @@ msgid_plural "" 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 "다음 패키지를 더 설치할 것입니다:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2017,6 +2104,11 @@ msgstr "제안하는 패키지:" msgid "Recommended packages:" msgstr "추천하는 패키지:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "다음 패키지를 더 설치할 것입니다:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2150,10 +2242,32 @@ msgstr " 혹은" msgid "The following packages have unmet dependencies:" msgstr "다음 패키지의 의존성이 맞지 않습니다:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "%2$s에 대한 %1$s 의존성을 만족시키는데 실패했습니다: %3$s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "다음 새 패키지를 설치할 것입니다:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s 설치하는 중입니다" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "전체 의존성: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "다음 패키지를 지울 것입니다:" @@ -2164,6 +2278,16 @@ msgstr "다음 패키지를 지울 것입니다:" msgid "The following upgrades have been deferred due to phasing:" msgstr "다음 패키지를 과거 버전으로 유지합니다:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "다음 패키지를 과거 버전으로 유지합니다:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "다음 패키지를 과거 버전으로 유지합니다:" @@ -2172,10 +2296,24 @@ msgstr "다음 패키지를 과거 버전으로 유지합니다:" msgid "The following packages will be upgraded:" msgstr "다음 패키지를 업그레이드할 것입니다:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "다음 패키지를 다운그레이드할 것입니다:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "핀 패키지:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "고정되었던 다음 패키지를 바꿀 것입니다:" @@ -2193,26 +2331,52 @@ msgstr "" "경고: 꼭 필요한 다음 패키지를 지우게 됩니다.\n" "무슨 일을 하고 있는 지 정확히 알지 못한다면 지우지 마십시오!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu개 업그레이드, %lu개 새로 설치, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s 설치하는 중입니다" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu개 다시 설치, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s 설치하는 중입니다" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu개 업그레이드, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2240,7 +2404,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2417,8 +2581,8 @@ msgstr "%s 패키지에 빌드 의존성이 없습니다.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2455,6 +2619,11 @@ msgstr "%s 파일의 이름을 %s(으)로 바꾸는데 실패했습니다" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2472,12 +2641,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2522,6 +2716,12 @@ msgstr " 혼합 가상 패키지: " msgid " Missing: " msgstr " 빠짐: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "개별 버전 전체: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "개별 버전 전체: " @@ -2849,6 +3049,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "파일 해싱에 문제가 있습니다" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3096,12 +3302,20 @@ msgstr "" msgid "edit the source information file" msgstr "상태 정보를 읽는 중입니다" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "%2$s에 대한 %1$s 의존성을 만족시키는데 실패했습니다: %3$s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "기본 설정이 잘못되었습니다!" @@ -3300,7 +3514,7 @@ msgstr "'%s' 압축 알고리즘을 알 수 없습니다" msgid "Compressed output %s needs a compression set" msgstr "압축된 출력물 %s에는 압축 세트가 필요합니다" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "하위 프로세스에 대한 IPC 파이프를 만드는데 실패했습니다" @@ -3420,23 +3634,23 @@ msgstr "아카이브에 패키지 필드가 없습니다" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s에는 override 항목이 없습니다\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s에는 binary override 항목이 없습니다\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3474,7 +3688,7 @@ msgstr "헤더 데이터가 잘못되었습니다" msgid "Connection failed" msgstr "연결이 실패했습니다" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3516,7 +3730,7 @@ msgstr "%s 안의 CD-ROM을 마운트 해제할 수 없습니다. 사용 중일 msgid "Disk not found." msgstr "디스크가 없습니다." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "파일이 없습니다" @@ -3552,7 +3766,7 @@ msgstr "%s에 대한 소켓을 만들 수 없습니다 (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "%s:%s에 연결을 초기화할 수 없습니다 (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "실패" @@ -3566,9 +3780,7 @@ msgstr "%s:%s에 연결할 수 없습니다 (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "%s에 연결하는 중입니다" @@ -3606,148 +3818,14 @@ msgstr "파일 정보를 읽는데 실패했습니다" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "다음을 실행할 수 없습니다: " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3767,22 +3845,20 @@ msgid "" msgstr "내부 오류: 서명은 올바르지만 키 핑거프린트를 확인할 수 없습니다?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "서명을 확인하는 'apt-key' 프로그램을 실행할 수 없습니다. (gnupg를 설치했습니" "까?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key 실행 도중 알 수 없는 오류 발생" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3819,18 +3895,133 @@ msgstr "select가 실패했습니다" msgid "Connection timed out" msgstr "연결 시간이 초과했습니다" +#: methods/http.cc +msgid "Problem hashing file" +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 "" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG 오류: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "로그인하는 중입니다" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "상대방의 이름을 알 수 없습니다" + +#~ msgid "Unable to determine the local name" +#~ msgstr "로컬 이름을 알 수 없습니다" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "서버에서 다음과 같이 연결을 거부했습니다: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER 실패, 서버에서는: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS 실패, 서버에서는: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "프록시 서버를 지정했지만 로그인 스크립트가 없습니다. " +#~ "Acquire::ftp::ProxyLogin 값이 비어 있습니다." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "로그인 스크립트 명령 '%s' 실패, 서버에서는: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE 실패, 서버에서는: %s" + +#~ msgid "Connection timeout" +#~ msgstr "연결 시간 초과" + +#~ msgid "Server closed the connection" +#~ msgstr "서버에서 연결을 닫았습니다" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "응답이 버퍼 크기를 넘어갔습니다." + +#~ msgid "Protocol corruption" +#~ msgstr "프로토콜이 틀렸습니다" + +#~ msgid "Could not create a socket" +#~ msgstr "소켓을 만들 수 없습니다" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "데이터 소켓을 연결할 수 없습니다. 연결 시간이 초과되었습니다" + +#~ msgid "Could not connect passive socket." +#~ msgstr "수동(passive) 소켓을 연결할 수 없습니다." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo에서 소켓에 listen할 수 없습니다" + +#~ msgid "Could not bind a socket" +#~ msgstr "소켓을 bind할 수 없습니다" + +#~ msgid "Could not listen on the socket" +#~ msgstr "소켓에 listen할 수 없습니다" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "소켓의 이름을 알아낼 수 없습니다" + +#~ msgid "Unable to send PORT command" +#~ msgstr "PORT 명령을 보낼 수 없습니다" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "주소 %u의 종류(AF_*)를 알 수 없습니다" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT 실패, 서버에서는: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "데이터 소켓 연결 시간 초과" + +#~ msgid "Unable to accept connection" +#~ msgstr "연결을 받을 수 없습니다" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "파일을 가져올 수 없습니다. 서버 왈, '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "데이터 소켓에 제한 시간이 초과했습니다" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "데이터 전송 실패, 서버에서는: %s" + +#~ msgid "Query" +#~ msgstr "질의" + +#~ msgid "Unable to invoke " +#~ msgstr "다음을 실행할 수 없습니다: " + +#~ msgid "Connection closed prematurely" +#~ msgstr "연결이 너무 빨리 끊어졌습니다" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "고정되었던 다음 패키지를 바꿀 것입니다:" + # 입력을 받아야 한다. 한글 입력을 못 할 수 있으므로 원문 그대로 사용. #~ msgid "Yes, do as I say!" #~ msgstr "Yes, do as I say!" diff --git a/po/ku.po b/po/ku.po index 6003ee6..137c13e 100644 --- a/po/ku.po +++ b/po/ku.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2008-05-08 12:48+0200\n" "Last-Translator: Erdal Ronahi \n" "Language-Team: ku \n" @@ -50,8 +50,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -117,13 +117,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -179,8 +180,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -191,7 +191,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -210,6 +210,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Anîna %s %s biserneket" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -228,13 +235,6 @@ msgstr "" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -614,6 +614,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -721,11 +745,11 @@ msgstr "" msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Çewiya xwendinê" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Çewtiya nivîsînê" @@ -1032,6 +1056,12 @@ msgstr "Pelrêça daxistinê nayê quflekirin" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1212,6 +1242,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Bilindkirin tê hesibandin" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Bindestên giştî:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1501,10 +1541,6 @@ msgid "" "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 @@ -1662,12 +1698,6 @@ msgstr "" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1766,6 +1796,12 @@ msgstr "" msgid "Broken packages" msgstr "Paketên şikestî" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Çewtiya nivîsînê" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1780,7 +1816,7 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" @@ -1816,6 +1852,12 @@ msgstr "" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Sazkirî: " + #. 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 @@ -1823,6 +1865,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Anîna %sB/%sB ji arşîvan pêwist e.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1830,11 +1877,52 @@ msgstr "Anîna %sB/%sB ji arşîvan pêwist e.\n" msgid "Need to get %sB of archives.\n" msgstr "Anîna %sB ji arşîvan pêwist e.\n" +#: 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 of additional disk space will be used.\n" +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" msgstr "" #. TRANSLATOR: The required space between number and unit is already included @@ -1854,19 +1942,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Dixwazî bidomînî?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Dixwazî bidomînî?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Betal." @@ -1919,6 +2006,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "" +#: 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 "" @@ -1938,16 +2032,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1957,6 +2043,11 @@ msgstr "Paketên tên pêşniyaz kirin:" msgid "Recommended packages:" msgstr "Paketên tên tawsiyê kirin:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2086,10 +2177,31 @@ msgstr " û" msgid "The following packages have unmet dependencies:" msgstr "" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Unsatisfied dependencies:" +msgstr "Bindestên giştî:" + #: 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 +#, fuzzy +msgid "Installing:" +msgstr "%s hatine sazkirin" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Bindestên giştî:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Ev pakêt dê werine RAKIRIN:" @@ -2098,6 +2210,14 @@ msgstr "Ev pakêt dê werine RAKIRIN:" msgid "The following upgrades have been deferred due to phasing:" msgstr "" +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "" @@ -2106,10 +2226,24 @@ msgstr "" msgid "The following packages will be upgraded:" msgstr "Ev paket dê werine bilindkirin:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Suggested packages:" +msgid "Changing held packages:" +msgstr "Paketên tên pêşniyaz kirin:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "" @@ -2125,26 +2259,50 @@ msgid "" "This should NOT be done unless you know exactly what you are doing!" msgstr "" +#: apt-private/private-output.cc +msgid "Summary:" +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 +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s hatine sazkirin" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu ji nû ve sazkirî," +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "%s hatine sazkirin" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu hatine nizmkirin." +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2173,7 +2331,7 @@ msgid "Y" msgstr "E" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2347,8 +2505,8 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2385,6 +2543,11 @@ msgstr "%s ji hev nehate veçirandin" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2402,12 +2565,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2454,6 +2642,12 @@ msgstr " Pakêtên hevbeş yên farazî:" msgid " Missing: " msgstr " Winda: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Guhertoyên vekirî yên giştî:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Guhertoyên vekirî yên giştî:" @@ -2762,6 +2956,10 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3011,10 +3209,18 @@ msgstr "" msgid "edit the source information file" msgstr "" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "" @@ -3170,7 +3376,7 @@ msgstr "" msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "" @@ -3289,22 +3495,22 @@ msgstr "Di arşîvê de qada pakêtê tuneye" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" +msgid " %.*s has no override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" +msgid " %.*s maintainer is %.*s not %s\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no source override entry\n" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: methods/basehttp.cc @@ -3343,7 +3549,7 @@ msgstr "" msgid "Connection failed" msgstr "Girêdan pêk nehatiye" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3383,7 +3589,7 @@ msgstr "" msgid "Disk not found." msgstr "Dîsk nehate dîtin." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Pel nehate dîtin" @@ -3419,7 +3625,7 @@ msgstr "" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Serneket" @@ -3433,9 +3639,7 @@ msgstr "" msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Bi %s re tê girêdan" @@ -3474,147 +3678,14 @@ msgstr "%s venebû" 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 +#: methods/gpgv.cc #, c-format -msgid "Data transfer failed, server said '%s'" +msgid "untrusted public key algorithm: %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û" - #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3634,20 +3705,15 @@ msgid "" msgstr "" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Di xebitandina apt-key de çewtiya nenas" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3685,18 +3751,38 @@ msgstr "Hilbijartin neserketî" msgid "Connection timed out" msgstr "" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "Têketin" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nikare navê herêmî tesbît bike" + +#, fuzzy, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Danegira %s nehate vekirin: %s" + +#~ msgid "Query" +#~ msgstr "Lêpirsîn" + +#, fuzzy +#~ msgid "Unable to invoke " +#~ msgstr "%s venebû" + +#~ msgid "Connection closed prematurely" +#~ msgstr "Girêdan zû hatiye girtin" + #~ msgid "Yes, do as I say!" #~ msgstr "Erê, wusa bike!" diff --git a/po/libapt-pkg6.0.c.pot b/po/libapt-pkg6.0.c.pot deleted file mode 100644 index d851ddf..0000000 --- a/po/libapt-pkg6.0.c.pot +++ /dev/null @@ -1,1526 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: apt-pkg/acquire-item.cc:176 -msgid "" -"Updating from such a repository can't be done securely, and is therefore " -"disabled by default." -msgstr "" - -#: apt-pkg/acquire-item.cc:181 -msgid "" -"Data from such a repository can't be authenticated and is therefore " -"potentially dangerous to use." -msgstr "" - -#: apt-pkg/acquire-item.cc:183 -msgid "" -"See apt-secure(8) manpage for repository creation and user configuration " -"details." -msgstr "" - -#: apt-pkg/acquire-item.cc:224 -#, c-format -msgid "The repository '%s' is no longer signed." -msgstr "" - -#: apt-pkg/acquire-item.cc:225 -#, c-format -msgid "The repository '%s' no longer has a Release file." -msgstr "" - -#: apt-pkg/acquire-item.cc:234 -msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." -msgstr "" - -#: apt-pkg/acquire-item.cc:252 -#, c-format -msgid "The repository '%s' is not signed." -msgstr "" - -#: apt-pkg/acquire-item.cc:253 -#, c-format -msgid "The repository '%s' does not have a Release file." -msgstr "" - -#: apt-pkg/acquire-item.cc:254 -#, c-format -msgid "The repository '%s' provides only weak security information." -msgstr "" - -#: apt-pkg/acquire-item.cc:598 -#, c-format -msgid "Failed to readlink %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:607 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:950 apt-pkg/acquire-item.cc:1090 -msgid "Hash Sum mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:953 -msgid "Insufficient information available to perform this download securely" -msgstr "" - -#: apt-pkg/acquire-item.cc:1065 apt-pkg/contrib/fileutl.cc:3193 -#, c-format -msgid "rename failed, %s (%s -> %s)." -msgstr "" - -#: apt-pkg/acquire-item.cc:1093 -msgid "Size mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:1097 -msgid "Invalid file format" -msgstr "" - -#: apt-pkg/acquire-item.cc:1102 -msgid "Signature error" -msgstr "" - -#: apt-pkg/acquire-item.cc:1106 -#, c-format -msgid "" -"Clearsigned file isn't valid, got '%s' (does the network require " -"authentication?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1355 -#, 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:1364 apt-pkg/acquire-item.cc:1370 -#, c-format -msgid "GPG error: %s: %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:1605 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' doesn't have the " -"component '%s' (component misspelt in sources.list?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1624 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' doesn't support " -"architecture '%s'" -msgstr "" - -#: apt-pkg/acquire-item.cc:1641 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' does not seem to " -"provide it (sources.list entry misspelt?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1659 -#, 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:1758 -#, c-format -msgid "" -"Release file for %s is expired (invalid since %s). Updates for this " -"repository will not be applied." -msgstr "" - -#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is -#. the time until the file will be valid - formatted in the same way as in -#. the download progress display (e.g. 7d 3h 42min 1s) -#: apt-pkg/acquire-item.cc:1777 -#, c-format -msgid "" -"Release file for %s is not valid yet (invalid for another %s). Updates for " -"this repository will not be applied." -msgstr "" - -#: apt-pkg/acquire-item.cc:1812 -#, c-format -msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1842 -#, c-format -msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" - -#: apt-pkg/acquire-item.cc:1858 -#, c-format -msgid "Repository '%s' changed its default priority for %s from %hi to %hi." -msgstr "" - -#. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc:1871 -#, c-format -msgid "" -"More information about this can be found online in the Release notes at: %s" -msgstr "" - -#. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) -#: apt-pkg/acquire-item.cc:1878 -#, c-format -msgid "" -"This must be accepted explicitly before updates for this repository can be " -"applied. See %s manpage for details." -msgstr "" - -#: apt-pkg/acquire-item.cc:2009 apt-pkg/update.cc:112 apt-pkg/update.cc:115 -#, c-format -msgid "Failed to fetch %s %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:3354 -#, 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:3483 -#, c-format -msgid "Can't find a source to download version '%s' of '%s'" -msgstr "" - -#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1 -#: apt-pkg/acquire-item.cc:3640 apt-pkg/acquire-item.cc:3874 -#, c-format -msgid "Changelog unavailable for %s=%s" -msgstr "" - -#: apt-pkg/acquire-worker.cc:103 -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - -#: apt-pkg/acquire-worker.cc:110 -#, c-format -msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" - -#: apt-pkg/acquire-worker.cc:112 -#, c-format -msgid "If you meant to use Tor remember to use %s instead of %s." -msgstr "" - -#: apt-pkg/acquire-worker.cc:115 -#, c-format -msgid "The method driver %s could not be found." -msgstr "" - -#: apt-pkg/acquire-worker.cc:119 -#, c-format -msgid "Is the package %s installed?" -msgstr "" - -#: apt-pkg/acquire-worker.cc:174 -#, c-format -msgid "Method %s did not start correctly" -msgstr "" - -#: apt-pkg/acquire-worker.cc:740 -#, c-format -msgid "" -"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]." -msgstr "" - -#: apt-pkg/acquire.cc:158 apt-pkg/cdrom.cc:827 -#, c-format -msgid "List directory %s is missing." -msgstr "" - -#: apt-pkg/acquire.cc:163 -#, c-format -msgid "Archives directory %s is missing." -msgstr "" - -#: apt-pkg/acquire.cc:181 -#, c-format -msgid "Unable to lock directory %s" -msgstr "" - -#: apt-pkg/acquire.cc:629 -#, c-format -msgid "No sandbox user '%s' on the system, can not drop privileges" -msgstr "" - -#: apt-pkg/acquire.cc:666 apt-pkg/acquire.cc:684 -#, c-format -msgid "" -"Download is performed unsandboxed as root as file '%s' couldn't be accessed " -"by user '%s'." -msgstr "" - -#: apt-pkg/acquire.cc:840 apt-pkg/clean.cc:39 -#, c-format -msgid "Clean of %s is not supported" -msgstr "" - -#. Only warn if there are no sources.list.d. -#. Only warn if there is no sources.list file. -#: apt-pkg/acquire.cc:844 apt-pkg/acquire.cc:847 apt-pkg/clean.cc:48 -#: apt-pkg/clean.cc:51 apt-pkg/contrib/cdromutl.cc:189 -#: apt-pkg/contrib/cdromutl.cc:211 apt-pkg/contrib/fileutl.cc:468 -#: apt-pkg/contrib/fileutl.cc:470 apt-pkg/contrib/fileutl.cc:585 -#: apt-pkg/contrib/fileutl.cc:3425 apt-pkg/deb/dpkgpm.cc:1367 -#: apt-pkg/init.cc:234 apt-pkg/init.cc:242 apt-pkg/policy.cc:390 -#: apt-pkg/sourcelist.cc:323 apt-pkg/sourcelist.cc:330 -#, c-format -msgid "Unable to read %s" -msgstr "" - -#: apt-pkg/acquire.cc:1501 -#, c-format -msgid "Retrieving file %li of %li (%s remaining)" -msgstr "" - -#: apt-pkg/acquire.cc:1503 -#, c-format -msgid "Retrieving file %li of %li" -msgstr "" - -#: apt-pkg/algorithms.cc:335 -#, c-format -msgid "" -"The package %s needs to be reinstalled, but I can't find an archive for it." -msgstr "" - -#: apt-pkg/algorithms.cc:1194 -msgid "" -"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " -"held packages." -msgstr "" - -#: apt-pkg/algorithms.cc:1196 -msgid "Unable to correct problems, you have held broken packages." -msgstr "" - -#: apt-pkg/cachefile.cc:133 -msgid "The package lists or status file could not be parsed or opened." -msgstr "" - -#: apt-pkg/cachefile.cc:137 -msgid "You may want to run apt-get update to correct these problems" -msgstr "" - -#: apt-pkg/cachefile.cc:160 -msgid "The list of sources could not be read." -msgstr "" - -#: apt-pkg/cachefilter-patterns.cc:569 apt-pkg/cachefilter.cc:44 -#, c-format -msgid "Regex compilation error - %s" -msgstr "" - -#: apt-pkg/cacheset.cc:710 -#, c-format -msgid "Couldn't find task '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:716 -#, c-format -msgid "Couldn't find any package by regex '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:722 -#, c-format -msgid "Couldn't find any package by glob '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:734 -#, c-format -msgid "Unable to locate package %s" -msgstr "" - -#: apt-pkg/cacheset.cc:757 -#, c-format -msgid "Can't select versions from package '%s' as it is purely virtual" -msgstr "" - -#: apt-pkg/cacheset.cc:794 -#, c-format -msgid "Can't select newest version from package '%s' as it is purely virtual" -msgstr "" - -#: apt-pkg/cacheset.cc:802 -#, c-format -msgid "Can't select candidate version from package %s as it has no candidate" -msgstr "" - -#: apt-pkg/cacheset.cc:810 -#, c-format -msgid "Can't select installed version from package %s as it is not installed" -msgstr "" - -#: apt-pkg/cacheset.cc:818 apt-pkg/cacheset.cc:826 -#, c-format -msgid "" -"Can't select installed nor candidate version from package '%s' as it has " -"neither of them" -msgstr "" - -#: apt-pkg/cacheset.cc:834 -#, c-format -msgid "Release '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cacheset.cc:840 -#, c-format -msgid "Version '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cdrom.cc:566 -msgid "Unmounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:581 -#, c-format -msgid "Using CD-ROM mount point %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:594 -msgid "Waiting for disc...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:604 -msgid "Mounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:615 -msgid "Identifying... " -msgstr "" - -#: apt-pkg/cdrom.cc:657 -#, c-format -msgid "Stored label: %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:675 -msgid "Scanning disc for index files...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:729 -#, c-format -msgid "" -"Found %zu package indexes, %zu source indexes, %zu translation indexes and " -"%zu signatures\n" -msgstr "" - -#: apt-pkg/cdrom.cc:739 -msgid "" -"Unable to locate any package files, perhaps this is not a Debian Disc or the " -"wrong architecture?" -msgstr "" - -#: apt-pkg/cdrom.cc:766 -#, c-format -msgid "Found label '%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:795 -msgid "That is not a valid name, try again.\n" -msgstr "" - -#: apt-pkg/cdrom.cc:812 -#, c-format -msgid "" -"This disc is called: \n" -"'%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:814 -msgid "Copying package lists..." -msgstr "" - -#: apt-pkg/cdrom.cc:861 -msgid "Writing new source list\n" -msgstr "" - -#: apt-pkg/cdrom.cc:872 -msgid "Source list entries for this disc are:\n" -msgstr "" - -#: apt-pkg/clean.cc:67 -#, c-format -msgid "Unable to stat %s." -msgstr "" - -#: apt-pkg/contrib/arfile.cc:75 -msgid "Invalid archive signature" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:83 -msgid "Error reading archive member header" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:95 apt-pkg/contrib/arfile.cc:101 -#: apt-pkg/contrib/arfile.cc:112 apt-pkg/contrib/arfile.cc:118 -#: apt-pkg/contrib/arfile.cc:139 -msgid "Invalid archive member header" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:155 -msgid "Archive is too short" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:159 -msgid "Failed to read the archive headers" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:64 -#, c-format -msgid "Unable to stat the mount point %s" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:244 -msgid "Failed to stat the cdrom" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:130 -#, c-format -msgid "" -"Command line option '%c' [from %s] is not understood in combination with the " -"other options." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:155 apt-pkg/contrib/cmndline.cc:164 -#: apt-pkg/contrib/cmndline.cc:172 -#, c-format -msgid "" -"Command line option %s is not understood in combination with the other " -"options" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:177 -#, c-format -msgid "Command line option %s is not boolean" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:233 -#, c-format -msgid "Option %s requires an argument." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:246 -#, c-format -msgid "Option %s: Configuration item specification must have an =." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:272 -#, c-format -msgid "Option %s requires an integer argument, not '%s'" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:303 -#, c-format -msgid "Option '%s' is too long" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:336 -#, c-format -msgid "Sense %s is not understood, try true or false." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:384 -#, c-format -msgid "Invalid operation %s" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:727 -#, c-format -msgid "Unrecognized type abbreviation: '%c'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:983 -#, c-format -msgid "Syntax error %s:%u: Block starts with no name." -msgstr "" - -#: apt-pkg/contrib/configuration.cc:997 -#, c-format -msgid "Syntax error %s:%u: Malformed tag" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1014 -#, c-format -msgid "Syntax error %s:%u: Extra junk after value" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1052 -#, c-format -msgid "Syntax error %s:%u: Directives can only be done at the top level" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1059 -#, c-format -msgid "Syntax error %s:%u: Too many nested includes" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1063 apt-pkg/contrib/configuration.cc:1068 -#, c-format -msgid "Syntax error %s:%u: Included from here" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1077 -#, c-format -msgid "Syntax error %s:%u: Unsupported directive '%s'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1080 -#, c-format -msgid "Syntax error %s:%u: clear directive requires an option tree as argument" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1124 -#, c-format -msgid "Syntax error %s:%u: Extra junk at end of file" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:115 -#, c-format -msgid "Cannot find a configured compressor for '%s'" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:147 apt-pkg/contrib/extracttar.cc:177 -msgid "Corrupted archive" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:162 -msgid "Tar checksum failed, archive corrupted" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:276 -#, c-format -msgid "Unknown TAR header type %u" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:200 apt-pkg/contrib/fileutl.cc:215 -#, c-format -msgid "Problem unlinking the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:260 -#, c-format -msgid "Not using locking for read only lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:265 -#, c-format -msgid "Could not open lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:302 -#, c-format -msgid "Not using locking for nfs mounted lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:314 -#, c-format -msgid "Could not get lock %s. It is held by process %d" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:316 -#, c-format -msgid "Could not get lock %s. It is held by process %d (%s)" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:319 -#, c-format -msgid "Could not get lock %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:321 -msgid "" -"Be aware that removing the lock file is not a solution and may break your " -"system." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:459 apt-pkg/contrib/fileutl.cc:578 -#, c-format -msgid "List of files can't be created as '%s' is not a directory" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:498 -#, c-format -msgid "Ignoring '%s' in directory '%s' as it is not a regular file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:516 -#, c-format -msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:525 -#, c-format -msgid "" -"Ignoring file '%s' in directory '%s' as it has an invalid filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:966 apt-pkg/contrib/gpgv.cc:395 -#: apt-pkg/deb/debsystem.cc:506 -#, c-format -msgid "Waited for %s but it wasn't there" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:978 -#, c-format -msgid "Sub-process %s received a segmentation fault." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:980 -#, 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:984 apt-pkg/contrib/gpgv.cc:410 -#, c-format -msgid "Sub-process %s returned an error code (%u)" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:986 apt-pkg/contrib/gpgv.cc:402 -#, c-format -msgid "Sub-process %s exited unexpectedly" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1160 apt-pkg/contrib/fileutl.cc:1466 -#: apt-pkg/contrib/fileutl.cc:1593 apt-pkg/contrib/fileutl.cc:1710 -#: apt-pkg/contrib/fileutl.cc:1885 apt-pkg/contrib/fileutl.cc:2144 -#: apt-pkg/contrib/fileutl.cc:2761 -msgid "Read error" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1207 apt-pkg/contrib/fileutl.cc:1482 -#: apt-pkg/contrib/fileutl.cc:1605 apt-pkg/contrib/fileutl.cc:1729 -#: apt-pkg/contrib/fileutl.cc:1913 apt-pkg/contrib/fileutl.cc:2023 -#: apt-pkg/contrib/fileutl.cc:2177 apt-pkg/contrib/fileutl.cc:2861 -msgid "Write error" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1560 -#, c-format -msgid "Problem closing the gzip file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1686 apt-pkg/contrib/fileutl.cc:1847 -msgid "Unexpected end of file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2231 apt-pkg/contrib/fileutl.cc:3208 -msgid "Failed to create subprocess IPC" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2289 -msgid "Failed to exec compressor " -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2573 -#, c-format -msgid "Could not open file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2632 apt-pkg/contrib/fileutl.cc:2683 -#, c-format -msgid "Could not open file descriptor %d" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2746 apt-pkg/contrib/fileutl.cc:2775 -#, c-format -msgid "read, still have %llu to read but none left" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2849 apt-pkg/contrib/fileutl.cc:2873 -#, c-format -msgid "write, still have %llu to write but couldn't" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2990 -#, c-format -msgid "Problem closing the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3002 -#, c-format -msgid "Problem renaming the file %s to %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3025 -msgid "Problem syncing the file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3173 -#, c-format -msgid "Unable to mkstemp %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3179 -#, c-format -msgid "Unable to write to %s" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:78 -msgid "Can't mmap an empty file" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:87 apt-pkg/contrib/mmap.cc:107 -#: apt-pkg/contrib/mmap.cc:118 apt-pkg/contrib/mmap.cc:124 -#, c-format -msgid "Couldn't make mmap of %llu bytes" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:114 -#, c-format -msgid "Couldn't duplicate file descriptor %i" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:150 -msgid "Unable to close mmap" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:178 apt-pkg/contrib/mmap.cc:206 -msgid "Unable to synchronize mmap" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:288 -#, c-format -msgid "Couldn't make mmap of %lu bytes" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:320 -msgid "Failed to truncate file" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:339 -#, 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:458 -#, 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:461 -msgid "" -"Unable to increase size of the MMap as automatic growing is disabled by user." -msgstr "" - -#: apt-pkg/contrib/netrc.cc:117 -#, c-format -msgid "" -"%s: Credentials for %s match, but the protocol is not encrypted. Annotate " -"with %s:// to use." -msgstr "" - -#: apt-pkg/contrib/progress.cc:158 -#, c-format -msgid "%c%s... Error!" -msgstr "" - -#: apt-pkg/contrib/progress.cc:160 -#, c-format -msgid "%c%s... Done" -msgstr "" - -#: apt-pkg/contrib/progress.cc:191 -msgid "..." -msgstr "" - -#: apt-pkg/contrib/progress.cc:208 -#, c-format -msgid "%c%s... %llu/%llus" -msgstr "" - -#: apt-pkg/contrib/progress.cc:210 -#, c-format -msgid "%c%s... %llus" -msgstr "" - -#: apt-pkg/contrib/progress.cc:212 -#, 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:483 -#, c-format -msgid "%lid %lih %limin %lis" -msgstr "" - -#. TRANSLATOR: h means hours, min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:488 -#, c-format -msgid "%lih %limin %lis" -msgstr "" - -#. TRANSLATOR: min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:493 -#, c-format -msgid "%limin %lis" -msgstr "" - -#. TRANSLATOR: s means seconds -#: apt-pkg/contrib/strutl.cc:498 -#, c-format -msgid "%lis" -msgstr "" - -#: apt-pkg/contrib/strutl.cc:1412 -#, c-format -msgid "Selection %s not found" -msgstr "" - -#: apt-pkg/deb/debfile.cc:49 apt-pkg/deb/debfile.cc:58 -#: apt-pkg/deb/debfile.cc:69 -#, c-format -msgid "This is not a valid DEB archive, missing '%s' member" -msgstr "" - -#: apt-pkg/deb/debfile.cc:145 -#, c-format -msgid "Internal error, could not locate member %s" -msgstr "" - -#: apt-pkg/deb/debfile.cc:251 -msgid "Unparsable control file" -msgstr "" - -#: apt-pkg/deb/debindexfile.cc:183 -#, c-format -msgid "Could not read meta data from %s" -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:337 -#, 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:358 -#, c-format -msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:465 -#, c-format -msgid "Unable to parse Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:474 -#, c-format -msgid "No sections in Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:554 -#, c-format -msgid "No Hash entry in Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:556 -#, c-format -msgid "" -"No Hash entry in Release file %s which is considered strong enough for " -"security purposes" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:563 apt-pkg/deb/debmetaindex.cc:603 -#: apt-pkg/deb/debmetaindex.cc:649 -#, 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:754 apt-pkg/deb/debmetaindex.cc:762 -#: apt-pkg/deb/debmetaindex.cc:770 apt-pkg/deb/debmetaindex.cc:778 -#: apt-pkg/deb/debmetaindex.cc:786 apt-pkg/deb/debmetaindex.cc:794 -#: apt-pkg/deb/debmetaindex.cc:802 apt-pkg/deb/debmetaindex.cc:1177 -#: apt-pkg/deb/debmetaindex.cc:1179 apt-pkg/deb/debmetaindex.cc:1184 -#: apt-pkg/deb/debmetaindex.cc:1186 apt-pkg/deb/debmetaindex.cc:1195 -#, c-format -msgid "Conflicting values set for option %s regarding source %s %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:815 -#, c-format -msgid "Invalid value set for option %s regarding source %s %s (%s)" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:821 -#, c-format -msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" -msgstr "" - -#: apt-pkg/deb/debrecords.cc:220 apt-pkg/tagfile.cc:217 apt-pkg/tagfile.cc:473 -#, c-format -msgid "Unable to parse package file %s (%d)" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:110 -#, c-format -msgid "Waiting for cache lock: %s" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:138 -#, c-format -msgid "" -"Unable to acquire the dpkg frontend lock (%s), is another process using it?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:141 -#, c-format -msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "" - -#. TRANSLATORS: the %s contains the recovery command, usually -#. dpkg --configure -a -#: apt-pkg/deb/debsystem.cc:164 -#, c-format -msgid "" -"dpkg was interrupted, you must manually run '%s' to correct the problem. " -msgstr "" - -#: apt-pkg/deb/debsystem.cc:180 -#, c-format -msgid "" -"Unable to lock the administration directory (%s), is another process using " -"it?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:183 -#, c-format -msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:198 -msgid "Not locked" -msgstr "" - -#. we don't care for the difference -#: apt-pkg/deb/dpkgpm.cc:145 apt-pkg/deb/dpkgpm.cc:147 -#, c-format -msgid "Preparing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:148 -#, c-format -msgid "Preparing to configure %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:149 -#, c-format -msgid "Preparing for removal of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:150 -#, c-format -msgid "Preparing to completely remove %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:151 -#, c-format -msgid "Noting disappearance of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:152 -#, c-format -msgid "Running post-installation trigger %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:853 apt-pkg/deb/dpkgpm.cc:1153 -#, c-format -msgid "Installed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:854 apt-pkg/deb/dpkgpm.cc:1152 -#, c-format -msgid "Configuring %s" -msgstr "" - -#. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:1002 apt-pkg/deb/dpkgpm.cc:1035 -#, c-format -msgid "Directory '%s' missing" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1016 apt-pkg/deb/dpkgpm.cc:1040 apt-pkg/edsp.cc:761 -#, c-format -msgid "Could not open file '%s'" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1147 -#, c-format -msgid "Unpacking %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1148 -#, c-format -msgid "Installing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1157 apt-pkg/deb/dpkgpm.cc:1158 -#, c-format -msgid "Removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1162 -#, c-format -msgid "Completely removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1163 -#, c-format -msgid "Completely removed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1228 apt-pkg/deb/dpkgpm.cc:1322 -#, c-format -msgid "Can not write log (%s)" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1228 apt-pkg/deb/dpkgpm.cc:1322 -msgid "Is /dev/pts mounted?" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2176 -msgid "Operation was interrupted before it could finish" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2261 -msgid "No apport report written because MaxReports is reached already" -msgstr "" - -#. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:2266 -msgid "dependency problems - leaving unconfigured" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2268 -msgid "" -"No apport report written because the error message indicates its a followup " -"error from a previous failure." -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2274 -msgid "" -"No apport report written because the error message indicates a disk full " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2281 -msgid "" -"No apport report written because the error message indicates a out of memory " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2288 apt-pkg/deb/dpkgpm.cc:2294 -msgid "" -"No apport report written because the error message indicates an issue on the " -"local system" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2316 -msgid "" -"No apport report written because the error message indicates a dpkg I/O error" -msgstr "" - -#: apt-pkg/depcache.cc:272 apt-pkg/depcache.cc:300 -msgid "Building dependency tree" -msgstr "" - -#: apt-pkg/depcache.cc:273 -msgid "Candidate versions" -msgstr "" - -#: apt-pkg/depcache.cc:301 -msgid "Dependency generation" -msgstr "" - -#: apt-pkg/depcache.cc:323 apt-pkg/depcache.cc:357 apt-pkg/depcache.cc:361 -msgid "Reading state information" -msgstr "" - -#: apt-pkg/depcache.cc:388 -#, c-format -msgid "Failed to open StateFile %s" -msgstr "" - -#: apt-pkg/depcache.cc:393 -#, c-format -msgid "Failed to write temporary StateFile %s" -msgstr "" - -#: apt-pkg/dirstream.cc:41 apt-pkg/dirstream.cc:48 apt-pkg/dirstream.cc:53 -#, c-format -msgid "Failed to write file %s" -msgstr "" - -#: apt-pkg/dirstream.cc:103 -#, c-format -msgid "Failed to close file %s" -msgstr "" - -#: apt-pkg/edsp.cc:288 apt-pkg/edsp.cc:316 -msgid "Send scenario to solver" -msgstr "" - -#: apt-pkg/edsp.cc:346 -msgid "Send request to solver" -msgstr "" - -#: apt-pkg/edsp.cc:429 apt-pkg/edsp.cc:1038 -msgid "Prepare for receiving solution" -msgstr "" - -#: apt-pkg/edsp.cc:442 -msgid "External solver failed without a proper error message" -msgstr "" - -#: apt-pkg/edsp.cc:787 apt-pkg/edsp.cc:790 apt-pkg/edsp.cc:795 -msgid "Execute external solver" -msgstr "" - -#: apt-pkg/edsp.cc:832 apt-pkg/edsp.cc:835 apt-pkg/edsp.cc:842 -msgid "Execute external planner" -msgstr "" - -#: apt-pkg/edsp.cc:863 -msgid "Send request to planner" -msgstr "" - -#: apt-pkg/edsp.cc:945 -msgid "Send scenario to planner" -msgstr "" - -#: apt-pkg/edsp.cc:1051 -msgid "External planner failed without a proper error message" -msgstr "" - -#: apt-pkg/indexcopy.cc:227 apt-pkg/indexcopy.cc:744 -#, c-format -msgid "Wrote %i records.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:229 apt-pkg/indexcopy.cc:746 -#, c-format -msgid "Wrote %i records with %i missing files.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:232 apt-pkg/indexcopy.cc:749 -#, c-format -msgid "Wrote %i records with %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:235 apt-pkg/indexcopy.cc:752 -#, c-format -msgid "Wrote %i records with %i missing files and %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:499 -#, c-format -msgid "Can't find authentication record for: %s" -msgstr "" - -#: apt-pkg/indexcopy.cc:505 -#, c-format -msgid "Hash mismatch for: %s" -msgstr "" - -#: apt-pkg/init.cc:276 -#, c-format -msgid "Packaging system '%s' is not supported" -msgstr "" - -#: apt-pkg/init.cc:292 -msgid "Unable to determine a suitable packaging system type" -msgstr "" - -#: apt-pkg/install-progress.cc:59 -#, c-format -msgid "Progress: [%3li%%]" -msgstr "" - -#. send status information that we are about to fork dpkg -#: apt-pkg/install-progress.cc:103 apt-pkg/install-progress.cc:184 -msgid "Running dpkg" -msgstr "" - -#: apt-pkg/packagemanager.cc:330 apt-pkg/packagemanager.cc:1031 -#, 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:589 apt-pkg/packagemanager.cc:628 -#, c-format -msgid "Could not configure '%s'. " -msgstr "" - -#: apt-pkg/packagemanager.cc:682 apt-pkg/packagemanager.cc:692 -#, 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:163 -msgid "Empty package cache" -msgstr "" - -#: apt-pkg/pkgcache.cc:169 apt-pkg/pkgcache.cc:177 -msgid "The package cache file is corrupted" -msgstr "" - -#: apt-pkg/pkgcache.cc:174 -msgid "The package cache file is an incompatible version" -msgstr "" - -#: apt-pkg/pkgcache.cc:181 -#, c-format -msgid "This APT does not support the versioning system '%s'" -msgstr "" - -#: apt-pkg/pkgcache.cc:193 -#, c-format -msgid "The package cache was built for different architectures: %s vs %s" -msgstr "" - -#: apt-pkg/pkgcache.cc:200 -msgid "The package cache file is corrupted, it has the wrong hash" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "Depends" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "PreDepends" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "Suggests" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Recommends" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Conflicts" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Replaces" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Obsoletes" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Breaks" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Enhances" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "required" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "important" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "standard" -msgstr "" - -#: apt-pkg/pkgcache.cc:357 -msgid "optional" -msgstr "" - -#: apt-pkg/pkgcache.cc:357 -msgid "extra" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:135 -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:276 apt-pkg/pkgcachegen.cc:338 -#: apt-pkg/pkgcachegen.cc:433 apt-pkg/pkgcachegen.cc:437 -#: apt-pkg/pkgcachegen.cc:454 apt-pkg/pkgcachegen.cc:464 -#: apt-pkg/pkgcachegen.cc:468 apt-pkg/pkgcachegen.cc:472 -#: apt-pkg/pkgcachegen.cc:493 apt-pkg/pkgcachegen.cc:498 -#: apt-pkg/pkgcachegen.cc:542 apt-pkg/pkgcachegen.cc:556 -#, c-format -msgid "Error occurred while processing %s (%s%d)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:296 -msgid "Wow, you exceeded the number of package names this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:299 -msgid "Wow, you exceeded the number of versions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:302 -msgid "Wow, you exceeded the number of descriptions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:305 -msgid "Wow, you exceeded the number of dependencies this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1577 apt-pkg/pkgcachegen.cc:1711 -#: apt-pkg/pkgcachegen.cc:1740 apt-pkg/pkgcachegen.cc:1856 -msgid "Reading package lists" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1648 apt-pkg/pkgcachegen.cc:1655 -msgid "IO Error saving source cache" -msgstr "" - -#: apt-pkg/pkgrecords.cc:36 -#, c-format -msgid "Index file type '%s' is not supported" -msgstr "" - -#: apt-pkg/policy.cc:86 -#, 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:439 -#, c-format -msgid "Invalid record in the preferences file %s, no Package header" -msgstr "" - -#: apt-pkg/policy.cc:461 -#, c-format -msgid "Did not understand pin type %s" -msgstr "" - -#: apt-pkg/policy.cc:473 -#, c-format -msgid "" -"%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" -msgstr "" - -#: apt-pkg/policy.cc:481 -#, c-format -msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" -msgstr "" - -#: apt-pkg/policy.cc:488 -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:160 apt-pkg/sourcelist.cc:163 -#: apt-pkg/sourcelist.cc:168 apt-pkg/sourcelist.cc:175 -#: apt-pkg/sourcelist.cc:182 apt-pkg/sourcelist.cc:221 -#: apt-pkg/sourcelist.cc:224 apt-pkg/sourcelist.cc:235 -#: apt-pkg/sourcelist.cc:241 apt-pkg/sourcelist.cc:244 -#: apt-pkg/sourcelist.cc:257 apt-pkg/sourcelist.cc:259 -#: apt-pkg/sourcelist.cc:262 apt-pkg/sourcelist.cc:268 -#: apt-pkg/sourcelist.cc:275 -#, c-format -msgid "Malformed entry %u in %s file %s (%s)" -msgstr "" - -#: apt-pkg/sourcelist.cc:411 -#, c-format -msgid "Malformed line %u in source list %s (type)" -msgstr "" - -#: apt-pkg/sourcelist.cc:415 -#, c-format -msgid "Type '%s' is not known on line %u in source list %s" -msgstr "" - -#: apt-pkg/sourcelist.cc:434 apt-pkg/sourcelist.cc:443 -#, c-format -msgid "Malformed stanza %u in source list %s (type)" -msgstr "" - -#: apt-pkg/sourcelist.cc:450 -#, c-format -msgid "Type '%s' is not known on stanza %u in source list %s" -msgstr "" - -#: apt-pkg/sourcelist.cc:623 -#, c-format -msgid "Unsupported file %s given on commandline" -msgstr "" - -#: apt-pkg/srcrecords.cc:55 -msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "" - -#: apt-pkg/tagfile.cc:780 -#, c-format -msgid "Cannot convert %s to integer: out of range" -msgstr "" - -#: apt-pkg/update.cc:137 apt-pkg/update.cc:139 -msgid "" -"Some index files failed to download. They have been ignored, or old ones " -"used instead." -msgstr "" - -#: apt-pkg/upgrade.cc:37 apt-pkg/upgrade.cc:170 apt-pkg/upgrade.cc:218 -msgid "Calculating upgrade" -msgstr "" diff --git a/po/libapt-pkg6.0.pot b/po/libapt-pkg6.0.pot deleted file mode 100644 index 485adde..0000000 --- a/po/libapt-pkg6.0.pot +++ /dev/null @@ -1,1526 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: apt 2.8.0\n" -"Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: apt-pkg/acquire-item.cc:176 -msgid "" -"Updating from such a repository can't be done securely, and is therefore " -"disabled by default." -msgstr "" - -#: apt-pkg/acquire-item.cc:181 -msgid "" -"Data from such a repository can't be authenticated and is therefore " -"potentially dangerous to use." -msgstr "" - -#: apt-pkg/acquire-item.cc:183 -msgid "" -"See apt-secure(8) manpage for repository creation and user configuration " -"details." -msgstr "" - -#: apt-pkg/acquire-item.cc:224 -#, c-format -msgid "The repository '%s' is no longer signed." -msgstr "" - -#: apt-pkg/acquire-item.cc:225 -#, c-format -msgid "The repository '%s' no longer has a Release file." -msgstr "" - -#: apt-pkg/acquire-item.cc:234 -msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." -msgstr "" - -#: apt-pkg/acquire-item.cc:252 -#, c-format -msgid "The repository '%s' is not signed." -msgstr "" - -#: apt-pkg/acquire-item.cc:253 -#, c-format -msgid "The repository '%s' does not have a Release file." -msgstr "" - -#: apt-pkg/acquire-item.cc:254 -#, c-format -msgid "The repository '%s' provides only weak security information." -msgstr "" - -#: apt-pkg/acquire-item.cc:598 -#, c-format -msgid "Failed to readlink %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:607 -#, c-format -msgid "Failed to stat %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:950 apt-pkg/acquire-item.cc:1090 -msgid "Hash Sum mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:953 -msgid "Insufficient information available to perform this download securely" -msgstr "" - -#: apt-pkg/acquire-item.cc:1065 apt-pkg/contrib/fileutl.cc:3193 -#, c-format -msgid "rename failed, %s (%s -> %s)." -msgstr "" - -#: apt-pkg/acquire-item.cc:1093 -msgid "Size mismatch" -msgstr "" - -#: apt-pkg/acquire-item.cc:1097 -msgid "Invalid file format" -msgstr "" - -#: apt-pkg/acquire-item.cc:1102 -msgid "Signature error" -msgstr "" - -#: apt-pkg/acquire-item.cc:1106 -#, c-format -msgid "" -"Clearsigned file isn't valid, got '%s' (does the network require " -"authentication?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1355 -#, 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:1364 apt-pkg/acquire-item.cc:1370 -#, c-format -msgid "GPG error: %s: %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:1605 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' doesn't have the " -"component '%s' (component misspelt in sources.list?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1624 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' doesn't support " -"architecture '%s'" -msgstr "" - -#: apt-pkg/acquire-item.cc:1641 -#, c-format -msgid "" -"Skipping acquire of configured file '%s' as repository '%s' does not seem to " -"provide it (sources.list entry misspelt?)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1659 -#, 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:1758 -#, c-format -msgid "" -"Release file for %s is expired (invalid since %s). Updates for this " -"repository will not be applied." -msgstr "" - -#. TRANSLATOR: The first %s is the URL of the bad Release file, the second is -#. the time until the file will be valid - formatted in the same way as in -#. the download progress display (e.g. 7d 3h 42min 1s) -#: apt-pkg/acquire-item.cc:1777 -#, c-format -msgid "" -"Release file for %s is not valid yet (invalid for another %s). Updates for " -"this repository will not be applied." -msgstr "" - -#: apt-pkg/acquire-item.cc:1812 -#, c-format -msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "" - -#: apt-pkg/acquire-item.cc:1842 -#, c-format -msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" - -#: apt-pkg/acquire-item.cc:1858 -#, c-format -msgid "Repository '%s' changed its default priority for %s from %hi to %hi." -msgstr "" - -#. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc:1871 -#, c-format -msgid "" -"More information about this can be found online in the Release notes at: %s" -msgstr "" - -#. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) -#: apt-pkg/acquire-item.cc:1878 -#, c-format -msgid "" -"This must be accepted explicitly before updates for this repository can be " -"applied. See %s manpage for details." -msgstr "" - -#: apt-pkg/acquire-item.cc:2009 apt-pkg/update.cc:112 apt-pkg/update.cc:115 -#, c-format -msgid "Failed to fetch %s %s" -msgstr "" - -#: apt-pkg/acquire-item.cc:3354 -#, 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:3483 -#, c-format -msgid "Can't find a source to download version '%s' of '%s'" -msgstr "" - -#. TRANSLATOR: %s=%s is sourcename=sourceversion, e.g. apt=1.1 -#: apt-pkg/acquire-item.cc:3640 apt-pkg/acquire-item.cc:3874 -#, c-format -msgid "Changelog unavailable for %s=%s" -msgstr "" - -#: apt-pkg/acquire-worker.cc:103 -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - -#: apt-pkg/acquire-worker.cc:110 -#, c-format -msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" - -#: apt-pkg/acquire-worker.cc:112 -#, c-format -msgid "If you meant to use Tor remember to use %s instead of %s." -msgstr "" - -#: apt-pkg/acquire-worker.cc:115 -#, c-format -msgid "The method driver %s could not be found." -msgstr "" - -#: apt-pkg/acquire-worker.cc:119 -#, c-format -msgid "Is the package %s installed?" -msgstr "" - -#: apt-pkg/acquire-worker.cc:174 -#, c-format -msgid "Method %s did not start correctly" -msgstr "" - -#: apt-pkg/acquire-worker.cc:740 -#, c-format -msgid "" -"Please insert the disc labeled: '%s' in the drive '%s' and press [Enter]." -msgstr "" - -#: apt-pkg/acquire.cc:158 apt-pkg/cdrom.cc:827 -#, c-format -msgid "List directory %s is missing." -msgstr "" - -#: apt-pkg/acquire.cc:163 -#, c-format -msgid "Archives directory %s is missing." -msgstr "" - -#: apt-pkg/acquire.cc:181 -#, c-format -msgid "Unable to lock directory %s" -msgstr "" - -#: apt-pkg/acquire.cc:629 -#, c-format -msgid "No sandbox user '%s' on the system, can not drop privileges" -msgstr "" - -#: apt-pkg/acquire.cc:666 apt-pkg/acquire.cc:684 -#, c-format -msgid "" -"Download is performed unsandboxed as root as file '%s' couldn't be accessed " -"by user '%s'." -msgstr "" - -#: apt-pkg/acquire.cc:840 apt-pkg/clean.cc:39 -#, c-format -msgid "Clean of %s is not supported" -msgstr "" - -#. Only warn if there are no sources.list.d. -#. Only warn if there is no sources.list file. -#: apt-pkg/acquire.cc:844 apt-pkg/acquire.cc:847 apt-pkg/clean.cc:48 -#: apt-pkg/clean.cc:51 apt-pkg/contrib/cdromutl.cc:189 -#: apt-pkg/contrib/cdromutl.cc:211 apt-pkg/contrib/fileutl.cc:468 -#: apt-pkg/contrib/fileutl.cc:470 apt-pkg/contrib/fileutl.cc:585 -#: apt-pkg/contrib/fileutl.cc:3425 apt-pkg/deb/dpkgpm.cc:1367 -#: apt-pkg/init.cc:234 apt-pkg/init.cc:242 apt-pkg/policy.cc:390 -#: apt-pkg/sourcelist.cc:323 apt-pkg/sourcelist.cc:330 -#, c-format -msgid "Unable to read %s" -msgstr "" - -#: apt-pkg/acquire.cc:1501 -#, c-format -msgid "Retrieving file %li of %li (%s remaining)" -msgstr "" - -#: apt-pkg/acquire.cc:1503 -#, c-format -msgid "Retrieving file %li of %li" -msgstr "" - -#: apt-pkg/algorithms.cc:335 -#, c-format -msgid "" -"The package %s needs to be reinstalled, but I can't find an archive for it." -msgstr "" - -#: apt-pkg/algorithms.cc:1194 -msgid "" -"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " -"held packages." -msgstr "" - -#: apt-pkg/algorithms.cc:1196 -msgid "Unable to correct problems, you have held broken packages." -msgstr "" - -#: apt-pkg/cachefile.cc:133 -msgid "The package lists or status file could not be parsed or opened." -msgstr "" - -#: apt-pkg/cachefile.cc:137 -msgid "You may want to run apt-get update to correct these problems" -msgstr "" - -#: apt-pkg/cachefile.cc:160 -msgid "The list of sources could not be read." -msgstr "" - -#: apt-pkg/cachefilter-patterns.cc:569 apt-pkg/cachefilter.cc:44 -#, c-format -msgid "Regex compilation error - %s" -msgstr "" - -#: apt-pkg/cacheset.cc:710 -#, c-format -msgid "Couldn't find task '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:716 -#, c-format -msgid "Couldn't find any package by regex '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:722 -#, c-format -msgid "Couldn't find any package by glob '%s'" -msgstr "" - -#: apt-pkg/cacheset.cc:734 -#, c-format -msgid "Unable to locate package %s" -msgstr "" - -#: apt-pkg/cacheset.cc:757 -#, c-format -msgid "Can't select versions from package '%s' as it is purely virtual" -msgstr "" - -#: apt-pkg/cacheset.cc:794 -#, c-format -msgid "Can't select newest version from package '%s' as it is purely virtual" -msgstr "" - -#: apt-pkg/cacheset.cc:802 -#, c-format -msgid "Can't select candidate version from package %s as it has no candidate" -msgstr "" - -#: apt-pkg/cacheset.cc:810 -#, c-format -msgid "Can't select installed version from package %s as it is not installed" -msgstr "" - -#: apt-pkg/cacheset.cc:818 apt-pkg/cacheset.cc:826 -#, c-format -msgid "" -"Can't select installed nor candidate version from package '%s' as it has " -"neither of them" -msgstr "" - -#: apt-pkg/cacheset.cc:834 -#, c-format -msgid "Release '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cacheset.cc:840 -#, c-format -msgid "Version '%s' for '%s' was not found" -msgstr "" - -#: apt-pkg/cdrom.cc:566 -msgid "Unmounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:581 -#, c-format -msgid "Using CD-ROM mount point %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:594 -msgid "Waiting for disc...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:604 -msgid "Mounting CD-ROM...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:615 -msgid "Identifying... " -msgstr "" - -#: apt-pkg/cdrom.cc:657 -#, c-format -msgid "Stored label: %s\n" -msgstr "" - -#: apt-pkg/cdrom.cc:675 -msgid "Scanning disc for index files...\n" -msgstr "" - -#: apt-pkg/cdrom.cc:729 -#, c-format -msgid "" -"Found %zu package indexes, %zu source indexes, %zu translation indexes and " -"%zu signatures\n" -msgstr "" - -#: apt-pkg/cdrom.cc:739 -msgid "" -"Unable to locate any package files, perhaps this is not a Debian Disc or the " -"wrong architecture?" -msgstr "" - -#: apt-pkg/cdrom.cc:766 -#, c-format -msgid "Found label '%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:795 -msgid "That is not a valid name, try again.\n" -msgstr "" - -#: apt-pkg/cdrom.cc:812 -#, c-format -msgid "" -"This disc is called: \n" -"'%s'\n" -msgstr "" - -#: apt-pkg/cdrom.cc:814 -msgid "Copying package lists..." -msgstr "" - -#: apt-pkg/cdrom.cc:861 -msgid "Writing new source list\n" -msgstr "" - -#: apt-pkg/cdrom.cc:872 -msgid "Source list entries for this disc are:\n" -msgstr "" - -#: apt-pkg/clean.cc:67 -#, c-format -msgid "Unable to stat %s." -msgstr "" - -#: apt-pkg/contrib/arfile.cc:75 -msgid "Invalid archive signature" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:83 -msgid "Error reading archive member header" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:95 apt-pkg/contrib/arfile.cc:101 -#: apt-pkg/contrib/arfile.cc:112 apt-pkg/contrib/arfile.cc:118 -#: apt-pkg/contrib/arfile.cc:139 -msgid "Invalid archive member header" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:155 -msgid "Archive is too short" -msgstr "" - -#: apt-pkg/contrib/arfile.cc:159 -msgid "Failed to read the archive headers" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:64 -#, c-format -msgid "Unable to stat the mount point %s" -msgstr "" - -#: apt-pkg/contrib/cdromutl.cc:244 -msgid "Failed to stat the cdrom" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:130 -#, c-format -msgid "" -"Command line option '%c' [from %s] is not understood in combination with the " -"other options." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:155 apt-pkg/contrib/cmndline.cc:164 -#: apt-pkg/contrib/cmndline.cc:172 -#, c-format -msgid "" -"Command line option %s is not understood in combination with the other " -"options" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:177 -#, c-format -msgid "Command line option %s is not boolean" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:233 -#, c-format -msgid "Option %s requires an argument." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:246 -#, c-format -msgid "Option %s: Configuration item specification must have an =." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:272 -#, c-format -msgid "Option %s requires an integer argument, not '%s'" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:303 -#, c-format -msgid "Option '%s' is too long" -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:336 -#, c-format -msgid "Sense %s is not understood, try true or false." -msgstr "" - -#: apt-pkg/contrib/cmndline.cc:384 -#, c-format -msgid "Invalid operation %s" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:727 -#, c-format -msgid "Unrecognized type abbreviation: '%c'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:983 -#, c-format -msgid "Syntax error %s:%u: Block starts with no name." -msgstr "" - -#: apt-pkg/contrib/configuration.cc:997 -#, c-format -msgid "Syntax error %s:%u: Malformed tag" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1014 -#, c-format -msgid "Syntax error %s:%u: Extra junk after value" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1052 -#, c-format -msgid "Syntax error %s:%u: Directives can only be done at the top level" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1059 -#, c-format -msgid "Syntax error %s:%u: Too many nested includes" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1063 apt-pkg/contrib/configuration.cc:1068 -#, c-format -msgid "Syntax error %s:%u: Included from here" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1077 -#, c-format -msgid "Syntax error %s:%u: Unsupported directive '%s'" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1080 -#, c-format -msgid "Syntax error %s:%u: clear directive requires an option tree as argument" -msgstr "" - -#: apt-pkg/contrib/configuration.cc:1124 -#, c-format -msgid "Syntax error %s:%u: Extra junk at end of file" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:115 -#, c-format -msgid "Cannot find a configured compressor for '%s'" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:147 apt-pkg/contrib/extracttar.cc:177 -msgid "Corrupted archive" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:162 -msgid "Tar checksum failed, archive corrupted" -msgstr "" - -#: apt-pkg/contrib/extracttar.cc:276 -#, c-format -msgid "Unknown TAR header type %u" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:200 apt-pkg/contrib/fileutl.cc:215 -#, c-format -msgid "Problem unlinking the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:260 -#, c-format -msgid "Not using locking for read only lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:265 -#, c-format -msgid "Could not open lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:302 -#, c-format -msgid "Not using locking for nfs mounted lock file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:314 -#, c-format -msgid "Could not get lock %s. It is held by process %d" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:316 -#, c-format -msgid "Could not get lock %s. It is held by process %d (%s)" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:319 -#, c-format -msgid "Could not get lock %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:321 -msgid "" -"Be aware that removing the lock file is not a solution and may break your " -"system." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:459 apt-pkg/contrib/fileutl.cc:578 -#, c-format -msgid "List of files can't be created as '%s' is not a directory" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:498 -#, c-format -msgid "Ignoring '%s' in directory '%s' as it is not a regular file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:516 -#, c-format -msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:525 -#, c-format -msgid "" -"Ignoring file '%s' in directory '%s' as it has an invalid filename extension" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:966 apt-pkg/contrib/gpgv.cc:395 -#: apt-pkg/deb/debsystem.cc:506 -#, c-format -msgid "Waited for %s but it wasn't there" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:978 -#, c-format -msgid "Sub-process %s received a segmentation fault." -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:980 -#, 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:984 apt-pkg/contrib/gpgv.cc:410 -#, c-format -msgid "Sub-process %s returned an error code (%u)" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:986 apt-pkg/contrib/gpgv.cc:402 -#, c-format -msgid "Sub-process %s exited unexpectedly" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1160 apt-pkg/contrib/fileutl.cc:1466 -#: apt-pkg/contrib/fileutl.cc:1593 apt-pkg/contrib/fileutl.cc:1710 -#: apt-pkg/contrib/fileutl.cc:1885 apt-pkg/contrib/fileutl.cc:2144 -#: apt-pkg/contrib/fileutl.cc:2761 -msgid "Read error" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1207 apt-pkg/contrib/fileutl.cc:1482 -#: apt-pkg/contrib/fileutl.cc:1605 apt-pkg/contrib/fileutl.cc:1729 -#: apt-pkg/contrib/fileutl.cc:1913 apt-pkg/contrib/fileutl.cc:2023 -#: apt-pkg/contrib/fileutl.cc:2177 apt-pkg/contrib/fileutl.cc:2861 -msgid "Write error" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1560 -#, c-format -msgid "Problem closing the gzip file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:1686 apt-pkg/contrib/fileutl.cc:1847 -msgid "Unexpected end of file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2231 apt-pkg/contrib/fileutl.cc:3208 -msgid "Failed to create subprocess IPC" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2289 -msgid "Failed to exec compressor " -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2573 -#, c-format -msgid "Could not open file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2632 apt-pkg/contrib/fileutl.cc:2683 -#, c-format -msgid "Could not open file descriptor %d" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2746 apt-pkg/contrib/fileutl.cc:2775 -#, c-format -msgid "read, still have %llu to read but none left" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2849 apt-pkg/contrib/fileutl.cc:2873 -#, c-format -msgid "write, still have %llu to write but couldn't" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:2990 -#, c-format -msgid "Problem closing the file %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3002 -#, c-format -msgid "Problem renaming the file %s to %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3025 -msgid "Problem syncing the file" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3173 -#, c-format -msgid "Unable to mkstemp %s" -msgstr "" - -#: apt-pkg/contrib/fileutl.cc:3179 -#, c-format -msgid "Unable to write to %s" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:78 -msgid "Can't mmap an empty file" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:87 apt-pkg/contrib/mmap.cc:107 -#: apt-pkg/contrib/mmap.cc:118 apt-pkg/contrib/mmap.cc:124 -#, c-format -msgid "Couldn't make mmap of %llu bytes" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:114 -#, c-format -msgid "Couldn't duplicate file descriptor %i" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:150 -msgid "Unable to close mmap" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:178 apt-pkg/contrib/mmap.cc:206 -msgid "Unable to synchronize mmap" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:288 -#, c-format -msgid "Couldn't make mmap of %lu bytes" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:320 -msgid "Failed to truncate file" -msgstr "" - -#: apt-pkg/contrib/mmap.cc:339 -#, 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:458 -#, 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:461 -msgid "" -"Unable to increase size of the MMap as automatic growing is disabled by user." -msgstr "" - -#: apt-pkg/contrib/netrc.cc:117 -#, c-format -msgid "" -"%s: Credentials for %s match, but the protocol is not encrypted. Annotate " -"with %s:// to use." -msgstr "" - -#: apt-pkg/contrib/progress.cc:158 -#, c-format -msgid "%c%s... Error!" -msgstr "" - -#: apt-pkg/contrib/progress.cc:160 -#, c-format -msgid "%c%s... Done" -msgstr "" - -#: apt-pkg/contrib/progress.cc:191 -msgid "..." -msgstr "" - -#: apt-pkg/contrib/progress.cc:208 -#, c-format -msgid "%c%s... %llu/%llus" -msgstr "" - -#: apt-pkg/contrib/progress.cc:210 -#, c-format -msgid "%c%s... %llus" -msgstr "" - -#: apt-pkg/contrib/progress.cc:212 -#, 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:483 -#, c-format -msgid "%lid %lih %limin %lis" -msgstr "" - -#. TRANSLATOR: h means hours, min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:488 -#, c-format -msgid "%lih %limin %lis" -msgstr "" - -#. TRANSLATOR: min means minutes, s means seconds -#: apt-pkg/contrib/strutl.cc:493 -#, c-format -msgid "%limin %lis" -msgstr "" - -#. TRANSLATOR: s means seconds -#: apt-pkg/contrib/strutl.cc:498 -#, c-format -msgid "%lis" -msgstr "" - -#: apt-pkg/contrib/strutl.cc:1412 -#, c-format -msgid "Selection %s not found" -msgstr "" - -#: apt-pkg/deb/debfile.cc:49 apt-pkg/deb/debfile.cc:58 -#: apt-pkg/deb/debfile.cc:69 -#, c-format -msgid "This is not a valid DEB archive, missing '%s' member" -msgstr "" - -#: apt-pkg/deb/debfile.cc:145 -#, c-format -msgid "Internal error, could not locate member %s" -msgstr "" - -#: apt-pkg/deb/debfile.cc:251 -msgid "Unparsable control file" -msgstr "" - -#: apt-pkg/deb/debindexfile.cc:183 -#, c-format -msgid "Could not read meta data from %s" -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:337 -#, 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:358 -#, c-format -msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:465 -#, c-format -msgid "Unable to parse Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:474 -#, c-format -msgid "No sections in Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:554 -#, c-format -msgid "No Hash entry in Release file %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:556 -#, c-format -msgid "" -"No Hash entry in Release file %s which is considered strong enough for " -"security purposes" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:563 apt-pkg/deb/debmetaindex.cc:603 -#: apt-pkg/deb/debmetaindex.cc:649 -#, 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:754 apt-pkg/deb/debmetaindex.cc:762 -#: apt-pkg/deb/debmetaindex.cc:770 apt-pkg/deb/debmetaindex.cc:778 -#: apt-pkg/deb/debmetaindex.cc:786 apt-pkg/deb/debmetaindex.cc:794 -#: apt-pkg/deb/debmetaindex.cc:802 apt-pkg/deb/debmetaindex.cc:1177 -#: apt-pkg/deb/debmetaindex.cc:1179 apt-pkg/deb/debmetaindex.cc:1184 -#: apt-pkg/deb/debmetaindex.cc:1186 apt-pkg/deb/debmetaindex.cc:1195 -#, c-format -msgid "Conflicting values set for option %s regarding source %s %s" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:815 -#, c-format -msgid "Invalid value set for option %s regarding source %s %s (%s)" -msgstr "" - -#: apt-pkg/deb/debmetaindex.cc:821 -#, c-format -msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" -msgstr "" - -#: apt-pkg/deb/debrecords.cc:220 apt-pkg/tagfile.cc:217 apt-pkg/tagfile.cc:473 -#, c-format -msgid "Unable to parse package file %s (%d)" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:110 -#, c-format -msgid "Waiting for cache lock: %s" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:138 -#, c-format -msgid "" -"Unable to acquire the dpkg frontend lock (%s), is another process using it?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:141 -#, c-format -msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "" - -#. TRANSLATORS: the %s contains the recovery command, usually -#. dpkg --configure -a -#: apt-pkg/deb/debsystem.cc:164 -#, c-format -msgid "" -"dpkg was interrupted, you must manually run '%s' to correct the problem. " -msgstr "" - -#: apt-pkg/deb/debsystem.cc:180 -#, c-format -msgid "" -"Unable to lock the administration directory (%s), is another process using " -"it?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:183 -#, c-format -msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "" - -#: apt-pkg/deb/debsystem.cc:198 -msgid "Not locked" -msgstr "" - -#. we don't care for the difference -#: apt-pkg/deb/dpkgpm.cc:145 apt-pkg/deb/dpkgpm.cc:147 -#, c-format -msgid "Preparing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:148 -#, c-format -msgid "Preparing to configure %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:149 -#, c-format -msgid "Preparing for removal of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:150 -#, c-format -msgid "Preparing to completely remove %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:151 -#, c-format -msgid "Noting disappearance of %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:152 -#, c-format -msgid "Running post-installation trigger %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:853 apt-pkg/deb/dpkgpm.cc:1153 -#, c-format -msgid "Installed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:854 apt-pkg/deb/dpkgpm.cc:1152 -#, c-format -msgid "Configuring %s" -msgstr "" - -#. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:1002 apt-pkg/deb/dpkgpm.cc:1035 -#, c-format -msgid "Directory '%s' missing" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1016 apt-pkg/deb/dpkgpm.cc:1040 apt-pkg/edsp.cc:761 -#, c-format -msgid "Could not open file '%s'" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1147 -#, c-format -msgid "Unpacking %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1148 -#, c-format -msgid "Installing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1157 apt-pkg/deb/dpkgpm.cc:1158 -#, c-format -msgid "Removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1162 -#, c-format -msgid "Completely removing %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1163 -#, c-format -msgid "Completely removed %s" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1228 apt-pkg/deb/dpkgpm.cc:1322 -#, c-format -msgid "Can not write log (%s)" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:1228 apt-pkg/deb/dpkgpm.cc:1322 -msgid "Is /dev/pts mounted?" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2176 -msgid "Operation was interrupted before it could finish" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2261 -msgid "No apport report written because MaxReports is reached already" -msgstr "" - -#. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:2266 -msgid "dependency problems - leaving unconfigured" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2268 -msgid "" -"No apport report written because the error message indicates its a followup " -"error from a previous failure." -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2274 -msgid "" -"No apport report written because the error message indicates a disk full " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2281 -msgid "" -"No apport report written because the error message indicates a out of memory " -"error" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2288 apt-pkg/deb/dpkgpm.cc:2294 -msgid "" -"No apport report written because the error message indicates an issue on the " -"local system" -msgstr "" - -#: apt-pkg/deb/dpkgpm.cc:2316 -msgid "" -"No apport report written because the error message indicates a dpkg I/O error" -msgstr "" - -#: apt-pkg/depcache.cc:272 apt-pkg/depcache.cc:300 -msgid "Building dependency tree" -msgstr "" - -#: apt-pkg/depcache.cc:273 -msgid "Candidate versions" -msgstr "" - -#: apt-pkg/depcache.cc:301 -msgid "Dependency generation" -msgstr "" - -#: apt-pkg/depcache.cc:323 apt-pkg/depcache.cc:357 apt-pkg/depcache.cc:361 -msgid "Reading state information" -msgstr "" - -#: apt-pkg/depcache.cc:388 -#, c-format -msgid "Failed to open StateFile %s" -msgstr "" - -#: apt-pkg/depcache.cc:393 -#, c-format -msgid "Failed to write temporary StateFile %s" -msgstr "" - -#: apt-pkg/dirstream.cc:41 apt-pkg/dirstream.cc:48 apt-pkg/dirstream.cc:53 -#, c-format -msgid "Failed to write file %s" -msgstr "" - -#: apt-pkg/dirstream.cc:103 -#, c-format -msgid "Failed to close file %s" -msgstr "" - -#: apt-pkg/edsp.cc:288 apt-pkg/edsp.cc:316 -msgid "Send scenario to solver" -msgstr "" - -#: apt-pkg/edsp.cc:346 -msgid "Send request to solver" -msgstr "" - -#: apt-pkg/edsp.cc:429 apt-pkg/edsp.cc:1038 -msgid "Prepare for receiving solution" -msgstr "" - -#: apt-pkg/edsp.cc:442 -msgid "External solver failed without a proper error message" -msgstr "" - -#: apt-pkg/edsp.cc:787 apt-pkg/edsp.cc:790 apt-pkg/edsp.cc:795 -msgid "Execute external solver" -msgstr "" - -#: apt-pkg/edsp.cc:832 apt-pkg/edsp.cc:835 apt-pkg/edsp.cc:842 -msgid "Execute external planner" -msgstr "" - -#: apt-pkg/edsp.cc:863 -msgid "Send request to planner" -msgstr "" - -#: apt-pkg/edsp.cc:945 -msgid "Send scenario to planner" -msgstr "" - -#: apt-pkg/edsp.cc:1051 -msgid "External planner failed without a proper error message" -msgstr "" - -#: apt-pkg/indexcopy.cc:227 apt-pkg/indexcopy.cc:744 -#, c-format -msgid "Wrote %i records.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:229 apt-pkg/indexcopy.cc:746 -#, c-format -msgid "Wrote %i records with %i missing files.\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:232 apt-pkg/indexcopy.cc:749 -#, c-format -msgid "Wrote %i records with %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:235 apt-pkg/indexcopy.cc:752 -#, c-format -msgid "Wrote %i records with %i missing files and %i mismatched files\n" -msgstr "" - -#: apt-pkg/indexcopy.cc:499 -#, c-format -msgid "Can't find authentication record for: %s" -msgstr "" - -#: apt-pkg/indexcopy.cc:505 -#, c-format -msgid "Hash mismatch for: %s" -msgstr "" - -#: apt-pkg/init.cc:276 -#, c-format -msgid "Packaging system '%s' is not supported" -msgstr "" - -#: apt-pkg/init.cc:292 -msgid "Unable to determine a suitable packaging system type" -msgstr "" - -#: apt-pkg/install-progress.cc:59 -#, c-format -msgid "Progress: [%3li%%]" -msgstr "" - -#. send status information that we are about to fork dpkg -#: apt-pkg/install-progress.cc:103 apt-pkg/install-progress.cc:184 -msgid "Running dpkg" -msgstr "" - -#: apt-pkg/packagemanager.cc:330 apt-pkg/packagemanager.cc:1031 -#, 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:589 apt-pkg/packagemanager.cc:628 -#, c-format -msgid "Could not configure '%s'. " -msgstr "" - -#: apt-pkg/packagemanager.cc:682 apt-pkg/packagemanager.cc:692 -#, 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:163 -msgid "Empty package cache" -msgstr "" - -#: apt-pkg/pkgcache.cc:169 apt-pkg/pkgcache.cc:177 -msgid "The package cache file is corrupted" -msgstr "" - -#: apt-pkg/pkgcache.cc:174 -msgid "The package cache file is an incompatible version" -msgstr "" - -#: apt-pkg/pkgcache.cc:181 -#, c-format -msgid "This APT does not support the versioning system '%s'" -msgstr "" - -#: apt-pkg/pkgcache.cc:193 -#, c-format -msgid "The package cache was built for different architectures: %s vs %s" -msgstr "" - -#: apt-pkg/pkgcache.cc:200 -msgid "The package cache file is corrupted, it has the wrong hash" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "Depends" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "PreDepends" -msgstr "" - -#: apt-pkg/pkgcache.cc:343 -msgid "Suggests" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Conflicts" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Recommends" -msgstr "" - -#: apt-pkg/pkgcache.cc:344 -msgid "Replaces" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Breaks" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Enhances" -msgstr "" - -#: apt-pkg/pkgcache.cc:345 -msgid "Obsoletes" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "important" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "required" -msgstr "" - -#: apt-pkg/pkgcache.cc:356 -msgid "standard" -msgstr "" - -#: apt-pkg/pkgcache.cc:357 -msgid "extra" -msgstr "" - -#: apt-pkg/pkgcache.cc:357 -msgid "optional" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:135 -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:276 apt-pkg/pkgcachegen.cc:338 -#: apt-pkg/pkgcachegen.cc:433 apt-pkg/pkgcachegen.cc:437 -#: apt-pkg/pkgcachegen.cc:454 apt-pkg/pkgcachegen.cc:464 -#: apt-pkg/pkgcachegen.cc:468 apt-pkg/pkgcachegen.cc:472 -#: apt-pkg/pkgcachegen.cc:493 apt-pkg/pkgcachegen.cc:498 -#: apt-pkg/pkgcachegen.cc:542 apt-pkg/pkgcachegen.cc:556 -#, c-format -msgid "Error occurred while processing %s (%s%d)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:296 -msgid "Wow, you exceeded the number of package names this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:299 -msgid "Wow, you exceeded the number of versions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:302 -msgid "Wow, you exceeded the number of descriptions this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:305 -msgid "Wow, you exceeded the number of dependencies this APT is capable of." -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1577 apt-pkg/pkgcachegen.cc:1711 -#: apt-pkg/pkgcachegen.cc:1740 apt-pkg/pkgcachegen.cc:1856 -msgid "Reading package lists" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:1648 apt-pkg/pkgcachegen.cc:1655 -msgid "IO Error saving source cache" -msgstr "" - -#: apt-pkg/pkgrecords.cc:36 -#, c-format -msgid "Index file type '%s' is not supported" -msgstr "" - -#: apt-pkg/policy.cc:86 -#, 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:439 -#, c-format -msgid "Invalid record in the preferences file %s, no Package header" -msgstr "" - -#: apt-pkg/policy.cc:461 -#, c-format -msgid "Did not understand pin type %s" -msgstr "" - -#: apt-pkg/policy.cc:473 -#, c-format -msgid "" -"%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" -msgstr "" - -#: apt-pkg/policy.cc:481 -#, c-format -msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" -msgstr "" - -#: apt-pkg/policy.cc:488 -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:160 apt-pkg/sourcelist.cc:163 -#: apt-pkg/sourcelist.cc:168 apt-pkg/sourcelist.cc:175 -#: apt-pkg/sourcelist.cc:182 apt-pkg/sourcelist.cc:221 -#: apt-pkg/sourcelist.cc:224 apt-pkg/sourcelist.cc:235 -#: apt-pkg/sourcelist.cc:241 apt-pkg/sourcelist.cc:244 -#: apt-pkg/sourcelist.cc:257 apt-pkg/sourcelist.cc:259 -#: apt-pkg/sourcelist.cc:262 apt-pkg/sourcelist.cc:268 -#: apt-pkg/sourcelist.cc:275 -#, c-format -msgid "Malformed entry %u in %s file %s (%s)" -msgstr "" - -#: apt-pkg/sourcelist.cc:411 -#, c-format -msgid "Malformed line %u in source list %s (type)" -msgstr "" - -#: apt-pkg/sourcelist.cc:415 -#, c-format -msgid "Type '%s' is not known on line %u in source list %s" -msgstr "" - -#: apt-pkg/sourcelist.cc:434 apt-pkg/sourcelist.cc:443 -#, c-format -msgid "Malformed stanza %u in source list %s (type)" -msgstr "" - -#: apt-pkg/sourcelist.cc:450 -#, c-format -msgid "Type '%s' is not known on stanza %u in source list %s" -msgstr "" - -#: apt-pkg/sourcelist.cc:623 -#, c-format -msgid "Unsupported file %s given on commandline" -msgstr "" - -#: apt-pkg/srcrecords.cc:55 -msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "" - -#: apt-pkg/tagfile.cc:780 -#, c-format -msgid "Cannot convert %s to integer: out of range" -msgstr "" - -#: apt-pkg/update.cc:137 apt-pkg/update.cc:139 -msgid "" -"Some index files failed to download. They have been ignored, or old ones " -"used instead." -msgstr "" - -#: apt-pkg/upgrade.cc:37 apt-pkg/upgrade.cc:170 apt-pkg/upgrade.cc:218 -msgid "Calculating upgrade" -msgstr "" diff --git a/po/lt.po b/po/lt.po index 44db682..5bd28a2 100644 --- a/po/lt.po +++ b/po/lt.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2008-08-02 01:47-0400\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" @@ -53,8 +53,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,14 +121,15 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -183,8 +184,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -195,7 +195,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -214,6 +214,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Nepavyko parsiųsti %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -232,13 +239,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Jungiamasi prie %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -620,6 +620,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -729,11 +753,11 @@ msgstr "Procesas %s grąžino klaidos kodą (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Procesas %s netikėtai išėjo" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Skaitymo klaida" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Rašymo klaida" @@ -1041,6 +1065,12 @@ msgstr "Nepavyko užrakinti sąrašo aplanko" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1221,6 +1251,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Skaičiuojami atnaujinimai" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Viso priklausomybių: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1513,10 +1553,6 @@ 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 @@ -1683,12 +1719,6 @@ msgstr "Paketas %s nėra įdiegtas, todėl nebuvo pašalintas\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Pastaba: pažymimas %s vietoje %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1792,6 +1822,12 @@ msgstr "Ši informacija gali padėti išspręsti šią situaciją:" msgid "Broken packages" msgstr "Sugadinti paketai" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Rašymo klaida" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1806,10 +1842,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nepavyko parsiųsti kai kurių archyvų, pabandykite paleisti „apt-get update“ " +"Nepavyko parsiųsti kai kurių archyvų, pabandykite paleisti „apt update“ " "arba pabandykite su parametru --fix-missing?" #: apt-private/private-install.cc @@ -1846,6 +1882,12 @@ msgstr "" 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Įdiegta: " + #. 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 @@ -1853,6 +1895,11 @@ msgstr "Keista... Dydis neatitinka, Parašykite laišką apt@packages.debian.org msgid "Need to get %sB/%sB of archives.\n" msgstr "Reikia parsiųsti %sB/%sB archyvų.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1860,13 +1907,54 @@ msgstr "Reikia parsiųsti %sB/%sB archyvų.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\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 @@ -1884,19 +1972,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Ar norite tęsti?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Ar norite tęsti?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Nutraukti." @@ -1949,6 +2036,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "" +#: 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 "" @@ -1968,16 +2062,8 @@ msgstr[0] "Šie paketai buvo automatiškai įdiegti ir daugiau nebėra reikaling 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1987,6 +2073,11 @@ msgstr "Siūlomi paketai:" msgid "Recommended packages:" msgstr "Rekomenduojami paketai:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2118,10 +2209,31 @@ msgstr " arba" msgid "The following packages have unmet dependencies:" msgstr "Šie paketai turi neįdiegtų priklausomybių:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Nepavyko patenkinti %s priklausomybės %s: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Bus įdiegti šie NAUJI paketai:" +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr "Įdiegta %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Viso priklausomybių: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Bus PAŠALINTI šie paketai:" @@ -2132,6 +2244,16 @@ msgstr "Bus PAŠALINTI šie paketai:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Šių paketų atnaujinimas sulaikomas:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Šių paketų atnaujinimas sulaikomas:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Šių paketų atnaujinimas sulaikomas:" @@ -2140,10 +2262,24 @@ msgstr "Šių paketų atnaujinimas sulaikomas:" msgid "The following packages will be upgraded:" msgstr "Bus atnaujinti šie paketai:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Bus PAKEISTI SENESNIAIS šie paketai:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Surišti paketai:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Bus pakeisti šie sulaikyti paketai:" @@ -2161,26 +2297,50 @@ 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 +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu atnaujinti, %lu naujai įdiegti, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Įdiegta %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu įdiegti iš naujo, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "Įdiegta %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu pasendinti, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2208,7 +2368,7 @@ msgid "Y" msgstr "T" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2381,8 +2541,8 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2419,6 +2579,11 @@ msgstr "Nepavyko pervadinti %s į %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2436,12 +2601,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2489,6 +2679,12 @@ msgstr " Mišrūs virtualūs paketai: " msgid " Missing: " msgstr " Trūksta: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Viso skirtingų versijų: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Viso skirtingų versijų: " @@ -2815,6 +3011,10 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3063,12 +3263,20 @@ msgstr "" msgid "edit the source information file" msgstr "Skaitoma būsenos informacija" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Nepavyko patenkinti %s priklausomybės %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Blogi standartiniai nustatymai!" @@ -3277,7 +3485,7 @@ msgstr "Nežinomas suspaudimo algoritmas „%s“" msgid "Compressed output %s needs a compression set" msgstr "Suspaustai išvesčiai %s reikia suspaudimo rinkinio" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Nepavyko subprocesui sukurti IPC gijos" @@ -3396,22 +3604,22 @@ 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" +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" +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" +msgid " %.*s has no source override entry\n" msgstr "" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" #: methods/basehttp.cc @@ -3450,7 +3658,7 @@ msgstr "" msgid "Connection failed" msgstr "Prisijungti nepavyko" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3490,7 +3698,7 @@ msgstr "Nepavyko atjungti CD-ROM įrenginyje %s, galbūt jis vis dar naudojamas. msgid "Disk not found." msgstr "Diskas nerastas." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Failas nerastas" @@ -3526,7 +3734,7 @@ msgstr "" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Nepavyko" @@ -3540,9 +3748,7 @@ msgstr "Nepavyko prisijungti prie %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Nepavyko prisijungti prie %s:%s (%s), prisijungimas per ilgai užtruko" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Jungiamasi prie %s" @@ -3580,146 +3786,14 @@ msgstr "" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" msgstr "" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3739,20 +3813,15 @@ msgid "" msgstr "" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Nežinoma klaida kviečiant apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3789,18 +3858,40 @@ msgstr "" msgid "Connection timed out" msgstr "Prisijungimo laiko limitas baigėsi" -#: methods/rred.cc -msgid "Failed to set modification time" +#: methods/http.cc +msgid "Problem hashing file" msgstr "" -#: methods/rsh.cc -msgid "Connection closed prematurely" +#: methods/rred.cc +msgid "Failed to set modification time" msgstr "" #: methods/store.cc msgid "Empty files can't be valid archives" msgstr "" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG klaida: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Jungiamasi" + +#~ msgid "Connection timeout" +#~ msgstr "Jungiamasi per ilgai" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nepavyko atsiųsti failo, serveris atsakė „%s“" + +#~ msgid "Query" +#~ msgstr "Užklausti" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Bus pakeisti šie sulaikyti paketai:" + #~ msgid "Yes, do as I say!" #~ msgstr "Taip, daryk kaip liepiu!" diff --git a/po/mr.po b/po/mr.po index b79682b..f76a4eb 100644 --- a/po/mr.po +++ b/po/mr.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2008-11-20 23:27+0530\n" "Last-Translator: Sampada \n" "Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India " @@ -52,8 +52,8 @@ msgstr "%s संचिका डायव्हर्ट केली आहे #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -120,13 +120,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -182,8 +183,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -194,7 +194,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -213,6 +213,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s %s आणणे असफल" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -233,13 +240,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "%s (%s) ला जोडत आहे" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -624,6 +624,30 @@ msgstr "रचनेच्या नियमांचा दोष %s:%u: द msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "नियम रचनेचा दोष %s:%u: फाईलच्या अंती अधिक जंक" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -733,11 +757,11 @@ msgstr "%s उपक्रियेने (%u) त्रुटी कोड द msgid "Sub-process %s exited unexpectedly" msgstr "%s उपक्रिया अचानकपणे बाहेर पडली" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "त्रुटी वाचा" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "लिहिण्यात त्रुटी" @@ -1044,6 +1068,12 @@ msgstr "संचयिका यादीला कुलुप लावण् msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1224,6 +1254,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "पुढिल आवृत्तीची गणती करीत आहे" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "एकूण निर्भरता:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1527,10 +1567,6 @@ 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 @@ -1695,12 +1731,6 @@ msgstr "%s पॅकेज संस्थापित केलेले ना msgid "Note, selecting '%s' instead of '%s'\n" msgstr "लक्षात घ्या,%s ऐवजी %s ची निवड करत आहे \n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1805,6 +1835,12 @@ msgstr "खालील माहिती परिस्थिती निव msgid "Broken packages" msgstr "तुटलेली पॅकेजेस" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "लिहिण्यात त्रुटी" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1819,10 +1855,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"काही आर्काइव्हज आणण्यास असमर्थ, कदाचित apt-get रन करुन अद्ययावत करा किंवा --fix- " +"काही आर्काइव्हज आणण्यास असमर्थ, कदाचित apt रन करुन अद्ययावत करा किंवा --fix- " "बरोबर प्रयत्न कराहरवलेले/गहाळ?" #: apt-private/private-install.cc @@ -1859,6 +1895,12 @@ msgstr "अंतर्गत त्रुटी,क्रम अजून स msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "किती विचित्र...आकार जुळत नाहीत, ईमेल apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1866,6 +1908,11 @@ msgstr "किती विचित्र...आकार जुळत नाह msgid "Need to get %sB/%sB of archives.\n" msgstr "अर्काईव्हजच्या %sB/%sB घेण्याची गरज आहे\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1873,13 +1920,55 @@ msgstr "अर्काईव्हजच्या %sB/%sB घेण्याच 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1897,20 +1986,19 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -#, fuzzy -msgid "Do you want to continue?" -msgstr "तुम्हाला पुढे जायचे आहे [Y/n]? " - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +#, fuzzy +msgid "Do you want to continue?" +msgstr "तुम्हाला पुढे जायचे आहे [Y/n]? " + #: apt-private/private-install.cc msgid "Abort." msgstr "व्यत्यय/बंद करा." @@ -1966,6 +2054,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "अंतर्गत त्रुटी, AutoRemoverने स्टफला तोडले" +#: 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 "" @@ -1985,16 +2080,8 @@ 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 "खालील अतिरिक्त पॅकेजेस संस्थापित होतील:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2004,6 +2091,11 @@ msgstr "सुचवलेली पॅकेजेस:" msgid "Recommended packages:" msgstr "शिफारस केलेली पॅकेजेस:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "खालील अतिरिक्त पॅकेजेस संस्थापित होतील:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2133,10 +2225,32 @@ msgstr "किंवा" msgid "The following packages have unmet dependencies:" msgstr "खालील पॅकेजेस मध्ये नमिळणाऱ्या निर्भरता/ डिपेन्डन्सीज आहेत:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "%s साठी %s डिपेंडन्सी पूर्ण होण्यास असमर्थ: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "खालील नविन पॅकेजेस संस्थापित होतील:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s संस्थापित होत आहे" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "एकूण निर्भरता:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "खालील नविन पॅकेजेस कायमची काढून टाकली जातील:" @@ -2147,6 +2261,16 @@ msgstr "खालील नविन पॅकेजेस कायमची msgid "The following upgrades have been deferred due to phasing:" msgstr "खालील पॅकेजेस परत ठेवली गेली:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "खालील पॅकेजेस परत ठेवली गेली:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "खालील पॅकेजेस परत ठेवली गेली:" @@ -2155,10 +2279,24 @@ msgstr "खालील पॅकेजेस परत ठेवली गे msgid "The following packages will be upgraded:" msgstr "खालील पॅकेजेस पुढिल आवृत्तीकृत होतील:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "खालील पॅकेजेस पुढच्या आवृत्तीकृत होणार नाहीत:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "एकत्रित पॅकेजेस:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "पुढिल ठेवलेली पॅकेजेस बदलतील:" @@ -2176,26 +2314,52 @@ msgstr "" "धोक्याची सूचना:खालील जरूरीची पॅकेजेस कायमची काढून टाकली जातील।\n" "तुम्हाला तुम्ही काय करत आहात हे कळेपर्यंत असं करता येणार नाही!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu पुढे आवृत्तीकृत केले, %lu नव्याने संस्थापित केले," +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s संस्थापित होत आहे" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu पुनर्संस्थापित केले," +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s संस्थापित होत आहे" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu मागील आवृत्तीकृत केले," +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2223,7 +2387,7 @@ msgid "Y" msgstr "होय" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2397,8 +2561,8 @@ msgstr "%s ला बांधणी डिपेंडन्स नाहीत #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2435,6 +2599,11 @@ msgstr "%s ला पुनर्नामांकन %s करण्यास msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2452,12 +2621,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2504,6 +2698,12 @@ msgstr "मिश्रित आभासी पॅकेजेस्:" msgid " Missing: " msgstr " हरवलेले/गहाळ: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "एकूण स्पष्ट आवृत्या: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "एकूण स्पष्ट आवृत्या: " @@ -2829,6 +3029,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "फाईल हॅश करण्यात त्रुटी" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3076,12 +3282,20 @@ msgstr "" msgid "edit the source information file" msgstr "स्थिती माहिती वाचत आहे" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "%s साठी %s डिपेंडन्सी पूर्ण होण्यास असमर्थ: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "चूकीचे मूलभूत निश्चितीकरण!" @@ -3282,7 +3496,7 @@ msgstr "माहित नसलेली/ले संक्षेप पद msgid "Compressed output %s needs a compression set" msgstr "%s संकलित आऊटपुट/निर्गत साठी संक्षेप संचाची गरज" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "उपक्रियेचा आयपीसी वाहिनी तयार करण्यास असमर्थ" @@ -3401,23 +3615,23 @@ msgstr "अर्काईव्ह ला पॅकेज जागा ना #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr "%s ला ओव्हरराईड/दुर्लक्षित जागा नाही\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr "%.*s ला द्वयंक ओव्हरराईड जागा नाही\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3455,7 +3669,7 @@ msgstr "चुकीचा शीर्षक डाटा" msgid "Connection failed" msgstr "जोडणी अयशस्वी" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3497,7 +3711,7 @@ msgstr "%s मधील सीडी-रॉम अनमाऊंट करण msgid "Disk not found." msgstr "डिस्क सापडत नाही" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "फाईल सापडली नाही" @@ -3533,7 +3747,7 @@ msgstr "%s (f=%u t=%u p=%u) साठी सॉकेट तयार करू msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "%s:%s (%s). साठी जोडणी इनिशिएट/पुढाकारीत करू शकत नाही" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "असमर्थ" @@ -3547,9 +3761,7 @@ msgstr "%s:%s (%s) ला जोडू शकत नाही" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "%s ला जोडत आहे" @@ -3587,148 +3799,14 @@ msgstr "स्टॅट करण्यास असमर्थ" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "जारी करण्यास करण्यास असमर्थ" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3749,21 +3827,16 @@ msgstr "अंतर्गत त्रुटी: चांगली सही, #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "सहीची खात्री करण्यासाठी '%s' कार्यान्वित करू शकत नाही (gnupg संस्थापित केले आहे का?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key कार्यान्वित होत असताना अपरिचित त्रुटी" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3800,18 +3873,129 @@ msgstr "चुकले/असमर्थ निवड करा" msgid "Connection timed out" msgstr "जोडणी वेळेअभावी तुटली" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "लॉग इन करत आहे" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "पिअर नाव सांगण्यास/सापडण्यास असमर्थ" + +#~ msgid "Unable to determine the local name" +#~ msgstr "स्थानिक नाव सांगण्यास असमर्थ" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "सर्व्हर ने संबंध जोडण्यास नकार दिला व सांगितले: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "सर्व्हरने %s सांगितले,यूजर असमर्थ:" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "सर्व्हरने %s सांगितले, पास असमर्थ:" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "प्रॉक्सी सर्व्हर निर्देशित केला पण लॉगीन स्क्रिप्ट नाही, प्राप्त केलेले ::ftp:: " +#~ "प्रॉक्सीलॉगीन निरर्थक आहे." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "सर्व्हरने %s सांगितले, '%s' लॉग इन स्क्रिप्ट आज्ञावली असमर्थ:" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "सर्व्हरने %s सांगितले: टाईप असमर्थ:" + +#~ msgid "Connection timeout" +#~ msgstr "वेळेअभावी संबंध जोडता येत नाही" + +#~ msgid "Server closed the connection" +#~ msgstr "सर्व्हरने संबंध जोडणी बंद केली" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "प्रतिसाधाने बफर भरुन गेले." + +#~ msgid "Protocol corruption" +#~ msgstr "प्रोटोकॉल खराब झाले" + +#~ msgid "Could not create a socket" +#~ msgstr "सॉकेट तयार करू शकत नाही" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "डेटा सॉकेट जोडू शकत नाही,जोडणी वेळेअभावी बंद केली" + +#~ msgid "Could not connect passive socket." +#~ msgstr "पॅसिव्ह सॉकेट जोडता येत नाही" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "गेटऍड्रेसइनफो लिसनिंग सॉकेट घेण्यास असमर्थ होते" + +#~ msgid "Could not bind a socket" +#~ msgstr "सॉकेट चिकटवता येत नाही" + +#~ msgid "Could not listen on the socket" +#~ msgstr "सॉकेट वर ऐकता येत नाही" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "सॉकेटचे नाव सांगता येत नाही" + +#~ msgid "Unable to send PORT command" +#~ msgstr "पोर्ट आज्ञा पाठवता येत नाही/पोर्ट आज्ञा पाठविण्यास असमर्थ" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "माहित नसलेला पत्ता फॅमिली %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "ई.पी.आर.टी. चुकले,सर्व्हरने %s सांगितले" + +#~ msgid "Data socket connect timed out" +#~ msgstr "डेटा सॉकेट जोडणी वेळेअभावी तुटली" + +#~ msgid "Unable to accept connection" +#~ msgstr "जोडणी स्विकारण्यास असमर्थ" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "सर्व्हरने %s सांगितले, फाईल मिळवण्यास असमर्थ" + +#~ msgid "Data socket timed out" +#~ msgstr "डेटा सॉकेट वेळेअभावी तुटले" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "सर्व्हरने %s सांगितले, डेटा स्थानांतरण चुकले" + +#~ msgid "Query" +#~ msgstr "प्रश्न" + +#~ msgid "Unable to invoke " +#~ msgstr "जारी करण्यास करण्यास असमर्थ" + +#~ msgid "Connection closed prematurely" +#~ msgstr "जोडणी अकाली बंद झाली" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "पुढिल ठेवलेली पॅकेजेस बदलतील:" + #~ msgid "Yes, do as I say!" #~ msgstr "हो, मी म्ह्टल्याप्रमाणे करा!" diff --git a/po/nb.po b/po/nb.po index ff8278c..5f42ea9 100644 --- a/po/nb.po +++ b/po/nb.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2018-10-30 20:53+0100\n" "Last-Translator: Petter Reinholdtsen \n" "Language-Team: Norwegian Bokmål \n" @@ -62,8 +62,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -132,7 +132,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "En feil oppstod under signaturverifisering. Depotet er ikke oppdatert og den " "forrige indeksfilen vil bli brukt. GPG-feil: %s: %s\n" @@ -140,8 +141,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -196,8 +197,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Konflikt mellom distribusjoner: %s (forventet %s men fant %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Depot «%s» endret sin «%s»-verdi fra «%s» til «%s»." @@ -208,7 +208,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "Depot «%s» endret sin standardprioritet for %s fra %hi til %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -230,6 +230,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Klarte ikke å skaffe %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -250,13 +257,6 @@ msgstr "Klarte ikke finne kilde for å laste ned versjon «%s» av «%s»" msgid "Changelog unavailable for %s=%s" msgstr "Kobler til %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -651,6 +651,30 @@ msgstr "Syntaksfeil %s:%u: clear-direktivet krever et valgtre som argument" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaksfeil %s:%u: Ugyldige angivelser på slutten av fila" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -760,11 +784,11 @@ msgstr "Underprosessen %s ga en feilkode (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Underprosessen %s avsluttet uventet" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Lesefeil" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Skrivefeil" @@ -1083,6 +1107,12 @@ msgstr "Klarte ikke låse den administrative mappen (%s). Er du root?" msgid "Not locked" msgstr "Ikke låst" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1272,6 +1302,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Beregner oppgradering" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Antall avhengighetsforhold: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1573,10 +1613,6 @@ 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 @@ -1741,12 +1777,6 @@ msgstr "Pakken %s er ikke installert, og derfor heller ikke fjernet\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Merk, velger «%s» istedenfor «%s»\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Mest brukte kommandoer:" @@ -1854,6 +1884,12 @@ msgstr "Følgende informasjon kan være til hjelp med å løse problemet:" msgid "Broken packages" msgstr "Ødelagte pakker" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Skrivefeil" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1869,10 +1905,10 @@ msgstr "Valgte %s for fjerning.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Klarte ikke å hente alle arkivene. Du kan prøve med «apt-get update» eller " +"Klarte ikke å hente alle arkivene. Du kan prøve med «apt update» eller " "«--fix-missing»." #: apt-private/private-install.cc @@ -1913,6 +1949,12 @@ msgstr "" "Så rart ... Størrelsene stemmer ikke overens, send en e-post til " "apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB / %sB\n" +msgstr "Nedlasting feilet" + #. 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 @@ -1920,6 +1962,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Må hente %sB/%sB med arkiver.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Download Failed" +msgid " Download size: %sB\n" +msgstr "Nedlasting feilet" + #. 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 @@ -1927,13 +1975,55 @@ msgstr "Må hente %sB/%sB med arkiver.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Lagret merkelapp: %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 @@ -1952,19 +2042,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Vil du fortsette?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Vil du fortsette?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Avbryter." @@ -2023,6 +2112,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Intern feil, autofjerneren (AutoRemover) ødela noe" +#: 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 package was automatically installed and is no longer required:" @@ -2043,15 +2139,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2061,6 +2150,10 @@ msgstr "Foreslåtte pakker:" msgid "Recommended packages:" msgstr "Anbefalte pakker" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2199,10 +2292,32 @@ msgstr " eller" msgid "The following packages have unmet dependencies:" msgstr "Følgende pakker har uinnfridde avhengighetsforhold:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Klarte ikke å tilfredsstille %s avhengighet for %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Installerer %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Antall avhengighetsforhold: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Følgende pakker vil bli FJERNET:" @@ -2213,6 +2328,16 @@ msgstr "Følgende pakker vil bli FJERNET:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Følgende pakker er holdt tilbake:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Følgende pakker er holdt tilbake:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Følgende pakker er holdt tilbake:" @@ -2221,10 +2346,24 @@ msgstr "Følgende pakker er holdt tilbake:" msgid "The following packages will be upgraded:" msgstr "Følgende pakker vil bli oppgradert:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Følgende pakker vil bli NEDGRADERT:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Låste pakker:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Følgende pakker vil bli endret:" @@ -2242,26 +2381,52 @@ 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 +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu oppgraderte, %lu nylig installerte, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Installerer %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu installert på nytt, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Installerer %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu nedgraderte, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2289,7 +2454,7 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2471,11 +2636,11 @@ msgstr "%s har ingen avhengigheter.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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." +"Ingen arkitekturinformasjon tilgjengelig for %s. Se apt.conf(5) " +"APT::Architectures for oppsett." #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2511,6 +2676,11 @@ msgstr "Klarte ikke å endre navnet på %s til %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "'%s'-filen din ble endret, vær så snill å kjør 'apt-get update'.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2528,12 +2698,43 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Se manualsiden apt-secure(8) for detaljer om oppretting av depote og " +"brukeroppsett." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2581,6 +2782,12 @@ msgstr " Sammensatte virtuelle pakker: " msgid " Missing: " msgstr " Mangler: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Antall unike versjoner: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Antall unike versjoner: " @@ -2914,6 +3121,12 @@ msgstr "Slå opp en SRV-oppføring (f.eks. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "slå sammen filer, med automatisk utpakking" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problem ved oppretting av nøkkel for fil" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3163,12 +3376,20 @@ msgstr "oppgrader systemet ved å fjerne/installere/oppgradere pakker" msgid "edit the source information file" msgstr "Leser tilstandsinformasjon" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Klarte ikke å tilfredsstille %s avhengighet for %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Feil standardinnstilling!" @@ -3369,7 +3590,7 @@ msgstr "Ukjent komprimeringsalgoritme «%s»" msgid "Compressed output %s needs a compression set" msgstr "Komprimert utdata %s trenger et komprimeringssett" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Klarte ikke å opprette IPC-rør til underprosessen" @@ -3488,23 +3709,23 @@ 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" +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" +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" +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" +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" @@ -3542,7 +3763,7 @@ msgstr "Ødelagte hodedata" msgid "Connection failed" msgstr "Forbindelsen mislykkes" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3586,7 +3807,7 @@ msgstr "" msgid "Disk not found." msgstr "Disk ikke funnet." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fant ikke fila" @@ -3622,7 +3843,7 @@ msgstr "Klarte ikke å opprette en sokkel for %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Klarte ikke å starte forbindelsen til %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Mislyktes" @@ -3636,9 +3857,7 @@ msgstr "Klarte ikke å koble til %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Klarte ikke å koble til %s:%s (%s), tidsavbrudd på forbindelsen" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Kobler til %s" @@ -3676,148 +3895,14 @@ msgstr "Klarte ikke å få status" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3837,22 +3922,20 @@ msgid "" 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Ukjent feil ved kjøring av apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, fuzzy, c-format @@ -3892,18 +3975,138 @@ msgstr "Utvalget mislykkes" msgid "Connection timed out" msgstr "Tidsavbrudd på forbindelsen" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem ved oppretting av nøkkel for fil" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG-feil: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Logger inn" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Klarte ikke å fastslå navnet på motparten" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Klarte ikke å fastslå det lokale navnet" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Tjeneren nektet oss å kople til og sa: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER mislykkes, tjeneren sa: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS mislykkes, tjeneren sa: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Kommandoen «%s» i innlogginsskriptet mislykkes, tjeneren sa: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE mislykkes, tjeneren sa: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Tidsavbrudd på forbindelsen" + +#~ msgid "Server closed the connection" +#~ msgstr "Tjeneren lukket forbindelsen" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Et svar oversvømte bufferen." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokollødeleggelse" + +#~ msgid "Could not create a socket" +#~ msgstr "Klarte ikke å opprette en sokkel" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Klarte ikke å kople til datasokkelen, tidsavbrudd på forbindelsen" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Klarte ikke å koble til en passiv sokkel." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo klarte ikke å opprette en lyttesokkel" + +#~ msgid "Could not bind a socket" +#~ msgstr "Klarte ikke å binde til sokkel" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Klarte ikke å lytte til sokkel" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Klarte ikke å avgjøre sokkelnavnet" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Klarte ikke å sende PORT-kommandoen" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Ukjent adressefamilie %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT mislykkes, tjeneren sa: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Tidsavbrudd på tilkoblingen til datasokkelen" + +#~ msgid "Unable to accept connection" +#~ msgstr "Klarte ikke å godta tilkoblingen" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Klarte ikke å hente fila, tjeneren sa «%s»" + +#~ msgid "Data socket timed out" +#~ msgstr "Tidsavbrudd på datasokkelen" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Dataoverføringen mislykkes, tjeneren sa «%s»" + +#~ msgid "Query" +#~ msgstr "Spørring" + +#~ msgid "Unable to invoke " +#~ msgstr "Klarte ikke å starte" + +#~ msgid "Connection closed prematurely" +#~ msgstr "Forbindelsen ble uventet stengt" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installert: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Følgende pakker vil bli endret:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ja, gjør som jeg sier!" diff --git a/po/ne.po b/po/ne.po index 52761b5..25572c6 100644 --- a/po/ne.po +++ b/po/ne.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2006-06-12 14:35+0545\n" "Last-Translator: Shiva Pokharel \n" "Language-Team: Nepali \n" @@ -50,8 +50,8 @@ msgstr "डाइरेक्ट्री %s फेरियो " #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -119,13 +119,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -181,8 +182,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -193,7 +193,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -212,6 +212,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s %s तान्न असफल भयो" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -232,13 +239,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "%s (%s) मा जडान गरिदैछ" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -621,6 +621,30 @@ msgstr "वाक्य संरचना त्रुटि %s:%u: निर msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "वाक्य संरचना त्रुटि %s:%u:फाइलको अन्त्यमा अतिरिक्त जंक" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -730,11 +754,11 @@ msgstr "सहायक प्रक्रिया %s ले एउटा त msgid "Sub-process %s exited unexpectedly" msgstr "सहायक प्रक्रिया %s अनपेक्षित बन्द भयो" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "त्रुटि पढ्नुहोस्" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "त्रुटि लेख्नुहोस्" @@ -1042,6 +1066,12 @@ msgstr "सूचि डाइरेक्ट्री ताल्चा मा msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1223,6 +1253,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "स्तर वृद्धि गणना गरिदैछ" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "कूल निर्भरताहरू:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1312,8 +1352,8 @@ msgid "" "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" "द्वन्द/पुन-आधारित लूपको कारणले गर्दा स्थापना चलाउनको लागि अस्थायी रुपमा प्याकेज %s " -"हटाउनु पर्नेछ । यो प्राय नराम्रो हो, तर यदि तपाईँ यो साँच्चै गर्न चाहनुहुन्छ भने, APT::" -"Force-LoopBreak विकल्प सक्रिय गर्नुहोस् ।" +"हटाउनु पर्नेछ । यो प्राय नराम्रो हो, तर यदि तपाईँ यो साँच्चै गर्न चाहनुहुन्छ भने, " +"APT::Force-LoopBreak विकल्प सक्रिय गर्नुहोस् ।" #: apt-pkg/pkgcache.cc msgid "Empty package cache" @@ -1522,10 +1562,6 @@ 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 @@ -1690,12 +1726,6 @@ msgstr "प्याकेज %s स्थापना भएन, त्यस msgid "Note, selecting '%s' instead of '%s'\n" msgstr "द्रष्टब्य, %s को सट्टा %s चयन भइरहेछ\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1801,6 +1831,12 @@ msgstr "निम्न सूचनाले अवस्थालाई हल msgid "Broken packages" msgstr "भाँचिएका प्याकेजहरू" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "त्रुटि लेख्नुहोस्" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1815,10 +1851,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"केही संग्रहहरू तान्न असक्षम भयो,apt-get अद्यावधिक चलिरहेछ वा हराइरहेको --fix-संगै प्रयास " +"केही संग्रहहरू तान्न असक्षम भयो,apt अद्यावधिक चलिरहेछ वा हराइरहेको --fix-संगै प्रयास " "गर्नुहुन्छ ?" #: apt-private/private-install.cc @@ -1855,6 +1891,12 @@ msgstr "आन्तरिक त्रुटि, आदेश समाप् msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "कस्तो नमिलेको.. साइजहरू मेल खाएन, apt@packages.debian.org इमेल गर्नुहोस्" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1862,6 +1904,11 @@ msgstr "कस्तो नमिलेको.. साइजहरू मेल msgid "Need to get %sB/%sB of archives.\n" msgstr "संग्रहहरुको %sB/%sB प्राप्त गर्न आवश्यक ।\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1869,13 +1916,55 @@ msgstr "संग्रहहरुको %sB/%sB प्राप्त गर 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1893,20 +1982,19 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -#, fuzzy -msgid "Do you want to continue?" -msgstr "के तपाईँ निरन्तरता दिन चाहनुहुन्छ [Y/n]? " - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +#, fuzzy +msgid "Do you want to continue?" +msgstr "के तपाईँ निरन्तरता दिन चाहनुहुन्छ [Y/n]? " + #: apt-private/private-install.cc msgid "Abort." msgstr "परित्याग गर्नुहोस् ।" @@ -1960,6 +2048,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "आन्तरिक त्रुटि,समस्या हलकर्ताले उत्तम गुण भाँच्यो " +#: 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 "" @@ -1979,16 +2074,8 @@ 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 "निम्न अतिरिक्त प्याकेजहरू स्थापना हुनेछन्:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1998,6 +2085,11 @@ msgstr "सुझाव दिएका प्याकेजहरू:" msgid "Recommended packages:" msgstr "सिफारिस गरिएका प्याकेजहरू:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "निम्न अतिरिक्त प्याकेजहरू स्थापना हुनेछन्:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2127,10 +2219,31 @@ msgstr "वा" msgid "The following packages have unmet dependencies:" msgstr "निम्न प्याकेजहरुले निर्भरताहरू भेटेनन्:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "%s को लागि %s निर्भरता सन्तुष्ट गर्न असफल: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "निम्न नयाँ प्याकेजहरू स्थापना हुनेछन्:" +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr " %s स्थापना भयो" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "कूल निर्भरताहरू:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "निम्न प्याकेजहरू हटाइनेछन्:" @@ -2141,6 +2254,16 @@ msgstr "निम्न प्याकेजहरू हटाइनेछन msgid "The following upgrades have been deferred due to phasing:" msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "निम्न प्याकेजहरू पछाडि राखिनेछन्:" @@ -2149,10 +2272,24 @@ msgstr "निम्न प्याकेजहरू पछाडि राख msgid "The following packages will be upgraded:" msgstr "निम्न प्याकेजहरू स्तर वृद्धि हुनेछन्:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "निम्न प्याकेजहरू स्तरकम गरिनेछन्:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "पिन गरिएका प्याकेजहरू:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "निम्न भइरहेको प्याकेजहरू परिवर्तन हुनेछैन:" @@ -2170,26 +2307,50 @@ msgstr "" "चेतावनी: निम्न आवश्यक प्याकेजहरू हटाइनेछन् ।\n" "तपाईँ के गरिरहेको यकिन नभएसम्म यो काम गरिने छैन!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu स्तर वृद्धि गरियो, %lu नयाँ स्थापना भयो, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr " %s स्थापना भयो" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu पुन: स्थापना गरियो, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr " %s स्थापना भयो" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu स्तर कम गरियो, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2217,7 +2378,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2391,8 +2552,8 @@ msgstr "%s कुनै निर्माणमा आधारित हुद #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2429,6 +2590,11 @@ msgstr " %s मा %s पुन:नामकरण असफल भयो" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2446,12 +2612,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2498,6 +2689,12 @@ msgstr " मिश्रित अवास्तविक प्याके msgid " Missing: " msgstr " हराइरहेको:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "कूल भिन्न संस्करणहरू:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "कूल भिन्न संस्करणहरू:" @@ -2829,6 +3026,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "समस्या द्रुतान्वेषण फाइल" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3075,12 +3278,20 @@ msgstr "" msgid "edit the source information file" msgstr "उपलब्ध सूचना गाँभिदैछ" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "%s को लागि %s निर्भरता सन्तुष्ट गर्न असफल: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "खराब पूर्वनिर्धारण सेटिङ्ग!" @@ -3281,7 +3492,7 @@ msgstr "अज्ञात सङ्कुचन अल्गोरिद्म msgid "Compressed output %s needs a compression set" msgstr "सङ्कुचन गरिएको निर्गात %s लाई सङ्कुचन सेटको आवश्यक्ता पर्दछ" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "सहायक प्रक्रियामा IPC पाइप सिर्जना गर्न असफल" @@ -3400,23 +3611,23 @@ msgstr "संग्रह संग कुनै प्याकेज फा #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s संग कुनै अधिलेखन प्रविष्टि छैन\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s संग कुनै अधिलेखन प्रविष्टि छैन\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3454,7 +3665,7 @@ msgstr "खराब हेडर डेटा" msgid "Connection failed" msgstr "जडान असफल भयो" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3496,7 +3707,7 @@ msgstr "%s मा सिडी रोम अनमाउन्ट गर्न msgid "Disk not found." msgstr "डिस्क फेला परेन ।" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "फाइल फेला परेन " @@ -3532,7 +3743,7 @@ msgstr "%s (f=%u t=%u p=%u) को लागि सकेट सिर्जन msgid "Cannot initiate the connection to %s:%s (%s)." msgstr " %s:%s (%s) मा जडान सुरुवात गर्न सकेन" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "असफल भयो" @@ -3546,9 +3757,7 @@ msgstr " %s:%s (%s) मा जडान गर्न सकिएन ।" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "%s मा जडान गरिदैछ" @@ -3586,148 +3795,14 @@ msgstr "स्थिर गर्न असफल भयो" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "आह्वान गर्न असक्षम भयो" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3748,20 +3823,15 @@ msgstr "आन्तरिक त्रुटि: असल हस्ताक #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "हस्ताक्षर रूजू गर्न '%s' कार्यन्वयन गर्न सकिएन (के gnupg स्थापना भयो?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key कार्यन्वयन गर्दा अज्ञात त्रुटि" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3798,18 +3868,129 @@ msgstr "असफल चयन गर्नुहोस्" msgid "Connection timed out" msgstr "जडान समय सकियो" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "लगइन भइरहेछ" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "समान नाम निर्धारण गर्न असक्षम भयो" + +#~ msgid "Unable to determine the local name" +#~ msgstr "स्थानिय नाम निर्धारण गर्न असक्षम भयो" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "सर्भरले जडान अस्वीकार गर्यो र भन्यो: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "प्रयोगकर्ता असफल भयो, सर्भरले भन्यो: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "पास असफल भयो, सर्भरले भन्यो: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "प्रोक्सी सर्भर निर्दिष्ट गरियो तर कुनै स्क्रिफ्ट लगइन भएन, " +#~ "Acquire::ftp::ProxyLogin खाली छ ।" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "लगइन स्क्रिफ्ट आदेश '%s' असफल भयो, सर्भरले भन्यो: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "टाइप असफल भयो: %s" + +#~ msgid "Connection timeout" +#~ msgstr "जडान समय सकियो" + +#~ msgid "Server closed the connection" +#~ msgstr "सर्भरले जडान बन्द गर्यो" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "एउटा प्रतिक्रियाले बफर अधिप्रवाह गर्यो" + +#~ msgid "Protocol corruption" +#~ msgstr "प्रोटोकल दूषित" + +#~ msgid "Could not create a socket" +#~ msgstr "एउटा सकेट सिर्जना गर्न सकेन" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "डेटा सकेट जडान गर्न सकिएन, जडान समय सकियो" + +#~ msgid "Could not connect passive socket." +#~ msgstr "निस्क्रिय सकेट जडान गर्न सकिएन" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo सुन्ने सकेट प्राप्त गर्न असक्षम भयो" + +#~ msgid "Could not bind a socket" +#~ msgstr "सकेट बाँध्न सकिएन" + +#~ msgid "Could not listen on the socket" +#~ msgstr "सकेटमा सुन्न सकिएन" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "सकेट नाम निर्धारण गर्न सकिएन" + +#~ msgid "Unable to send PORT command" +#~ msgstr "पोर्ट आदेश पठाउन असक्षम भयो" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "अज्ञात ठेगाना परिवार %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT असफल भयो, सर्भरले भन्यो: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "डेटा सकेटको जडान समय सकियो" + +#~ msgid "Unable to accept connection" +#~ msgstr "जडान स्वीकार गर्न असक्षम भयो" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "फाइल तान्न असक्षम भयो, सर्भरले भन्यो '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "डेटा सकेट समय सकियो" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "डेटा स्थान्तरण असफल भयो, सर्भरले भन्यो '%s'" + +#~ msgid "Query" +#~ msgstr "क्वेरी" + +#~ msgid "Unable to invoke " +#~ msgstr "आह्वान गर्न असक्षम भयो" + +#~ msgid "Connection closed prematurely" +#~ msgstr "जडान असमायिक बन्द भयो" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "निम्न भइरहेको प्याकेजहरू परिवर्तन हुनेछैन:" + #~ msgid "Yes, do as I say!" #~ msgstr "हो,मैले भने जस्तै गर्नुहोस्!" diff --git a/po/nl.po b/po/nl.po index 13f0de8..d18a003 100644 --- a/po/nl.po +++ b/po/nl.po @@ -9,14 +9,14 @@ # Wannes Soenen , 2002. # Frans Pop , 2010. # Jeroen Schot , 2011. -# Frans Spiesschaert , 2014-2024. +# Frans Spiesschaert , 2014-2025. # msgid "" msgstr "" -"Project-Id-Version: apt 2.7.12\n" +"Project-Id-Version: apt 3.0.0\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2024-02-26 20:56+0100\n" +"POT-Creation-Date: 2025-04-04 16:12+0200\n" +"PO-Revision-Date: 2025-04-15 20:26+0200\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" @@ -24,7 +24,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 3.2.2\n" #: apt-pkg/acquire-item.cc msgid "" @@ -134,17 +134,18 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" +"gebruikt. Verificatie OpenPGP handtekening is mislukt: %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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "Verificatie OpenPGP handtekening is mislukt: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -214,8 +215,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Tegenstrijdige distributie: %s (verwachtte %s, maar kreeg %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Bij pakketbron '%s' is de '%s'-waarde gewijzigd van '%s' naar '%s'" @@ -228,7 +228,7 @@ msgstr "" "%hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -252,6 +252,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Ophalen van %s is mislukt %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Pakketbronnen zouden een duidelijk ondertekend InRelease-bestand moeten " +"leveren, maar er is er geen gevonden op %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -272,16 +281,6 @@ msgstr "Kan geen bron vinden om versie '%s' van '%s' op te halen" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Methode '%s' wordt niet ondersteund en is standaard uitgeschakeld. U " -"schakelt best over op http(s). Stel Dir::Bin::Methods::%s in op \"%s\" om " -"deze opnieuw in te schakelen." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -496,7 +495,7 @@ msgstr "Cd-rom wordt aangekoppeld...\n" #: apt-pkg/cdrom.cc msgid "Identifying... " -msgstr "Identificatie..." +msgstr "Identificatie... " #: apt-pkg/cdrom.cc #, c-format @@ -696,6 +695,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntactische fout %s:%u: extra rommel aan het einde van het bestand" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Fout:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Waarschuwing:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Kennisgeving:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Controle:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Debug:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -813,11 +836,11 @@ msgstr "Subproces %s gaf een foutcode terug (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Subproces %s sloot onverwacht af" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Leesfout" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Schrijffout" @@ -1141,6 +1164,14 @@ msgstr "Kan de beheersmap (%s) niet vergrendelen. Heeft u beheerdersrechten?" msgid "Not locked" msgstr "Niet vergrendeld" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"Het voor dpkg in Dir::Bin::dpkg ingestelde uitvoerbare bestand ontbreekt. Er " +"wordt teruggevallen op de standaardinstelling dpkg." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1256,7 +1287,7 @@ msgid "" "error" msgstr "" "Er is geen apport-verslag weggeschreven omdat de foutmelding als oorzaak een " -"volle schijf opgeeft." +"volle schijf opgeeft" #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1264,7 +1295,7 @@ msgid "" "error" msgstr "" "Er is geen apport-verslag weggeschreven omdat de foutmelding als oorzaak " -"onvoldoende-geheugen opgeeft." +"onvoldoende-geheugen opgeeft" #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1272,14 +1303,14 @@ msgid "" "local system" msgstr "" "Er is geen apport-verslag weggeschreven omdat de foutmelding een probleem op " -"het lokale systeem signaleert." +"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." +"dpkg I/O signaleert" #: apt-pkg/depcache.cc msgid "Building dependency tree" @@ -1333,6 +1364,14 @@ msgstr "Instellen op het ontvangen van een oplossing" msgid "External solver failed without a proper error message" msgstr "Externe oplosser faalde zonder passende foutmelding" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Opwaardering wordt doorgerekend" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Vereisten oplossen" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Externe oplosser uitvoeren" @@ -1644,10 +1683,6 @@ 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 @@ -1766,7 +1801,7 @@ msgstr " [Geïnstalleerd]" #: apt-private/private-cacheset.cc msgid " [Not candidate version]" -msgstr "[Niet de kandidaat-versie]" +msgstr " [Niet de kandidaat-versie]" #: apt-private/private-cacheset.cc msgid "You should explicitly select one to install." @@ -1815,12 +1850,6 @@ msgstr "Pakket '%s' is niet geïnstalleerd, en wordt dus niet verwijderd\n" 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Meest gebruikte commando's:" @@ -1934,6 +1963,10 @@ msgstr "De volgende informatie kan misschien helpen de situatie op te lossen:" msgid "Broken packages" msgstr "Niet-werkende pakketten" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "Foutrapport schrijven" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1950,10 +1983,10 @@ msgstr "Raadpleeg %s voor meer informatie." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Kon sommige archieven niet ophalen. Misschien kunt u 'apt-get update' " +"Kon sommige archieven niet ophalen. Misschien kunt u 'apt update' " "uitvoeren of het met '--fix-missing' proberen?" #: apt-private/private-install.cc @@ -1975,7 +2008,7 @@ msgstr "" #: 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-" +"Er werden pakketten gedowngraded en -y was gebruikt zonder --allow-" "downgrades." #: apt-private/private-install.cc @@ -1996,6 +2029,11 @@ msgstr "" "Merkwaardig... De groottes kwamen niet overeen. Gelieve apt@packages.debian." "org te mailen" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Downloadgrootte: %sB / %sB\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 @@ -2003,6 +2041,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Downloadgrootte: %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 @@ -2010,13 +2053,57 @@ msgstr "Er moeten %sB/%sB aan archieven opgehaald worden.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Benodigde ruimte: %sB / %sB beschikbaar\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Meer ruimte nodig dan beschikbaar: %sB > %sB, de installatie kan mislukken" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "in %s: %sB / %sB beschikbaar\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Meer ruimte nodig in %s dan beschikbaar: %sB > %sB, de installatie kan " +"mislukken" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Benodigde ruimte: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Vrijgemaakte ruimte: %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 @@ -2036,18 +2123,17 @@ msgstr "" "Het verwijderen van essentiële voor het systeem kritieke pakketten is niet " "toegestaan. Dit kan het systeem onklaar maken." -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Wilt u doorgaan?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Toch doorgaan?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Doorgaan?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Wilt u doorgaan?" #: apt-private/private-install.cc msgid "Abort." @@ -2107,6 +2193,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Interne fout. AutoRemover heeft dingen stukgemaakt" +#: 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 package was automatically installed and is no longer required:" @@ -2129,15 +2222,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "Resultaat berekend door de 3.0 oplosser." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2147,6 +2233,10 @@ msgstr "Voorgestelde pakketten:" msgid "Recommended packages:" msgstr "Aanbevolen pakketten:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2197,7 +2287,7 @@ msgstr "Bezig met oplijsten" 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[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." @@ -2283,10 +2373,26 @@ msgstr " of" msgid "The following packages have unmet dependencies:" msgstr "De volgende pakketten hebben niet-voldane vereisten:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "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 "Installing:" +msgstr "Installeren:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Installeren van vereisten:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "VERWIJDEREN:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "De volgende pakketten zullen VERWIJDERD worden:" @@ -2295,6 +2401,14 @@ msgstr "De volgende pakketten zullen VERWIJDERD worden:" msgid "The following upgrades have been deferred due to phasing:" msgstr "De volgende opwaarderingen zijn uitgesteld vanwege fasering:" +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Nog niet opgewaardeerd vanwege fasering:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Niet opgewaardeerd:" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "De volgende pakketten zijn achtergehouden:" @@ -2303,9 +2417,21 @@ msgstr "De volgende pakketten zijn achtergehouden:" msgid "The following packages will be upgraded:" msgstr "De volgende pakketten zullen opgewaardeerd worden:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Opwaarderen:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "DOWNGRADEN:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" -msgstr "De volgende pakketten zullen GEDEGRADEERD worden:" +msgstr "De volgende pakketten zullen GEDOWNGRADED worden:" + +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "Veranderen vastgehouden pakketten:" #: apt-private/private-output.cc msgid "The following held packages will be changed:" @@ -2324,26 +2450,50 @@ 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 +msgid "Summary:" +msgstr "Samenvatting:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Opwaarderen: %lu, Installeren: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu opnieuw geïnstalleerd, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Opnieuw installeren: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " -msgstr "%lu gedegradeerd, " +msgstr "%lu gedowngraded, " + +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Downgraden: %lu, " #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Verwijderen: %lu, Niet opwaarderen: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2371,7 +2521,7 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2600,6 +2750,11 @@ msgstr "Verwerken van %s is mislukt. Opnieuw bewerken? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Uw bestand '%s' is gewijzigd. Voer 'apt-get update' uit.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Bronnen van %zu herschrijven?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2619,12 +2774,46 @@ msgstr "" "Het gebruik van %s is te verkiezen boven het rechtstreeks inbedden van login-" "informatie in het %s-element voor '%s'" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" +"De vermelding %s voor '%s' moet worden opgewaardeerd naar deb822 .sources" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "Ontbrekende Signed-By in het item %s voor '%s'" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Overweeg om alle items van sources.list(5) om te zetten naar de indeling " +"deb822 .sources" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"De indeling deb822 .sources ondersteunt zowel ingebouwde als externe OpenPGP-" +"sleutels" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Zie apt-secure(8) voor aanbevolen procedures voor het configureren van de " +"ondertekening van pakketbronnen." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" +"Sommige bronnen kunnen gemoderniseerd worden. Voer 'apt modernize-sources' " +"uit om dit te doen." + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2674,6 +2863,10 @@ msgstr " Gemengde virtuele pakketten: " msgid " Missing: " msgstr " Ontbrekend: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Totaal aantal verschillende bronversies: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Totaal aantal verschillende versies: " @@ -3030,6 +3223,10 @@ msgstr "een SRV-record (bijv. _http._tcp.ftp.debian.org) opzoeken" msgid "concatenate files, with automatic decompression" msgstr "bestanden samenvoegen, met automatische decompressie" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "hash-bestand" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "proxy opzoeken met behulp van apt.conf" @@ -3276,10 +3473,18 @@ msgstr "" msgid "edit the source information file" msgstr "het bestand met informatie over de pakketbronnen bewerken" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr ".list-bestanden moderniseren naar .sources-bestanden" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "voldoen aan vereistentekenreeksen" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Foute standaardinstelling!" @@ -3485,7 +3690,7 @@ msgstr "Onbekend compressie-algoritme '%s'" msgid "Compressed output %s needs a compression set" msgstr "Gecomprimeerde uitvoer %s vereist dat een compressie ingesteld is" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Aanmaken van IPC-pijp naar subproces is mislukt" @@ -3604,23 +3809,23 @@ msgstr "Archief heeft geen 'package'-veld" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s heeft geen voorrangsvermelding\n" +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" +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" +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" +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" @@ -3658,7 +3863,7 @@ msgstr "Foute headerdata" msgid "Connection failed" msgstr "Verbinding mislukt" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3705,7 +3910,7 @@ msgstr "" msgid "Disk not found." msgstr "Schijf niet gevonden." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Bestand niet gevonden" @@ -3740,7 +3945,7 @@ msgstr "Kon de socket voor %s (f=%u t=%u p=%u) niet aanmaken" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Kan de verbinding met %s:%s (%s) niet aangaan." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Mislukt" @@ -3754,9 +3959,7 @@ msgstr "Kon geen verbinding maken met %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Kon geen verbinding maken met %s:%s (%s); de verbinding verliep" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Er wordt verbinding gemaakt met %s" @@ -3794,150 +3997,15 @@ msgstr "Kon status niet bepalen" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "niet-vertrouwd openbaar sleutelalgoritme: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s zal worden uitgefaseerd in een toekomstige release" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3960,33 +4028,20 @@ msgstr "" "niet bepalen?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Kon 'apt-key' niet uitvoeren om ondertekening te verifiëren (is gnupg " +"Kon 'gpgv' 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" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"De sleutel wordt opgeslagen in de uitgefaseerde sleutelbos (%s) in trusted." -"gpg, raadpleeg de afdeling UITFASERING (DEPRECATION) in apt-key(8) voor " -"details." +msgid "Unknown error executing gpgv" +msgstr "Onbekende fout bij het uitvoeren van gpgv" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "" -"De ondertekening door sleutel %s maakt gebruik van een zwak hash-algoritme " -"(%s)" +msgstr "Handtekening met sleutel %s gebruikt een zwak algoritme (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4021,14 +4076,14 @@ msgstr "Selectie is mislukt" msgid "Connection timed out" msgstr "Verbinding verliep" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Probleem bij het frommelen van het bestand" + #: 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" diff --git a/po/nn.po b/po/nn.po index 569cce7..0a898fb 100644 --- a/po/nn.po +++ b/po/nn.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2005-02-14 23:30+0100\n" "Last-Translator: Havard Korsvoll \n" "Language-Team: Norwegian nynorsk \n" @@ -54,8 +54,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -81,7 +81,7 @@ msgstr "Klarte ikkje lesa lenkja %s" #: 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" +msgstr "Klarte ikkje f status til %s" #: apt-pkg/acquire-item.cc #, fuzzy @@ -123,13 +123,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -185,8 +186,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -197,7 +197,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -216,13 +216,20 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Klarte ikkje henta %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%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 " +"Fann ikkje fila for pakken %s. Det kan henda du m fiksa denne pakken sjlv " "(fordi arkitekturen manglar)." #: apt-pkg/acquire-item.cc @@ -236,13 +243,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Koplar til %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -274,8 +274,8 @@ 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" +" %s\n" +"i stasjonen %s og trykk Enter.\n" #: apt-pkg/acquire.cc apt-pkg/cdrom.cc #, fuzzy, c-format @@ -290,7 +290,7 @@ msgstr "Arkivkatalogen %s manglar." #: apt-pkg/acquire.cc #, fuzzy, c-format msgid "Unable to lock directory %s" -msgstr "Klarte ikkje l�sa listekatalogen" +msgstr "Klarte ikkje lsa listekatalogen" #: apt-pkg/acquire.cc #, c-format @@ -307,7 +307,7 @@ 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" +msgstr "Indeksfiltypen %s er ikkje sttta" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. @@ -332,20 +332,20 @@ msgstr "Les filliste" #, 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." +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 " +"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." +"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." @@ -354,7 +354,7 @@ 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�." +"Du vil kanskje prva retta p desse problema ved kyra apt-get update." #: apt-pkg/cachefile.cc methods/mirror.cc msgid "The list of sources could not be read." @@ -416,12 +416,12 @@ msgstr "" #: apt-pkg/cacheset.cc #, c-format msgid "Release '%s' for '%s' was not found" -msgstr "Fann ikkje utg�va �%s� av �%s�" +msgstr "Fann ikkje utgva %s av %s" #: apt-pkg/cacheset.cc #, c-format msgid "Version '%s' for '%s' was not found" -msgstr "Fann ikkje versjonen �%s� av �%s�" +msgstr "Fann ikkje versjonen %s av %s" #: apt-pkg/cdrom.cc msgid "Unmounting CD-ROM...\n" @@ -434,7 +434,7 @@ msgstr "Brukar monteringspunktet %s for CD-ROM\n" #: apt-pkg/cdrom.cc msgid "Waiting for disc...\n" -msgstr "Ventar p� disk ...\n" +msgstr "Ventar p disk ...\n" #: apt-pkg/cdrom.cc msgid "Mounting CD-ROM...\n" @@ -451,7 +451,7 @@ msgstr "Lagra etikett: %s \n" #: apt-pkg/cdrom.cc msgid "Scanning disc for index files...\n" -msgstr "Leitar etter indeksfiler p� disken ...\n" +msgstr "Leitar etter indeksfiler p disken ...\n" #: apt-pkg/cdrom.cc #, fuzzy, c-format @@ -473,7 +473,7 @@ 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" +msgstr "Det er ikkje eit gyldig namn, prv igjen.\n" #: apt-pkg/cdrom.cc #, c-format @@ -482,7 +482,7 @@ msgid "" "'%s'\n" msgstr "" "Disken vert kalla: \n" -"�%s�\n" +"%s\n" #: apt-pkg/cdrom.cc msgid "Copying package lists..." @@ -494,12 +494,12 @@ 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" +msgstr "Kjeldelisteoppfringar for denne disken er:\n" #: apt-pkg/clean.cc #, c-format msgid "Unable to stat %s." -msgstr "Klarte ikkje f� status p� %s." +msgstr "Klarte ikkje f status p %s." #: apt-pkg/contrib/arfile.cc msgid "Invalid archive signature" @@ -524,25 +524,25 @@ msgstr "Klarte ikkje lesa arkivhovuda" #: apt-pkg/contrib/cdromutl.cc #, c-format msgid "Unable to stat the mount point %s" -msgstr "Klarte ikkje f� status til monteringspunktet %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" +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)." +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" +msgstr "Skjnar ikkje kommandolinjevalet %s" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -557,22 +557,22 @@ msgstr "Valet %s krev eit argument." #: apt-pkg/contrib/cmndline.cc #, c-format msgid "Option %s: Configuration item specification must have an =." -msgstr "Val %s: Spesifikasjonen av oppsettselementet m� ha ein =." +msgstr "Val %s: Spesifikasjonen av oppsettselementet m ha ein =." #: 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�" +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" +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�." +msgstr "Skjnar ikkje %s. Prv true eller false." #: apt-pkg/contrib/cmndline.cc #, c-format @@ -582,7 +582,7 @@ msgstr "Ugyldig operasjon %s" #: apt-pkg/contrib/configuration.cc #, c-format msgid "Unrecognized type abbreviation: '%c'" -msgstr "Ukjend typeforkorting: �%c�" +msgstr "Ukjend typeforkorting: %c" #: apt-pkg/contrib/configuration.cc #, c-format @@ -602,33 +602,57 @@ 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" +msgstr "Syntaksfeil %s:%u: Direktiva kan berre liggja i det vste nivet" #: 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" +msgstr "Syntaksfeil %s:%u: For mange nsta inkluderte filer" #: apt-pkg/contrib/configuration.cc #, c-format msgid "Syntax error %s:%u: Included from here" -msgstr "Syntaksfeil %s:%u: Inkludert herifr�" +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" +msgstr "Syntaksfeil %s:%u: Direktivet %s er ikkje sttta" #: 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" +msgstr "Syntaksfeil %s:%u: Direktiva kan berre liggja i det vste nivet" #: 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" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -636,11 +660,11 @@ msgstr "Fann ikkje pakken %s" #: apt-pkg/contrib/extracttar.cc msgid "Corrupted archive" -msgstr "�ydelagt arkiv" +msgstr "ydelagt arkiv" #: apt-pkg/contrib/extracttar.cc msgid "Tar checksum failed, archive corrupted" -msgstr "Tar-sjekksummen mislukkast, arkivet er �ydelagt" +msgstr "Tar-sjekksummen mislukkast, arkivet er ydelagt" #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format @@ -656,23 +680,23 @@ 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" +msgstr "Brukar ikkje lsing for den skrivebeskytta lsefila %s" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not open lock file %s" -msgstr "Klarte ikkje opna l�sefila %s" +msgstr "Klarte ikkje opna lsefila %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" +msgstr "Brukar ikkje lsing for den nfs-monterte lsefila %s" #: apt-pkg/contrib/fileutl.cc #, fuzzy, c-format #| msgid "Could not get lock %s" msgid "Could not get lock %s. It is held by process %d" -msgstr "Klarte ikkje l�sa %s" +msgstr "Klarte ikkje lsa %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -682,7 +706,7 @@ msgstr "" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s" -msgstr "Klarte ikkje l�sa %s" +msgstr "Klarte ikkje lsa %s" #: apt-pkg/contrib/fileutl.cc msgid "" @@ -715,7 +739,7 @@ msgstr "" #: cmdline/apt-dump-solver.cc #, c-format msgid "Waited for %s but it wasn't there" -msgstr "Venta p� %s, men den fanst ikkje" +msgstr "Venta p %s, men den fanst ikkje" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -738,18 +762,18 @@ msgstr "Underprosessen %s returnerte ein feilkode (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Underprosessen %s avslutta uventa" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Lesefeil" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.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" +msgstr "Problem ved lsing av fila" #: apt-pkg/contrib/fileutl.cc msgid "Unexpected end of file" @@ -761,7 +785,7 @@ msgstr "Klarte ikkje oppretta underprosessen IPC" #: apt-pkg/contrib/fileutl.cc msgid "Failed to exec compressor " -msgstr "Klarte ikkje k�yra komprimeringa " +msgstr "Klarte ikkje kyra komprimeringa " #: apt-pkg/contrib/fileutl.cc #, c-format @@ -771,22 +795,22 @@ 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" +msgstr "Klarte ikkje opna ryr 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" +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" +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" +msgstr "Problem ved lsing av fila" #: apt-pkg/contrib/fileutl.cc #, fuzzy, c-format @@ -800,7 +824,7 @@ msgstr "Problem ved synkronisering av fila" #: apt-pkg/contrib/fileutl.cc #, fuzzy, c-format msgid "Unable to mkstemp %s" -msgstr "Klarte ikkje f� status til %s" +msgstr "Klarte ikkje f status til %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -809,7 +833,7 @@ 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" +msgstr "Kan ikkje utfra mmap p ei tom fil" #: apt-pkg/contrib/mmap.cc #, fuzzy, c-format @@ -819,7 +843,7 @@ 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" +msgstr "Klarte ikkje opna ryr for %s" #: apt-pkg/contrib/mmap.cc #, fuzzy @@ -928,7 +952,7 @@ msgstr "Fann ikkje utvalet %s" #: apt-pkg/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" +msgstr "Dette er ikkje eit gyldig DEB-arkiv, manglar %s-medlemmen" #: apt-pkg/deb/debfile.cc #, c-format @@ -943,7 +967,7 @@ msgstr "Kontrollfila kan ikkje tolkast" #, fuzzy, c-format #| msgid "Could not get lock %s" msgid "Could not read meta data from %s" -msgstr "Klarte ikkje l�sa %s" +msgstr "Klarte ikkje lsa %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -1013,7 +1037,7 @@ msgstr "Klarte ikkje tolka pakkefila %s (%d)" #, fuzzy, c-format #| msgid "Waiting for headers" msgid "Waiting for cache lock: %s" -msgstr "Ventar p� hovud" +msgstr "Ventar p hovud" #: apt-pkg/deb/debsystem.cc #, c-format @@ -1024,7 +1048,7 @@ msgstr "" #: apt-pkg/deb/debsystem.cc #, fuzzy, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "Klarte ikkje l�sa listekatalogen" +msgstr "Klarte ikkje lsa listekatalogen" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1044,12 +1068,18 @@ 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" +msgstr "Klarte ikkje lsa listekatalogen" #: apt-pkg/deb/debsystem.cc msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, fuzzy, c-format @@ -1231,6 +1261,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Reknar ut oppgradering" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Tal p krav: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1284,7 +1324,7 @@ msgstr "Feil MD5-sum" #: apt-pkg/init.cc #, c-format msgid "Packaging system '%s' is not supported" -msgstr "Pakkesystemet �%s� er ikkje st�tta" +msgstr "Pakkesystemet %s er ikkje sttta" #: apt-pkg/init.cc msgid "Unable to determine a suitable packaging system type" @@ -1319,10 +1359,10 @@ msgid "" "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�." +"Denne installasjonen vil verta nydd til mellombels fjerna den ndvendige " +"pakken %s p grunn av ei konflikt/forkrav-lkkje. 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" @@ -1330,7 +1370,7 @@ msgstr "Tomt pakkelager" #: apt-pkg/pkgcache.cc msgid "The package cache file is corrupted" -msgstr "Pakkelagerfila er �ydelagd" +msgstr "Pakkelagerfila er ydelagd" #: apt-pkg/pkgcache.cc msgid "The package cache file is an incompatible version" @@ -1339,7 +1379,7 @@ 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�" +msgstr "APT stttar ikkje versjonssystemet %s" #: apt-pkg/pkgcache.cc #, fuzzy, c-format @@ -1349,7 +1389,7 @@ 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" +msgstr "Pakkelagerfila er ydelagd" #: apt-pkg/pkgcache.cc msgid "Depends" @@ -1369,7 +1409,7 @@ msgstr "Konflikt" #: apt-pkg/pkgcache.cc msgid "Recommends" -msgstr "Tilr�dingar" +msgstr "Tilrdingar" #: apt-pkg/pkgcache.cc msgid "Replaces" @@ -1393,7 +1433,7 @@ msgstr "viktig" #: apt-pkg/pkgcache.cc msgid "required" -msgstr "p�kravd" +msgstr "pkravd" #: apt-pkg/pkgcache.cc msgid "standard" @@ -1420,20 +1460,20 @@ 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." +msgstr "Jss, du har overgtt 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." +msgstr "Jss, du har overgtt 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." +msgstr "Jss, du har overgtt 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." +msgstr "Jss, du har overgtt talet p krav som APT kan handtera." #: apt-pkg/pkgcachegen.cc msgid "Reading package lists" @@ -1446,7 +1486,7 @@ 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" +msgstr "Indeksfiltypen %s er ikkje sttta" #: apt-pkg/policy.cc #, c-format @@ -1463,7 +1503,7 @@ 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" +msgstr "Skjnar ikkje spikringstypen %s" #: apt-pkg/policy.cc #, c-format @@ -1494,7 +1534,7 @@ 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" +msgstr "Typen %s er ukjend i linja %u i kjeldelista %s" #: apt-pkg/sourcelist.cc #, fuzzy, c-format @@ -1504,7 +1544,7 @@ 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" +msgstr "Typen %s er ukjend i linja %u i kjeldelista %s" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format @@ -1515,7 +1555,7 @@ msgstr "" #, fuzzy #| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "Du m� leggja nokre kjelde-URI-ar i fila sources.list." +msgstr "Du m leggja nokre kjelde-URI-ar i fila sources.list." #: apt-pkg/tagfile.cc #, c-format @@ -1531,10 +1571,6 @@ 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 @@ -1565,7 +1601,7 @@ 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" +msgstr "Henta %sB p %s (%sB/s)\n" #: apt-private/acqprogress.cc msgid " [Working]" @@ -1579,8 +1615,8 @@ msgid "" "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" +" %s\n" +"i stasjonen %s og trykk Enter.\n" #: apt-private/acqprogress.cc msgid "" @@ -1590,7 +1626,7 @@ msgstr "" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." -msgstr "Rettar p� krav ..." +msgstr "Rettar p krav ..." #: apt-private/private-cachefile.cc msgid " failed." @@ -1598,7 +1634,7 @@ msgstr " mislukkast." #: apt-private/private-cachefile.cc msgid "Unable to correct dependencies" -msgstr "Klarte ikkje retta p� krav" +msgstr "Klarte ikkje retta p krav" #: apt-private/private-cachefile.cc msgid "Unable to minimize the upgrade set" @@ -1611,15 +1647,15 @@ 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�." +"Du vil kanskje prva retta p desse ved kyra 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)." +"Nokre krav er ikkje oppfylte. Du kan prva apt --fix-broken install (eller " +"velja ei lysing)." #: apt-private/private-cacheset.cc apt-private/private-search.cc msgid "Sorting" @@ -1628,17 +1664,17 @@ 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" +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" +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" +msgstr "Merk, vel %s i staden for regex %s\n" #: apt-private/private-cacheset.cc #, c-format @@ -1657,7 +1693,7 @@ msgstr "Kandidatversjonar" #: apt-private/private-cacheset.cc msgid "You should explicitly select one to install." -msgstr "Du m� velja ein som skal installerast." +msgstr "Du m velja ein som skal installerast." #: apt-private/private-cacheset.cc #, c-format @@ -1667,12 +1703,12 @@ msgid "" "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" +"av ein annan pakke. Dette tyder at pakket manglar, er gjort overfldig\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:" +msgstr "Dei flgjande pakkane kan brukast i staden:" #: apt-private/private-cacheset.cc #, fuzzy, c-format @@ -1700,12 +1736,6 @@ msgstr "Pakken %s er ikkje installert, og vert difor ikkje fjerna\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Merk, vel %s i staden for %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1744,7 +1774,7 @@ msgstr "Fann ingen pakkar" #: apt-private/private-download.cc msgid "WARNING: The following packages cannot be authenticated!" -msgstr "�TVARING: Klarer ikkje autentisere desse pakkane." +msgstr "TVARING: Klarer ikkje autentisere desse pakkane." #: apt-private/private-download.cc msgid "Authentication warning overridden.\n" @@ -1763,7 +1793,7 @@ msgstr "Installer desse pakkane utan verifikasjon?" msgid "" "There were unauthenticated packages and -y was used without --allow-" "unauthenticated" -msgstr "Det oppstod problem, og �-y� vart brukt utan �--force-yes�" +msgstr "Det oppstod problem, og -y vart brukt utan --force-yes" #: apt-private/private-download.cc #, fuzzy, c-format @@ -1777,7 +1807,7 @@ 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" +msgstr "Klarte ikkje lsa nedlastingskatalogen" #: apt-private/private-install.cc msgid "" @@ -1787,9 +1817,9 @@ msgid "" "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�." +"valt ein umogleg situasjon. Dersom du brukar den ustabile utgva 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) @@ -1803,11 +1833,17 @@ msgstr "" #. #: 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:" +msgstr "Flgjande informasjon kan hjelpa med lysa situasjonen:" #: apt-private/private-install.cc msgid "Broken packages" -msgstr "�ydelagde pakkar" +msgstr "ydelagde pakkar" + +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Skrivefeil" #: apt-private/private-install.cc msgid "" @@ -1823,11 +1859,11 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Klarte ikkje henta nokre av arkiva. Du kan pr�va med �apt-get update� eller " -"�--fix-missing�." +"Klarte ikkje henta nokre av arkiva. Du kan prva med apt-get update eller " +"--fix-missing." #: apt-private/private-install.cc msgid "Internal error, InstallPackages was called with broken packages!" @@ -1835,19 +1871,19 @@ 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." +msgstr "Nokre pakkar m fjernast, men fjerning er sltt 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�" +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�" +msgstr "Det oppstod problem, og -y vart brukt utan --force-yes" #: apt-private/private-install.cc msgid "" @@ -1864,27 +1900,80 @@ msgstr "Intern feil ved tilleggjing av avleiing" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Installert: " + #. 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" +msgstr "M henta %sB/%sB med arkiv.\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 "M� henta %sB med arkiv.\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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Lagra etikett: %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 @@ -1895,7 +1984,7 @@ 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." +"Trivial Only var spesifisert, men dette er ikkje noka triviell handling." #: apt-private/private-install.cc msgid "" @@ -1903,19 +1992,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Vil du halda fram?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Vil du halda fram?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Avbryt." @@ -1930,7 +2018,7 @@ 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" +msgstr "--fix-missing og byte av medium er ikkje sttta for tida" #: apt-private/private-install.cc msgid "Unable to correct missing packages." @@ -1967,7 +2055,14 @@ msgstr "" #: apt-private/private-install.cc #, fuzzy msgid "Internal Error, AutoRemover broke stuff" -msgstr "Intern feil. AllUpgrade �ydelagde noko" +msgstr "Intern feil. AllUpgrade ydelagde noko" + +#: 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 @@ -1976,61 +2071,58 @@ msgid "" 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:" +msgstr[0] "Dei flgjande NYE pakkane vil verta installerte:" +msgstr[1] "Dei flgjande 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:" +msgstr[0] "Dei flgjande NYE pakkane vil verta installerte:" +msgstr[1] "Dei flgjande 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" -msgstr "F�resl�tte pakkar:" +msgstr "Fresltte pakkar:" #: apt-private/private-install.cc msgid "Recommended packages:" -msgstr "Tilr�dde pakkar" +msgstr "Tilrdde pakkar" + +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "Dei flgjande tilleggspakkane vil verta installerte:" #: 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 " +"Hoppar over %s, for den er installert fr fr 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 " +"Hoppar over %s, for den er installert fr fr 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" +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" +msgstr "Den nyaste versjonen av %s er installert fr fr.\n" #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc #, fuzzy, c-format @@ -2118,7 +2210,7 @@ msgstr "men %s skal installerast" #: apt-private/private-output.cc msgid "but it is not installable" -msgstr "men l�t seg ikkje installera" +msgstr "men lt seg ikkje installera" #: apt-private/private-output.cc msgid "but it is a virtual package" @@ -2138,37 +2230,82 @@ msgstr " eller" #: apt-private/private-output.cc msgid "The following packages have unmet dependencies:" -msgstr "F�lgjande pakkar har krav som ikkje er oppfylte:" +msgstr "Flgjande pakkar har krav som ikkje er oppfylte:" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Klarte ikkje oppfylla kravet %s for %s: %s" #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" -msgstr "Dei f�lgjande NYE pakkane vil verta installerte:" +msgstr "Dei flgjande NYE pakkane vil verta installerte:" + +#: apt-private/private-output.cc +#, fuzzy +msgid "Installing:" +msgstr " Installert: " + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Tal p krav: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" -msgstr "Dei f�lgjande pakkane vil verta FJERNA:" +msgstr "Dei flgjande pakkane vil verta FJERNA:" #: apt-private/private-output.cc #, fuzzy #| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Dei f�lgjande pakkane er haldne tilbake:" +msgstr "Dei flgjande pakkane er haldne tilbake:" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Dei flgjande pakkane er haldne tilbake:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" #: apt-private/private-output.cc msgid "The following packages have been kept back:" -msgstr "Dei f�lgjande pakkane er haldne tilbake:" +msgstr "Dei flgjande pakkane er haldne tilbake:" #: apt-private/private-output.cc msgid "The following packages will be upgraded:" -msgstr "Dei f�lgjande pakkane vil verta oppgraderte:" +msgstr "Dei flgjande pakkane vil verta oppgraderte:" + +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" -msgstr "Dei f�lgjande pakkane vil verta NEDGRADERTE:" +msgstr "Dei flgjande pakkane vil verta NEDGRADERTE:" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Spikra pakkar:" #: 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:" +msgstr "Dei flgjande pakkane som er haldne tilbake vil verta endra:" #: apt-private/private-output.cc #, c-format @@ -2181,29 +2318,53 @@ 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!" +"TVARING: Dei flgjande ndvendige pakkane vil verta fjerna.\n" +"Dette br IKKJE gjerast utan at du er fullstendig klar over kva du gjer!" + +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu oppgraderte, %lu nyleg installerte, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr " Installert: " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " -msgstr "%lu installerte p� nytt, " +msgstr "%lu installerte p nytt, " + +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr " Installert: " #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu nedgraderte, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2231,14 +2392,14 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.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" +msgstr "Du m oppgi nyaktig eitt mnster" #: apt-private/private-search.cc msgid "Full Text Search" @@ -2314,7 +2475,7 @@ 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" +msgstr "Klarte ikkje f status p kjeldepakkelista %s" #: apt-private/private-source.cc #, c-format @@ -2323,7 +2484,7 @@ 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" +msgstr "Du m velja minst in pakke som kjeldekoden skal hentast for" #: apt-private/private-source.cc #, c-format @@ -2348,21 +2509,21 @@ 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" +msgstr "Hoppar over utpakking av kjeldekode som er utpakka fr fr 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" +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" +msgstr "M henta %sB med kjeldekodearkiv.\n" #: apt-private/private-source.cc #, c-format @@ -2376,12 +2537,12 @@ 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" +msgstr "Hoppar over utpakking av kjeldekode som er utpakka fr fr i %s\n" #: apt-private/private-source.cc #, c-format msgid "Unpack command '%s' failed.\n" -msgstr "Utpakkingskommandoen �%s� mislukkast.\n" +msgstr "Utpakkingskommandoen %s mislukkast.\n" #: apt-private/private-source.cc msgid "Check if the 'dpkg-dev' package is installed.\n" @@ -2390,7 +2551,7 @@ msgstr "" #: apt-private/private-source.cc #, c-format msgid "Build command '%s' failed.\n" -msgstr "Byggjekommandoen �%s� mislukkast.\n" +msgstr "Byggjekommandoen %s mislukkast.\n" #: apt-private/private-source.cc #, c-format @@ -2405,13 +2566,13 @@ msgstr "%s har ingen byggjekrav.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: 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" +msgstr "Du m velja minst ein pakke som byggjekrava skal sjekkast for" #: apt-private/private-source.cc #, c-format @@ -2436,13 +2597,18 @@ 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" +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'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2460,12 +2626,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2485,12 +2676,12 @@ msgstr "Oppdateringskommandoen tek ingen argument" #: cmdline/apt-cache.cc msgid "Total package names: " -msgstr "Tal p� pakkenamn: " +msgstr "Tal p pakkenamn: " #: cmdline/apt-cache.cc #, fuzzy msgid "Total package structures: " -msgstr "Tal p� pakkenamn: " +msgstr "Tal p pakkenamn: " #: cmdline/apt-cache.cc msgid " Normal packages: " @@ -2512,35 +2703,41 @@ msgstr " Samansette virtuelle pakkar: " msgid " Missing: " msgstr " Manglar: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Tal p einskildversjonar: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " -msgstr "Tal p� einskildversjonar: " +msgstr "Tal p einskildversjonar: " #: cmdline/apt-cache.cc #, fuzzy msgid "Total distinct descriptions: " -msgstr "Tal p� einskildversjonar: " +msgstr "Tal p einskildversjonar: " #: cmdline/apt-cache.cc msgid "Total dependencies: " -msgstr "Tal p� krav: " +msgstr "Tal p krav: " #: cmdline/apt-cache.cc msgid "Total ver/file relations: " -msgstr "Tal p� ver./fil-forhold: " +msgstr "Tal p ver./fil-forhold: " #: cmdline/apt-cache.cc #, fuzzy msgid "Total Desc/File relations: " -msgstr "Tal p� ver./fil-forhold: " +msgstr "Tal p ver./fil-forhold: " #: cmdline/apt-cache.cc msgid "Total Provides mappings: " -msgstr "Tal p� tilbyr-forhold: " +msgstr "Tal p tilbyr-forhold: " #: cmdline/apt-cache.cc msgid "Total globbed strings: " -msgstr "Tal p� strengar med jokerteikn: " +msgstr "Tal p strengar med jokerteikn: " #: cmdline/apt-cache.cc msgid "Total slack space: " @@ -2573,11 +2770,11 @@ 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." +msgstr "Sk gjennom pakkelista etter eit regulrt uttrykk." #: cmdline/apt-cache.cc msgid "Show raw dependency information for a package" -msgstr "Vis r� informasjon om krava til ein pakke." +msgstr "Vis r informasjon om krava til ein pakke." #: cmdline/apt-cache.cc msgid "Show reverse dependency information for a package" @@ -2604,13 +2801,13 @@ msgstr "" 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" +" %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" +msgstr "Klarte ikkje endra namnet p %s til %s" #: cmdline/apt-cdrom.cc msgid "" @@ -2647,7 +2844,7 @@ msgid "" msgstr "" "Bruk: apt-config [val] kommando\n" "\n" -"apt-config er eit enkelt verkt�y for � lesa oppsettsfila til APT.\n" +"apt-config er eit enkelt verkty for lesa oppsettsfila til APT.\n" #: cmdline/apt-config.cc msgid "get configuration values via shell evaluation" @@ -2676,14 +2873,14 @@ msgid "" 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" +"apt-extracttemplates er eit verkty 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" +" -o=? Set ei vilkrleg innstilling, t.d. -o dir::cache=/tmp.\n" #: cmdline/apt-extracttemplates.cc msgid "Cannot get debconf version. Is debconf installed?" @@ -2708,11 +2905,11 @@ msgstr "" #: cmdline/apt-get.cc #, fuzzy msgid "Internal error, problem resolver broke stuff" -msgstr "Intern feil. AllUpgrade �ydelagde noko" +msgstr "Intern feil. AllUpgrade ydelagde noko" #: cmdline/apt-get.cc msgid "Supported modules:" -msgstr "St�tta modular:" +msgstr "Sttta modular:" #: cmdline/apt-get.cc #, fuzzy @@ -2730,9 +2927,9 @@ msgstr "" " 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" +"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" @@ -2740,7 +2937,7 @@ msgstr "Hent nye pakkelister." #: cmdline/apt-get.cc msgid "Perform an upgrade" -msgstr "Utf�r ei oppgradering." +msgstr "Utfr ei oppgradering." #: cmdline/apt-get.cc msgid "Install new packages (pkg is libc6 not libc6.deb)" @@ -2771,7 +2968,7 @@ msgstr "Oppgrader distribusjonen, les apt-get(8)." #: cmdline/apt-get.cc msgid "Follow dselect selections" -msgstr "F�lg r�da fr� �dselect�." +msgstr "Flg rda fr dselect." #: cmdline/apt-get.cc msgid "Configure build-dependencies for source packages" @@ -2797,7 +2994,7 @@ 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." +msgstr "Last ned kjeldekode fr arkiva." #: cmdline/apt-get.cc msgid "Download the binary package into the current directory" @@ -2814,7 +3011,7 @@ 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" +msgstr "Du m velja minst in pakke som kjeldekoden skal hentast for" #: cmdline/apt-helper.cc msgid "Download Failed" @@ -2847,6 +3044,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problem ved oppretting av nkkel for fil" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -2874,14 +3077,14 @@ msgid "" 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" +"apt-extracttemplates er eit verkty 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" +" -o=? Set ei vilkrleg innstilling, t.d. -o dir::cache=/tmp.\n" #: cmdline/apt-internal-solver.cc #, fuzzy @@ -2894,14 +3097,14 @@ msgid "" 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" +"apt-extracttemplates er eit verkty 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" +" -o=? Set ei vilkrleg innstilling, t.d. -o dir::cache=/tmp.\n" #: cmdline/apt-mark.cc #, fuzzy, c-format @@ -2926,17 +3129,17 @@ msgstr "" #, fuzzy #| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Dei f�lgjande NYE pakkane vil verta installerte:" +msgstr "Dei flgjande NYE pakkane vil verta installerte:" #: 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" +msgstr "Den nyaste versjonen av %s er installert fr fr.\n" #: cmdline/apt-mark.cc #, fuzzy, c-format msgid "%s was already not on hold.\n" -msgstr "Den nyaste versjonen av %s er installert fr� f�r.\n" +msgstr "Den nyaste versjonen av %s er installert fr fr.\n" #: cmdline/apt-mark.cc msgid "Executing dpkg failed. Are you root?" @@ -2985,7 +3188,7 @@ 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:" +msgstr "Dei flgjande NYE pakkane vil verta installerte:" #: cmdline/apt-mark.cc #, fuzzy @@ -3066,7 +3269,7 @@ msgstr "Spikra pakkar:" #: cmdline/apt.cc #, fuzzy msgid "remove packages" -msgstr "�ydelagde pakkar" +msgstr "ydelagde pakkar" #: cmdline/apt.cc #, fuzzy @@ -3093,20 +3296,28 @@ msgstr "" msgid "edit the source information file" msgstr "Flettar informasjon om tilgjengelege pakkar" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Klarte ikkje oppfylla kravet %s for %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" -msgstr "D�rleg standardinnstilling" +msgstr "Drleg standardinnstilling" #: dselect/install dselect/update #, fuzzy msgid "Press [Enter] to continue." -msgstr "Trykk Enter for � halda fram." +msgstr "Trykk Enter for halda fram." #: dselect/install msgid "Do you want to erase any previously downloaded .deb files?" @@ -3120,7 +3331,7 @@ 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" +msgstr "sette opp. Dette kan fra til flgjefeil eller feil p grunn av" #: dselect/install msgid "or errors caused by missing dependencies. This is OK, only the errors" @@ -3129,7 +3340,7 @@ 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." +msgstr "er viktige. Rett opp dei feila og [i]nstaller p nytt." #: dselect/update msgid "Merging available information" @@ -3200,29 +3411,29 @@ msgid "" " -o=? Set an arbitrary configuration option" msgstr "" "Bruk: apt-ftparchive [val] kommando\n" -"Kommandoar: packages bin�rstig [overstyringsfil [stigprefiks]]\n" +"Kommandoar: packages binrstig [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" +"mtar 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" +"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-nkkel 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" +"apt-ftparchive kan p same mten 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" +"Kommandoane packages og sources skal kyrast i rota av katalogtreet.\n" +"Binrstien skal peika til toppkatalogen i det rekursive sket, 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" +"eit dme p bruk i Debian-arkivet:\n" " apt-ftparchive packages dists/potato/main/binary-i386/ > \\\n" " dists/potato/main/binary-i386/Packages\n" "\n" @@ -3235,7 +3446,7 @@ msgstr "" " --no-delink Bruk avlusingsmodus med delinking.\n" " --contents Styrer opprettinga av innhaldsfila.\n" " -c=? Les denne oppsettsfila.\n" -" -o=? Set ei vilk�rleg innstilling." +" -o=? Set ei vilkrleg innstilling." #: ftparchive/apt-ftparchive.cc msgid "No selections matched" @@ -3249,12 +3460,12 @@ 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" +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" +msgstr "DB er for gammal, forskjer oppgradere %s" #: ftparchive/cachedb.cc msgid "" @@ -3278,7 +3489,7 @@ msgstr "Arkivet har ingen kontrollpost" #: ftparchive/cachedb.cc msgid "Unable to get a cursor" -msgstr "Klarte ikkje f� peikar" +msgstr "Klarte ikkje f peikar" #: ftparchive/contents.cc msgid "realloc - Failed to allocate memory" @@ -3294,9 +3505,9 @@ msgstr "Ukjend komprimeringsalgoritme %s" msgid "Compressed output %s needs a compression set" msgstr "Komprimert utdata %s treng eit komprimeringssett" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" -msgstr "Klarte ikkje oppretta IPC-r�yr til underprosessen" +msgstr "Klarte ikkje oppretta IPC-ryr til underprosessen" #: ftparchive/multicompress.cc msgid "Failed to fork" @@ -3322,7 +3533,7 @@ msgstr "Klarte ikkje lesa under utrekning av MD5" #: ftparchive/multicompress.cc #, c-format msgid "Failed to rename %s to %s" -msgstr "Klarte ikkje endra namnet p� %s til %s" +msgstr "Klarte ikkje endra namnet p %s til %s" #: ftparchive/override.cc #, c-format @@ -3359,12 +3570,12 @@ 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" +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" +msgstr ": Klarte ikkje f status til %s\n" #: ftparchive/writer.cc msgid "E: " @@ -3372,7 +3583,7 @@ msgstr "F: " #: ftparchive/writer.cc msgid "W: " -msgstr "�: " +msgstr ": " #: ftparchive/writer.cc msgid "E: Errors apply to file " @@ -3381,7 +3592,7 @@ msgstr "F: Det er feil ved fila " #: ftparchive/writer.cc #, c-format msgid "Failed to resolve %s" -msgstr "Klarte ikkje sl� opp %s" +msgstr "Klarte ikkje sl opp %s" #: ftparchive/writer.cc msgid "Tree walking failed" @@ -3405,7 +3616,7 @@ 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" +msgstr " DeLink-grensa p %sB er ndd.\n" #: ftparchive/writer.cc msgid "Archive had no package field" @@ -3413,27 +3624,27 @@ 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" +msgid " %.*s has no override entry\n" +msgstr " %.*s har inga overstyringsoppfring\n" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" -msgstr " %s-vedlikehaldaren er %s, ikkje %s\n" +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" +msgid " %.*s has no source override entry\n" +msgstr " %.*s har inga overstyringsoppfring\n" #: ftparchive/writer.cc #, fuzzy, c-format -msgid " %s has no binary override entry either\n" -msgstr " %s har inga overstyringsoppf�ring\n" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s har inga overstyringsoppfring\n" #: methods/basehttp.cc msgid "Waiting for headers" -msgstr "Ventar p� hovud" +msgstr "Ventar p hovud" #: methods/basehttp.cc msgid "The HTTP server sent an invalid reply header" @@ -3441,19 +3652,19 @@ msgstr "HTTP-tenaren sende eit ugyldig svarhovud" #: methods/basehttp.cc msgid "Bad header line" -msgstr "�ydelagd hovudlinje" +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" +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" +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" +msgstr "Denne HTTP-tenaren har ydelagd sttte for omrde" #: methods/basehttp.cc msgid "Unknown date format" @@ -3461,13 +3672,13 @@ msgstr "Ukjend datoformat" #: methods/basehttp.cc msgid "Bad header data" -msgstr "�ydelagde hovuddata" +msgstr "ydelagde hovuddata" #: methods/basehttp.cc msgid "Connection failed" msgstr "Sambandet mislukkast" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3493,8 +3704,8 @@ 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." +"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" @@ -3511,7 +3722,7 @@ msgstr "" msgid "Disk not found." msgstr "Fann ikkje fila" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fann ikkje fila" @@ -3547,7 +3758,7 @@ msgstr "Klarte ikkje oppretta sokkel for %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Klarte ikkje initiera sambandet til %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Mislukkast" @@ -3559,11 +3770,9 @@ msgstr "Klarte ikkje kopla 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" +msgstr "Klarte ikkje kopla til %s:%s (%s), tidsavbrot p sambandet" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Koplar til %s" @@ -3571,22 +3780,22 @@ msgstr "Koplar til %s" #: methods/connect.cc #, c-format msgid "Could not resolve '%s'" -msgstr "Klarte ikkje sl� opp �%s�" +msgstr "Klarte ikkje sl opp %s" #: methods/connect.cc #, c-format msgid "Temporary failure resolving '%s'" -msgstr "Mellombels feil ved oppslag av �%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)" +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)" +msgstr "Det hende noko dumt ved oppslag av %s:%s (%i)" #: methods/connect.cc #, fuzzy, c-format @@ -3595,154 +3804,20 @@ msgstr "Klarte ikkje kopla til %s %s:" #: methods/copy.cc msgid "Failed to stat" -msgstr "Klarte ikkje f� status" +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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3762,18 +3837,11 @@ msgid "" 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" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" #: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." +msgid "Unknown error executing gpgv" msgstr "" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. @@ -3785,7 +3853,7 @@ msgstr "" #: methods/gpgv.cc #, fuzzy msgid "The following signatures were invalid:\n" -msgstr "Dei f�lgjande tilleggspakkane vil verta installerte:" +msgstr "Dei flgjande tilleggspakkane vil verta installerte:" #: methods/gpgv.cc msgid "" @@ -3795,11 +3863,11 @@ msgstr "" #: methods/http.cc msgid "Error reading from server. Remote end closed connection" -msgstr "Feil ved lesing fr� tenaren. Sambandet vart lukka i andre enden" +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" +msgstr "Feil ved lesing fr tenaren" #: methods/http.cc msgid "Error writing to file" @@ -3811,20 +3879,131 @@ msgstr "Utvalet mislukkast" #: methods/http.cc msgid "Connection timed out" -msgstr "Tidsavbrot p� sambandet" +msgstr "Tidsavbrot p sambandet" + +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem ved oppretting av nkkel for fil" #: 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 "Logging in" +#~ msgstr "Loggar inn" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Klarte ikkje avgjera namnet p motparten" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Klarte ikkje avgjera det lokale namnet" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Tenaren nekta oss kopla til, og sa: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER mislukkast, tenaren sa: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS mislukkast, tenaren sa: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Kommandoen %s i innlogginsskriptet mislukkast, tenaren sa: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE mislukkast, tenaren sa: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Tidsavbrot p samband" + +#~ msgid "Server closed the connection" +#~ msgstr "Tenaren lukka sambandet" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Eit svar flaumde over bufferen." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokollydeleggjing" + +#~ msgid "Could not create a socket" +#~ msgstr "Klarte ikkje oppretta sokkel" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Klarte ikkje kopla til datasokkel, tidsavbrot p sambandet" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Klarte ikkje kopla til passiv sokkel." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo klarte ikkje oppretta ein lyttesokkel" + +#~ msgid "Could not bind a socket" +#~ msgstr "Klarte ikkje binda til sokkel" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Klarte ikkje lytta til sokkel" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Klarte ikkje avgjera sokkelnamnet" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Klarte ikkje senda PORT-kommandoen" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Ukjend adressefamilie %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT mislukkast, tenaren sa: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Tidsavbrot p tilkopling til datasokkel" + +#~ msgid "Unable to accept connection" +#~ msgstr "Klarte ikkje godta tilkoplinga" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Klarte ikkje henta fila, tenaren sa %s" + +#~ msgid "Data socket timed out" +#~ msgstr "Tidsavbrot p datasokkelen" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Dataoverfringa mislukkast, tenaren sa %s" + +#~ msgid "Query" +#~ msgstr "Sprjing" + +#~ msgid "Unable to invoke " +#~ msgstr "Klarte ikkje starta " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Sambandet vart uventa stengd" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Dei flgjande pakkane som er haldne tilbake vil verta endra:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ja, gjer som eg seier!" @@ -3834,8 +4013,8 @@ msgstr "" #~ "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" +#~ "Du er i ferd med utfra ei handling som kan vera skadeleg.\n" +#~ "For halda fram, m du skriva nyaktig %s.\n" #~ " ?] " #, c-format @@ -3856,13 +4035,13 @@ msgstr "" #~ msgstr "Stigen %s er for lang" #~ msgid "Unpacking %s more than once" -#~ msgstr "Pakkar ut %s meir enn �in gong" +#~ msgstr "Pakkar ut %s meir enn in gong" #~ msgid "The directory %s is diverted" #~ msgstr "Katalogen %s er avleidd" #~ msgid "The package is trying to write to the diversion target %s/%s" -#~ msgstr "Pakken pr�ver � skriva til avleiingsm�let %s/%s" +#~ msgstr "Pakken prver skriva til avleiingsmlet %s/%s" #~ msgid "The diversion path is too long" #~ msgstr "Avleiingsstigen er for lang" @@ -3871,7 +4050,7 @@ msgstr "" #~ msgstr "Katalogen %s vert bytt ut med ein ikkje-katalog" #~ msgid "Failed to locate node in its hash bucket" -#~ msgstr "Fann ikkje noden i n�kkelb�tta" +#~ msgstr "Fann ikkje noden i nkkelbtta" #~ msgid "The path is too long" #~ msgstr "Stigen er for lang" @@ -3883,13 +4062,13 @@ msgstr "" #~ msgstr "Fila %s/%s skriv over den tilsvarande fila i pakken %s" #~ msgid "Unable to stat %s" -#~ msgstr "Klarte ikkje f� status til %s" +#~ msgstr "Klarte ikkje f status til %s" #~ msgid "DropNode called on still linked node" -#~ msgstr "DropNode vart kalla p� ein node som framleis er lenkja" +#~ msgstr "DropNode vart kalla p ein node som framleis er lenkja" #~ msgid "Failed to locate the hash element!" -#~ msgstr "Fann ikkje n�kkelelementet." +#~ msgstr "Fann ikkje nkkelelementet." #~ msgid "Failed to allocate diversion" #~ msgstr "Klarte ikkje tildela avleiing" @@ -3898,7 +4077,7 @@ msgstr "" #~ msgstr "Intern feil i AddDiversion" #~ msgid "Trying to overwrite a diversion, %s -> %s and %s/%s" -#~ msgstr "Pr�ver � skriva over ei avleiing, %s -> %s og %s/%s" +#~ msgstr "Prver skriva over ei avleiing, %s -> %s og %s/%s" #~ msgid "Double add of diversion %s -> %s" #~ msgstr "Dobbel tilleggjing av avleiing %s -> %s" @@ -3911,7 +4090,7 @@ msgstr "" #, fuzzy #~ msgid "Removed %s" -#~ msgstr "Tilr�dingar" +#~ msgstr "Tilrdingar" #~ msgid "Package file %s is out of sync." #~ msgstr "Pakkefila %s er ute av takt." @@ -3919,7 +4098,7 @@ msgstr "" #~ msgid "" #~ "The package index files are corrupted. No Filename: field for package %s." #~ msgstr "" -#~ "Pakkeindeksfilene er �ydelagde. Feltet �Filename:� manglar for pakken %s." +#~ "Pakkeindeksfilene er ydelagde. Feltet Filename: manglar for pakken %s." #, fuzzy #~ msgid "Can not read mirror file '%s'" @@ -3936,12 +4115,12 @@ msgstr "" #~ msgstr "Opnar %s" #~ msgid "Unmet dependencies. Try using --fix-broken." -#~ msgstr "Nokre krav er ikkje oppfylte. Pr�v med �--fix-broken�." +#~ msgstr "Nokre krav er ikkje oppfylte. Prv 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�." +#~ "Du vil kanskje prva retta p desse ved kyra apt --fix-broken " +#~ "install." #~ msgid "(not found)" #~ msgstr "(ikkje funne)" @@ -4003,8 +4182,8 @@ 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" +#~ "apt-cache er eit lgnivverkty som vert brukt til handtera\n" +#~ "binrmellomlageret til APT, og til henta informasjon fr det.\n" #~ msgid "" #~ "Options:\n" @@ -4021,11 +4200,11 @@ msgstr "" #~ " -h Vis denne hjelpeteksten.\n" #~ " -p=? Pakkelageret.\n" #~ " -s=? Kjeldekodelageret.\n" -#~ " -q Ikkje vis framdriftsm�laren.\n" +#~ " -q Ikkje vis framdriftsmlaren.\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" +#~ " -o=? Set ei vilkrleg 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" @@ -4036,7 +4215,7 @@ 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" +#~ " -o=? Set ei vilkrleg innstilling, t.d. -o dir::cache=/tmp.\n" #~ msgid "" #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n" @@ -4053,32 +4232,32 @@ msgstr "" #~ msgstr "" #~ "Bruk: apt-sortpkgs [val] fil1 [fil2 ...]\n" #~ "\n" -#~ "apt-sortpkgs er eit enkelt verkt�y for � sortera pakkefiler. " +#~ "apt-sortpkgs er eit enkelt verkty for sortera pakkefiler. " #~ "Innstillinga\n" -#~ "-s vert brukt til � velja kva for ein type fil det er snakk om.\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" +#~ " -o=? Set ei vilkrleg 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" +#~ msgstr "Du m velja minst in pakke som kjeldekoden skal hentast for" #~ msgid "Failed to create pipes" -#~ msgstr "Klarte ikkje oppretta r�yr" +#~ msgstr "Klarte ikkje oppretta ryr" #~ msgid "Failed to exec gzip " -#~ msgstr "Klarte ikkje k�yra gzip " +#~ msgstr "Klarte ikkje kyra gzip " #, fuzzy #~ msgid "%s %s for %s compiled on %s %s\n" -#~ msgstr "%s %s for %s %s kompilert p� %s %s\n" +#~ msgstr "%s %s for %s %s kompilert p %s %s\n" #~ msgid "Failed to create FILE*" #~ msgstr "Klarte ikkje oppretta FILE*" @@ -4126,7 +4305,7 @@ msgstr "" #~ 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" +#~ msgstr "Klarte ikkje f status p kjeldepakkelista %s" #~ msgid "Collecting File Provides" #~ msgstr "Samlar inn filtilbod" @@ -4139,7 +4318,7 @@ msgstr "" #~ msgstr "Utgjevarblokka %s inneheld ingen fingeravtrykk" #~ msgid "Total dependency version space: " -#~ msgstr "Storleik p� kravs- og versjonsrom: " +#~ 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" @@ -4153,7 +4332,7 @@ msgstr "" #, fuzzy #~ msgid "Internal error, Upgrade broke stuff" -#~ msgstr "Intern feil. AllUpgrade �ydelagde noko" +#~ msgstr "Intern feil. AllUpgrade ydelagde noko" #~ msgid "%s not a valid DEB package." #~ msgstr "%s er ingen gyldig DEB-pakke." @@ -4168,7 +4347,7 @@ msgstr "" #, 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" +#~ "Dette er ikkje eit gyldig DEB-arkiv, det har ingen %s eller %s-medlem" #~ msgid "MD5Sum mismatch" #~ msgstr "Feil MD5-sum" @@ -4177,8 +4356,8 @@ msgstr "" #~ "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." +#~ "Fann ikkje fila for pakken %s. Det kan henda du m fiksa denne pakken " +#~ "sjlv." #, fuzzy #~ msgid "Skipping nonexistent file %s" @@ -4191,11 +4370,11 @@ msgstr "" #~ msgstr "Klarte ikkje oppretta %s" #~ msgid "Failed to stat %sinfo" -#~ msgstr "Klarte ikkje f� status til %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" +#~ "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" @@ -4211,9 +4390,9 @@ msgstr "" #~ "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." +#~ "Klarte ikkje opna listefila %sinfo/%s. Dersom du ikkje kan gjenoppretta " +#~ "denne fila, br 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" @@ -4225,7 +4404,7 @@ msgstr "" #~ msgstr "Klarte ikkje opna avleiingsfila %sdiversions" #~ msgid "The diversion file is corrupted" -#~ msgstr "Avleiingsfila er �ydelagd" +#~ msgstr "Avleiingsfila er ydelagd" #~ msgid "Invalid line in the diversion file: %s" #~ msgstr "Ugyldig linje i avleiingsfila: %s" @@ -4234,13 +4413,13 @@ msgstr "" #~ msgstr "Intern feil ved tilleggjing av avleiing" #~ msgid "The pkg cache must be initialized first" -#~ msgstr "Pakkelageret m� f�rst klargjerast" +#~ msgstr "Pakkelageret m frst klargjerast" #~ msgid "Failed to find a Package: header, offset %lu" -#~ msgstr "Fann ikkje �Package:�-linja, 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" +#~ msgstr "ydelagd ConfFile-del i statusfila. Offset %lu" #~ msgid "Error parsing MD5. Offset %lu" #~ msgstr "Feil ved tolking av MD5. Offset %lu" @@ -4252,10 +4431,10 @@ msgstr "" #~ msgstr "Fann ikkje noka gyldig kontrollfil" #~ msgid "Couldn't open pipe for %s" -#~ msgstr "Klarte ikkje opna r�yr for %s" +#~ msgstr "Klarte ikkje opna ryr for %s" #~ msgid "Read error from %s process" -#~ msgstr "Lesefeil fr� %s-prosessen" +#~ msgstr "Lesefeil fr %s-prosessen" #~ msgid "Got a single header line over %u chars" #~ msgstr "Fekk ei enkel hovudlinje over %u teikn" @@ -4273,10 +4452,10 @@ msgstr "" #~ msgstr "dekomprimering" #~ msgid "read, still have %lu to read but none left" -#~ msgstr "lese, har framleis %lu att � lesa, men ingen att" +#~ 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" +#~ msgstr "skrive, har framleis %lu att skrive, men klarte ikkje" #~ msgid "Error occurred while processing %s (NewPackage)" #~ msgstr "Feil ved behandling av %s (NewPackage)" @@ -4322,7 +4501,7 @@ msgstr "" #, fuzzy #~ msgid "Couldn't access keyring: '%s'" -#~ msgstr "Klarte ikkje sl� opp �%s�" +#~ msgstr "Klarte ikkje sl opp %s" #, fuzzy #~ msgid "Could not patch file" @@ -4343,8 +4522,8 @@ msgstr "" #~ "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" +#~ "Sidan du berre har valt ein enkel operasjon, er det svrt sannsynleg at\n" +#~ "pakken rett og slett ikkje lt seg installera. I sfall br du senda\n" #~ "feilmelding." #, fuzzy @@ -4385,7 +4564,7 @@ msgstr "" #, fuzzy #~ msgid "Could not execute " -#~ msgstr "Klarte ikkje l�sa %s" +#~ msgstr "Klarte ikkje lsa %s" #~ msgid "Unknown vendor ID '%s' in line %u of source list %s" -#~ msgstr "Ukjend utgjevar-ID �%s� i linja %u i kjeldelista %s" +#~ msgstr "Ukjend utgjevar-ID %s i linja %u i kjeldelista %s" diff --git a/po/pl.po b/po/pl.po index cb86549..4119ee5 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,24 +5,24 @@ # Polish translation by: # # Nazewnictwo i spójność tłumaczeń programów apt, aptitude, synaptic i innych: -# http://wiki.debian.org/PolishL10N/PackageInstallers +# https://wiki.debian.org/pl/L10n/Polish/PackageInstallers # Marcin Owsiany , 2002, 2003, 2004. # Bartosz Fenski , 2005, 2006. # Wiktor Wandachowicz , 2008, 2009. -# Michał Kułach , 2012. +# Michał Kułach , 2012, 2024. msgid "" msgstr "" "Project-Id-Version: apt 0.9.7.3\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2012-07-28 21:53+0200\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2024-07-08 17:53+0200\n" "Last-Translator: Michał Kułach \n" "Language-Team: Polish \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" +"X-Generator: Lokalize 22.12.3\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" @@ -31,54 +31,63 @@ msgid "" "Updating from such a repository can't be done securely, and is therefore " "disabled by default." msgstr "" +"Aktualizacja z takiego repozytorium nie może być bezpiecznie wykonana, zatem " +"jest domyślnie wyłączona." #: apt-pkg/acquire-item.cc msgid "" "Data from such a repository can't be authenticated and is therefore " "potentially dangerous to use." msgstr "" +"Dane z takiego repozytorium nie mogą być uwierzytelnione, zatem są " +"potencjalnie niebezpieczne." #: apt-pkg/acquire-item.cc msgid "" "See apt-secure(8) manpage for repository creation and user configuration " "details." msgstr "" +"Więcej informacji o tworzeniu repozytorium i szczegółach konfiguracji " +"użytkownika znajduje się w podręczniku apt-secure(8)." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is no longer signed." -msgstr "Ominięcie katalogu %s" +msgstr "Repozytorium \"%s\" nie jest już obecnie podpisane." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' no longer has a Release file." -msgstr "Ominięcie katalogu %s" +msgstr "Repozytorium \"%s\" nie ma już pliku Release." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" +"Zwykle nie byłoby to dopuszczalne, lecz podano opcję " +"Acquire::AllowDowngradeToInsecureRepositories, aby to przesłonić." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is not signed." -msgstr "Ominięcie katalogu %s" +msgstr "Repozytorium \"%s\" nie jest podpisane." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' does not have a Release file." -msgstr "Ominięcie katalogu %s" +msgstr "Repozytorium \"%s\" nie ma pliku Release." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' provides only weak security information." -msgstr "Ominięcie katalogu %s" +msgstr "" +"Repozytorium \"%s\" zapewnia jedynie słabe informacje o zabezpieczeniach." #: apt-pkg/acquire-item.cc ftparchive/writer.cc #, c-format msgid "Failed to readlink %s" -msgstr "Nie udało się odczytać dowiązania %s" +msgstr "Nie udało się wykonać operacji readlink na %s" #: apt-pkg/acquire-item.cc ftparchive/cachedb.cc methods/rred.cc #, c-format @@ -91,7 +100,7 @@ msgstr "Błędna suma kontrolna" #: apt-pkg/acquire-item.cc msgid "Insufficient information available to perform this download securely" -msgstr "" +msgstr "Niewystarczające informacje do bezpiecznego pobrania" #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc #, c-format @@ -103,14 +112,12 @@ msgid "Size mismatch" msgstr "Błędny rozmiar" #: apt-pkg/acquire-item.cc -#, fuzzy msgid "Invalid file format" -msgstr "Nieprawidłowa operacja %s" +msgstr "Nieprawidłowy format pliku" #: apt-pkg/acquire-item.cc -#, fuzzy msgid "Signature error" -msgstr "Błąd zapisu" +msgstr "Błąd podpisu" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: apt-pkg/acquire-item.cc methods/gpgv.cc @@ -119,21 +126,27 @@ msgid "" "Clearsigned file isn't valid, got '%s' (does the network require " "authentication?)" msgstr "" +"Plik podpisany w trybie clearsign nie jest prawidłowy, otrzymano \"%s\" (czy " +"sieć wymaga uwierzytelnienia?)" #: 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" +"w dalszym ciągu będą używane poprzednie pliki indeksu. Błąd GPG %s: %s" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -141,6 +154,9 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" +"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium " +"\"%s\" nie ma komponentu \"%s\" (pomyłka w nazwie komponentu w pliku " +"sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -148,6 +164,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't support " "architecture '%s'" msgstr "" +"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium " +"\"%s\" nie obsługuje architektury \"%s\"" #: apt-pkg/acquire-item.cc #, c-format @@ -155,6 +173,9 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' does not seem to " "provide it (sources.list entry misspelt?)" msgstr "" +"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ wydaje się, że " +"repozytorium \"%s\" go nie zapewnia (literówka we wpisie w pliku " +"sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -162,6 +183,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' provides only " "weak security information for it" msgstr "" +"Pomijanie pozyskania skonfigurowanego pliku \"%s\", ponieważ repozytorium " +"\"%s\" zapewnia dla niego jedynie słabe informacja o zabezpieczeniach" #. 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 @@ -179,39 +202,38 @@ msgstr "" #. the time until the file will be valid - formatted in the same way as in #. the download progress display (e.g. 7d 3h 42min 1s) #: apt-pkg/acquire-item.cc -#, fuzzy, c-format -#| msgid "" -#| "Release file for %s is expired (invalid since %s). Updates for this " -#| "repository will not be applied." +#, c-format msgid "" "Release file for %s is not valid yet (invalid for another %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." +"Plik Release dla %s nie jest jeszcze prawidłowy (i będzie taki jeszcze przez " +"%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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" +msgstr "Repozytorium \"%s\" zmieniło swoją wartość \"%s\" z \"%s\" na \"%s\"" #: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" +"Repozytorium \"%s\" zmieniło swój domyślny priorytet dla %s z %hi na %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" msgstr "" +"Więcej informacji na ten temat można znaleźć online, w Uwagach do wydania " +"pod adresem: %s" #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) #: apt-pkg/acquire-item.cc @@ -220,12 +242,23 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" +"Konieczne jest, aby wyraźne to zaakceptować, przed zastosowaniem " +"aktualizacji z tego repozytorium. Więcej informacji w podręczniku %s." #: apt-pkg/acquire-item.cc 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/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Repozytorium powinno dostarczać plik InRelease podpisany w trybie clearsig, " +"lecz w %s takiego nie znaleziono." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -242,26 +275,21 @@ msgstr "Nie można znaleźć źródła do pobrania wersji \"%s\" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" +msgid "Changelog unavailable for %s=%s" +msgstr "Dziennik zmian dla %s=%s jest niedostępny" #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" +msgstr "Metoda \"%s\" jest wyraźnie wyłączona w konfiguracji." #: 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 "" +"Jeśli zamiarem było korzystanie z Tora, proszę pamiętać o użyciu %s zamiast " +"%s." #: apt-pkg/acquire-worker.cc #, c-format @@ -269,9 +297,9 @@ 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 +#, c-format msgid "Is the package %s installed?" -msgstr "Proszę sprawdzić czy pakiet \"dpkg-dev\" jest zainstalowany.\n" +msgstr "Czy pakiet %s jest zainstalowany?" #: apt-pkg/acquire-worker.cc #, c-format @@ -279,10 +307,11 @@ msgid "Method %s did not start correctly" msgstr "Metoda %s nie uruchomiła się poprawnie" #: apt-pkg/acquire-worker.cc -#, fuzzy, c-format +#, 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." +msgstr "" +"Proszę włożyć dysk o nazwie: \"%s\" do napędu \"%s\" i nacisnąć [Enter]." #: apt-pkg/acquire.cc apt-pkg/cdrom.cc #, c-format @@ -303,6 +332,8 @@ msgstr "Nie udało się zablokować katalogu %s" #, c-format msgid "No sandbox user '%s' on the system, can not drop privileges" msgstr "" +"W systemie brak użytkownika \"%s\" korzystającego z piaskownicy, nie można " +"zrezygnować z przywilejów" #: apt-pkg/acquire.cc #, c-format @@ -310,11 +341,13 @@ msgid "" "Download is performed unsandboxed as root as file '%s' couldn't be accessed " "by user '%s'." msgstr "" +"Pobieranie ma miejsce poza piaskownicą, jako root, ponieważ plik \"%s\" nie " +"jest dostępny dla użytkownika \"%s\"." #: apt-pkg/acquire.cc apt-pkg/clean.cc -#, fuzzy, c-format +#, c-format msgid "Clean of %s is not supported" -msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany" +msgstr "Wyczeszczenie \"%s\" nie jest obsługiwane" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. @@ -323,7 +356,7 @@ msgstr "Plik indeksu typu \"%s\" nie jest obsługiwany" #: apt-pkg/policy.cc apt-pkg/sourcelist.cc #, c-format msgid "Unable to read %s" -msgstr "Nie można czytać %s" +msgstr "Nie można odczytać %s" #: apt-pkg/acquire.cc #, c-format @@ -351,9 +384,12 @@ msgstr "" "Błąd, pkgProblemResolver::Resolve zwrócił błąd, może to być spowodowane " "zatrzymanymi pakietami." +# Wydaje się, że zwykle chodzi tu o niespełnione zależności, stąd nieco rozwlekłe tłumaczenie #: 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." +msgstr "" +"Nie udało się naprawić problemów, zatrzymano pakiety uszkodzone/z " +"niespełnionymi zależnościami." #: apt-pkg/cachefile.cc msgid "The package lists or status file could not be parsed or opened." @@ -385,10 +421,11 @@ msgstr "" "Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego \"%s\"" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, 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\"" +"Nie udało się znaleźć żadnego pakietu według wyrażenia regularnego typu glob " +"\"%s\"" #: apt-pkg/cacheset.cc apt-private/private-show.cc #, c-format @@ -554,18 +591,21 @@ 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 +#, 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." +msgstr "" +"Opcja wiersza poleceń \"%c\" [z %s] nie jest zrozumiała w połączeniu z " +"innymi opcjami." #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, c-format msgid "" "Command line option %s is not understood in combination with the other " "options" -msgstr "Niezrozumiała opcja linii poleceń %s" +msgstr "" +"Opcja wiersza poleceń %s nie jest zrozumiała w połączeniu z innymi opcjami" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -654,10 +694,35 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Błąd składniowy %s:%u: Śmieci na końcu pliku" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Błąd:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Ostrzeżenie:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Informacja:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audyt:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Debugowanie:" + #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format +#, c-format msgid "Cannot find a configured compressor for '%s'" -msgstr "Nie udało się znaleźć wpisu uwierzytelnienia dla: %s" +msgstr "" +"Nie udało się znaleźć skonfigurowanego programu kompresującego dla: \"%s\"" #: apt-pkg/contrib/extracttar.cc msgid "Corrupted archive" @@ -668,10 +733,9 @@ msgid "Tar checksum failed, archive corrupted" msgstr "Niepoprawna suma kontrolna tar, archiwum jest uszkodzone" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Nieznany typ nagłówka TAR %u, składnik %s" +msgstr "Nieznany typ nagłówka TAR %u" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -694,15 +758,15 @@ 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 -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Nie udało się uzyskać blokady %s" +msgstr "Nie udało się uzyskać blokady %s. Jest utrzymywana przez proces %d" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s. It is held by process %d (%s)" msgstr "" +"Nie udało się uzyskać blokady %s. Jest utrzymywana przez proces %d (%s)" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -714,12 +778,14 @@ msgid "" "Be aware that removing the lock file is not a solution and may break your " "system." msgstr "" +"Proszę być świadomym, że usunięcie pliku blokady nie jest właściwym " +"rozwiązaniem i może uszkodzić system." #: 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" +"Lista plików nie może zostać utworzona, ponieważ \"%s\" nie jest katalogiem" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -768,11 +834,11 @@ msgstr "Podproces %s zwrócił kod błędu (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Podproces %s zakończył się niespodziewanie" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Błąd odczytu" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Błąd zapisu" @@ -783,7 +849,7 @@ msgstr "Problem przy zamykaniu pliku gzip %s" #: apt-pkg/contrib/fileutl.cc msgid "Unexpected end of file" -msgstr "" +msgstr "Nieoczekiwany koniec pliku" #: apt-pkg/contrib/fileutl.cc msgid "Failed to create subprocess IPC" @@ -828,9 +894,9 @@ msgid "Problem syncing the file" msgstr "Problem przy zapisywaniu pliku na dysk" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Unable to mkstemp %s" -msgstr "Nie można wykonać operacji stat na %s" +msgstr "Nie można wykonać operacji mkstemp na %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -899,6 +965,8 @@ msgid "" "%s: Credentials for %s match, but the protocol is not encrypted. Annotate " "with %s:// to use." msgstr "" +"%s: Poświadczenia dla %s zgadzają się, lecz protokół nie jest szyfrowany. " +"Aby go użyć, konieczne jest dopisanie %s://." #: apt-pkg/contrib/progress.cc #, c-format @@ -912,22 +980,22 @@ msgstr "%c%s... Gotowe" #: apt-pkg/contrib/progress.cc msgid "..." -msgstr "" +msgstr "..." #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s... Gotowe" +msgstr "%c%s... %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llus" -msgstr "%c%s... Gotowe" +msgstr "%c%s... %llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %u%%" -msgstr "%c%s... Gotowe" +msgstr "%c%s... %u%%" #. TRANSLATOR: d means days, h means hours, min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc @@ -973,10 +1041,9 @@ msgid "Unparsable control file" msgstr "Plik kontrolny nie może zostać poprawnie zinterpretowany" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Nie udało się uzyskać blokady %s" +msgstr "Nie udało się odczytać metadanych z %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -984,7 +1051,7 @@ msgstr "Nie udało się uzyskać blokady %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s wants to acquire the same file (%s) as %s from source %s" -msgstr "" +msgstr "Cel %s chce pobrać ten sam plik (%s) jak %s ze źródła %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; filename and linenumber of @@ -992,7 +1059,7 @@ msgstr "" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "" +msgstr "Cel %s (%s) jest skonfigurowany wielokrotnie w %s i %s" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -1015,58 +1082,57 @@ msgid "" "No Hash entry in Release file %s which is considered strong enough for " "security purposes" msgstr "" +"Brak wpisu Hash w pliku Release %s, który byłby wystarczająco silny pod " +"względem zabezpieczeń" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Invalid '%s' entry in Release file %s" -msgstr "Nieprawidłowy wpis %s w pliku Release %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 "" +msgstr "Dla opcji %s ustawiono niezgodne wartości odnośnie źródła %s %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Invalid value set for option %s regarding source %s %s (%s)" msgstr "" +"Dla opcji %s ustawiono nieprawidłową wartość odnośnie źródła %s %s (%s)" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" msgstr "" +"Dla opcji %s ustawiono niezgodne wartości odnośnie źródła %s %s: %s != %s" #: 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)" +msgstr "Nie udało się przeanalizować pliku pakietu %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "Oczekiwanie na nagłówki" +msgstr "Oczekiwanie na blokadę bufora: %s" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "" -#| "Unable to lock the administration directory (%s), is another process " -#| "using it?" +#, c-format msgid "" "Unable to acquire the dpkg frontend lock (%s), is another process using it?" msgstr "" -"Nie udało się zablokować katalogu administracyjnego (%s), czy inny proces go " +"Nie udało się pozyskać blokady interfejsu dpkg (%s), czy inny proces go " "używa?" # Musi pasować do su i sudo. #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Unable to lock the administration directory (%s), are you root?" +#, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" msgstr "" -"Nie udało się zablokować katalogu administracyjnego (%s), czy użyto " -"uprawnień administratora?" +"Nie udało się pozyskać blokady interfejsu dpkg (%s), czy użyto uprawnień " +"administratora?" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1098,6 +1164,12 @@ msgstr "" msgid "Not locked" msgstr "Niezablokowany" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1176,13 +1248,13 @@ msgid "Completely removed %s" msgstr "Pakiet %s został całkowicie usunięty" #: apt-pkg/deb/dpkgpm.cc -#, fuzzy, c-format +#, c-format msgid "Can not write log (%s)" -msgstr "Nie udało się pisać do %s" +msgstr "Nie można zapisać dziennika (%s)" #: apt-pkg/deb/dpkgpm.cc msgid "Is /dev/pts mounted?" -msgstr "" +msgstr "Czy /dev/pts jest zamontowane?" #: apt-pkg/deb/dpkgpm.cc msgid "Operation was interrupted before it could finish" @@ -1222,13 +1294,12 @@ msgstr "" "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" +"Brak raportu programu apport, ponieważ komunikat błędu wskazuje na problem w " +"lokalnym systemie" #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1291,31 +1362,34 @@ msgstr "" "Zewnętrzny mechanizm rozwiązywania zależności zawiódł, bez podania " "prawidłowego komunikatu o błędzie" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Obliczanie aktualizacji" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Rozwiązywanie zależności:" + #: 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" +msgstr "Wykonywanie zewnętrznego planisty" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send request to planner" -msgstr "Wysyłanie żądania do mechanizmu rozwiązywania zależności" +msgstr "Wysyłanie żądania do planisty" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send scenario to planner" -msgstr "Wysyłanie scenariusza do mechanizmu rozwiązywania zależności" +msgstr "Wysyłanie scenariusza do planisty" #: 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" +"Zewnętrzny planista zawiódł, bez podania prawidłowego komunikatu o błędzie" #: apt-pkg/indexcopy.cc #, c-format @@ -1359,7 +1433,7 @@ msgstr "Nie udało się określić odpowiedniego typu systemu pakietów" #: apt-pkg/install-progress.cc #, c-format msgid "Progress: [%3li%%]" -msgstr "" +msgstr "Postęp: [%3li%%]" #. send status information that we are about to fork dpkg #: apt-pkg/install-progress.cc @@ -1411,14 +1485,16 @@ 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 +#, 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" +msgstr "" +"Ten magazyn podręczny pakietów został zbudowany dla innej architektury: %s " +"vs %s" +# sam skrót sugeruje dowiązanie symboliczne #: 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" +msgstr "Magazyn podręczny pakietów jest uszkodzony, ma błędny skrót (hash)" #: apt-pkg/pkgcache.cc msgid "Depends" @@ -1454,7 +1530,7 @@ msgstr "Rozszerza" #: apt-pkg/pkgcache.cc msgid "Obsoletes" -msgstr "Dezaktualizuje" +msgstr "Czyni zbędnym" #: apt-pkg/pkgcache.cc msgid "important" @@ -1540,11 +1616,15 @@ msgstr "Nierozpoznany typ przypinania %s" msgid "" "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" msgstr "" +"%s: Specjalną wartość \"Pin-Priority: %s\" można stosować jedynie do wpisów " +"\"Package: *\"'" #: apt-pkg/policy.cc #, c-format msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" msgstr "" +"%s: Wartość %s leży poza zakresem prawidłowych priorytetów przypięć (od %d " +"do %d)" #: apt-pkg/policy.cc msgid "No priority (or zero) specified for pin" @@ -1552,45 +1632,43 @@ 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 +#, c-format msgid "Malformed entry %u in %s file %s (%s)" -msgstr "Nieprawidłowa linia %llu #1 pliku override %s" +msgstr "Nieprawidłowa wpis w wierszu %u pliku %s %s (%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)" +msgstr "Nieprawidłowy wiersz %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" +msgstr "Typ \"%s\" jest nieznany w wierszu %u listy źródeł %s" #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, c-format msgid "Malformed stanza %u in source list %s (type)" -msgstr "Nieprawidłowa linia %u w liście źródeł %s (typ)" +msgstr "Nieprawidłowa pozycja %u w liście źródeł %s (typ)" #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, 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" +msgstr "Typ \"%s\" jest nieznany w pozycji %u listy źródeł %s" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format msgid "Unsupported file %s given on commandline" -msgstr "" +msgstr "W wierszu polecenia podano nieobsługiwany plik %s" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "Należy dopisać jakieś URI pakietów źródłowych do pliku sources.list" +msgstr "W pliku sources.list należy umieścić jakieś URI dla \"deb-src\"" #: apt-pkg/tagfile.cc #, c-format msgid "Cannot convert %s to integer: out of range" -msgstr "" +msgstr "Nie udało się zmienić %s na liczbę: poza zakresem" #: apt-pkg/update.cc msgid "" @@ -1600,33 +1678,30 @@ 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 +# Wyrównane do Get, Ign i Err. #. 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" +msgstr "Było:%lu %s" +# Wyrównane do Hit, Ign i Err. #. 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" +msgstr "Pobr:%lu %s" -# Wyrównane do Hit i Err. +# Wyrównane do Hit, Get 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 "" +msgstr "Zign:%lu %s" -# Wyrównane do Hit i Ign. +# Wyrównane do Hit, Get 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 @@ -1644,7 +1719,7 @@ msgid " [Working]" msgstr " [Pracuje]" #: apt-private/acqprogress.cc -#, fuzzy, c-format +#, c-format msgid "" "Media change: please insert the disc labeled\n" " '%s'\n" @@ -1652,13 +1727,15 @@ msgid "" msgstr "" "Zmiana nośnika: Proszę włożyć dysk oznaczony\n" " \"%s\"\n" -"do napędu \"%s\" i nacisnąć enter\n" +"do napędu \"%s\" i nacisnąć [Enter]\n" #: apt-private/acqprogress.cc msgid "" "Do you want to accept these changes and continue updating from this " "repository?" msgstr "" +"Czy zaakceptować wskazane zmiany i kontynuować aktualizację z tego " +"repozytorium?" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." @@ -1694,22 +1771,22 @@ msgstr "" #: apt-private/private-cacheset.cc apt-private/private-search.cc msgid "Sorting" -msgstr "" +msgstr "Sortowanie" #: apt-private/private-cacheset.cc #, c-format msgid "Note, selecting '%s' for task '%s'\n" -msgstr "Uwaga, wybieranie %s dla zadania \"%s\"\n" +msgstr "Uwaga, wybieranie \"%s\" dla zadania \"%s\"\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "Uwaga, wybieranie %s dla wyrażenia \"%s\"\n" +msgstr "Uwaga, wybieranie \"%s\" dla wyrażenia typu glob \"%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" +msgstr "Uwaga, wybieranie \"%s\" dla wyrażenia regularnego \"%s\"\n" #: apt-private/private-cacheset.cc #, c-format @@ -1717,7 +1794,6 @@ 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]" @@ -1747,7 +1823,7 @@ 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" +msgstr "Pakiet \"%s\" nie ma kandydata do instalacji" #: apt-private/private-cacheset.cc #, c-format @@ -1759,8 +1835,8 @@ msgstr "Pakiety wirtualne, takie jak \"%s\" nie mogą być usunięte\n" #, 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" +"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 @@ -1772,20 +1848,14 @@ msgstr "Pakiet \"%s\" nie jest zainstalowany, więc nie zostanie usunięty\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Uwaga, wybieranie \"%s\" zamiast \"%s\"\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" -msgstr "Najczęściej używane polecenia" +msgstr "Najczęściej używane polecenia:" #: apt-private/private-cmndline.cc #, c-format msgid "See %s for more information about the available commands." -msgstr "Po więcej informacji o dostępnych poleceniach zobacz %s" +msgstr "Więcej informacji o dostępnych poleceniach opisano w %s." #: apt-private/private-cmndline.cc msgid "" @@ -1794,6 +1864,10 @@ msgid "" "Package and version choices can be expressed via apt_preferences(5).\n" "Security details are available in apt-secure(8).\n" msgstr "" +"Składnię i opcje konfiguracji opisano w podręczniku apt.conf(5).\n" +"Informacje o sposobie odnajdywania źródeł opisano w sources.list(5).\n" +"Wybór pakietów i wersji można modyfikować za pomocą apt_preferences(5).\n" +"Szczegóły odnośnie zabezpieczeń opisano w apt-secure(8).\n" #: apt-private/private-cmndline.cc msgid "This APT has Super Cow Powers." @@ -1801,13 +1875,15 @@ msgstr "Ten APT ma moce Super Krowy." #: apt-private/private-cmndline.cc msgid "This APT helper has Super Meep Powers." -msgstr "" +msgstr "Ten pomocnik APT ma moce Super Krowy." #: apt-private/private-cmndline.cc msgid "" "--force-yes is deprecated, use one of the options starting with --allow " "instead." msgstr "" +"--force-yes jest przestarzałe, proszę w zamian korzystać z opcji " +"zaczynających się od --allow." #: apt-private/private-depends.cc apt-private/private-download.cc #: apt-private/private-show.cc cmdline/apt-mark.cc @@ -1831,11 +1907,11 @@ msgid "Install these packages without verification?" msgstr "Zainstalować te pakiety bez weryfikacji?" #: 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" +msgstr "" +"Wystąpiły nieuwierzytelnione pakiety, a użyto -y bez --allow-unauthenticated" #: apt-private/private-download.cc #, c-format @@ -1877,28 +1953,37 @@ msgstr "" msgid "The following information may help to resolve the situation:" msgstr "Następujące informacje mogą pomóc rozwiązać sytuację:" +# Wydaje się, że zwykle chodzi tu o niespełnione zależności, stąd nieco rozwlekłe tłumaczenie #: apt-private/private-install.cc msgid "Broken packages" -msgstr "Pakiety są uszkodzone" +msgstr "Pakiety są uszkodzone lub mają niespełnione zależności" + +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Błąd zapisu" #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Niezłączony katalog usr nie jest już obsługiwany, proszę użyć usrmerge aby " +"przejść na system ze złączonym usr." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc #, c-format msgid "See %s for more details." -msgstr "" +msgstr "Więcej szczegółów pod adresem %s." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nie udało się pobrać niektórych archiwów, proszę spróbować uruchomić apt-get " +"Nie udało się pobrać niektórych archiwów, proszę spróbować uruchomić apt " "update lub użyć opcji --fix-missing." #: apt-private/private-install.cc @@ -1910,22 +1995,22 @@ 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" +msgstr "Usunięto niezbędne pakiety, a użyto -y bez --allow-remove-essential." #: 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" +msgstr "" +"Cofnięto pakiety do starszych wersji, a użyto -y bez --allow-downgrades." #: apt-private/private-install.cc msgid "" "Held packages were changed and -y was used without --allow-change-held-" "packages." msgstr "" +"Zmieniono zatrzymane pakiety, a użyto -y bez --allow-change-held-packages." #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" @@ -1937,6 +2022,11 @@ msgstr "" "Wystąpił dziwny błąd - rozmiary się nie zgadzają. Proszę to zgłosić pod " "apt@packages.debian.org" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Do pobrania: %sB / %sB\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 @@ -1944,6 +2034,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Konieczne pobranie %sB/%sB archiwów.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Do pobrania: %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 @@ -1951,13 +2046,61 @@ msgstr "Konieczne pobranie %sB/%sB archiwów.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Wymagane miejsce: %sB / %sB dostępnych\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Wymagane więcej miejsca niż jest dostępne: %sB > %sB, instalacja może się " +"nie powieść" + +# +1 spacja (skraca tu): in->w; +4 spacje (wydłuża wyżej): "space needed"(12) +# ->wymagane miejsce(16) +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "w %s: %sB / %sB dostępnych\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"W %s potrzebne jest więcej miejsca, niż jest dostępne: %sB > %sB, instalacja " +"może się nie powieść" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Potrzebne miejsce: %sB\n" + +# U nas ma tę samą długość co "Potrzebne miejsce", więc chyba nie wymaga spacji +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr "Zwalniane miejsce: %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 @@ -1974,23 +2117,24 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Kontynuować?" +"Usuwanie pakietów niezbędnych do działania systemu jest niedozwolone. Może " +"to uszkodzić system." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Czy mimo to kontynuować?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Kontynuować?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Kontynuować?" #: apt-private/private-install.cc msgid "Abort." -msgstr "Przerwane." +msgstr "Przerwano." #: apt-private/private-install.cc msgid "Some files failed to download" @@ -2049,6 +2193,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Błąd wewnętrzny spowodowany przez AutoRemover" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2081,17 +2233,8 @@ msgstr[2] "" "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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2101,6 +2244,10 @@ msgstr "Sugerowane pakiety:" msgid "Recommended packages:" msgstr "Polecane pakiety:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Zostaną zainstalowane następujące dodatkowe pakiety:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2121,14 +2268,14 @@ msgstr "" #. TRANSLATORS: First string is package name, second is version #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format msgid "%s is already the newest version (%s).\n" -msgstr "%s jest już w najnowszej wersji.\n" +msgstr "%s jest już w najnowszej wersji (%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 zaznaczony jako zainstalowany ręcznie.\n" +msgstr "%s oznaczono jako zainstalowany ręcznie.\n" #: apt-private/private-install.cc #, c-format @@ -2142,7 +2289,7 @@ msgstr "Wybrano wersję \"%s\" (%s) pakietu \"%s\", z powodu \"%s\"\n" #: apt-private/private-list.cc msgid "Listing" -msgstr "" +msgstr "Wypisywanie" #: apt-private/private-list.cc #, c-format @@ -2150,8 +2297,11 @@ 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] "" +"Istnieje %i dodatkowa wersja. Przełącznik \"-a\" pozwoli ją zobaczyć" msgstr[1] "" +"Istnieją %i dodatkowe wersje. Przełącznik \"-a\" pozwoli je zobaczyć" msgstr[2] "" +"Istnieje %i dodatkowych wersji. Przełącznik \"-a\" pozwoli je zobaczyć" #. TRANSLATORS: placeholder is a binary name like apt or apt-get #: apt-private/private-main.cc @@ -2169,40 +2319,37 @@ msgstr "" #: apt-private/private-output.cc apt-private/private-show.cc msgid "unknown" -msgstr "" +msgstr "nieznany" #: apt-private/private-output.cc -#, fuzzy, c-format +#, c-format msgid "[installed,upgradable to: %s]" -msgstr " [Zainstalowany]" +msgstr "[zainstalowany,możliwa aktualizacja: %s]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,local]" -msgstr " [Zainstalowany]" +msgstr "[zainstalowany,lokalny]" #: apt-private/private-output.cc msgid "[installed,auto-removable]" -msgstr "" +msgstr "[zainstalowany,autom. usuwalny]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,automatic]" -msgstr " [Zainstalowany]" +msgstr "[zainstalowany,automatyczny]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed]" -msgstr " [Zainstalowany]" +msgstr "[zainstalowany]" #: apt-private/private-output.cc #, c-format msgid "[upgradable from: %s]" -msgstr "" +msgstr "[możliwa aktualizacja z: %s]" #: apt-private/private-output.cc msgid "[residual-config]" -msgstr "" +msgstr "[resztkowa konfiguracja]" #: apt-private/private-output.cc #, c-format @@ -2239,18 +2386,43 @@ 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:" +msgid "Unsatisfied dependencies:" +msgstr "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 "Installing:" +msgstr "Instalowane:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Instalowane zależności:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "USUWANE:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Następujące pakiety zostaną USUNIĘTE:" +# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu) #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Następujące pakiety zostały zatrzymane:" +msgstr "" +"Aktualizacje odroczone, z powodu stopniowego wprowadzania przez dystrybucję:" + +# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu) +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Odroczone, z powodu stopniowego wprowadzania aktualizacji:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Nie są aktualizowane:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2260,9 +2432,21 @@ msgstr "Następujące pakiety zostały zatrzymane:" msgid "The following packages will be upgraded:" msgstr "Następujące pakiety zostaną zaktualizowane:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Aktualizowane:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "COFANE:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" -msgstr "Zostaną zainstalowane STARE wersje następujących pakietów:" +msgstr "Następujące pakiety zostaną COFNIĘTE:" + +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "Zmiany zatrzymanych pakietów:" #: apt-private/private-output.cc msgid "The following held packages will be changed:" @@ -2281,26 +2465,50 @@ 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 +msgid "Summary:" +msgstr "Podsumowanie:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Aktualizowanych: %lu, Instalowanych: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu ponownie instalowanych, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Ponownie instalowanych: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu cofniętych wersji, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Cofanych: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Usuwanych: %lu, Nieaktualizowanych: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2328,7 +2536,7 @@ msgid "Y" msgstr "T" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2338,20 +2546,22 @@ msgstr "Należy podać przynajmniej jeden wzorzec" #: apt-private/private-search.cc msgid "Full Text Search" -msgstr "" +msgstr "Wyszukiwanie pełnotekstowe" #: 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[0] "Istnieje %i dodatkowy wpis. Przełącznik \"-a\" pozwoli go zobaczyć." msgstr[1] "" +"Istnieje %i dodatkowych wpisów. Przełącznik \"-a\" pozwoli je zobaczyć." msgstr[2] "" +"Istnieje %i dodatkowych wpisów. Przełącznik \"-a\" pozwoli je zobaczyć." #: apt-private/private-show.cc msgid "not a real package (virtual)" -msgstr "" +msgstr "nie jest pakietem rzeczywistym (wirtualny)" #: apt-private/private-show.cc msgid "Package files:" @@ -2372,7 +2582,7 @@ msgstr "Przypięte pakiety:" #: apt-private/private-show.cc #, c-format msgid "%s -> %s with priority %d\n" -msgstr "" +msgstr "%s -> %s z priorytetem %d\n" #: apt-private/private-show.cc msgid " Installed: " @@ -2391,37 +2601,35 @@ msgstr "(brak)" msgid " Version table:" msgstr " Tabela wersji:" +# Obecnie nieużywane przez Debiana, stopniowe wprowadzanie aktualizacji określonemu procentowi użytkowników (Ubuntu) #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "odroczony" #: apt-private/private-source.cc -#, fuzzy, c-format +#, 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\"" +msgstr "Nie udało się znaleźć pakietu dla architektury \"%s\"" #: apt-private/private-source.cc -#, fuzzy, c-format +#, 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\"" +msgstr "Nie udało się znaleźć pakietu \"%s\" w wersji \"%s\"" #: apt-private/private-source.cc -#, fuzzy, c-format +#, 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\"" +msgstr "Nie udało się znaleźć pakietu \"%s\" w wydaniu \"%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" +msgstr "Wybieranie \"%s\" jako pakietu źródłowego, zamiast \"%s\"\n" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find version '%s' of package '%s'" -msgstr "Ignorowanie niedostępnej wersji \"%s\" pakietu \"%s\"" +msgstr "Nie udało się znaleźć wersji \"%s\" pakietu \"%s\"" #: apt-private/private-source.cc msgid "Must specify at least one package to fetch source for" @@ -2432,7 +2640,7 @@ msgstr "" #: 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" +msgstr "Nie udało się odnaleźć pakietu źródłowego dla %s" #: apt-private/private-source.cc #, c-format @@ -2516,11 +2724,11 @@ msgstr "%s nie ma zależności dla budowania.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"Nie znaleziono informacji o architekturze dla %s. Proszę zapoznać się z " +"apt.conf(5) APT::Architectures" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2533,29 +2741,38 @@ msgstr "" msgid "" "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" msgstr "" +"Nieprawidłowy operator \"%c\" na przesunięciu %d, czy chodziło o \"%c%c\" " +"lub \"%c=\"? - w: %s" #: apt-private/private-source.cc #, c-format msgid "Note, using directory '%s' to get the build dependencies\n" msgstr "" +"Uwaga, używanie katalogu \"%s\" do uzyskania zależności na czas budowania\n" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Note, using file '%s' to get the build dependencies\n" -msgstr "Nie udało się przetworzyć zależności dla budowania" +msgstr "" +"Uwaga, używanie pliku \"%s\" do uzyskania zależności na czas budowania\n" #: 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 +#, c-format msgid "Failed to parse %s. Edit again? " -msgstr "Nie udało się zmienić nazwy %s na %s" +msgstr "Nie udało się przeanalizować %s. Edytować ponownie? " #: apt-private/private-sources.cc #, c-format msgid "Your '%s' file changed, please run 'apt-get update'.\n" +msgstr "Plik \"%s\" uległ zmianie, proszę wykonać \"apt-get update\".\n" + +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" msgstr "" #: apt-private/private-unmet.cc @@ -2574,11 +2791,44 @@ msgid "" "Usage of %s should be preferred over embedding login information directly in " "the %s entry for '%s'" msgstr "" +"Korzystanie z %s powinno być preferowane wobec osadzania informacji " +"logowania bezpośrednio we wpisie %s dla \"%s\"" + +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Brakuje Signed-By (podpisu) we wpisie %s dla \"%s\"" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Więcej informacji o tworzeniu repozytorium i szczegółach konfiguracji " +"użytkownika znajduje się w podręczniku apt-secure(8)." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" #: apt-private/private-update.cc @@ -2587,17 +2837,23 @@ 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 pakiet może być zaktualizowany. Można go zobaczyć wykonując 'apt list --" +"upgradable'.\n" msgstr[1] "" +"%i pakiety mogą być zaktualizowane. Można je zobaczyć wykonując 'apt list --" +"upgradable'.\n" msgstr[2] "" +"%i pakietów może być zaktualizowanych. Można je zobaczyć wykonując 'apt list " +"--upgradable'.\n" #: apt-private/private-update.cc msgid "All packages are up to date." -msgstr "" +msgstr "Wszystkie pakiety są aktualne." #: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s does not take any arguments" -msgstr "Polecenie update nie wymaga żadnych argumentów" +msgstr "%s nie przyjmuje żadnych argumentów" #: cmdline/apt-cache.cc msgid "Total package names: " @@ -2627,6 +2883,12 @@ msgstr " Mieszanych pakietów wirtualnych: " msgid " Missing: " msgstr " Brakujących: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "W sumie różnych wersji: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "W sumie różnych wersji: " @@ -2679,6 +2941,15 @@ msgid "" "too long ago, but in exchange apt-cache works independently of the\n" "availability of the configured sources (e.g. offline).\n" msgstr "" +"Użycie: apt-cache [opcje] polecenie\n" +" apt-cache [opcje] show pakiet1 [pakiet2 ...]\n" +"\n" +"apt-cache odpytuje i wyświetla dostępne informacje o zainstalowanych\n" +"i możliwych do instalacji pakietach. Działa wyłącznie na danych zebranych\n" +"w lokalnym buforze dzięki poleceniu \"update\" np. apt-get. Wyświetlane\n" +"informacje mogą być zatem zdezaktualizowane, jeśli ostatnia aktualizacja\n" +"miała miejsce zbyt dawno, choć z drugiej strony apt-cache działa\n" +"niezależnie od dostępności skonfigurowanych źródeł (np. bez sieci).\n" #: cmdline/apt-cache.cc msgid "Show source records" @@ -2713,9 +2984,8 @@ 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" +msgstr "Proszę włożyć Dysk do napędu i nacisnąć [Enter]" #: cmdline/apt-cdrom.cc #, c-format @@ -2729,6 +2999,11 @@ msgid "" "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and " "mount point." msgstr "" +"Nie udało się wykryć automatycznie ani odnaleźć CD-ROM-u w domyślnym " +"punkcie\n" +"montowania. Można użyć opcji --cdrom aby ustawić punkt montowania CD-ROM-u.\n" +"Polecenie \"man apt-cdrom\" ukaże więcej informacji o " +"automatycznymwykrywaniu CD-ROM-ów i punktach montowania." #: cmdline/apt-cdrom.cc msgid "Repeat this process for the rest of the CDs in your set." @@ -2742,13 +3017,18 @@ msgid "" "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 "" +"Użycie: apt-cdrom [opcje] polecenie\n" +"\n" +"apt-cdrom służy do dodawania CD-ROM-ów, pamięci USB i innych typów\n" +"nośników wymiennych, jako źródeł pakietów do APT-a. Informacje\n" +"o urządzeniach i punktach montowania pochodzą z apt.conf(5), udev(7)\n" +"i fstab(5).\n" #: 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" @@ -2757,15 +3037,17 @@ msgid "" msgstr "" "Użycie: apt-config [opcje] polecenie\n" "\n" -"apt-config to proste narzędzie do czytania pliku konfiguracyjnego APT\n" +"apt-config to interfejs do ustawień konfiguracji używanych przez\n" +"wszystkie narzędzia APT, przeznaczony głównie do debugowania\n" +"i tworzenia skryptów powłoki.\n" #: cmdline/apt-config.cc msgid "get configuration values via shell evaluation" -msgstr "" +msgstr "pobiera wartości konfiguracyjne z powłoki" #: cmdline/apt-config.cc msgid "show the active configuration setting" -msgstr "" +msgstr "pokazuje aktywne ustawienia konfiguracji" #: cmdline/apt-dump-solver.cc msgid "" @@ -2774,9 +3056,12 @@ msgid "" "apt-dump-solver is an interface to store an EDSP scenario in\n" "a file and optionally forwards it to another solver.\n" msgstr "" +"Użycie: apt-dump-solver\n" +"\n" +"apt-dump-solver jest interfejsem do przechowywania scenariusza EDSP\n" +"w pliku i opcjonalnym przekazaniu go innemu mechanizmowi rozwiązywania.\n" #: cmdline/apt-extracttemplates.cc -#, fuzzy msgid "" "Usage: apt-extracttemplates file1 [file2 ...]\n" "\n" @@ -2786,14 +3071,9 @@ msgid "" 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" +"apt-extracttemplates to narzędzie służące do wyodrębniania plików\n" +"konfiguracyjnych i szablonów z pakietów Debiana. Używane głównie przez\n" +"debconf(1), do zadawania pytań konfiguracyjnych przed instalacją pakietów.\n" #: cmdline/apt-extracttemplates.cc msgid "Cannot get debconf version. Is debconf installed?" @@ -2807,7 +3087,7 @@ 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" +msgstr "%s oznaczono jako zainstalowany automatycznie.\n" #: cmdline/apt-get.cc cmdline/apt-mark.cc msgid "" @@ -2826,7 +3106,6 @@ 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" @@ -2841,8 +3120,9 @@ msgstr "" " 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" +"apt-get to interfejs wiersza poleceń do pobierania pakietów i informacji\n" +"na ich temat z uwierzytelnionych źródeł oraz do instalacji, aktualizacji\n" +"i usuwania pakietów wraz z ich zależnościami.\n" #: cmdline/apt-get.cc msgid "Retrieve new lists of packages" @@ -2857,10 +3137,8 @@ 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 -#, fuzzy -#| msgid "Install new packages (pkg is libc6 not libc6.deb)" msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Instaluje nowe pakiety (pakiet to np. libc6, nie libc6.deb)" +msgstr "Instaluje ponownie nowe pakiety (pakiet to np. libc6, nie libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" @@ -2876,7 +3154,7 @@ 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)" +msgstr "Aktualizuje dystrybucję, patrz apt-get(8)" #: cmdline/apt-get.cc msgid "Follow dselect selections" @@ -2887,10 +3165,8 @@ msgid "Configure build-dependencies for source packages" msgstr "Konfiguruje zależności dla budowania pakietów źródłowych" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Budowanie drzewa zależności" +msgstr "Spełnia łańcuchy zależności" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" @@ -2914,27 +3190,24 @@ 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 dziennik zmian wybranych pakietów" +msgstr "Pobiera i wyświetla dziennik zmian wybranego pakietu" #: cmdline/apt-helper.cc msgid "Need one URL as argument" -msgstr "" +msgstr "Wymaga jednego adresu URL jako argumentu" #: 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" +msgstr "Należy podać przynajmniej jedną parę url/nazwa-pliku" #: cmdline/apt-helper.cc msgid "Download Failed" -msgstr "" +msgstr "Pobieranie nie powiodło się" #: cmdline/apt-helper.cc #, c-format msgid "GetSrvRec failed for %s" -msgstr "" +msgstr "GetSrvRec zawiodło dla %s" #: cmdline/apt-helper.cc msgid "" @@ -2945,37 +3218,49 @@ msgid "" "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 "" +"Użycie: apt-helper [opcje] polecenie\n" +" apt-helper [opcje] cat-file plik ...\n" +" apt-helper [opcje] download-file uri ścieżka-docelowa\n" +"\n" +"apt-helper stanowi zbiór poleceń do użycia w skryptach powłoki, w celu\n" +"korzystania z tej samej konfiguracji np. serwerów pośredniczących lub\n" +"systemu pobierania, jakiej użyłby APT.\n" #: cmdline/apt-helper.cc msgid "download the given uri to the target-path" -msgstr "" +msgstr "pobiera podane uri do ścieżki-docelowej" #: cmdline/apt-helper.cc msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" -msgstr "" +msgstr "wyszukuje rekord SRV (np. _http._tcp.ftp.debian.org)" #: cmdline/apt-helper.cc msgid "concatenate files, with automatic decompression" -msgstr "" +msgstr "łączy pliki, automatycznie je rozpakowując" + +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Nie udało się obliczyć skrótu pliku" #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" -msgstr "" +msgstr "wykrywa serwery pośredniczące za pomocą apt.conf" #: cmdline/apt-helper.cc msgid "wait for system to be online" -msgstr "" +msgstr "czeka na status online systemu" #: cmdline/apt-helper.cc msgid "drop privileges before running given command" -msgstr "" +msgstr "porzuca przywileje przed wykonaniem danego polecenia" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "analizuje wzór" #: cmdline/apt-internal-planner.cc -#, fuzzy msgid "" "Usage: apt-internal-planner\n" "\n" @@ -2983,20 +3268,13 @@ msgid "" "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" +"Użycie: apt-internal-planner\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" +"apt-internal-planner jest interfejsem do używania bieżącego, wewnętrznego\n" +"planisty instalacji rodziny APT, w sposób podobny jak zewnętrznego, \n" +"do celów debugowania itp.\n" #: cmdline/apt-internal-solver.cc -#, fuzzy msgid "" "Usage: apt-internal-solver\n" "\n" @@ -3007,14 +3285,8 @@ 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" +"mechanizmu rozwiązywania zależności rodziny APT, w sposób podobny jak\n" +"zewnętrznego, do celów debugowania itp.\n" #: cmdline/apt-mark.cc #, c-format @@ -3033,13 +3305,12 @@ msgstr "%s został już ustawiony jako zainstalowany automatycznie.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" -msgstr "" +msgstr "Nie są konieczne zmiany" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Zostaną zainstalowane następujące NOWE pakiety:" +msgstr "" +"Następujące pakiety zostaną oznaczone jako zainstalowane automatycznie:" #: cmdline/apt-mark.cc #, c-format @@ -3070,20 +3341,19 @@ msgstr "Odznaczono zatrzymanie %s\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for purge.\n" -msgstr "" +msgstr "Wybrano %s do wyczyszczenia.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for removal.\n" -msgstr "" +msgstr "Wybrano %s do usunięcia.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for installation.\n" -msgstr "" +msgstr "Wybrano %s do instalacji.\n" #: cmdline/apt-mark.cc -#, fuzzy msgid "" "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" "\n" @@ -3094,9 +3364,10 @@ msgid "" 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" +"apt-mark jest prostym interfejsem wiersza poleceń do oznaczania pakietów\n" +"jako zainstalowane automatycznie lub ręcznie. Może także służyć do zmiany\n" +"stanu pakietów wybranych w dpkg(1) oraz wypisywania wszystkich pakietów\n" +"z lub bez określonego oznaczenia.\n" #: cmdline/apt-mark.cc msgid "Mark the given packages as automatically installed" @@ -3107,30 +3378,29 @@ msgid "Mark the given packages as manually installed" msgstr "Oznacza dany pakiet jako zainstalowany ręcznie" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "Mark the given packages as automatically installed" msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "Oznacza dany pakiet jako zainstalowany automatycznie" +msgstr "" +"Oznacza wszystkie zależności metapakietu jako zainstalowane automatycznie" #: cmdline/apt-mark.cc msgid "Mark a package as held back" -msgstr "" +msgstr "Oznacza pakiet jako zatrzymany" #: cmdline/apt-mark.cc msgid "Unset a package set as held back" -msgstr "" +msgstr "Odznacza pakiet jako zatrzymany" #: cmdline/apt-mark.cc msgid "Print the list of automatically installed packages" -msgstr "" +msgstr "Wypisuje listę pakietów zainstalowanych automatycznie" #: cmdline/apt-mark.cc msgid "Print the list of manually installed packages" -msgstr "" +msgstr "Wypisuje listę pakietów zainstalowanych ręcznie" #: cmdline/apt-mark.cc msgid "Print the list of packages on hold" -msgstr "" +msgstr "Wypisuje listę zatrzymanych pakietów" #: cmdline/apt-sortpkgs.cc msgid "Unknown package record!" @@ -3144,6 +3414,12 @@ msgid "" "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 "" +"Użycie: apt-sortpkgs [opcje] plik1 [plik2 ...]\n" +"\n" +"apt-sortpkgs jest prostym narzędziem sortującym pliki z informacjami\n" +"o pakietach. Domyślnie sortuje według informacji o pakietach binarnych,\n" +"natomiast za pomocą opcji -s można przełączyć się do kolejności z pakietów\n" +"źródłowych.\n" #: cmdline/apt.cc msgid "" @@ -3155,77 +3431,82 @@ msgid "" "like apt-get and apt-cache, but enables options more suitable for\n" "interactive use by default.\n" msgstr "" +"Usage: apt [opcje] polecenie\n" +"\n" +"apt jest menedżerem pakietów wiersza poleceń, który udostępnia polecenia\n" +"do wyszukiwania i zarządzania pakietami oraz sprawdzania informacji na ich\n" +"temat. Zapewnia te same funkcje co wyspecjalizowane narzędzia APT, takie " +"jak\n" +"apt-get i apt-cache, lecz domyślnie włącza opcje ułatwiające użytkowanie\n" +"w trybie interaktywnym.\n" #. query #: cmdline/apt.cc msgid "list packages based on package names" -msgstr "" +msgstr "wypisuje pakiety według nazw pakietów" #: cmdline/apt.cc -#, fuzzy msgid "search in package descriptions" -msgstr "Czytanie list pakietów" +msgstr "szuka w opisach pakietów" #: cmdline/apt.cc msgid "show package details" -msgstr "" +msgstr "pokazuje szczegóły pakietu" #. package stuff #: cmdline/apt.cc -#, fuzzy msgid "install packages" -msgstr "Przypięte pakiety:" +msgstr "instaluje pakiety" #: cmdline/apt.cc -#, fuzzy msgid "reinstall packages" -msgstr "Przypięte pakiety:" +msgstr "instaluje pakiety ponownie" #: cmdline/apt.cc -#, fuzzy msgid "remove packages" -msgstr "Pakiety są uszkodzone" +msgstr "usuwa pakiety" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "Usuwa automatycznie wszystkie nieużywane pakiety" +msgstr "automatycznie usuwa wszystkie nieużywane pakiety" #. system wide stuff #: cmdline/apt.cc -#, fuzzy msgid "update list of available packages" -msgstr "ale jest pakietem wirtualnym" +msgstr "aktualizuje listę dostępnych pakietów" #: cmdline/apt.cc msgid "upgrade the system by installing/upgrading packages" -msgstr "" +msgstr "aktualizuje system instalując/aktualizując pakiety" #: cmdline/apt.cc msgid "upgrade the system by removing/installing/upgrading packages" -msgstr "" +msgstr "aktualizuje system usuwając/instalując/aktualizując pakiety" #. misc #: cmdline/apt.cc -#, fuzzy msgid "edit the source information file" -msgstr "Odczyt informacji o stanie" +msgstr "edytuje plik z informacjami o źródłach" + +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" #: cmdline/apt.cc -#, fuzzy -#| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" -msgstr "Nie udało się spełnić zależności %s od %s: %s" +msgstr "spełnia łańcuchy zależności" + +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" #: 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ć." +msgstr "Proszę nacisnąć [Enter], aby kontynuować." #: dselect/install msgid "Do you want to erase any previously downloaded .deb files?" @@ -3379,7 +3660,7 @@ 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" +msgstr "Baza jest przestarzała, nastąpi próba aktualizacji %s" #: ftparchive/cachedb.cc msgid "" @@ -3395,9 +3676,8 @@ 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" +msgstr "Nie udało się odczytać .dsc" #: ftparchive/cachedb.cc msgid "Archive has no control record" @@ -3421,7 +3701,7 @@ msgstr "Nieznany algorytm kompresji \"%s\"" msgid "Compressed output %s needs a compression set" msgstr "Skompresowany plik wynikowy %s wymaga podania kompresji" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Nie udało się utworzyć potoku IPC do podprocesu" @@ -3440,11 +3720,11 @@ 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" +msgstr "Zawiodła operacja wejścia/wyjścia 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" +msgstr "Nie udał się odczyt w trakcie liczenia skrótu MD5" #: ftparchive/multicompress.cc #, c-format @@ -3459,29 +3739,29 @@ msgstr "Nie można otworzyć %s" #. skip spaces #. find end of word #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu (%s)" -msgstr "Nieprawidłowa linia %llu #1 pliku override %s" +msgstr "Nieprawidłowy wiersz %2$llu pliku override %1$s (%3$s)" #: ftparchive/override.cc #, c-format msgid "Failed to read the override file %s" -msgstr "Nie udało się czytać pliku override %s" +msgstr "Nie udało się odczytać 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" +msgstr "Nieprawidłowy wiersz %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" +msgstr "Nieprawidłowy wiersz %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" +msgstr "Nieprawidłowy wiersz %2$llu #3 pliku override %1$s" #: ftparchive/writer.cc #, c-format @@ -3540,23 +3820,23 @@ 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" +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" +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" +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" +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" @@ -3568,7 +3848,7 @@ msgstr "Serwer HTTP przysłał nieprawidłowy nagłówek odpowiedzi" #: methods/basehttp.cc msgid "Bad header line" -msgstr "Nieprawidłowa linia nagłówka" +msgstr "Nieprawidłowy wiersz nagłówka" #: methods/basehttp.cc msgid "The HTTP server sent an invalid Content-Length header" @@ -3594,10 +3874,12 @@ msgstr "Błędne dane nagłówka" msgid "Connection failed" msgstr "Połączenie nie powiodło się" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" +"Plik ma nieoczekiwany rozmiar (%llu != %llu). Czyżby następowała w tej " +"chwili synchronizacja serwerów lustrzanych?" #: methods/basehttp.cc #, c-format @@ -3605,6 +3887,8 @@ msgid "" "Automatically disabled %s due to incorrect response from server/proxy. (man " "5 apt.conf)" msgstr "" +"Automatycznie wyłączanie %s, ze względu na nieprawidłową odpowiedź serwera/" +"serwera pośredniczącego (man 5 apt.conf)" #: methods/basehttp.cc msgid "Internal error" @@ -3636,7 +3920,7 @@ msgstr "Nie udało się odmontować CD-ROM-u w %s, być może wciąż jest używ msgid "Disk not found." msgstr "Nie odnaleziono dysku." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Nie odnaleziono pliku" @@ -3644,7 +3928,7 @@ msgstr "Nie odnaleziono pliku" #: methods/connect.cc #, c-format msgid "Direct connection to %s domains is blocked by default." -msgstr "" +msgstr "Bezpośrednie łączenie z domenami %s jest domyślnie blokowane." #: methods/connect.cc #, c-format @@ -3652,10 +3936,9 @@ msgid "[IP: %s %s]" msgstr "[IP: %s %s]" #: methods/connect.cc -#, fuzzy, c-format -#| msgid "Connecting to %s (%s)" +#, c-format msgid "Connected to %s (%s)" -msgstr "Łączenie z %s (%s)" +msgstr "Połączony z %s (%s)" #: methods/connect.cc methods/http.cc #, c-format @@ -3672,7 +3955,7 @@ msgstr "Nie udało się utworzyć gniazda dla %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Nie udało się zainicjalizować połączenia z %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Nie udało się" @@ -3686,9 +3969,7 @@ msgstr "Nie udało się połączyć z %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Łączenie z %s" @@ -3704,9 +3985,9 @@ msgid "Temporary failure resolving '%s'" msgstr "Tymczasowy błąd przy tłumaczeniu \"%s\"" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "System error resolving '%s:%s'" -msgstr "Coś niewłaściwego stało się przy tłumaczeniu \"%s:%s\" (%i - %s)" +msgstr "Błąd systemowy przy tłumaczeniu \"%s:%s\"" #: methods/connect.cc #, c-format @@ -3726,150 +4007,14 @@ msgstr "Nie udało się wykonać operacji stat" 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 +#: methods/gpgv.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ć " +msgid "untrusted public key algorithm: %s" +msgstr "niezaufany algorytm klucza publicznego: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3878,6 +4023,8 @@ msgstr "" msgid "" "Signed file isn't valid, got '%s' (does the network require authentication?)" msgstr "" +"Podpisany plik nie jest prawidłowy, otrzymano \"%s\" (czy sieć wymaga " +"uwierzytelnienia?)" #: methods/gpgv.cc msgid "At least one invalid signature was encountered." @@ -3887,30 +4034,29 @@ msgstr "Napotkano przynajmniej jeden nieprawidłowy podpis." 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!" +"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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Nieznany błąd podczas uruchamiania apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -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 algorithm (%s)" -msgstr "" +msgstr "Podpis klucza %s używa słabego algorytmu (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -3944,651 +4090,149 @@ msgstr "Operacja select nie powiodła się" msgid "Connection timed out" msgstr "Przekroczenie czasu połączenia" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Nie udało się obliczyć skrótu pliku" + #: 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" -# Bezpieczniej jest nie używać tu polskich znaków. -#~ msgid "Yes, do as I say!" -#~ msgstr "Tak, jestem pewien!" - #, 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" -#~ " ?] " - -#, c-format -#~ msgid "Line %u too long in source list %s." -#~ msgstr "Linia %u w liście źródeł %s jest zbyt długa." - -#~ msgid "Error writing to output file" -#~ msgstr "Błąd przy pisaniu do pliku wyjściowego" - -#~ msgid "Error writing to the file" -#~ msgstr "Błąd przy pisaniu do pliku" - -#~ msgid "Invalid archive member header %s" -#~ msgstr "Nieprawidłowy nagłówek składnika archiwum: %s" - -#~ msgid "The path %s is too long" -#~ msgstr "Ścieżka %s jest zbyt długa" - -#~ msgid "Unpacking %s more than once" -#~ msgstr "Wypakowanie %s więcej niż raz" - -#~ msgid "The directory %s is diverted" -#~ msgstr "Ominięcie katalogu %s" - -#~ msgid "The package is trying to write to the diversion target %s/%s" -#~ msgstr "Pakiet próbuje pisać do celu ominięcia %s/%s" - -#~ msgid "The diversion path is too long" -#~ msgstr "Zbyt długa ścieżka ominięcia" - -#~ msgid "The directory %s is being replaced by a non-directory" -#~ msgstr "Katalog %s został zastąpiony obiektem nie będącym katalogiem" - -#~ msgid "Failed to locate node in its hash bucket" -#~ msgstr "Nie udało się znaleźć węzła w jego kubełku haszującym" - -#~ msgid "The path is too long" -#~ msgstr "Ścieżka jest zbyt długa" - -#~ msgid "Overwrite package match with no version for %s" -#~ msgstr "Nadpisujący pakiet nie pasuje z wersją %s" - -#~ msgid "File %s/%s overwrites the one in the package %s" -#~ msgstr "Plik %s/%s nadpisuje plik w pakiecie %s" - -#~ msgid "Unable to stat %s" -#~ msgstr "Nie można wykonać operacji stat na %s" - -#~ msgid "DropNode called on still linked node" -#~ msgstr "DropNode wywołane na wciąż podłączonym węźle" - -#~ msgid "Failed to locate the hash element!" -#~ msgstr "Nie udało się odnaleźć elementu tablicy haszującej!" - -#~ msgid "Failed to allocate diversion" -#~ msgstr "Nie udało się utworzyć ominięcia" - -#~ msgid "Internal error in AddDiversion" -#~ msgstr "Błąd wewnętrzny w AddDiversion" - -#~ msgid "Trying to overwrite a diversion, %s -> %s and %s/%s" -#~ msgstr "Próba nadpisania ominięcia, %s -> %s i %s/%s" - -#~ msgid "Double add of diversion %s -> %s" -#~ msgstr "Podwójne dodanie ominięcia %s -> %s" - -#~ msgid "Duplicate conf file %s/%s" -#~ msgstr "Zduplikowany plik konfiguracyjny %s/%s" - -#~ msgid "Unable to change to %s" -#~ msgstr "Nie udało się przejść do %s" - -#~ msgid "Removed %s" -#~ msgstr "Pakiet %s został usunięty" - -#~ msgid "Package file %s is out of sync." -#~ msgstr "Plik pakietu %s jest przestarzały." - -#~ 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." - -#~ msgid "No mirror file '%s' found " -#~ msgstr "Nie znaleziono pliku serwera lustrzanego \"%s\"" - -#~ msgid "Can not read mirror file '%s'" -#~ msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\"" - -#, fuzzy -#~ msgid "No entry found in mirror file '%s'" -#~ msgstr "Nie udało się otworzyć pliku serwera lustrzanego \"%s\"" - -#~ msgid "[Mirror: %s]" -#~ msgstr "[Serwer lustrzany: %s]" - -#~ msgid "Opening configuration file %s" -#~ msgstr "Otwieranie pliku konfiguracyjnego %s" - -#~ msgid "Opening %s" -#~ msgstr "Otwieranie %s" - -#~ 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)" - -#~ 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 "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 "GPG error: %s: %s" +#~ msgstr "Błąd GPG: %s: %s" +# FIXME: Skoordynować tłumaczenie DEPRECATION z apt-key(8) +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." #~ 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)" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." #~ 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." +#~ "Klucz jest przechowywany w przestarzałym zbiorze kluczy trusted.gpg (%s), " +#~ "więcej informacji w rozdziale DEPRECATION w podręczniku apt-key(8)." +#, c-format #~ msgid "" -#~ "Using CD-ROM mount point %s\n" -#~ "Mounting CD-ROM\n" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." #~ msgstr "" -#~ "Użycie %s jako punktu montowania CD-ROM-u\n" -#~ "Montowanie CD-ROM-u\n" +#~ "Metoda \"%s\" jest nieobsługiwana i domyślnie wyłączona. Proszę rozważyć " +#~ "przejście na http(s). Aby włączyć ją ponownie, konieczne jest ustawienie " +#~ "Dir::Bin::Methods::%s na \"%s\"." -#~ 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 "Logging in" +#~ msgstr "Logowanie się" -#~ 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 "Unable to determine the peer name" +#~ msgstr "Nie można określić nazwy zdalnego systemu" -#~ msgid "Ignore unavailable target release '%s' of package '%s'" -#~ msgstr "Ignorowanie niedostępnego wydania docelowego %s pakietu %s" +#~ msgid "Unable to determine the local name" +#~ msgstr "Nie udało się określić nazwy lokalnego systemu" -#~ msgid "Downloading %s %s" -#~ msgstr "Pobieranie %s %s" +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Serwer odrzucił połączenie, otrzymana odpowiedź: %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\"" +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Polecenie USER nie powiodło się, odpowiedź serwera: %s" -#~ msgid "MD5Sum mismatch" -#~ msgstr "Błędna suma MD5" +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Polecenie PASS nie powiodło się, odpowiedź serwera: %s" #~ 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" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." #~ 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" +#~ "Określono serwer pośredniczący, ale nie określono skryptu rejestrowania, " +#~ "Acquire::ftp::ProxyLogin jest puste." -#~ 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!" +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" #~ 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" +#~ "Polecenie skryptu rejestrowania \"%s\" nie powiodło się, odpowiedź " +#~ "serwera: %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" +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Polecenie TYPE nie powiodło się, odpowiedź serwera: %s" -#~ msgid "Malformed override %s line %lu #2" -#~ msgstr "Nieprawidłowa linia %2$lu #2 pliku override %1$s" +#~ msgid "Connection timeout" +#~ msgstr "Przekroczenie czasu połączenia" -#~ msgid "Malformed override %s line %lu #3" -#~ msgstr "Nieprawidłowa linia %2$lu #3 pliku override %1$s" +#~ msgid "Server closed the connection" +#~ msgstr "Serwer zamknął połączenie" -#~ msgid "decompressor" -#~ msgstr "dekompresor" +#~ msgid "A response overflowed the buffer." +#~ msgstr "Odpowiedź przepełniła bufor." -#~ msgid "read, still have %lu to read but none left" -#~ msgstr "należało przeczytać jeszcze %lu, ale nic nie zostało" +#~ msgid "Protocol corruption" +#~ msgstr "Naruszenie zasad protokołu" -#~ 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 create a socket" +#~ msgstr "Nie udało się utworzyć gniazda" -#~ msgid "" -#~ "Could not perform immediate configuration on already unpacked '%s'. " -#~ "Please see man 5 apt.conf under APT::Immediate-Configure for details." +#~ msgid "Could not connect data socket, connection timed out" #~ 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)" +#~ "Nie udało się połączyć gniazda danych, przekroczenie czasu połączenia" -#~ msgid "Error occurred while processing %s (UsePackage1)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage1)" +#~ msgid "Could not connect passive socket." +#~ msgstr "Nie udało się połączyć pasywnego gniazda." -#~ msgid "Error occurred while processing %s (NewFileDesc1)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileDesc1)" +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo nie było w stanie uzyskać nasłuchującego gniazda" -#~ msgid "Error occurred while processing %s (UsePackage2)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage2)" +#~ msgid "Could not bind a socket" +#~ msgstr "Nie udało się przyłączyć gniazda" -#~ msgid "Error occurred while processing %s (NewFileVer1)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewFileVer1)" +#~ msgid "Could not listen on the socket" +#~ msgstr "Nie udało się nasłuchiwać na gnieździe" -#~ msgid "Error occurred while processing %s (NewVersion%d)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (NewVersion%d)" +#~ msgid "Could not determine the socket's name" +#~ msgstr "Nie udało się określić nazwy gniazda" -#~ msgid "Error occurred while processing %s (UsePackage3)" -#~ msgstr "Wystąpił błąd podczas przetwarzania %s (UsePackage3)" +#~ msgid "Unable to send PORT command" +#~ msgstr "Nie można wysłać polecenia PORT" -#~ 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)" +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Nieznana rodzina adresów %u (AF_*)" -#~ msgid "Couldn't access keyring: '%s'" -#~ msgstr "Nie udało się uzyskać dostępu do bazy kluczy: \"%s\"" +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Polecenie EPRT nie powiodło się, odpowiedź serwera: %s" -#~ msgid "Could not patch file" -#~ msgstr "Nie udało się nałożyć łatki na plik" +#~ msgid "Data socket connect timed out" +#~ msgstr "Przekroczono czas połączenia gniazda danych" -#~ msgid " %4i %s\n" -#~ msgstr " %4i %s\n" +#~ msgid "Unable to accept connection" +#~ msgstr "Nie udało się przyjąć połączenia" -#~ msgid "No source package '%s' picking '%s' instead\n" -#~ msgstr "Brak pakietu źródłowego \"%s\", wybieranie \"%s\" zamiast niego\n" +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nie można pobrać pliku, odpowiedź serwera: \"%s\"" -#~ msgid "%4i %s\n" -#~ msgstr "%4i %s\n" +#~ msgid "Data socket timed out" +#~ msgstr "Przekroczono czas oczekiwania na dane" -#~ msgid "Processing triggers for %s" -#~ msgstr "Przetwarzanie wyzwalaczy dla %s" +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Nie udało się przesłać danych, odpowiedź serwera: \"%s\"" -#~ msgid "Dynamic MMap ran out of room" -#~ msgstr "Brak miejsca dla dynamicznego MMap" +#~ msgid "Query" +#~ msgstr "Info" -#~ 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 "Unable to invoke " +#~ msgstr "Nie można wywołać " -#~ msgid "Line %d too long (max %lu)" -#~ msgstr "Linia %d jest zbyt długa (max %lu)" +#~ msgid "Connection closed prematurely" +#~ msgstr "Połączenie zostało przedwcześnie zamknięte" diff --git a/po/pt.po b/po/pt.po index 9e8a6d3..427b26f 100644 --- a/po/pt.po +++ b/po/pt.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2012-06-29 15:45+0100\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" @@ -51,8 +51,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -119,7 +119,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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 " @@ -128,8 +129,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -191,8 +192,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribuição em conflito: %s (esperado %s mas obtido %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -203,7 +203,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -222,6 +222,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Falhou obter %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -243,13 +250,6 @@ msgstr "Não conseguiu encontrar uma fonte para obter a versão '%s' de '%s'" msgid "Changelog unavailable for %s=%s" msgstr "Changlog para %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -654,6 +654,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Erro de sintaxe %s:%u: Lixo extra no final do ficheiro" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -771,11 +795,11 @@ msgstr "O sub-processo %s retornou um código de erro (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "O sub-processo %s terminou inesperadamente" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Erro de leitura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Erro de escrita" @@ -1100,6 +1124,12 @@ msgstr "" msgid "Not locked" msgstr "Sem acesso exclusivo" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1291,6 +1321,16 @@ msgstr "Preparar para receber solução" msgid "External solver failed without a proper error message" msgstr "O resolvedor externo falhou sem uma mensagem de erro adequada" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "A calcular a actualização" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Total de dependências: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Executar resolvedor externo" @@ -1605,10 +1645,6 @@ 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 @@ -1775,12 +1811,6 @@ msgstr "O pacote '%s' não está instalado, por isso não será removido\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Note, a seleccionar '%s' em vez de '%s'\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1884,6 +1914,12 @@ msgstr "A seguinte informação pode ajudar a resolver a situação:" msgid "Broken packages" msgstr "Pacotes estragados" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Erro de escrita" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1898,10 +1934,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Não foi possível obter alguns arquivos, tente talvez correr apt-get update " +"Não foi possível obter alguns arquivos, tente talvez correr apt update " "ou tente com --fix-missing?" #: apt-private/private-install.cc @@ -1939,6 +1975,12 @@ 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" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "A obter %s %s" + #. 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 @@ -1946,6 +1988,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "É necessário obter %sB/%sB de arquivos.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "A obter %s %s" + #. 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 @@ -1953,14 +2001,56 @@ msgstr "É necessário obter %sB/%sB de arquivos.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Label Guardada: %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 @@ -1978,19 +2068,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Deseja continuar?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Deseja continuar?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Abortado." @@ -2049,6 +2138,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Erro Interno, o AutoRemover estragou coisas" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2071,16 +2167,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2090,6 +2178,11 @@ msgstr "Pacotes sugeridos:" msgid "Recommended packages:" msgstr "Pacotes recomendados:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2225,10 +2318,32 @@ msgstr " ou" msgid "The following packages have unmet dependencies:" msgstr "Os pacotes a seguir têm dependências não satisfeitas:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Falha ao satisfazer a dependência %s para %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "A instalar %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Total de dependências: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Serão REMOVIDOS os seguintes pacotes:" @@ -2239,6 +2354,16 @@ msgstr "Serão REMOVIDOS os seguintes pacotes:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: 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:" @@ -2247,10 +2372,24 @@ msgstr "Serão mantidos em suas versões actuais os seguintes pacotes:" msgid "The following packages will be upgraded:" msgstr "Serão actualizados os seguintes pacotes:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Pacotes Marcados:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Os seguintes pacotes mantidos serão mudados:" @@ -2268,26 +2407,53 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "A instalar %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalados, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "A instalar %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu a que foi feito o downgrade, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "A obter %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2315,7 +2481,7 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2497,8 +2663,8 @@ msgstr "%s não tem dependências de compilação.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" @@ -2539,6 +2705,11 @@ msgstr "Falha ao baixar %s %s\n" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2556,12 +2727,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2607,6 +2803,12 @@ msgstr " Pacotes virtuais misturados: " msgid " Missing: " msgstr " Faltam: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Total de versões distintas: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Total de versões distintas: " @@ -2941,6 +3143,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid " files " +msgid "hash file" +msgstr " falhou." + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3191,12 +3399,20 @@ msgstr "" msgid "edit the source information file" msgstr "A ler a informação de estado" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Falha ao satisfazer a dependência %s para %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Configuração pré-definida errada!" @@ -3399,7 +3615,7 @@ msgstr "Algoritmo de compressão desconhecido '%s'" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Falha ao criar pipe IPC para subprocesso" @@ -3518,23 +3734,23 @@ 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" +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" +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" +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" +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" @@ -3572,7 +3788,7 @@ msgstr "Dados de cabeçalho errados" msgid "Connection failed" msgstr "A ligação falhou" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3614,7 +3830,7 @@ msgstr "Impossível desmontar o CD-ROM em %s, pode ainda estar a ser utilizado." msgid "Disk not found." msgstr "Disco não encontrado." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Ficheiro não encontrado" @@ -3650,7 +3866,7 @@ msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Não posso iniciar a ligação para %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Falhou" @@ -3664,9 +3880,7 @@ msgstr "Não foi possível ligar em %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "A ligar a %s" @@ -3704,148 +3918,14 @@ msgstr "Falhou o stat" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3867,22 +3947,20 @@ msgstr "" "digital da chave?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Erro desconhecido ao executar apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3921,18 +3999,138 @@ msgstr "A selecção falhou" msgid "Connection timed out" msgstr "O tempo da ligação expirou" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problema ao calcular o hash do ficheiro" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Erro GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "A identificar-se no sistema" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Não foi possível determinar o nome do posto" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Não foi possível determinar o nome local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "O servidor recusou a ligação e respondeu: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER falhou, o servidor respondeu: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS falhou, o servidor respondeu: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "O comando de script de login '%s' falhou, o servidor respondeu: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE falhou, o servidor respondeu: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Foi atingido o tempo limite de ligação" + +#~ msgid "Server closed the connection" +#~ msgstr "O servidor fechou a ligação" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Uma resposta sobrecarregou o buffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Corrupção de protocolo" + +#~ msgid "Could not create a socket" +#~ msgstr "Não foi possível criar um socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Não foi possível ligar socket de dados, a ligação expirou" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Não foi possível ligar socket passivo." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo não foi capaz de obter um socket de escuta" + +#~ msgid "Could not bind a socket" +#~ msgstr "Não foi possível fazer o bind a um socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Não foi possível executar listen no socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Não foi possível determinar o nome do socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Não foi possível enviar o comando PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Família de endereços %u desconhecida (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT falhou, o servidor respondeu: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Ligação de socket de dados expirou" + +#~ msgid "Unable to accept connection" +#~ msgstr "Impossível aceitar ligação" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Não foi possível obter o ficheiro, o servidor respondeu '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Expirou o tempo do socket de dados" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "A transferência de dados falhou, o servidor respondeu '%s'" + +#~ msgid "Query" +#~ msgstr "Pesquisa" + +#~ msgid "Unable to invoke " +#~ msgstr "Não foi possível invocar " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Ligação encerrada prematuramente" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Instalado: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Os seguintes pacotes mantidos serão mudados:" + #~ msgid "Yes, do as I say!" #~ msgstr "Sim, faça como eu digo!" @@ -4152,8 +4350,8 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos" #~ " -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" +#~ "Para mais informações veja as páginas do manual apt-cache(8) e " +#~ "apt.conf(5).\n" #, fuzzy #~ msgid "" @@ -4364,9 +4562,6 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos" #~ 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'" @@ -4662,8 +4857,8 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos" #~ 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." +#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar " +#~ "os .debs." #~ msgid "Extract " #~ msgstr "extra" @@ -4686,9 +4881,6 @@ msgstr "Ficheiros vazios não podem ser arquivos válidos" #~ 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" diff --git a/po/pt_BR.po b/po/pt_BR.po index ed6f964..01eec75 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,74 +1,86 @@ # Brazilian Portuguese translation for apt. +# # Licensing is complex as the msgid come from several files, please see # the individual files for licensing information. # -# Copyright (C) 2002 Free Software Foundation, Inc. +# Copyright (C) 2002-2025 Free Software Foundation, Inc. # Gustavo Noronha Silva , 2002. # Andre Luis Lopes , 2002-2005. # Felipe Augusto van de Wiel (faw) , 2006-2008. +# Rafael Fontenelle , 2022-2025. +# msgid "" msgstr "" -"Project-Id-Version: apt 1.0.5\n" +"Project-Id-Version: apt 2.9.33\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2008-11-17 02:33-0200\n" -"Last-Translator: Felipe Augusto van de Wiel (faw) \n" -"Language-Team: Brazilian Portuguese \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-03-15 04:08+0000\n" +"Last-Translator: Rafael Fontenelle \n" +"Language-Team: l10n Portuguese \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" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Gtranslator 47.1\n" #: apt-pkg/acquire-item.cc msgid "" "Updating from such a repository can't be done securely, and is therefore " "disabled by default." msgstr "" +"A atualização de tal repositório não pode ser feita com segurança e, " +"portanto, está desabilitada por padrão." #: apt-pkg/acquire-item.cc msgid "" "Data from such a repository can't be authenticated and is therefore " "potentially dangerous to use." msgstr "" +"Os dados de tal repositório não podem ser autenticados e, portanto, são " +"potencialmente perigosos de usar." #: apt-pkg/acquire-item.cc msgid "" "See apt-secure(8) manpage for repository creation and user configuration " "details." msgstr "" +"Veja a página man apt-secure(8) para detalhes sobre criação de repositório e " +"configuração de usuário." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is no longer signed." -msgstr "O diretório %s é desviado (\"diverted\")" +msgstr "O repositório '%s' não está mais assinado." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' no longer has a Release file." -msgstr "O diretório %s é desviado (\"diverted\")" +msgstr "O repositório '%s' não tem mais um arquivo Release." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" +"Isso normalmente não é permitido, mas a opção " +"Acquire::AllowDowngradeToInsecureRepositories foi fornecida para " +"sobrescrever isso." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' is not signed." -msgstr "O diretório %s é desviado (\"diverted\")" +msgstr "O repositório '%s' não está assinado." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' does not have a Release file." -msgstr "O diretório %s é desviado (\"diverted\")" +msgstr "O repositório '%s' não tem um arquivo Release." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' provides only weak security information." -msgstr "O diretório %s é desviado (\"diverted\")" +msgstr "O repositório '%s' fornece apenas informações fracas de segurança." #: apt-pkg/acquire-item.cc ftparchive/writer.cc #, c-format @@ -87,25 +99,25 @@ msgstr "Hash Sum incorreto" #: apt-pkg/acquire-item.cc msgid "Insufficient information available to perform this download securely" msgstr "" +"Informações disponíveis insuficientes para realizar este download de forma " +"segura" #: 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)." +msgstr "falha ao renomear, %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" +msgstr "Formato de arquivo inválido" #: apt-pkg/acquire-item.cc -#, fuzzy msgid "Signature error" -msgstr "Erro de escrita" +msgstr "Erro de assinatura" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: apt-pkg/acquire-item.cc methods/gpgv.cc @@ -114,19 +126,25 @@ msgid "" "Clearsigned file isn't valid, got '%s' (does the network require " "authentication?)" msgstr "" +"Arquivo assinado em texto simples não é válido, obteve '%s' (a rede requer " +"autenticação?)" #: 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" +"Ocorreu um erro durante a verificação da assinatura. O repositório não é " +"atualizado e os arquivos de índice anteriores serão usados. Verificação de " +"assinatura OpenPGP falhou: %s: %s" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "Verificação de assinatura OpenPGP falhou: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -134,6 +152,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" +"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não " +"tem o componente '%s' (componente escrito incorretamente no sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -141,6 +161,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't support " "architecture '%s'" msgstr "" +"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não " +"tem suporte à arquitetura '%s'" #: apt-pkg/acquire-item.cc #, c-format @@ -148,6 +170,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' does not seem to " "provide it (sources.list entry misspelt?)" msgstr "" +"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' não " +"parece fornecê-lo (entrada no sources.list escrita incorretamente?)" #: apt-pkg/acquire-item.cc #, c-format @@ -155,6 +179,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' provides only " "weak security information for it" msgstr "" +"Pulando a aquisição do arquivo configurado '%s', pois o repositório '%s' " +"fornece apenas informações fracas de segurança para ele" #. 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 @@ -165,6 +191,8 @@ msgid "" "Release file for %s is expired (invalid since %s). Updates for this " "repository will not be applied." msgstr "" +"O arquivo Release para %s expirou (inválido desde %s). Atualizações para " +"este repositório não serão aplicadas." #. TRANSLATOR: The first %s is the URL of the bad Release file, the second is #. the time until the file will be valid - formatted in the same way as in @@ -175,29 +203,33 @@ msgid "" "Release file for %s is not valid yet (invalid for another %s). Updates for " "this repository will not be applied." msgstr "" +"Arquivo Release para %s não é válido até o momento (inválido por mais %s). " +"Atualizações para este repositório não serão aplicadas." #: apt-pkg/acquire-item.cc #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" -msgstr "" +msgstr "Distribuição conflitante: %s (esperava %s, mas obteve %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" +msgstr "O repositório '%s' alterou seu valor '%s' de '%s' para '%s'" #: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" +"O repositório '%s' alterou sua prioridade padrão para %s de %hi para %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" msgstr "" +"Mais informações sobre isso podem ser encontradas online nas notas de " +"lançamento em: %s" #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) #: apt-pkg/acquire-item.cc @@ -206,11 +238,22 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" +"Isso deve ser aceito explicitamente antes que as atualizações para este " +"repositório possam ser aplicadas. Veja a página man %s para detalhes." #: apt-pkg/acquire-item.cc apt-pkg/update.cc apt-private/private-download.cc #, c-format msgid "Failed to fetch %s %s" -msgstr "Falhou ao buscar %s %s" +msgstr "Falhou ao obter %s %s" + +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Os repositórios devem fornecer um arquivo InRelease assinado, mas nenhum foi " +"encontrado em %s." #: apt-pkg/acquire-item.cc #, c-format @@ -219,36 +262,29 @@ msgid "" "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)." +"que você precisa corrigir 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 "" +msgstr "Não foi possível encontrar uma fonte para baixar a versão '%s' de '%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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" +msgid "Changelog unavailable for %s=%s" +msgstr "Changelog indisponível para %s=%s" #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" +msgstr "O método '%s' está desabilitado explicitamente via configuração." #: 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 "" +msgstr "Se você pretendia usar o Tor, lembre-se de usar %s em vez de %s." #: apt-pkg/acquire-worker.cc #, c-format @@ -256,9 +292,9 @@ 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 +#, c-format msgid "Is the package %s installed?" -msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n" +msgstr "O pacote %s está instalado?" #: apt-pkg/acquire-worker.cc #, c-format @@ -266,31 +302,33 @@ msgid "Method %s did not start correctly" msgstr "Método %s não iniciou corretamente" #: apt-pkg/acquire-worker.cc -#, fuzzy, c-format +#, 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." +"Por favor, insira o disco nomeado: '%s' na unidade '%s' e pressione [Enter]." #: apt-pkg/acquire.cc apt-pkg/cdrom.cc -#, fuzzy, c-format +#, c-format msgid "List directory %s is missing." msgstr "Diretório de listas %s está faltando." #: apt-pkg/acquire.cc -#, fuzzy, c-format +#, c-format msgid "Archives directory %s is missing." msgstr "Diretório de arquivos %s está faltando." #: apt-pkg/acquire.cc -#, fuzzy, c-format +#, c-format msgid "Unable to lock directory %s" -msgstr "Impossível criar trava no diretório de listas" +msgstr "Não é possível travar o diretório %s" #: apt-pkg/acquire.cc #, c-format msgid "No sandbox user '%s' on the system, can not drop privileges" msgstr "" +"Nenhum usuário de isolamento '%s' no sistema, então não é possível descartar " +"privilégios" #: apt-pkg/acquire.cc #, c-format @@ -298,11 +336,13 @@ msgid "" "Download is performed unsandboxed as root as file '%s' couldn't be accessed " "by user '%s'." msgstr "" +"O download é executado sem isolamento e como root, pois o arquivo '%s' não " +"pôde ser acessado pelo usuário '%s'." #: apt-pkg/acquire.cc apt-pkg/clean.cc -#, fuzzy, c-format +#, c-format msgid "Clean of %s is not supported" -msgstr "Tipo de arquivo de índice '%s' não é suportado" +msgstr "A limpeza de %s não é suportada" #. Only warn if there are no sources.list.d. #. Only warn if there is no sources.list file. @@ -311,7 +351,7 @@ msgstr "Tipo de arquivo de índice '%s' não é suportado" #: apt-pkg/policy.cc apt-pkg/sourcelist.cc #, c-format msgid "Unable to read %s" -msgstr "Impossível ler %s" +msgstr "Não é possível ler %s" #: apt-pkg/acquire.cc #, c-format @@ -337,11 +377,12 @@ msgid "" "held packages." msgstr "" "Erro, pkgProblemResolver::Resolve gerou falhas, isto pode ser causado por " -"pacotes mantidos (hold)." +"pacotes retidos." #: apt-pkg/algorithms.cc msgid "Unable to correct problems, you have held broken packages." -msgstr "Impossível corrigir problemas, você manteve (hold) pacotes quebrados." +msgstr "" +"Não é possível corrigir os problemas, você tem pacotes retidos quebrados." #: apt-pkg/cachefile.cc msgid "The package lists or status file could not be parsed or opened." @@ -351,7 +392,7 @@ msgstr "" #: 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" +msgstr "Você terá que executar apt-get update para corrigir esses problemas" #: apt-pkg/cachefile.cc methods/mirror.cc msgid "The list of sources could not be read." @@ -364,44 +405,52 @@ msgid "Regex compilation error - %s" msgstr "Erro de compilação de regex - %s" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find task '%s'" -msgstr "Impossível achar tarefa %s" +msgstr "Não é possível achar tarefa '%s'" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by regex '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível achar qualquer pacote com a regex '%s'" #: apt-pkg/cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by glob '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível achar qualquer pacote com o glob '%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" +msgstr "Não é 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 é possível selecionar versões do pacote '%s', pois ele é 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 é possível selecionar a versão mais nova do pacote '%s', pois ele é " +"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 selecionar a versão candidata do pacote %s, pois ele não " +"possui 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 selecionar a versão instalada do pacote %s, pois ele não está " +"instalado" #: apt-pkg/cacheset.cc #, c-format @@ -409,6 +458,8 @@ msgid "" "Can't select installed nor candidate version from package '%s' as it has " "neither of them" msgstr "" +"Não é possível selecionar a versão instalada ou candidata do pacote '%s', " +"pois ele não possui nenhuma das duas" #: apt-pkg/cacheset.cc #, c-format @@ -444,7 +495,7 @@ msgstr "Identificando... " #: apt-pkg/cdrom.cc #, c-format msgid "Stored label: %s\n" -msgstr "Rótulo armazenado: %s \n" +msgstr "Rótulo armazenado: %s\n" #: apt-pkg/cdrom.cc msgid "Scanning disc for index files...\n" @@ -464,6 +515,8 @@ msgid "" "Unable to locate any package files, perhaps this is not a Debian Disc or the " "wrong architecture?" msgstr "" +"Não é possível localizar os arquivos do pacote. Talvez não seja um Disco " +"Debian ou seja a arquitetura incorreta?" #: apt-pkg/cdrom.cc #, c-format @@ -498,7 +551,7 @@ 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." +msgstr "Não é possível executar \"stat\" %s." #: apt-pkg/contrib/arfile.cc msgid "Invalid archive signature" @@ -523,25 +576,29 @@ msgstr "Falhou ao ler os cabeçalhos do arquivo" #: 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" +msgstr "Não é possí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" +msgstr "Não é possível executar \"stat\" no cdrom" #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, 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." +msgstr "" +"Opção de linha de comando '%c' [de %s] não é compreendida na combinação com " +"outras opções." #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, 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" +msgstr "" +"Opção de linha de comando %s não é compreendida na combinação com outras " +"opções" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -621,20 +678,45 @@ 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 +#, 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" +"Erro de sintaxe %s:%u: Diretivas clear requerem 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 arquivo" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Erro:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Aviso:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Nota:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Auditoria:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Depuração:" + #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format +#, c-format msgid "Cannot find a configured compressor for '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível encontrar um compactador configurado para '%s'" #: apt-pkg/contrib/extracttar.cc msgid "Corrupted archive" @@ -645,20 +727,19 @@ msgid "Tar checksum failed, archive corrupted" msgstr "Checksum do arquivo tar falhou, arquivo corrompido" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Tipo de cabeçalho TAR %u desconhecido, membro %s" +msgstr "Tipo de cabeçalho TAR %u desconhecido" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem unlinking the file %s" -msgstr "Problema removendo o arquivo" +msgstr "Problema ao remover o arquivo %s" #: 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" +msgstr "Evitando usar travamento para arquivo de trava somente leitura %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -668,50 +749,59 @@ 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" +msgstr "Evitando usar travamento para arquivo de trava montado via nfs %s" +# held aqui não tem o sentido de retenção de pacotes #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Não foi possível obter trava %s" +msgstr "" +"Não foi possível obter a trava %s. Ela está sendo mantida pelo processo %d" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s. It is held by process %d (%s)" msgstr "" +"Não foi possível obter a trava %s. Ela está sendo mantida pelo processo %d " +"(%s)" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s" -msgstr "Não foi possível obter trava %s" +msgstr "Não foi possível obter a trava %s" #: apt-pkg/contrib/fileutl.cc msgid "" "Be aware that removing the lock file is not a solution and may break your " "system." msgstr "" +"Esteja ciente de que remover o arquivo de trava não é uma solução e pode " +"quebrar seu sistema." #: apt-pkg/contrib/fileutl.cc #, c-format msgid "List of files can't be created as '%s' is not a directory" -msgstr "" +msgstr "A lista de arquivos não pode ser criada porque '%s' não é um diretório" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Ignoring '%s' in directory '%s' as it is not a regular file" -msgstr "" +msgstr "Ignorando '%s' no diretório '%s', pois não é um arquivo comum" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Ignoring file '%s' in directory '%s' as it has no filename extension" msgstr "" +"Ignorando o arquivo '%s' no diretório '%s', pois não possui extensão de nome " +"de arquivo" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "" "Ignoring file '%s' in directory '%s' as it has an invalid filename extension" msgstr "" +"Ignorando o arquivo '%s' no diretório '%s', pois possui uma extensão de nome " +"de arquivo inválida" #: apt-pkg/contrib/fileutl.cc apt-pkg/contrib/gpgv.cc apt-pkg/deb/debsystem.cc #: cmdline/apt-dump-solver.cc @@ -722,40 +812,40 @@ 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." +msgstr "Subprocesso %s recebeu uma falha de segmentação." #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Sub-process %s received signal %u." -msgstr "Sub-processo %s recebeu uma falha de segmentação." +msgstr "Subprocesso %s recebeu um 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 "Sub-processo %s retornou um código de erro (%u)" +msgstr "Subprocesso %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" +msgstr "Subprocesso %s finalizou inesperadamente" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Erro de leitura" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Erro de escrita" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem closing the gzip file %s" -msgstr "Problema fechando o arquivo" +msgstr "Problema ao fechar o arquivo gzip %s" #: apt-pkg/contrib/fileutl.cc msgid "Unexpected end of file" -msgstr "" +msgstr "Fim de arquivo inesperado" #: apt-pkg/contrib/fileutl.cc msgid "Failed to create subprocess IPC" @@ -771,72 +861,70 @@ msgid "Could not open file %s" msgstr "Não foi possível abrir arquivo %s" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Could not open file descriptor %d" -msgstr "Não foi possível abrir \"pipe\" para %s" +msgstr "Não foi possível abrir o descritor de arquivo %d" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "read, still have %llu to read but none left" -msgstr "leitura, ainda restam %lu para serem lidos mas nenhum deixado" +msgstr "leitura, ainda restam %llu para serem lidos mas nenhum restante" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, 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" +msgstr "escrita, ainda restam %llu para gravar mas não foi possível" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem closing the file %s" -msgstr "Problema fechando o arquivo" +msgstr "Problema ao fechar o arquivo %s" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Problem renaming the file %s to %s" -msgstr "Problema sincronizando o arquivo" +msgstr "Problema ao renomear o arquivo %s para %s" #: apt-pkg/contrib/fileutl.cc msgid "Problem syncing the file" -msgstr "Problema sincronizando o arquivo" +msgstr "Problema ao sincronizar o arquivo" #: apt-pkg/contrib/fileutl.cc -#, fuzzy, c-format +#, c-format msgid "Unable to mkstemp %s" -msgstr "Impossível executar \"stat\" em %s" +msgstr "Não é possível executar \"mkstemp\" em %s" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Unable to write to %s" -msgstr "Impossível escrever para %s" +msgstr "Não é possí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 +#, c-format msgid "Couldn't make mmap of %llu bytes" -msgstr "Não foi possível fazer \"mmap\" de %lu bytes" +msgstr "Não foi possível fazer \"mmap\" de %llu bytes" #: apt-pkg/contrib/mmap.cc -#, fuzzy, c-format +#, c-format msgid "Couldn't duplicate file descriptor %i" -msgstr "Não foi possível abrir \"pipe\" para %s" +msgstr "Não foi possível duplicar o descritor de arquivo %i" #: apt-pkg/contrib/mmap.cc -#, fuzzy msgid "Unable to close mmap" -msgstr "Impossível abrir %s" +msgstr "Não é possível fechar mmap" #: apt-pkg/contrib/mmap.cc -#, fuzzy msgid "Unable to synchronize mmap" -msgstr "Impossível invocar " +msgstr "Não é possível 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" +msgstr "Não foi possível fazer mmap de %lu bytes" #: apt-pkg/contrib/mmap.cc msgid "Failed to truncate file" @@ -848,6 +936,8 @@ msgid "" "Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start. " "Current value: %lu. (man 5 apt.conf)" msgstr "" +"MMap dinâmico ficou sem espaço. Aumente o tamanho do APT::Cache-Start. Valor " +"atual: %lu. (man 5 apt.conf)" #: apt-pkg/contrib/mmap.cc #, c-format @@ -855,11 +945,15 @@ msgid "" "Unable to increase the size of the MMap as the limit of %lu bytes is already " "reached." msgstr "" +"Não é possível aumentar o tamanho do MMap, pois o limite de %lu bytes já foi " +"atingido." #: apt-pkg/contrib/mmap.cc msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" +"Não é possível aumentar o tamanho do MMap, pois o crescimento automático foi " +"desabilitado pelo usuário." #: apt-pkg/contrib/netrc.cc #, c-format @@ -867,6 +961,8 @@ msgid "" "%s: Credentials for %s match, but the protocol is not encrypted. Annotate " "with %s:// to use." msgstr "" +"%s: As credenciais para %s correspondem, mas o protocolo não está " +"criptografado. Anote com %s:// para usar." #: apt-pkg/contrib/progress.cc #, c-format @@ -876,50 +972,50 @@ msgstr "%c%s... Erro!" #: apt-pkg/contrib/progress.cc #, c-format msgid "%c%s... Done" -msgstr "%c%s... Pronto" +msgstr "%c%s... Concluído" #: apt-pkg/contrib/progress.cc msgid "..." -msgstr "" +msgstr "..." #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s... Pronto" +msgstr "%c%s... %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %llus" -msgstr "%c%s... Pronto" +msgstr "%c%s... %llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format +#, c-format msgid "%c%s... %u%%" -msgstr "%c%s... Pronto" +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 "" +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 "" +msgstr "%lih %limin %lis" #. TRANSLATOR: min means minutes, s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%limin %lis" -msgstr "" +msgstr "%limin %lis" #. TRANSLATOR: s means seconds #: apt-pkg/contrib/strutl.cc #, c-format msgid "%lis" -msgstr "" +msgstr "%lis" #: apt-pkg/contrib/strutl.cc #, c-format @@ -941,10 +1037,9 @@ msgid "Unparsable control file" msgstr "Arquivo de controle não interpretável" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Não foi possível obter trava %s" +msgstr "Não foi possível ler os metadados de %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -952,7 +1047,7 @@ msgstr "Não foi possível obter trava %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s wants to acquire the same file (%s) as %s from source %s" -msgstr "" +msgstr "O alvo %s deseja adquirir o mesmo arquivo (%s) que %s da fonte %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; filename and linenumber of @@ -960,22 +1055,22 @@ msgstr "" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "" +msgstr "O alvo %s (%s) está configurado várias vezes em %s e %s" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "Unable to parse Release file %s" -msgstr "Impossível analisar arquivo de pacote %s (1)" +msgstr "Não é possível analisar o arquivo Release %s" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "No sections in Release file %s" -msgstr "Nota, selecionando %s ao invés de %s\n" +msgstr "Nenhuma seção no arquivo Release %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "No Hash entry in Release file %s" -msgstr "" +msgstr "Nenhuma entrada Hash no arquivo Release %s" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -983,49 +1078,56 @@ msgid "" "No Hash entry in Release file %s which is considered strong enough for " "security purposes" msgstr "" +"Nenhuma entrada Hash no arquivo Release %s que é considerada forte o " +"suficiente para fins de segurança" #: apt-pkg/deb/debmetaindex.cc -#, fuzzy, c-format +#, c-format msgid "Invalid '%s' entry in Release file %s" -msgstr "Linha inválida no arquivo de desvios: %s" +msgstr "Entrada '%s' inválida no arquivo 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 conflitantes definidos para a opção %s em relação à fonte %s %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Invalid value set for option %s regarding source %s %s (%s)" -msgstr "" +msgstr "Valor inválido definido para a opção %s em relação à fonte %s %s (%s)" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" msgstr "" +"Valores conflitantes definidos para a opção %s em relação à fonte %s %s: %s !" +"= %s" #: 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)" +msgstr "Não é possível analisar arquivo de pacote %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "Aguardando por cabeçalhos" +msgstr "Aguardando por trava de cache: %s" #: apt-pkg/deb/debsystem.cc #, c-format msgid "" "Unable to acquire the dpkg frontend lock (%s), is another process using it?" msgstr "" +"Não é possível adquirir a trava da interface do dpkg (%s), outro processo " +"está usando-a?" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "Impossível criar trava no diretório de listas" +msgstr "" +"Não é possível adquirir a trava da interface do dpkg (%s), você é root?" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1034,6 +1136,8 @@ msgstr "Impossível criar trava no diretório de listas" msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " msgstr "" +"dpkg foi interrompido, você deve executar manualmente '%s' para corrigir o " +"problema. " #: apt-pkg/deb/debsystem.cc #, c-format @@ -1041,15 +1145,25 @@ msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" msgstr "" +"Não é possível travar o diretório de administração (%s), outro processo está " +"usando-o?" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format +#, c-format msgid "Unable to lock the administration directory (%s), are you root?" -msgstr "Impossível criar trava no diretório de listas" +msgstr "Não é possível travar o diretório de administração (%s), você é root?" #: apt-pkg/deb/debsystem.cc msgid "Not locked" +msgstr "Sem trava" + +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." msgstr "" +"O executável dpkg definido em Dir::Bin::dpkg está faltando, retornando ao " +"uso do dpkg padrão." #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc @@ -1075,7 +1189,7 @@ msgstr "Preparando para remover completamente %s" #: apt-pkg/deb/dpkgpm.cc #, c-format msgid "Noting disappearance of %s" -msgstr "" +msgstr "Observando o desaparecimento de %s" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1099,9 +1213,9 @@ msgid "Directory '%s' missing" msgstr "Diretório '%s' está faltando" #: apt-pkg/deb/dpkgpm.cc apt-pkg/edsp.cc -#, fuzzy, c-format +#, c-format msgid "Could not open file '%s'" -msgstr "Não foi possível abrir arquivo %s" +msgstr "Não foi possível abrir arquivo '%s'" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1119,9 +1233,9 @@ msgid "Removing %s" msgstr "Removendo %s" #: apt-pkg/deb/dpkgpm.cc -#, fuzzy, c-format +#, c-format msgid "Completely removing %s" -msgstr "%s completamente removido" +msgstr "Removendo completamente %s" #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1129,55 +1243,65 @@ msgid "Completely removed %s" msgstr "%s completamente removido" #: apt-pkg/deb/dpkgpm.cc -#, fuzzy, c-format +#, c-format msgid "Can not write log (%s)" -msgstr "Impossível escrever para %s" +msgstr "Não é possível escrever o log (%s)" #: apt-pkg/deb/dpkgpm.cc msgid "Is /dev/pts mounted?" -msgstr "" +msgstr "/dev/pts está montado?" #: apt-pkg/deb/dpkgpm.cc msgid "Operation was interrupted before it could finish" -msgstr "" +msgstr "A operação foi interrompida antes que pudesse terminar" #: apt-pkg/deb/dpkgpm.cc msgid "No apport report written because MaxReports is reached already" -msgstr "" +msgstr "Nenhum relatório de apport escrito porque MaxReports já foi alcançado" #. check if its not a follow up error #: apt-pkg/deb/dpkgpm.cc msgid "dependency problems - leaving unconfigured" -msgstr "" +msgstr "problemas de dependência - deixando desconfigurado" #: 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 de apport escrito porque a mensagem de erro indica que é um " +"erro de acompanhamento de uma falha anterior." #: apt-pkg/deb/dpkgpm.cc msgid "" "No apport report written because the error message indicates a disk full " "error" msgstr "" +"Nenhum relatório de apport escrito porque a mensagem de erro indica um 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 de apport escrito porque a mensagem de erro indica um erro " +"de memória insuficiente" #: apt-pkg/deb/dpkgpm.cc msgid "" "No apport report written because the error message indicates an issue on the " "local system" msgstr "" +"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro " +"no sistema local" #: apt-pkg/deb/dpkgpm.cc msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" +"Nenhum relatório de apport escrito porque a mensagem de erro indica um erro " +"de E/S do dpkg" #: apt-pkg/depcache.cc msgid "Building dependency tree" @@ -1198,12 +1322,12 @@ 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" +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" +msgstr "Falha ao escrever Arquivo de Estado (StateFile) temporário %s" #: apt-pkg/dirstream.cc #, c-format @@ -1217,39 +1341,47 @@ msgstr "Falhou ao fechar arquivo %s" #: apt-pkg/edsp.cc msgid "Send scenario to solver" -msgstr "" +msgstr "Enviar cenário para o resolvedor" #: apt-pkg/edsp.cc msgid "Send request to solver" -msgstr "" +msgstr "Enviar solicitação para o resolvedor" #: apt-pkg/edsp.cc msgid "Prepare for receiving solution" -msgstr "" +msgstr "Preparar para receber solução" #: apt-pkg/edsp.cc msgid "External solver failed without a proper error message" -msgstr "" +msgstr "Resolvedor externo falhou sem uma mensagem de erro adequada" + +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Calculando atualização" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Resolvendo dependências" #: apt-pkg/edsp.cc msgid "Execute external solver" -msgstr "" +msgstr "Executar resolvedor externo" #: apt-pkg/edsp.cc msgid "Execute external planner" -msgstr "" +msgstr "Executar planejador externo" #: apt-pkg/edsp.cc msgid "Send request to planner" -msgstr "" +msgstr "Enviar solicitação para o planejador" #: apt-pkg/edsp.cc msgid "Send scenario to planner" -msgstr "" +msgstr "Enviar cenário para o planejador" #: apt-pkg/edsp.cc msgid "External planner failed without a proper error message" -msgstr "" +msgstr "Planejador externo falhou sem uma mensagem de erro adequada" #: apt-pkg/indexcopy.cc #, c-format @@ -1276,12 +1408,12 @@ msgstr "" #: apt-pkg/indexcopy.cc #, c-format msgid "Can't find authentication record for: %s" -msgstr "" +msgstr "Não foi possível encontrar o registro de autenticação para: %s" #: apt-pkg/indexcopy.cc -#, fuzzy, c-format +#, c-format msgid "Hash mismatch for: %s" -msgstr "Hash Sum incorreto" +msgstr "Incompatibilidade de hash para: %s" #: apt-pkg/init.cc #, c-format @@ -1290,17 +1422,18 @@ 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." +msgstr "" +"Não é possível determinar um tipo de sistema de empacotamento aplicável" #: apt-pkg/install-progress.cc #, c-format msgid "Progress: [%3li%%]" -msgstr "" +msgstr "Progresso: [%3li%%]" #. send status information that we are about to fork dpkg #: apt-pkg/install-progress.cc msgid "Running dpkg" -msgstr "" +msgstr "Executando dpkg" #: apt-pkg/packagemanager.cc #, c-format @@ -1308,11 +1441,13 @@ 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 realizar a configuração imediata em '%s'. Veja man 5 " +"apt.conf em APT::Immediate-Configure para detalhes. (%d)" #: apt-pkg/packagemanager.cc -#, fuzzy, c-format +#, c-format msgid "Could not configure '%s'. " -msgstr "Não foi possível abrir arquivo %s" +msgstr "Não foi possível configurar '%s'. " #: apt-pkg/packagemanager.cc #, c-format @@ -1344,14 +1479,14 @@ 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 +#, 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" +msgstr "O cache de pacotes foi gerado para uma arquitetura diferente: %s vs %s" #: 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" +msgstr "" +"O arquivo de cache de pacotes está corrompido, ele tem o hash incorreto" #: apt-pkg/pkgcache.cc msgid "Depends" @@ -1383,7 +1518,7 @@ msgstr "Quebra" #: apt-pkg/pkgcache.cc msgid "Enhances" -msgstr "" +msgstr "Melhora" #: apt-pkg/pkgcache.cc msgid "Obsoletes" @@ -1416,9 +1551,9 @@ 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 +#, c-format msgid "Error occurred while processing %s (%s%d)" -msgstr "Um erro ocorreu processando %s (EncontrarPacote)" +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." @@ -1460,11 +1595,14 @@ 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, pois essa versão não está " +"disponível nas fontes" #: apt-pkg/policy.cc -#, fuzzy, c-format +#, 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" +msgstr "" +"Registro inválido no arquivo de preferências %s, sem o cabeçalho Package" #: apt-pkg/policy.cc #, c-format @@ -1476,11 +1614,15 @@ msgstr "Não foi possível entender o tipo de \"pin\" %s" msgid "" "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" msgstr "" +"%s: O 'Pin-Priority: %s' especial só pode ser usado para registros 'Package: " +"*'" #: apt-pkg/policy.cc #, c-format msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" msgstr "" +"%s: O valor %s está fora do intervalo de prioridades de 'pin' válidas (%d a " +"%d)" #: apt-pkg/policy.cc msgid "No priority (or zero) specified for pin" @@ -1488,9 +1630,9 @@ 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 +#, c-format msgid "Malformed entry %u in %s file %s (%s)" -msgstr "Override malformado %s linha %lu #1" +msgstr "Entrada malformada %u no arquivo %s %s (%s)" #: apt-pkg/sourcelist.cc #, c-format @@ -1503,43 +1645,37 @@ 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 +#, c-format msgid "Malformed stanza %u in source list %s (type)" -msgstr "Linha mal formada %u no arquivo de fontes %s (tipo)" +msgstr "Linha ou grupo de linhas malformada %u no arquivo de fontes %s (tipo)" #: apt-pkg/sourcelist.cc -#, fuzzy, c-format +#, 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" +msgstr "" +"Tipo '%s' não é conhecido na linha ou grupo de linha %u na lista de fontes %s" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format msgid "Unsupported file %s given on commandline" -msgstr "" +msgstr "Arquivo sem suporte %s fornecido na linha de comando" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "Você deve colocar algumas URIs 'source' em seu sources.list" +msgstr "Você deve colocar algumas URIs 'deb-src' em seu sources.list" #: apt-pkg/tagfile.cc #, c-format msgid "Cannot convert %s to integer: out of range" -msgstr "" +msgstr "Não foi possível converter %s para inteiro: fora do intervalo" #: 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" +"Falha no download de alguns arquivos de índice. Eles foram ignorados, ou os " +"antigos usados em seu lugar." #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update' #: apt-private/acqprogress.cc @@ -1559,26 +1695,26 @@ msgstr "Obter:%lu %s" #: apt-private/acqprogress.cc #, c-format msgid "Ign:%lu %s" -msgstr "" +msgstr "Ignorar:%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 "" +msgstr "Erro:%lu %s" #: apt-private/acqprogress.cc #, c-format msgid "Fetched %sB in %s (%sB/s)\n" -msgstr "Baixados %sB em %s (%sB/s)\n" +msgstr "Obtidos %sB em %s (%sB/s)\n" #: apt-private/acqprogress.cc msgid " [Working]" msgstr " [Trabalhando]" #: apt-private/acqprogress.cc -#, fuzzy, c-format +#, c-format msgid "" "Media change: please insert the disc labeled\n" " '%s'\n" @@ -1586,13 +1722,15 @@ msgid "" msgstr "" "Troca de mídia: por favor, insira o disco nomeado\n" " '%s'\n" -"na unidade '%s' e pressione enter\n" +"na unidade '%s' e pressione [Enter]\n" #: apt-private/acqprogress.cc msgid "" "Do you want to accept these changes and continue updating from this " "repository?" msgstr "" +"Deseja aceitar essas alterações e continuar atualizando a partir deste " +"repositório?" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." @@ -1604,19 +1742,19 @@ msgstr " falhou." #: apt-private/private-cachefile.cc msgid "Unable to correct dependencies" -msgstr "Impossível corrigir dependências" +msgstr "Não é possível corrigir as dependências" #: apt-private/private-cachefile.cc msgid "Unable to minimize the upgrade set" -msgstr "Impossível minimizar o conjunto de atualizações" +msgstr "Não é possível minimizar o conjunto de atualizações" #: apt-private/private-cachefile.cc msgid " Done" -msgstr " Pronto" +msgstr " Concluído" #: 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." +msgstr "Você pode executar 'apt --fix-broken install' para corrigi-los." #: apt-private/private-cachefile.cc apt-private/private-install.cc msgid "" @@ -1628,22 +1766,22 @@ msgstr "" #: apt-private/private-cacheset.cc apt-private/private-search.cc msgid "Sorting" -msgstr "" +msgstr "Ordenando" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for task '%s'\n" -msgstr "Nota, selecionando %s para expressão regular '%s'\n" +msgstr "Nota, selecionando '%s' para tarefa '%s'\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "Nota, selecionando %s para expressão regular '%s'\n" +msgstr "Nota, selecionando '%s' para glob '%s'\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for regex '%s'\n" -msgstr "Nota, selecionando %s para expressão regular '%s'\n" +msgstr "Nota, selecionando '%s' para expressão regular '%s'\n" #: apt-private/private-cacheset.cc #, c-format @@ -1651,18 +1789,16 @@ 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" +msgstr " [Versão não candidata]" #: apt-private/private-cacheset.cc msgid "You should explicitly select one to install." -msgstr "Você deveria selecionar explicitamente um para instalar." +msgstr "Você deveria selecionar algum explicitamente para instalar." #: apt-private/private-cacheset.cc #, c-format @@ -1680,45 +1816,41 @@ msgid "However the following packages replace it:" msgstr "No entanto, os pacotes a seguir o substituem:" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Package '%s' has no installation candidate" -msgstr "O pacote %s não tem candidato para instalação" +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 "" +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 -#, fuzzy, c-format +#, 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" +msgstr "" +"O pacote '%s' não está instalado, então não será removido. Você quis dizer " +"'%s'?\n" #: apt-private/private-cacheset.cc apt-private/private-install.cc -#, fuzzy, c-format +#, 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" +msgstr "O pacote '%s' não está instalado, então não será removido\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" +msgstr "Nota, selecionando '%s' em vez de '%s'\n" #: apt-private/private-cmndline.cc msgid "Most used commands:" -msgstr "" +msgstr "Comandos mais usados:" #: apt-private/private-cmndline.cc #, c-format msgid "See %s for more information about the available commands." -msgstr "" +msgstr "Veja %s para obter mais informações sobre os comandos disponíveis." #: apt-private/private-cmndline.cc msgid "" @@ -1727,6 +1859,11 @@ msgid "" "Package and version choices can be expressed via apt_preferences(5).\n" "Security details are available in apt-secure(8).\n" msgstr "" +"As opções de configuração e sintaxe são detalhadas em apt.conf(5).\n" +"Encontre informações sobre como configurar fontes em sources.list(5).\n" +"As escolhas de pacotes e versões podem ser expressas via " +"apt_preferences(5).\n" +"Os detalhes de segurança estão disponíveis no apt-secure(8).\n" #: apt-private/private-cmndline.cc msgid "This APT has Super Cow Powers." @@ -1734,13 +1871,14 @@ msgstr "Este APT tem Poderes de Super Vaca." #: apt-private/private-cmndline.cc msgid "This APT helper has Super Meep Powers." -msgstr "" +msgstr "Este ajudante do APT tem Poderes de Super Meep." #: apt-private/private-cmndline.cc msgid "" "--force-yes is deprecated, use one of the options starting with --allow " "instead." msgstr "" +"--force-yes foi descontinuado, use uma das opções começando com --allow." #: apt-private/private-depends.cc apt-private/private-download.cc #: apt-private/private-show.cc cmdline/apt-mark.cc @@ -1753,7 +1891,7 @@ 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" +msgstr "Aviso de autenticação ignorado.\n" #: apt-private/private-download.cc msgid "Some packages could not be authenticated" @@ -1761,14 +1899,14 @@ 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?" +msgstr "Instalar esses pacotes sem verificação?" #: 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" +msgstr "" +"Havia pacotes não autenticados e -y foi usado sem --allow-unauthenticated" #: apt-private/private-download.cc #, c-format @@ -1782,7 +1920,7 @@ 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" +msgstr "Não é possível criar trava no diretório de download" #: apt-private/private-install.cc msgid "" @@ -1814,25 +1952,31 @@ msgstr "A informação a seguir pode ajudar a resolver a situação:" msgid "Broken packages" msgstr "Pacotes quebrados" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "Escrevendo relatório de erros" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"O usr não mesclado não é mais suportado, use usrmerge para converter para um " +"sistema usr mesclado." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc #, c-format msgid "See %s for more details." -msgstr "" +msgstr "Veja %s para mais detalhes." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Impossível buscar alguns arquivos, talvez executar apt-get update ou tentar " -"com --fix-missing?" +"Não é possível obter alguns arquivos, talvez executar apt update ou " +"tentar com --fix-missing?" #: apt-private/private-install.cc msgid "Internal error, InstallPackages was called with broken packages!" @@ -1843,22 +1987,24 @@ 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" +msgstr "" +"Os pacotes essenciais foram removidos e -y foi usado sem --allow-remove-" +"essential." #: 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" +msgstr "Os pacotes foram revertidos e -y foi usado sem --allow-downgrades." #: apt-private/private-install.cc msgid "" "Held packages were changed and -y was used without --allow-change-held-" "packages." msgstr "" +"Os pacotes retidos foram alterados e -y foi usado sem --allow-change-held-" +"packages." #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" @@ -1867,8 +2013,13 @@ 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" +"Que estranho... Os tamanhos não batem, mande e-mail para " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Tamanho de download: %sB / %sB\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 @@ -1877,6 +2028,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "É preciso baixar %sB/%sB de arquivos.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Tamanho de download: %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 @@ -1884,14 +2040,59 @@ msgstr "É preciso baixar %sB/%sB de arquivos.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Espaço necessário: %sB / %sB disponível\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Mais espaço necessário do que o disponível: %sB > %sB, a instalação pode " +"falhar" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "em %s: %sB / %sB disponível\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Mais espaço necessário em %s do que o disponível: %sB > %sB, a instalação " +"pode falhar" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Espaço necessário: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Espaço liberado: %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 @@ -1901,26 +2102,27 @@ 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." +msgstr "\"Trivial Only\" especificado, mas esta não é uma operação trivial." #: apt-private/private-install.cc msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Você quer continuar?" +"A remoção de pacotes essenciais ao sistema não é permitida. Isso pode " +"quebrar o sistema." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Continuar mesmo assim?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Continuar?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Você quer continuar?" #: apt-private/private-install.cc msgid "Abort." @@ -1932,7 +2134,7 @@ 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\")" +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" @@ -1940,7 +2142,7 @@ 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." +msgstr "Não é possível corrigir pacotes faltantes." #: apt-private/private-install.cc msgid "Aborting install." @@ -1954,22 +2156,26 @@ 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 arquivos foram substituídos por outros pacotes:" msgstr[1] "" +"Os seguintes pacotes desapareceram do seu sistema, pois\n" +"todos os arquivos foram substituídos por outros pacotes:" #: apt-private/private-install.cc msgid "Note: This is done automatically and on purpose by dpkg." -msgstr "" +msgstr "Nota: Isso é feito automaticamente e propositalmente pelo dpkg." #: 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" +msgstr "Nós não deveríamos apagar coisas, não é possí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" +"Hmm, parece que o AutoRemover destruiu algo e isto realmente não deveria\n" "acontecer. Por favor, reporte um bug contra o apt." #: apt-private/private-install.cc @@ -1977,42 +2183,36 @@ msgid "Internal Error, AutoRemover broke stuff" msgstr "Erro Interno, o AutoRemover quebrou coisas" #: 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ê-lo." +msgstr[1] "Use '%s' para removê-los." + +#: 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] "" -"Os seguintes pacotes foram automaticamente instalados e não são mais " -"requeridos:" +"O seguinte pacote foi automaticamente instalado e não é mais requerido:" msgstr[1] "" "Os seguintes pacotes foram automaticamente instalados e não são mais " "requeridos:" #: apt-private/private-install.cc -#, fuzzy, c-format +#, 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[0] "%lu pacote foi automaticamente instalado e não é mais requerido.\n" msgstr[1] "" -"Os seguintes pacotes foram automaticamente instalados e não são mais " -"requeridos:" +"%lu pacotes foram automaticamente instalados e não são mais requeridos.\n" #: 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "Resultado calculado pelo resolvedor 3.0." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2023,14 +2223,18 @@ msgid "Recommended packages:" msgstr "Pacotes recomendados:" #: apt-private/private-install.cc -#, c-format +msgid "The following additional packages will be installed:" +msgstr "Os pacotes adicionais a seguir serão instalados:" + +#: 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 +#, 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" +msgstr "Pulando %s, já está instalado e apenas atualizações são requeridas.\n" #: apt-private/private-install.cc #, c-format @@ -2039,9 +2243,9 @@ 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 +#, c-format msgid "%s is already the newest version (%s).\n" -msgstr "%s já é a versão mais nova.\n" +msgstr "%s já é a versão mais nova (%s).\n" #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc #, c-format @@ -2049,26 +2253,26 @@ msgid "%s set to manually installed.\n" msgstr "%s configurado para instalar manualmente.\n" #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format msgid "Selected version '%s' (%s) for '%s'\n" -msgstr "Versão selecionada %s (%s) para %s\n" +msgstr "Versão selecionada '%s' (%s) para '%s'\n" #: apt-private/private-install.cc -#, fuzzy, c-format +#, c-format msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -msgstr "Versão selecionada %s (%s) para %s\n" +msgstr "Versão selecionada '%s' (%s) para '%s' por causa de '%s'\n" #: apt-private/private-list.cc msgid "Listing" -msgstr "" +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] "" -msgstr[1] "" +msgstr[0] "Há %i versão adicional. Por favor, use a opção '-a' para vê-la" +msgstr[1] "Há %i versões adicionais. Por favor, use a opção '-a' para vê-las." #. TRANSLATORS: placeholder is a binary name like apt or apt-get #: apt-private/private-main.cc @@ -2079,43 +2283,44 @@ msgid "" " Keep also in mind that locking is deactivated,\n" " so don't depend on the relevance to the real current situation!\n" msgstr "" +"NOTA: Esta é apenas uma simulação!\n" +" %s precisa de privilégios de root para execução real.\n" +" Lembre-se também de que a trava está desativada e,\n" +" portanto, não dependa da relevância para a situação real atual!\n" #: apt-private/private-output.cc apt-private/private-show.cc msgid "unknown" -msgstr "" +msgstr "desconhecido" #: apt-private/private-output.cc -#, fuzzy, c-format +#, c-format msgid "[installed,upgradable to: %s]" -msgstr " [Instalado]" +msgstr "[instalado,atualizável para: %s]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,local]" -msgstr " [Instalado]" +msgstr "[instalado,local]" #: apt-private/private-output.cc msgid "[installed,auto-removable]" -msgstr "" +msgstr "[instalado,autorremovível]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed,automatic]" -msgstr " [Instalado]" +msgstr "[instalado,automático]" #: apt-private/private-output.cc -#, fuzzy msgid "[installed]" -msgstr " [Instalado]" +msgstr "[instalado]" #: apt-private/private-output.cc #, c-format msgid "[upgradable from: %s]" -msgstr "" +msgstr "[atualizável de: %s]" #: apt-private/private-output.cc msgid "[residual-config]" -msgstr "" +msgstr "[configuração-residual]" #: apt-private/private-output.cc #, c-format @@ -2151,19 +2356,41 @@ msgstr " ou" msgid "The following packages have unmet dependencies:" msgstr "Os pacotes a seguir têm dependências desencontradas:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Dependências não satisfeitas:" + #: 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 "Installing:" +msgstr "Instalando:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Instalando dependências:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "REMOVENDO:" + #: 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 -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Os pacotes a seguir serão mantidos em suas versões atuais:" +msgstr "As seguintes atualizações foram adiadas devido ao faseamento:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Ainda não atualizando devido ao faseamento:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Não atualizando:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2173,13 +2400,25 @@ msgstr "Os pacotes a seguir serão mantidos em suas versões atuais:" msgid "The following packages will be upgraded:" msgstr "Os pacotes a seguir serão atualizados:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Atualizando:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "FAZENDO DOWNGRADE:" + #: 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 "Changing held packages:" +msgstr "Alterando pacotes retidos:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" -msgstr "Os seguintes pacotes mantidos serão mudados:" +msgstr "Os seguintes pacotes retidos serão mudados:" #: apt-private/private-output.cc #, c-format @@ -2192,29 +2431,53 @@ msgid "" "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á " +"Isso NÃO deveria ser feito a menos que você saiba exatamente o que está " "fazendo!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Resumo:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Atualizando: %lu, Instalando: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalados, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Reinstalando %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu revertidos, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Fazendo downgrade: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Removendo: %lu, Não atualizando: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2242,30 +2505,30 @@ msgid "Y" msgstr "S" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" -msgstr "" +msgstr "N" #: apt-private/private-search.cc -#, fuzzy msgid "You must give at least one search pattern" -msgstr "Você deve passar exatamente um padrão" +msgstr "Você deve fornecer pelo menos um padrão de pesquisa" #: apt-private/private-search.cc msgid "Full Text Search" -msgstr "" +msgstr "Pesquisa de texto completo" #: 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[0] "Há %i registro adicional. Por favor, use a opção '-a' para vê-lo" msgstr[1] "" +"Há %i registros adicionais. Por favor, use a opção '-a' para vê-los." #: apt-private/private-show.cc msgid "not a real package (virtual)" -msgstr "" +msgstr "não é um pacote real (virtual)" #: apt-private/private-show.cc msgid "Package files:" @@ -2280,13 +2543,13 @@ msgstr "" #. Show any packages have explicit pins #: apt-private/private-show.cc msgid "Pinned packages:" -msgstr "Pacotes alfinetados (\"pinned\"):" +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 "" +msgstr "%s -> %s com prioridade %d\n" #: apt-private/private-show.cc msgid " Installed: " @@ -2307,32 +2570,32 @@ msgstr " Tabela de versão:" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "faseado" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package for architecture '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível encontrar um pacote para a arquitetura '%s'" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with version '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível encontrar um pacote '%s' com a versão '%s'" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with release '%s'" -msgstr "Impossível achar pacote %s" +msgstr "Não é possível encontrar um pacote '%s' com o lançamento '%s'" #: apt-private/private-source.cc -#, fuzzy, c-format +#, 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" +msgstr "Escolhendo '%s' como pacote-fonte em vez de '%s'\n" #: apt-private/private-source.cc #, c-format msgid "Can not find version '%s' of package '%s'" -msgstr "" +msgstr "Não é possível encontrar a versão '%s' do pacote '%s'" #: apt-private/private-source.cc msgid "Must specify at least one package to fetch source for" @@ -2341,7 +2604,7 @@ 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" +msgstr "Não é possível encontrar um pacote-fonte para %s" #: apt-private/private-source.cc #, c-format @@ -2349,6 +2612,8 @@ msgid "" "NOTICE: '%s' packaging is maintained in the '%s' version control system at:\n" "%s\n" msgstr "" +"AVISO: O pacote '%s' é mantido no sistema de controle de versão '%s' em:\n" +"%s\n" #: apt-private/private-source.cc #, c-format @@ -2357,6 +2622,10 @@ msgid "" "%s\n" "to retrieve the latest (possibly unreleased) updates to the package.\n" msgstr "" +"Por favor, use:\n" +"%s\n" +"para recuperar as atualizações mais recentes (possivelmente não lançadas) do " +"pacote.\n" #: apt-private/private-source.cc #, c-format @@ -2368,14 +2637,14 @@ msgstr "Pulando arquivo já baixado '%s'\n" #: 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" +msgstr "Preciso obter %sB/%sB de arquivamentos-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" +msgstr "Preciso obter %sB de arquivamentos-fonte.\n" #: apt-private/private-source.cc #, c-format @@ -2384,7 +2653,7 @@ msgstr "Obter fonte %s\n" #: apt-private/private-source.cc msgid "Failed to fetch some archives." -msgstr "Falhou ao buscar alguns arquivos." +msgstr "Falhou ao obter alguns arquivos." #: apt-private/private-source.cc #, c-format @@ -2408,7 +2677,7 @@ 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" +msgstr "Não é possível obter informações de dependência de construção para %s" #: apt-private/private-source.cc #, c-format @@ -2418,9 +2687,11 @@ msgstr "%s não tem dependências de construção.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" +"Nenhuma informação de arquitetura disponível para %s. Veja apt.conf(5) " +"APT::Architectures para configuração" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2433,30 +2704,38 @@ msgstr "" msgid "" "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" msgstr "" +"Operador '%c' inválido no deslocamento %d, você quis dizer '%c%c' ou '%c='? " +"- em: %s" #: apt-private/private-source.cc #, c-format msgid "Note, using directory '%s' to get the build dependencies\n" msgstr "" +"Nota, usando o diretório '%s' para obter as dependências de construção\n" #: apt-private/private-source.cc -#, fuzzy, c-format +#, c-format msgid "Note, using file '%s' to get the build dependencies\n" -msgstr "Falhou ao processar as dependências de construção" +msgstr "Nota, usando o arquivo '%s' para obter as dependências de construção\n" #: 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 +#, c-format msgid "Failed to parse %s. Edit again? " -msgstr "Falha ao baixar %s %s\n" +msgstr "Falha ao analisar %s. Editar novamente? " #: apt-private/private-sources.cc #, c-format msgid "Your '%s' file changed, please run 'apt-get update'.\n" -msgstr "" +msgstr "Seu arquivo '%s' mudou, por favor execute 'apt-get update'.\n" + +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Reescrever %zu fontes?" #: apt-private/private-unmet.cc #, c-format @@ -2474,12 +2753,47 @@ msgid "" "Usage of %s should be preferred over embedding login information directly in " "the %s entry for '%s'" msgstr "" +"O uso de %s deve ser preferido em vez de incorporar informações de login " +"diretamente na entrada %s para '%s'" + +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "A entrada %s para '%s' deve ser atualizada para .sources do deb822" #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Faltando Signed-By na entrada %s para '%s'" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Considere migrar todas as entradas sources.list(5) para o formato .sources " +"do deb822" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"O formato .sources do deb822 oferece suporte a tanto a chaves OpenPGP " +"embutidas quanto externas" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Veja apt-secure(8) para melhores práticas sobre a configuração de assinatura " +"de repositório." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" +"Algumas fontes podem ser modernizadas. Execute 'apt modernize-sources' para " +"fazer isso." #: apt-private/private-update.cc #, c-format @@ -2487,25 +2801,27 @@ 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 pacote pode ser atualizado. Execute 'apt list --upgradable' para vê-lo.\n" msgstr[1] "" +"%i pacotes podem ser atualizados. Execute 'apt list --upgradable' para vê-" +"los.\n" #: apt-private/private-update.cc msgid "All packages are up to date." -msgstr "" +msgstr "Todos os pacotes estão atualizados." #: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s does not take any arguments" -msgstr "O comando update não leva argumentos" +msgstr "%s não leva argumentos" #: cmdline/apt-cache.cc msgid "Total package names: " -msgstr "Total de Nomes de Pacotes: " +msgstr "Total de nomes de pacotes: " #: cmdline/apt-cache.cc -#, fuzzy msgid "Total package structures: " -msgstr "Total de Nomes de Pacotes: " +msgstr "Total de estruturas de pacotes: " #: cmdline/apt-cache.cc msgid " Normal packages: " @@ -2527,6 +2843,10 @@ msgstr " Pacotes virtuais misturados: " msgid " Missing: " msgstr " Faltando: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Total de versões fontes distintas: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Total de versões distintas: " @@ -2549,11 +2869,11 @@ msgstr "Total de relações Desc/Arquivo: " #: cmdline/apt-cache.cc msgid "Total Provides mappings: " -msgstr "Total de mapeamentos \"Provides\": " +msgstr "Total de mapeamentos Provides: " #: cmdline/apt-cache.cc msgid "Total globbed strings: " -msgstr "Total de strings \"globbed\": " +msgstr "Total de strings globbed: " #: cmdline/apt-cache.cc msgid "Total slack space: " @@ -2566,6 +2886,8 @@ msgstr "Total de espaço contabilizado para: " #: cmdline/apt-cache.cc msgid "This command is deprecated. Please use 'apt-mark showauto' instead." msgstr "" +"Este comando foi descontinuado. Por favor, use 'apt-mark showauto' em vez " +"disso." #: cmdline/apt-cache.cc msgid "" @@ -2579,10 +2901,20 @@ msgid "" "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 [opções] comando\n" +" apt-cache [opções] show pacote1 [pacote2 ...]\n" +"\n" +"o apt-cache consulta e exibe as informações disponíveis sobre os pacotes\n" +"instalados e instaláveis. Funciona exclusivamente nos dados adquiridos no\n" +"cache local através do comando 'update' de, por exemplo, apt-get. As\n" +"informações exibidas podem, portanto, estar desatualizadas se a última\n" +"atualização foi há muito tempo, mas em troca o apt-cache funciona\n" +"independentemente da disponibilidade das fontes configuradas (ex., " +"offline).\n" #: cmdline/apt-cache.cc msgid "Show source records" -msgstr "Mostra registros fontes" +msgstr "Mostra registros-fonte" #: cmdline/apt-cache.cc msgid "Search the package list for a regex pattern" @@ -2609,20 +2941,18 @@ 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'" +"Por favor, forneça um nome para este Disco, algo 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 na unidade e pressione enter" +msgstr "Por favor, insira um Disco na unidade e pressione [Enter]" #: cmdline/apt-cdrom.cc -#, fuzzy, c-format +#, c-format msgid "Failed to mount '%s' to '%s'" -msgstr "Falhou ao renomear %s para %s" +msgstr "Falhou ao montar '%s' para '%s'" #: cmdline/apt-cdrom.cc msgid "" @@ -2631,6 +2961,12 @@ msgid "" "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and " "mount point." msgstr "" +"Nenhum CD-ROM pôde ser detectado automaticamente ou encontrado usando o " +"ponto de montagem padrão.\n" +"Você pode tentar a opção --cdrom para definir o ponto de montagem do CD-" +"ROM.\n" +"Consulte 'man apt-cdrom' para obter mais informações sobre a detecção " +"automática de CD-ROM e o ponto de montagem." #: cmdline/apt-cdrom.cc msgid "Repeat this process for the rest of the CDs in your set." @@ -2644,13 +2980,18 @@ msgid "" "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 [opções] comando\n" +"\n" +"O apt-cdrom é usado para adicionar CDROMs, unidades flash USB e outros\n" +"tipos de mídia removível como fontes de pacote ao APT. As informações\n" +"do ponto de montagem e do dispositivo são obtidas de apt.conf(5),\n" +"udev(7) e fstab(5).\n" #: 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" @@ -2659,16 +3000,17 @@ msgid "" 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" +"O apt-config é uma interface para as definições de configuração\n" +"usadas por todas as ferramentas do APT, principalmente destinado\n" +"para depuração e criação de scripts shell.\n" #: cmdline/apt-config.cc msgid "get configuration values via shell evaluation" -msgstr "" +msgstr "obtém valores de configuração por meio de avaliação do shell" #: cmdline/apt-config.cc msgid "show the active configuration setting" -msgstr "" +msgstr "mostra a definição de configurações ativas" #: cmdline/apt-dump-solver.cc msgid "" @@ -2677,9 +3019,12 @@ msgid "" "apt-dump-solver is an interface to store an EDSP scenario in\n" "a file and optionally forwards it to another solver.\n" msgstr "" +"Uso: apt-dump-solver\n" +"\n" +"apt-dump-solver é uma interface para armazenar um cenário EDSP\n" +"em um arquivo e, opcionalmente, o encaminha a um resolvedor.\n" #: cmdline/apt-extracttemplates.cc -#, fuzzy msgid "" "Usage: apt-extracttemplates file1 [file2 ...]\n" "\n" @@ -2689,15 +3034,10 @@ msgid "" 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" +"O apt-extracttemplates é usado para extrair arquivos de modelo\n" +"(templates) e configurações de pacotes debian. É usado\n" +"principalmente pelo debconf(1) para pedir perguntas de configuração\n" +"antes da instalação de pacotes.\n" #: cmdline/apt-extracttemplates.cc msgid "Cannot get debconf version. Is debconf installed?" @@ -2706,18 +3046,20 @@ 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" +msgstr "Não é possível achar o pacote %s" #: cmdline/apt-get.cc cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s set to automatically installed.\n" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "%s configurado para 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 descontinuado. Por favor, use 'apt-mark auto' e 'apt-mark " +"manual'." #: cmdline/apt-get.cc msgid "Internal error, problem resolver broke stuff" @@ -2728,7 +3070,6 @@ 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" @@ -2743,9 +3084,10 @@ msgstr "" " 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" +"O apt-get é uma interface de linha de comando para obter\n" +"pacotes e informações sobre eles de fontes autenticadas e\n" +"para instalação, atualização e remoção de pacotes junto com\n" +"suas dependências.\n" #: cmdline/apt-get.cc msgid "Retrieve new lists of packages" @@ -2760,10 +3102,8 @@ 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 -#, fuzzy -#| msgid "Install new packages (pkg is libc6 not libc6.deb)" msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Instala novos pacotes (um pacote é libc6 e não libc6.deb)" +msgstr "Reinstala pacotes (um pacote é libc6 e não libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" @@ -2771,7 +3111,7 @@ msgstr "Remove pacotes" #: cmdline/apt-get.cc msgid "Remove packages and config files" -msgstr "Remove e expurga (\"purge\") pacotes" +msgstr "Remove pacotes e arquivos de configuração" #: cmdline/apt-get.cc msgid "Remove automatically all unused packages" @@ -2787,21 +3127,19 @@ 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" +msgstr "Configura as dependências de compilação de pacotes-fonte" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Construindo árvore de dependências" +msgstr "Satisfaz as strings de dependência" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" -msgstr "Apaga arquivos baixados para instalação" +msgstr "Apaga arquivamentos baixados para instalação" #: cmdline/apt-get.cc msgid "Erase old downloaded archive files" -msgstr "Apaga arquivos antigos baixados para instalação" +msgstr "Apaga arquivamentos antigos baixados para instalação" #: cmdline/apt-get.cc msgid "Verify that there are no broken dependencies" @@ -2809,33 +3147,32 @@ msgstr "Verifica se não há dependências quebradas" #: cmdline/apt-get.cc msgid "Download source archives" -msgstr "Baixa arquivos fonte" +msgstr "Baixa arquivamentos-fonte" #: cmdline/apt-get.cc msgid "Download the binary package into the current directory" -msgstr "" +msgstr "Baixa o pacote binário para o diretório atual" #: cmdline/apt-get.cc msgid "Download and display the changelog for the given package" -msgstr "" +msgstr "Baixa e exibe o changelog do pacote fornecido" #: cmdline/apt-helper.cc msgid "Need one URL as argument" -msgstr "" +msgstr "É necessária uma URL como argumento" #: 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" +msgstr "Deve-se especificar pelo menos um par url/nome de arquivo" #: cmdline/apt-helper.cc msgid "Download Failed" -msgstr "" +msgstr "Falha no download" #: cmdline/apt-helper.cc #, c-format msgid "GetSrvRec failed for %s" -msgstr "" +msgstr "Falha no GetSrvRec para %s" #: cmdline/apt-helper.cc msgid "" @@ -2846,37 +3183,47 @@ msgid "" "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 [opções] comando\n" +" apt-helper [opções] arquivo-cat arquivo ...\n" +" apt-helper [opções] arquivo-download uri caminho-alvo\n" +"\n" +"O apt-helper agrupa uma variedade de comandos para que scripts shell\n" +"usem, por exemplo, a mesma configuração de proxy ou sistema de\n" +"aquisição que o APT faria.\n" #: cmdline/apt-helper.cc msgid "download the given uri to the target-path" -msgstr "" +msgstr "baixa o uri fornecido para o caminho-alvo" #: cmdline/apt-helper.cc msgid "lookup a SRV record (e.g. _http._tcp.ftp.debian.org)" -msgstr "" +msgstr "consulta um registro SRV (ex.: _http._tcp.ftp.debian.org)" #: cmdline/apt-helper.cc msgid "concatenate files, with automatic decompression" -msgstr "" +msgstr "concatena arquivos, com descompactação automática" + +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "arquivo hash" #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" -msgstr "" +msgstr "detecta proxy usando apt.conf" #: cmdline/apt-helper.cc msgid "wait for system to be online" -msgstr "" +msgstr "aguarda pelo sistema ficar online" #: cmdline/apt-helper.cc msgid "drop privileges before running given command" -msgstr "" +msgstr "descarta privilégios antes de executar o comando fornecido" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "analisa um padrão" #: cmdline/apt-internal-planner.cc -#, fuzzy msgid "" "Usage: apt-internal-planner\n" "\n" @@ -2884,20 +3231,13 @@ msgid "" "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" +"Uso: apt-internal-planner\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" +"O apt-internal-planner é uma interface para usar o atual planejador\n" +"de instalação interno para a família APT como um externo, para\n" +"depuração ou motivo similar.\n" #: cmdline/apt-internal-solver.cc -#, fuzzy msgid "" "Usage: apt-internal-solver\n" "\n" @@ -2905,81 +3245,73 @@ msgid "" "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" +"Uso: apt-internal-solver\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" +"O apt-internal-solver é uma interface para usar o atual resolvedor\n" +"interno para a família APT como um externo, para depuração ou motivo\n" +"similar.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s can not be marked as it is not installed.\n" -msgstr "mas não está instalado" +msgstr "%s não pode ser marcado, pois não está instalado.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set to manually installed.\n" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "%s já tinha sido configurado como instalado manualmente.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set to automatically installed.\n" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "%s já tinha sido configurado como instalado automaticamente.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" -msgstr "" +msgstr "Nenhuma alteração necessária" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Os NOVOS pacotes a seguir serão instalados:" +msgstr "Os pacotes a seguir serão marcados como instalados automaticamente:" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already set on hold.\n" -msgstr "%s já é a versão mais nova.\n" +msgstr "%s já tinha sido configurado como retido.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s was already not on hold.\n" -msgstr "%s já é a versão mais nova.\n" +msgstr "%s já não estava configurado como retido.\n" #: cmdline/apt-mark.cc msgid "Executing dpkg failed. Are you root?" -msgstr "" +msgstr "Falha na execução do dpkg. Você é root?" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s set on hold.\n" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "%s configurado como retido.\n" #: cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "Canceled hold on %s.\n" -msgstr "Falhou ao abrir %s" +msgstr "Cancelada retenção em %s.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for purge.\n" -msgstr "" +msgstr "%s selecionado para ser expurgado (purge).\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for removal.\n" -msgstr "" +msgstr "%s selecionado para remoção.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for installation.\n" -msgstr "" +msgstr "%s selecionado para instalação.\n" #: cmdline/apt-mark.cc msgid "" @@ -2990,43 +3322,45 @@ msgid "" "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 [opções] {auto|manual} pacote1 [pacote2 ...]\n" +"\n" +"O apt-mark é uma interface simples de linha de comando para marcar\n" +"pacotes como instalados manual ou automaticamente. Ele também pode\n" +"ser usado para manipular os estados de seleção de pacotes do dpkg(1)\n" +"e para listar todos os pacotes com ou sem uma certa marcação.\n" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark the given packages as automatically installed" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "Marca os pacotes fornecidos como instalados automaticamente" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark the given packages as manually installed" -msgstr "Confira se o pacote 'dpkg-dev' está instalado.\n" +msgstr "Marca os pacotes fornecidos como instalados manualmente" #: cmdline/apt-mark.cc -#, fuzzy msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "%s configurado para instalar manualmente.\n" +msgstr "" +"Marca todas as dependências de metapacotes como instalados automaticamente." #: cmdline/apt-mark.cc msgid "Mark a package as held back" -msgstr "" +msgstr "Marca um pacote como retido" #: cmdline/apt-mark.cc msgid "Unset a package set as held back" -msgstr "" +msgstr "Desmarca um pacote configurado como retido" #: cmdline/apt-mark.cc -#, fuzzy msgid "Print the list of automatically installed packages" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "Exibe a lista de pacotes instalados automaticamente" #: cmdline/apt-mark.cc -#, fuzzy msgid "Print the list of manually installed packages" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "Exibe a lista de pacotes instalados manualmente" #: cmdline/apt-mark.cc msgid "Print the list of packages on hold" -msgstr "" +msgstr "Exibe a lista de pacotes retidos" #: cmdline/apt-sortpkgs.cc msgid "Unknown package record!" @@ -3040,6 +3374,12 @@ msgid "" "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 [opções] arquivo1 [arquivo2 ...]\n" +"\n" +"O apt-sortpkgs é uma ferramenta simples para classificar arquivos de\n" +"informações de pacotes. Por padrão, ele classifica por informações do\n" +"pacote binário, mas a opção -s pode ser usada para alternar para a\n" +"ordenação do pacote-fonte.\n" #: cmdline/apt.cc msgid "" @@ -3051,77 +3391,81 @@ msgid "" "like apt-get and apt-cache, but enables options more suitable for\n" "interactive use by default.\n" msgstr "" +"Uso: apt [opções] comando\n" +"\n" +"apt é um gerenciador de pacotes de linha de comando e fornece\n" +"comandos para pesquisar e gerenciar, bem como consultar informações\n" +"sobre pacotes. Ele fornece a mesma funcionalidade que as ferramentas\n" +"especializadas do APT, como apt-get e apt-cache, mas por padrão habilita\n" +"opções mais adequadas para uso interativo.\n" #. query #: cmdline/apt.cc msgid "list packages based on package names" -msgstr "" +msgstr "lista pacotes com base nos nomes dos pacotes" #: cmdline/apt.cc -#, fuzzy msgid "search in package descriptions" -msgstr "Lendo listas de pacotes" +msgstr "pesquisa nas descrições dos pacotes" #: cmdline/apt.cc msgid "show package details" -msgstr "" +msgstr "mostra detalhes dos pacotes" #. package stuff #: cmdline/apt.cc -#, fuzzy msgid "install packages" -msgstr "Pacotes alfinetados (\"pinned\"):" +msgstr "instala pacotes" #: cmdline/apt.cc -#, fuzzy msgid "reinstall packages" -msgstr "Pacotes alfinetados (\"pinned\"):" +msgstr "reinstala pacotes" #: cmdline/apt.cc -#, fuzzy msgid "remove packages" -msgstr "Pacotes quebrados" +msgstr "remove pacotes" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "Remove automaticamente todos os pacotes não usados" +msgstr "remove automaticamente todos os pacotes não usados" #. system wide stuff #: cmdline/apt.cc -#, fuzzy msgid "update list of available packages" -msgstr "%s configurado para instalar manualmente.\n" +msgstr "atualiza a lista de pacotes disponíveis" #: cmdline/apt.cc msgid "upgrade the system by installing/upgrading packages" -msgstr "" +msgstr "atualiza o sistema instalando/atualizando pacotes" #: cmdline/apt.cc msgid "upgrade the system by removing/installing/upgrading packages" -msgstr "" +msgstr "atualiza o sistema removendo/instalando/atualizando pacotes" #. misc #: cmdline/apt.cc -#, fuzzy msgid "edit the source information file" -msgstr "Lendo informação de estado" +msgstr "edita o arquivo de informações de fontes" + +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "moderniza arquivos .list para arquivos .sources" #: cmdline/apt.cc -#, fuzzy -#| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" -msgstr "Falhou ao satisfazer a dependência de %s por %s: %s" +msgstr "satisfaz strings de dependência" + +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" #: 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." +msgstr "Pressione [Enter] para continuar." #: dselect/install msgid "Do you want to erase any previously downloaded .deb files?" @@ -3131,26 +3475,23 @@ msgstr "Você quer apagar quaisquer arquivos .deb previamente baixados?" # 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" +"Ocorreram alguns erros ao desempacotar. Pacotes que foram instalados serão" #: 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" +"configurados. 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" +msgstr "dependências faltantes. Não tem problema, apenas os erros acima são" #: 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" +msgstr "importantes. Por favor, corrija-os e execute [I]nstalar novamente" #: dselect/update msgid "Merging available information" @@ -3234,8 +3575,8 @@ msgstr "" "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" +"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" @@ -3252,13 +3593,13 @@ msgstr "" "Opções:\n" " -h Este texto de ajuda\n" " --md5 Controla a geração de MD5\n" -" -s=? Arquivo fonte (\"source\") override\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" +" --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" @@ -3280,7 +3621,6 @@ 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." @@ -3291,12 +3631,11 @@ msgstr "" #: ftparchive/cachedb.cc #, c-format msgid "Unable to open DB file %s: %s" -msgstr "Impossível abrir o arquivo BD %s: %s" +msgstr "Não é possível abrir o arquivo BD %s: %s" #: ftparchive/cachedb.cc -#, fuzzy msgid "Failed to read .dsc" -msgstr "Falhou ao executar \"readlink\" %s" +msgstr "Falhou ao ler .dsc" #: ftparchive/cachedb.cc msgid "Archive has no control record" @@ -3304,7 +3643,7 @@ msgstr "Repositório não possui registro de controle" #: ftparchive/cachedb.cc msgid "Unable to get a cursor" -msgstr "Impossível obter um cursor" +msgstr "Não é possível obter um cursor" #: ftparchive/contents.cc msgid "realloc - Failed to allocate memory" @@ -3320,9 +3659,9 @@ msgstr "Algoritmo de compactação desconhecido '%s'" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" -msgstr "Falhou ao criar pipe IPC para sub-processo" +msgstr "Falhou ao criar pipe IPC para subprocesso" #: ftparchive/multicompress.cc msgid "Failed to fork" @@ -3339,7 +3678,7 @@ msgstr "Erro interno, falhou ao criar %s" #: ftparchive/multicompress.cc msgid "IO to subprocess/file failed" -msgstr "E/S para sub-processo/arquivo falhou" +msgstr "E/S para subprocesso/arquivo falhou" #: ftparchive/multicompress.cc msgid "Failed to read while computing MD5" @@ -3353,14 +3692,14 @@ msgstr "Falhou ao renomear %s para %s" #: ftparchive/override.cc #, c-format msgid "Unable to open %s" -msgstr "Impossível abrir %s" +msgstr "Não é possível abrir %s" #. skip spaces #. find end of word #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu (%s)" -msgstr "Override malformado %s linha %lu #1" +msgstr "Override malformado %s linha %llu (%s)" #: ftparchive/override.cc #, c-format @@ -3368,29 +3707,29 @@ msgid "Failed to read the override file %s" msgstr "Falha ao ler o arquivo override %s" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #1" -msgstr "Override malformado %s linha %lu #1" +msgstr "Override malformado %s linha %llu #1" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #2" -msgstr "Override malformado %s linha %lu #2" +msgstr "Override malformado %s linha %llu #2" #: ftparchive/override.cc -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu #3" -msgstr "Override malformado %s linha %lu #3" +msgstr "Override malformado %s linha %llu #3" #: ftparchive/writer.cc #, c-format msgid "W: Unable to read directory %s\n" -msgstr "W: Impossível ler o diretório %s\n" +msgstr "A: Não é possí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" +msgstr "A: Não é possível executar \"stat\" em %s\n" #: ftparchive/writer.cc msgid "E: " @@ -3398,7 +3737,7 @@ msgstr "E: " #: ftparchive/writer.cc msgid "W: " -msgstr "W: " +msgstr "A: " #: ftparchive/writer.cc msgid "E: Errors apply to file " @@ -3439,23 +3778,23 @@ 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" +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" +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" +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" +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" @@ -3493,10 +3832,12 @@ msgstr "Dados de cabeçalho ruins" msgid "Connection failed" msgstr "Conexão falhou" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" +"O arquivo tem um tamanho inesperado (%llu != %llu). Sincronização de espelho " +"em progresso?" #: methods/basehttp.cc #, c-format @@ -3504,6 +3845,8 @@ msgid "" "Automatically disabled %s due to incorrect response from server/proxy. (man " "5 apt.conf)" msgstr "" +"%s desabilitado automaticamente devido a uma resposta incorreta do servidor/" +"proxy. (man 5 apt.conf)" #: methods/basehttp.cc msgid "Internal error" @@ -3512,7 +3855,7 @@ 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" +msgstr "Não é possível ler o banco de dados de cdrom %s" #: methods/cdrom.cc msgid "" @@ -3529,13 +3872,14 @@ 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." +msgstr "" +"Não é possí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 +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Arquivo não encontrado" @@ -3543,7 +3887,7 @@ msgstr "Arquivo não encontrado" #: methods/connect.cc #, c-format msgid "Direct connection to %s domains is blocked by default." -msgstr "" +msgstr "A conexão direta com os domínios %s está travada por padrão." #: methods/connect.cc #, c-format @@ -3551,10 +3895,9 @@ msgid "[IP: %s %s]" msgstr "[IP: %s %s]" #: methods/connect.cc -#, fuzzy, c-format -#| msgid "Connecting to %s (%s)" +#, c-format msgid "Connected to %s (%s)" -msgstr "Conectando em %s (%s)" +msgstr "Conectado em %s (%s)" #: methods/connect.cc methods/http.cc #, c-format @@ -3571,7 +3914,7 @@ msgstr "Não foi possível criar um socket para %s (f=%u t=%u p=%u)" 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 methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Falhou" @@ -3585,9 +3928,7 @@ msgstr "Não foi possível conectar em %s:%s (%s)." 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" @@ -3603,19 +3944,19 @@ msgid "Temporary failure resolving '%s'" msgstr "Falha temporária resolvendo '%s'" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "System error resolving '%s:%s'" -msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)" +msgstr "Erro de sistema ao resolver '%s:%s'" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "Something wicked happened resolving '%s:%s' (%i - %s)" -msgstr "Algo estranho aconteceu resolvendo '%s:%s' (%i)" +msgstr "Algo estranho aconteceu ao resolver '%s:%s' (%i - %s)" #: methods/connect.cc -#, fuzzy, c-format +#, c-format msgid "Unable to connect to %s:%s:" -msgstr "Impossível conectar em %s %s:" +msgstr "Não é possível conectar em %s %s:" #: methods/copy.cc msgid "Failed to stat" @@ -3625,149 +3966,15 @@ msgstr "Falhou ao executar \"stat\"" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "algoritmo de chave pública não confiável: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s será descontinuado em uma versão futura" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3775,6 +3982,7 @@ msgstr "" msgid "" "Signed file isn't valid, got '%s' (does the network require authentication?)" msgstr "" +"O arquivo assinado não é válido, obteve '%s' (a rede requer autenticação?)" #: methods/gpgv.cc msgid "At least one invalid signature was encountered." @@ -3788,28 +3996,20 @@ msgstr "" "digital da chave?!" #: methods/gpgv.cc -#, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Não foi possível executar '%s' para verificar a assinatura (o gnupg está " +"Não foi possível executar 'gpgv' para verificar a assinatura (o gnupg está " "instalado?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "Erro desconhecido executando apt-key" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" +msgid "Unknown error executing gpgv" +msgstr "Erro desconhecido executando gpgv" #. 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 algorithm (%s)" -msgstr "" +msgstr "Assinatura pela chave %s usa algoritmo fraco (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -3843,17 +4043,145 @@ msgstr "Seleção falhou" msgid "Connection timed out" msgstr "Conexão expirou" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problema criando o hash do arquivo" + #: 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 "" +msgstr "Arquivos vazios não podem ser arquivos válidos" + +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Erro de GPG: %s: %s" + +#, c-format +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "A chave é armazenada no chaveiro legado trusted.gpg (%s). Use Signed-By. " +#~ "Veja a seção USER CONFIGURATION no apt-secure(8) para detalhes." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "O método '%s' não é suportado e está desabilitado por padrão. Considere " +#~ "mudar para http(s). Defina Dir::Bin::Methods::%s como \"%s\" para " +#~ "habilitá-lo novamente." + +#~ msgid "Logging in" +#~ msgstr "Efetuando login" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Não é possível determinar o nome do ponto" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Não é possível determinar o nome local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "O servidor recusou a conexão e disse: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER falhou, servidor disse: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS falhou, servidor disse: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Comando de script de login '%s' falhou, servidor disse: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE falhou, servidor disse: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Conexão expirou" + +#~ msgid "Server closed the connection" +#~ msgstr "Servidor fechou a conexão" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Uma resposta sobrecarregou o buffer" + +#~ msgid "Protocol corruption" +#~ msgstr "Corrupção de protocolo" + +#~ msgid "Could not create a socket" +#~ msgstr "Não foi possível criar um socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Não foi possível conectar um socket de dados, conexão expirou" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Não foi possível conectar um socket passivo." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo não foi capaz de obter um socket de escuta" + +#~ msgid "Could not bind a socket" +#~ msgstr "Não foi possível fazer \"bind\" de um socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Não foi possível ouvir no socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Não foi possível determinar o nome do socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Não é possível enviar o comando PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Família de endereços %u desconhecida (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT falhou, servidor disse: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Conexão do socket de dados expirou" + +#~ msgid "Unable to accept connection" +#~ msgstr "Não é possível aceitar conexão" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Não é possível obter arquivo, servidor disse '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Socket de dados expirou" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Transferência de dados falhou, servidor disse '%s'" + +#~ msgid "Query" +#~ msgstr "Pesquisa" + +#~ msgid "Unable to invoke " +#~ msgstr "Não é possível invocar " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Conexão encerrada prematuramente" #~ msgid "Yes, do as I say!" #~ msgstr "Sim, faça o que eu digo!" @@ -3913,7 +4241,7 @@ msgstr "" #~ msgstr "Arquivo %s/%s sobrescreve arquivo no pacote %s" #~ msgid "Unable to stat %s" -#~ msgstr "Impossível executar \"stat\" em %s" +#~ msgstr "Não é possível executar \"stat\" em %s" #~ msgid "DropNode called on still linked node" #~ msgstr "\"DropNode\" chamado em nó ainda ligado (\"linked\")" @@ -3937,7 +4265,7 @@ msgstr "" #~ msgstr "Arquivo de configuração duplicado %s/%s" #~ msgid "Unable to change to %s" -#~ msgstr "Impossível mudar para %s" +#~ msgstr "Não é possível mudar para %s" #~ msgid "Removed %s" #~ msgstr "%s removido" @@ -4181,7 +4509,7 @@ msgstr "" #, fuzzy #~ msgid "Unable to find hash sum for '%s' in Release file" -#~ msgstr "Impossível analisar arquivo de pacote %s (1)" +#~ msgstr "Não é possí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\")" @@ -4225,10 +4553,11 @@ msgstr "" #~ "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." +#~ "que você precisa corrigir 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" +#~ msgstr "" +#~ "Não é possível escrever log, openpty() falhou (/dev/pts não montado?)\n" #, fuzzy #~ msgid "Skipping nonexistent file %s" @@ -4238,7 +4567,7 @@ msgstr "" #~ msgstr "Falhou ao remover %s" #~ msgid "Unable to create %s" -#~ msgstr "Impossível criar %s" +#~ msgstr "Não é possível criar %s" #~ msgid "Failed to stat %sinfo" #~ msgstr "Falhou ao executar \"stat\" em %sinfo." @@ -4465,8 +4794,8 @@ msgstr "" #~ 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." +#~ "Desculpe, você não tem espaço livre o suficiente em %s para guardar " +#~ "os .debs." #~ msgid "Extract " #~ msgstr "extra" @@ -4489,14 +4818,11 @@ msgstr "" #~ 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" +#~ msgstr "Não é possível achar pacote %s" #~ msgid "Failed too stat %s" -#~ msgstr "Impossível checar %s." +#~ msgstr "Não é possível checar %s." diff --git a/po/ro.po b/po/ro.po index 6c1dc8a..cee2736 100644 --- a/po/ro.po +++ b/po/ro.po @@ -9,35 +9,37 @@ # # Sorin Batariuc , 2004, 2005, 2006. # Eddy Petrișor , 2008. -# Remus-Gabriel Chelu , 2023. +# Remus-Gabriel Chelu , 2023, 2024, 2025. # # Cronologia traducerii fișierului „apt”: # Traducerea inițială, făcută de SB, pentru versiunea apt 0.5.24, noi-2004. -# Actualizare a traducerii pentru versiunea 0.6.40.1, făcută de SB aug-2005. -# Actualizare a traducerii pentru versiunea 0.6.4.2, făcută de SB ian-2006. -# Actualizare a traducerii pentru versiunea 0.6.43.2, făcută de SB mar-2006. -# Actualizare a traducerii pentru versiunea 0.6.43.3, făcută de SB iun-2006. -# Actualizare a traducerii pentru versiunea 0.6.44.2, făcută de SB sep-2006. -# Actualizare a traducerii pentru versiunea 1.0.5, făcută de EP noi-2008. +# Actualizare a traducerii pentru versiunea 0.6.40.1, făcută de SB, aug-2005. +# Actualizare a traducerii pentru versiunea 0.6.4.2, făcută de SB, ian-2006. +# Actualizare a traducerii pentru versiunea 0.6.43.2, făcută de SB, mar-2006. +# Actualizare a traducerii pentru versiunea 0.6.43.3, făcută de SB, iun-2006. +# Actualizare a traducerii pentru versiunea 0.6.44.2, făcută de SB, sep-2006. +# Actualizare a traducerii pentru versiunea 1.0.5, făcută de EP, noi-2008. # Actualizare a traducerii pentru versiunea 2.7.2, făcută de R-GC, iul-2023. +# Actualizare a traducerii pentru versiunea 2.9.8, făcută de R-GC, aug-2024. +# Actualizare a traducerii pentru versiunea 2.9.35, făcută de R-GC, mar-2025. # Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul). # msgid "" msgstr "" -"Project-Id-Version: apt 2.7.2\n" +"Project-Id-Version: apt 2.9.35\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2023-07-13 19:58+0200\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-03-29 00:56+0100\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.5\n" #: apt-pkg/acquire-item.cc msgid "" @@ -75,11 +77,12 @@ msgstr "Depozitul „%s” nu mai are un fișier „Release” (versiunea lansat #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"În mod normal, acest lucru nu este permis, dar opțiunea Acquire::" -"AllowDowngradeToInsecureRepositories a fost dată pentru a-l suprascrie." +"În mod normal, acest lucru nu este permis, dar opțiunea " +"Acquire::AllowDowngradeToInsecureRepositories a fost dată pentru a-l " +"suprascrie." #: apt-pkg/acquire-item.cc #, c-format @@ -147,17 +150,18 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "S-a produs o eroare în timpul verificării semnăturii. Depozitul nu este " -"actualizat și vor fi utilizate fișierele de index anterioare. Eroare GPG: " -"%s: %s" +"actualizat și vor fi utilizate fișierele de index anterioare. Verificarea " +"semnăturii OpenPGP a eșuat: %s: %s" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "Eroare GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "Verificarea semnăturii OpenPGP a eșuat: %s: %s" #: apt-pkg/acquire-item.cc #, c-format @@ -226,8 +230,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribuție în conflict: %s (se aștepta %s, dar s-a obținut %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Depozitul „%s” și-a schimbat valoarea „%s” din „%s” în „%s”" @@ -240,7 +243,7 @@ msgstr "" "%hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -264,6 +267,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Eșec la aducerea lui %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Depozitele ar trebui să furnizeze un fișier InRelease cu semnătură clară, " +"dar nu s-a găsit niciunul la %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -285,16 +297,6 @@ msgstr "Nu se poate găsi o sursă pentru a descărca versiunea „%s” a „%s msgid "Changelog unavailable for %s=%s" msgstr "Jurnalul de modificări nu este disponibil pentru %s=%s" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Metoda „%s” nu este acceptată și este dezactivată în mod implicit. Luați în " -"considerare trecerea la http(s). Configurați Dir::Bin::Methods::%s la „%s” " -"pentru a o activa din nou." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -722,6 +724,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Eroare de sintaxă %s:%u: deșeuri suplimentare la sfârșitul fișierului" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Eroare:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Avertisment:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Aviz:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Audit:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Depanare:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -838,11 +864,11 @@ msgstr "Subprocesul %s a returnat un cod de eroare (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Subprocesul %s a ieșit în mod neașteptat" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Eroare de citire" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Eroare de scriere" @@ -1169,6 +1195,14 @@ msgstr "Nu se poate bloca directorul de administrare (%s), sunteți „root”?" msgid "Not locked" msgstr "Nu este blocat" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"Executabilul dpkg specificat în Dir::Bin::dpkg lipsește, revenind la " +"utilizarea executabilului dpkg implicit." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1363,6 +1397,14 @@ msgstr "Se pregătește pentru primirea soluției" msgid "External solver failed without a proper error message" msgstr "Soluționatorul extern a eșuat fără un mesaj de eroare relevant" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Se calculează înnoirea" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Se rezolvă dependențele" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Executarea soluționatorului extern" @@ -1693,10 +1735,6 @@ msgstr "" "Descărcarea unor fișiere index a eșuat, acestea fie au fost ignorate, fie au " "fost folosite în loc cele vechi." -#: apt-pkg/upgrade.cc -msgid "Calculating upgrade" -msgstr "Se calculează înnoirea" - #. TRANSLATOR: Very short word to be displayed before unchanged files in 'apt-get update' #: apt-private/acqprogress.cc #, c-format @@ -1863,12 +1901,6 @@ msgstr "Pachetul „%s” nu este instalat, deci nu a fost eliminat.\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Notă: se selectează „%s” în loc de „%s”\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Cele mai utilizate comenzi:" @@ -1983,25 +2015,32 @@ msgstr "Următoarele informații ar putea să vă ajute la rezolvarea situației msgid "Broken packages" msgstr "Pachete deteriorate" +#: apt-private/private-install.cc +msgid "Writing error report" +msgstr "Se scrie raportul de eroare" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Un „/usr” neunificat nu mai este acceptat, utilizați «usrmerge» pentru a " +"converti la un sistem cu un „/usr” unificat (în care directoarele /" +"{bin,sbin,lib}/ sunt legate simbolic la directoarele corespondente din /" +"usr/)." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "%s a fost selectat pentru eliminare\n" +msgstr "Consultați %s pentru mai multe detalii." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt 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 " +"Nu s-au putut aduce unele arhive, poate ar fi o idee bună să rulați «apt " "update» sau încercați cu „--fix-missing”?" #: apt-private/private-install.cc @@ -2048,6 +2087,11 @@ msgstr "" "Ce ciudat... Dimensiunile nu se potrivesc, trimiteți un mesaj la " "apt@packages.debian.org" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Dimensiunea descărcării: %so / %so\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 @@ -2055,6 +2099,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Este nevoie să descărcați %so/%so de arhive.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Dimensiunea descărcării: %so\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 @@ -2062,13 +2111,58 @@ msgstr "Este nevoie să descărcați %so/%so de arhive.\n" msgid "Need to get %sB of archives.\n" msgstr "Este nevoie să descărcați %so 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ă %so.\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 "Space needed: %sB / %sB available\n" +msgstr "Spațiu necesar: %so / %so disponibil\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Este necesar mai mult spațiu decât cel disponibil: %so > %so, instalarea " +"poate eșua" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "în %s: %so / %so disponibil\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Este nevoie de mai mult spațiu pe %s decât este disponibil: %so > %so, " +"instalarea poate eșua" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Spațiu necesar: %so\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Spațiu eliberat: %so\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 @@ -2090,18 +2184,19 @@ msgstr "" "Eliminarea pachetelor esențiale, cruciale ale sistemului nu este permisă. " "Acest lucru ar putea deteriora sistemul." -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Vreți să continuați?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Continuați totuși?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" +msgstr "Continuați?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" msgstr "" +"Continuați?\n" +"Doriți să continuați?" #: apt-private/private-install.cc msgid "Abort." @@ -2179,6 +2274,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Eroare internă, AutoRemover() a deteriorat anumite lucruri" +#: apt-private/private-install.cc +#, c-format +msgid "Use '%s' to remove it." +msgid_plural "Use '%s' to remove them." +msgstr[0] "Folosiți «%s» pentru a-l elimina." +msgstr[1] "Folosiți «%s» pentru a le elimina." +msgstr[2] "Folosiți «%s» pentru a le elimina." + #: apt-private/private-install.cc msgid "" "The following package was automatically installed and is no longer required:" @@ -2201,16 +2304,8 @@ msgstr[1] "%lu pachete au fost instalate automat și nu mai sunt necesare:\n" msgstr[2] "%lu de pachete au fost instalate automat și nu mai sunt necesare:\n" #: apt-private/private-install.cc -#, c-format -msgid "Use '%s' to remove it." -msgid_plural "Use '%s' to remove them." -msgstr[0] "Folosiți «%s» pentru a-l elimina." -msgstr[1] "Folosiți «%s» pentru a le elimina." -msgstr[2] "Folosiți «%s» pentru a le elimina." - -#: apt-private/private-install.cc -msgid "The following additional packages will be installed:" -msgstr "Următoarele pachete adiționale vor fi instalate:" +msgid "Result calculated by the 3.0 solver." +msgstr "Rezultat calculat de soluționatorul 3.0." #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2220,6 +2315,10 @@ msgstr "Pachete sugerate:" msgid "Recommended packages:" msgstr "Pachete recomandate:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Următoarele pachete adiționale vor fi instalate:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2268,9 +2367,9 @@ msgid_plural "" msgstr[0] "" "Există %i versiune suplimentară. Utilizați opțiunea „-a” pentru a o vedea." msgstr[1] "" -"Există %i versiuni suplimentare. Utilizați opțiunea „-a” pentru a-le vedea." +"Există %i versiuni suplimentare. Utilizați opțiunea „-a” pentru a le vedea." msgstr[2] "" -"Există %i de versiuni suplimentare. Utilizați opțiunea „-a” pentru a-le " +"Există %i de versiuni suplimentare. Utilizați opțiunea „-a” pentru a le " "vedea." #. TRANSLATORS: placeholder is a binary name like apt or apt-get @@ -2355,19 +2454,41 @@ msgstr " sau" msgid "The following packages have unmet dependencies:" msgstr "Următoarele pachete au dependențe neîndeplinite:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Dependențe nesatisfăcute:" + #: 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 "Installing:" +msgstr "Se instalează:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Se instalează dependențele:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "SE ELIMINĂ:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" -msgstr "Următoarele pachete vor fi ȘTERSE:" +msgstr "Următoarele pachete vor fi ELIMINATE:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Următoarele pachete au fost reținute:" +msgstr "Următoarele actualizări au fost amânate din cauza eșalonării:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Nu se actualizează încă din cauza eșalonării:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Nu se actualizează:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2377,10 +2498,22 @@ msgstr "Următoarele pachete au fost reținute:" msgid "The following packages will be upgraded:" msgstr "Următoarele pachete vor fi ÎNNOITE:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Se înnoiește:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "SE RETROGRADEAZĂ:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Următoarele pachete vor fi RETROGRADATE:" +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "Se schimbă pachetele ținute:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Următoarele pachete ținute vor fi schimbate:" @@ -2398,26 +2531,50 @@ msgstr "" "AVERTISMENT: Următoarele pachete esențiale vor fi șterse.\n" "Acest lucru NU trebuie făcut decât dacă știți exact ceea ce faceți!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Rezumat:" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "%lu înnoit(e), %lu nou instalat(e), " +#: apt-private/private-output.cc +#, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Se înnoiește: %lu, Se instalează: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinstalat(e), " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Se reinstalează: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu retrogragradat(e), " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Se retrogradează: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "%lu de eliminat și %lu neactualizat(e).\n" +#: apt-private/private-output.cc +#, c-format +msgid "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Se elimină: %lu, Nu se înnoiește: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2445,7 +2602,7 @@ msgid "Y" msgstr "D" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2463,13 +2620,13 @@ 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] "" -"Există %i înregistrare suplimentară. Utilizați opțiunea „-a” pentru a-o " +"Există %i înregistrare suplimentară. Utilizați opțiunea „-a” pentru a o " "vedea." msgstr[1] "" -"Există %i înregistrări suplimentare. Utilizați opțiunea „-a” pentru a-le " +"Există %i înregistrări suplimentare. Utilizați opțiunea „-a” pentru a le " "vedea." msgstr[2] "" -"Există %i de înregistrări suplimentare. Utilizați opțiunea „-a” pentru a-le " +"Există %i de înregistrări suplimentare. Utilizați opțiunea „-a” pentru a le " "vedea." #: apt-private/private-show.cc @@ -2636,11 +2793,11 @@ msgstr "%s nu are dependențe de compilare.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" -"Nu sunt disponibile informații despre arhitectură pentru %s. Consultați apt." -"conf(5) „APT::Architectures” pentru configurare." +"Nu sunt disponibile informații despre arhitectură pentru %s. Consultați " +"apt.conf(5) „APT::Architectures” pentru configurare." #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2683,6 +2840,11 @@ msgstr "Nu s-a putut analiza %s. Editați din nou? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Fișierul „%s” s-a modificat, executați «apt-get update».\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Rescrieți sursele %zu?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2702,6 +2864,14 @@ msgstr "" "Utilizarea lui %s ar trebui să fie preferată în locul încorporării " "informațiilor de autentificare direct în intrarea %s pentru „%s”." +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" +"Intrarea din %s pentru „%s” ar trebui să fie actualizată pentru formatul " +"deb822 .sources" + # R-GC, scrie: # mesaj, tradus cu ajutorul lui # David Kalnischkies, actualul @@ -2712,6 +2882,33 @@ msgstr "" msgid "Missing Signed-By in the %s entry for '%s'" msgstr "Lipsește opțiunea «Signed-By» din %s pentru „%s”" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Luați în considerare migrarea tuturor intrărilor sources.list(5) către " +"formatul deb822 .sources" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"Formatul deb822 .sources acceptă atât chei OpenPGP încorporate, cât și " +"externe" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Consultați pagina de manual apt-secure(8) pentru cele mai bune practici în " +"configurarea semnării depozitelor." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" +"Unele surse pot fi modernizate. Rulați „apt modernize-sources” pentru a face " +"acest lucru." + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2720,10 +2917,10 @@ msgid_plural "" msgstr[0] "" "%i pachet poate fi înnoit. Rulați «apt list --upgradable» pentru a-l vedea.\n" msgstr[1] "" -"%i pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a-le " +"%i pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a le " "vedea.\n" msgstr[2] "" -"%i de pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a-le " +"%i de pachete pot fi înnoite. Rulați «apt list --upgradable» pentru a le " "vedea.\n" #: apt-private/private-update.cc @@ -2763,6 +2960,10 @@ msgstr " Pachete virtuale mixte: " msgid " Missing: " msgstr " Lipsă: " +#: cmdline/apt-cache.cc +msgid "Total distinct source versions: " +msgstr "Total versiuni sursă distincte: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Total versiuni distincte: " @@ -3121,6 +3322,10 @@ msgstr "caută o înregistrare SRV (de ex. _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "concatenează fișiere, cu decomprimare automată" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "suma de control a fișierului" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "detectează proxy-ul folosind apt.conf" @@ -3364,10 +3569,18 @@ msgstr "înnoiește sistemul prin eliminarea/instalarea/înnoirea pachetelor" msgid "edit the source information file" msgstr "editează fișierul cu informații despre surse" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "modernizarea fișierelor .list în fișiere .sources" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "efectuează operațiile pentru satisfacerea lanțurilor de dependențe" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Configurări implicite necorespunzătoare!" @@ -3572,7 +3785,7 @@ msgstr "Algoritm de comprimare necunoscut „%s”" msgid "Compressed output %s needs a compression set" msgstr "Rezultatul comprimat %s are nevoie de o ajustare a comprimării" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Eșec la crearea conductei IPC către subproces" @@ -3683,7 +3896,7 @@ msgstr "*** Nu s-a putut face legătura î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" +msgstr " Limita de %so a dezlegării a fost atinsă.\n" #: ftparchive/writer.cc msgid "Archive had no package field" @@ -3691,23 +3904,23 @@ 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 „override”\n" +msgid " %.*s has no override entry\n" +msgstr " %.*s nu are intrare „override”\n" #: ftparchive/writer.cc #, c-format -msgid " %s maintainer is %s not %s\n" -msgstr " %s responsabil este %s nu %s\n" +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 „source override”\n" +msgid " %.*s has no source override entry\n" +msgstr " %.*s nu are nici o intrare „source override”\n" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" -msgstr " %s nu are nici intrare „binary override”\n" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s nu are nici intrare „binary override”\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3745,7 +3958,7 @@ msgstr "Antet de date necorespunzător" msgid "Connection failed" msgstr "Conectare eșuată" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3794,7 +4007,7 @@ msgstr "" msgid "Disk not found." msgstr "Disc negăsit." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Fișier negăsit" @@ -3829,7 +4042,7 @@ msgstr "Nu s-a putut crea un soclu pentru %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Nu s-a putut iniția conexiunea cu %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Eșec" @@ -3844,9 +4057,7 @@ 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" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Conectare la %s" @@ -3884,152 +4095,15 @@ msgstr "Nu s-au putut obține atributele (executarea stat() a eșuat)" msgid "Invalid URI, local URIS must not start with //" msgstr "Adresă URI nevalidă, adresele URI locale nu trebuie să înceapă cu //" -#. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc -msgid "Logging in" -msgstr "Autentificare în curs" - -#: methods/ftp.cc -msgid "Unable to determine the peer name" -msgstr "Nu se poate determina numele mașinii de la distanță" - -#: 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 răspuns: %s" - -#: methods/ftp.cc -#, c-format -msgid "USER failed, server said: %s" -msgstr "„USER” a eșuat, serverul a răspuns: %s" - -#: methods/ftp.cc -#, c-format -msgid "PASS failed, server said: %s" -msgstr "„PASS” a eșuat, serverul a răspuns: %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, " -"valoarea opțiunii „Acquire::ftp::ProxyLogin” este goală." - -#: methods/ftp.cc -#, c-format -msgid "Login script command '%s' failed, server said: %s" -msgstr "" -"Comanda scriptului de autentificare „%s” a eșuat, serverul a răspuns: %s" - -#: methods/ftp.cc -#, c-format -msgid "TYPE failed, server said: %s" -msgstr "„TYPE” a eșuat, serverul a răspuns: %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 memoriei 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 soclu" - -#: methods/ftp.cc -msgid "Could not connect data socket, connection timed out" -msgstr "" -"Nu s-a putut realiza conectarea la soclul 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 soclu pasiv." - -#: methods/ftp.cc -msgid "getaddrinfo was unable to get a listening socket" -msgstr "getaddrinfo() n-a reușit să obțină un soclu de ascultare" - -#: methods/ftp.cc -msgid "Could not bind a socket" -msgstr "Nu s-a putut realiza asocierea la un soclu" - -#: methods/ftp.cc -msgid "Could not listen on the socket" -msgstr "Nu s-a putut asculta pe soclu" - -#: methods/ftp.cc -msgid "Could not determine the socket's name" -msgstr "Nu s-a putut detecta numele soclului" - -#: 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 "Comanda „EPRT” a eșuat, serverul a răspuns: %s" - -#: methods/ftp.cc -msgid "Data socket connect timed out" -msgstr "Timpul de conectare la soclul de date a expirat" - -#: methods/ftp.cc -msgid "Unable to accept connection" -msgstr "Nu s-a putut accepta conexiunea" - -#: methods/ftp.cc methods/http.cc methods/rsh.cc -msgid "Problem hashing file" -msgstr "Problemă la calcularea sumei de control 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 răspuns „%s”" - -#: methods/ftp.cc methods/rsh.cc -msgid "Data socket timed out" -msgstr "Timp expirat pentru soclul de date" - -#: methods/ftp.cc +#: methods/gpgv.cc #, c-format -msgid "Data transfer failed, server said '%s'" -msgstr "Transferul de date a eșuat, serverul a răspuns: „%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 " +msgid "untrusted public key algorithm: %s" +msgstr "algoritm de cheie publică nesigur (nu este de încredere): %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s va fi depreciat într-o versiune viitoare" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -4052,28 +4126,18 @@ msgstr "" "amprenta digitală a cheii?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Nu s-a putut executa «apt-key» pentru verificarea semnăturii («gnupg» este " +"Nu s-a putut executa «gpgv» pentru verificarea semnăturii („gnupg” este " "instalat?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "Eroare necunoscută în timp ce se executa «apt-key»" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"Cheia este stocată în trusted.gpg keyring (%s), consultați secțiunea " -"DEPRECATION din apt-key(8) pentru detalii." +msgid "Unknown error executing gpgv" +msgstr "Eroare necunoscută în timp ce se executa «gpgv»" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" msgstr "" "Semnătura cu cheia %s utilizează un algoritm de sumă de control slab (%s)" @@ -4111,18 +4175,162 @@ msgstr "Selecția a eșuat" msgid "Connection timed out" msgstr "Timp de conectare expirat" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problemă la calcularea sumei de control pentru fișierul" + #: 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 "Fișierele goale nu pot fi arhive valide" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Eroare GPG: %s: %s" + +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "Cheia este stocată în trusted.gpg keyring (%s), consultați secțiunea " +#~ "DEPRECATION din apt-key(8) pentru detalii." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Metoda „%s” nu este acceptată și este dezactivată în mod implicit. Luați " +#~ "în considerare trecerea la http(s). Configurați Dir::Bin::Methods::%s la " +#~ "„%s” pentru a o activa din nou." + +#~ msgid "Logging in" +#~ msgstr "Autentificare în curs" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Nu se poate determina numele mașinii de la distanță" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nu s-a putut detecta numele local" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Serverul a refuzat conexiunea și a răspuns: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "„USER” a eșuat, serverul a răspuns: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "„PASS” a eșuat, serverul a răspuns: %s" + +#~ 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, valoarea opțiunii „Acquire::ftp::ProxyLogin” este goală." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "" +#~ "Comanda scriptului de autentificare „%s” a eșuat, serverul a răspuns: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "„TYPE” a eșuat, serverul a răspuns: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Timpul de conectare a expirat" + +#~ msgid "Server closed the connection" +#~ msgstr "Serverul a închis conexiunea" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Un răspuns a depășit zona memoriei tampon." + +#~ msgid "Protocol corruption" +#~ msgstr "Protocol corupt" + +#~ msgid "Could not create a socket" +#~ msgstr "Nu s-a putut crea un soclu" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Nu s-a putut realiza conectarea la soclul de date, timpul de conectare a " +#~ "expirat" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Nu s-a putut realiza conectarea la un soclu pasiv." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo() n-a reușit să obțină un soclu de ascultare" + +#~ msgid "Could not bind a socket" +#~ msgstr "Nu s-a putut realiza asocierea la un soclu" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Nu s-a putut asculta pe soclu" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Nu s-a putut detecta numele soclului" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Nu s-a putut trimite comanda PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Familie de adrese necunoscută %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Comanda „EPRT” a eșuat, serverul a răspuns: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Timpul de conectare la soclul de date a expirat" + +#~ msgid "Unable to accept connection" +#~ msgstr "Nu s-a putut accepta conexiunea" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Nu s-a putut aduce fișierul, serverul a răspuns „%s”" + +#~ msgid "Data socket timed out" +#~ msgstr "Timp expirat pentru soclul de date" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Transferul de date a eșuat, serverul a răspuns: „%s”" + +#~ msgid "Query" +#~ msgstr "Interogare" + +#~ msgid "Unable to invoke " +#~ msgstr "Nu s-a putut invoca " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Conexiune închisă prematur" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Instalat: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Următoarele pachete ținute vor fi schimbate:" + #~ msgid "Yes, do as I say!" #~ msgstr "Da, fă cum îți spun!" diff --git a/po/ru.po b/po/ru.po index 6d52a3a..951872b 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,21 +12,21 @@ # Yuri Kozlov , 2004, 2005, 2006, 2007, 2008. # Yuri Kozlov , 2009, 2010, 2012, 2015, 2016. # Lev Lamberov , 2018. -# Алексей Шилин , 2017-2021. +# Алексей Шилин , 2017-2025. # msgid "" msgstr "" -"Project-Id-Version: apt 2.2.0\n" +"Project-Id-Version: apt 2.9.30\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2021-02-22 20:02+0300\n" -"Last-Translator: Алексей Шилин \n" -"Language-Team: русский \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-02-26 11:30+0300\n" +"Last-Translator: Алексей Шилин \n" +"Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 3.30.1\n" +"X-Generator: Gtranslator 42.0\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" @@ -66,11 +66,11 @@ msgstr "Репозиторий «%s» больше не содержит фай #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" -"Обычно это не разрешается, однако указан параметр Acquire::" -"AllowDowngradeToInsecureRepositories для продолжения." +"Обычно это не разрешается, однако указан параметр " +"Acquire::AllowDowngradeToInsecureRepositories для продолжения." #: apt-pkg/acquire-item.cc #, c-format @@ -133,10 +133,14 @@ msgstr "" "аутентификация?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "Произошла ошибка при проверке подписи. Репозиторий не обновлён, и будут " "использованы предыдущие индексные файлы. Ошибка GPG: %s: %s" @@ -144,8 +148,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "Ошибка GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -154,8 +158,8 @@ msgid "" "component '%s' (component misspelt in sources.list?)" msgstr "" "Пропускается получение настроенного файла «%s», так как в репозитории «%s» " -"отсутствует компонент «%s» (возможно, компонент указан с ошибкой в sources." -"list?)" +"отсутствует компонент «%s» (возможно, компонент указан с ошибкой в " +"sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -213,8 +217,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Противоречивый выпуск: %s (ожидался %s, но получен %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "Репозиторий «%s» изменил значение поля «%s» с «%s» на «%s»" @@ -226,7 +229,7 @@ msgstr "" "Репозиторий «%s» изменил свой приоритет по умолчанию для %s с %hi на %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -249,6 +252,15 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Не удалось получить %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Репозитории должны предоставлять незашифрованный подписанный файл InRelease, " +"однако он не найден в %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -269,16 +281,6 @@ msgstr "Невозможно найти источник для загрузки msgid "Changelog unavailable for %s=%s" msgstr "Журнал изменений для %s=%s недоступен" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"Метод «%s» не поддерживается и по умолчанию отключён. Рассмотрите " -"возможность перехода на использование http(s). Чтобы включить его снова, " -"установите параметр Dir::Bin::Methods::%s в значение «%s»." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -688,6 +690,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Синтаксическая ошибка %s:%u: лишние символы в конце файла" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Ошибка:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Предупреждение:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Уведомление:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Аудит:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Отладка:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -804,11 +830,11 @@ msgstr "Порождённый процесс %s вернул код ошибк msgid "Sub-process %s exited unexpectedly" msgstr "Порождённый процесс %s неожиданно завершился" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Ошибка чтения" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Ошибка записи" @@ -1133,6 +1159,14 @@ msgstr "" msgid "Not locked" msgstr "Не заблокирован" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"Исполняемый файл dpkg, указанный в Dir::Bin::dpkg, не найден, поэтому будет " +"использован dpkg по умолчанию." + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1323,6 +1357,14 @@ msgstr "Подготовка к приёму решения" msgid "External solver failed without a proper error message" msgstr "Внешний решатель завершился с ошибкой, не передав сообщения об ошибке" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Расчёт обновлений" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "Разрешение зависимостей" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Выполнение внешнего решателя" @@ -1637,10 +1679,6 @@ 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 @@ -1807,12 +1845,6 @@ msgstr "Пакет «%s» не установлен, поэтому не мож msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Заметьте, вместо «%2$s» выбирается «%1$s»\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Основные команды:" @@ -1922,25 +1954,32 @@ msgstr "Следующая информация, возможно, вам пом msgid "Broken packages" msgstr "Сломанные пакеты" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Ошибка записи" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Необъединённый usr более не поддерживается, воспользуйтесь usrmerge для " +"перехода к системе с объединённым usr." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "Выбран %s для удаления.\n" +msgstr "См. %s для получения дополнительной информации." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Не удалось получить некоторые архивы; возможно, нужно запустить apt-get " +"Не удалось получить некоторые архивы; возможно, нужно запустить apt " "update или попытаться повторить запуск с ключом --fix-missing?" #: apt-private/private-install.cc @@ -1980,7 +2019,12 @@ msgstr "Внутренняя ошибка: упорядочение пакето #: apt-private/private-install.cc msgid "How odd... The sizes didn't match, email apt@packages.debian.org" -msgstr "Странно. Несовпадение размеров, напишите на apt@packages.debian.org" +msgstr "Странно… Несовпадение размеров, напишите на apt@packages.debian.org" + +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Объём загрузки: %sB / %sB\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 @@ -1989,6 +2033,11 @@ msgstr "Странно. Несовпадение размеров, напиши msgid "Need to get %sB/%sB of archives.\n" msgstr "Необходимо скачать %sB/%sB архивов.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1996,8 +2045,6 @@ msgstr "Необходимо скачать %sB/%sB архивов.\n" 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" @@ -2005,6 +2052,54 @@ 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Требуется больше дискового пространства, чем доступно: %sB > %sB, установка " +"может завершиться с ошибкой" + +# "Лишние" пробелы служат для выравнивания с выводимым выше сообщением. +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "в %s: %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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"В %s требуется больше дискового пространства, чем доступно: %sB > %sB, " +"установка может завершиться с ошибкой" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Требуемое пространство: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\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 @@ -2025,19 +2120,20 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Хотите продолжить?" +"Удаление критически важных для системы пакетов запрещено. Это может привести " +"к поломке системы." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Всё равно продолжить?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Продолжить?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Хотите продолжить?" #: apt-private/private-install.cc msgid "Abort." @@ -2100,6 +2196,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Внутренняя ошибка: AutoRemover всё поломал" +#: 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 package was automatically installed and is no longer required:" @@ -2122,16 +2226,8 @@ msgstr[1] "%lu пакета было установлено автоматиче 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 "Будут установлены следующие дополнительные пакеты:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2141,6 +2237,10 @@ msgstr "Предлагаемые пакеты:" msgid "Recommended packages:" msgstr "Рекомендуемые пакеты:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Будут установлены следующие дополнительные пакеты:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2272,19 +2372,42 @@ msgstr " или" msgid "The following packages have unmet dependencies:" msgstr "Следующие пакеты имеют неудовлетворённые зависимости:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Неудовлетворённые зависимости:" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "Следующие НОВЫЕ пакеты будут установлены:" +#: apt-private/private-output.cc +msgid "Installing:" +msgstr "Установка:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Установка зависимостей:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "УДАЛЕНИЕ:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Следующие пакеты будут УДАЛЕНЫ:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Следующие пакеты будут оставлены в неизменном виде:" +msgstr "" +"Обновление следующих пакетов отложено из-за поэтапного распространения:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Обновление отложено из-за поэтапного распространения:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Пропуск обновления:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2294,10 +2417,22 @@ msgstr "Следующие пакеты будут оставлены в неи msgid "The following packages will be upgraded:" msgstr "Следующие пакеты будут обновлены:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Обновление:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "Замена на СТАРЫЕ версии:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Следующие пакеты будут заменены на СТАРЫЕ версии:" +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "Изменение зафиксированных пакетов:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Следующие зафиксированные пакеты будут изменены:" @@ -2315,26 +2450,50 @@ msgstr "" "ВНИМАНИЕ: Следующие пакеты первой необходимости будут удалены.\n" "НЕ ДЕЛАЙТЕ этого, если вы НЕ представляете себе все возможные последствия!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "Сводка:" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "Обновлено %lu пакетов, установлено %lu новых пакетов, " +#: apt-private/private-output.cc +#, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Обновление: %lu, Установка: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "переустановлено %lu пакетов, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Переустановка: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu пакетов заменено на старые версии, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Удаление: %lu, Пропуск обновления: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2362,7 +2521,7 @@ msgid "Y" msgstr "Д" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "Н" @@ -2543,11 +2702,11 @@ msgstr "%s не имеет сборочных зависимостей.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" -"Отсутствует информация об архитектуре %s. Для её настройки смотрите apt." -"conf(5) об APT::Architectures" +"Отсутствует информация об архитектуре %s. Для её настройки смотрите " +"apt.conf(5) об APT::Architectures" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2588,6 +2747,11 @@ msgstr "Не удалось разобрать содержимое %s. Повт msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Файл «%s» изменён, запустите «apt-get update».\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "Преобразовать %zu источников?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2607,11 +2771,44 @@ msgstr "" "Использование %s предпочтительнее, чем встраивание данных для входа " "непосредственно в запись %s для «%s»" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "Запись %s для «%s» должна быть преобразована в формат deb822 .sources" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Отсутствует поле Signed-By в записи %s для '%s'" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" +"Рассмотрите возможность перевода всех записей sources.list(5) в формат " +"deb822 .sources" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" +"Формат deb822 .sources поддерживает как встроенные, так и внешние ключи " +"OpenPGP" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Рекомендации по настройке подписей репозиториев смотрите на справочной " +"странице apt-secure(8)." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" +"Некоторые источники могут быть преобразованы. Для этого выполните «apt " +"modernize-sources»." #: apt-private/private-update.cc #, c-format @@ -2664,6 +2861,12 @@ msgstr " Смешанных виртуальных пакетов: " msgid " Missing: " msgstr " Отсутствует: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Всего уникальных версий: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Всего уникальных версий: " @@ -2913,14 +3116,14 @@ msgstr "выполнить обновление" #: cmdline/apt-get.cc msgid "Install new packages (pkg is libc6 not libc6.deb)" msgstr "" -"установить новые пакеты (указывается имя пакета libc6, а не имя файла libc6." -"deb)" +"установить новые пакеты (указывается имя пакета libc6, а не имя файла " +"libc6.deb)" #: cmdline/apt-get.cc msgid "Reinstall packages (pkg is libc6 not libc6.deb)" msgstr "" -"переустановить пакеты (указывается имя пакета libc6, а не имя файла libc6." -"deb)" +"переустановить пакеты (указывается имя пакета libc6, а не имя файла " +"libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" @@ -3020,6 +3223,10 @@ msgstr "найти запись типа SRV (например, _http._tcp.ftp.d msgid "concatenate files, with automatic decompression" msgstr "объединить файлы, с автоматическим разжатием" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "вычислить хеш-сумму файла" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "определить прокси с помощью apt.conf" @@ -3237,8 +3444,6 @@ msgid "remove packages" msgstr "удалить пакеты" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" msgstr "автоматически удалить все неиспользуемые пакеты" @@ -3260,10 +3465,18 @@ msgstr "обновить систему, удаляя/устанавливая/ msgid "edit the source information file" msgstr "редактировать файл с источниками пакетов" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "преобразовать файлы .list в файлы .sources" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "удовлетворить строки зависимостей" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Неправильное значение по умолчанию!" @@ -3470,7 +3683,7 @@ msgid "Compressed output %s needs a compression set" msgstr "" "Для получения сжатого вывода %s необходимо указать набор алгоритмов сжатия" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Не удалось создать IPC-канал для порождённого процесса" @@ -3589,27 +3802,27 @@ msgstr "В архиве нет поля package" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " Нет записи о переназначении (override) для %s\n" +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" +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" +msgid " %.*s has no source override entry\n" msgstr "" " Нет записи о переназначении пакетов с исходным кодом (source override) для " -"%s\n" +"%.*s\n" #: ftparchive/writer.cc #, c-format -msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr "" " Также нет записи о переназначении двоичных пакетов (binary override) для " -"%s\n" +"%.*s\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3648,7 +3861,7 @@ msgstr "Неверные данные заголовка" msgid "Connection failed" msgstr "Соединение разорвано" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3694,7 +3907,7 @@ msgstr "Не удалось размонтировать CD-ROM в %s; возм msgid "Disk not found." msgstr "Диск не найден." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Файл не найден" @@ -3729,7 +3942,7 @@ msgstr "Не удалось создать сокет для %s (f=%u t=%u p=%u) msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Невозможно инициализировать соединение с %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Неудачно" @@ -3744,9 +3957,7 @@ msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Соединение с %s" @@ -3784,152 +3995,15 @@ msgstr "Не удалось получить атрибуты" 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 +#: methods/gpgv.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 "Невозможно вызвать " +msgid "untrusted public key algorithm: %s" +msgstr "ненадёжный алгоритм с открытым ключом: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s будет признан устаревшим в будущем выпуске" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3952,28 +4026,19 @@ msgstr "" "ключа?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Не удалось выполнить «apt-key» для проверки подписи (программа gnupg " -"установлена?)" +"Не удалось выполнить «gpgv» для проверки подписи (установлен ли gnupg?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "Неизвестная ошибка при выполнении apt-key" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" +msgid "Unknown error executing gpgv" +msgstr "Неизвестная ошибка при выполнении gpgv" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "При подписи ключом %s используется нестойкий алгоритм свёртки (%s)" +msgstr "При подписи ключом %s используется нестойкий алгоритм (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -4007,18 +4072,164 @@ msgstr "Ошибка в select" msgid "Connection timed out" msgstr "Время ожидания для соединения истекло" +#: methods/http.cc +msgid "Problem hashing file" +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 "Пустые файлы не могут быть допустимыми архивами" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Ошибка GPG: %s: %s" + +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "Ключ сохранён в устаревшей связке ключей trusted.gpg (%s), обратитесь к " +#~ "разделу DEPRECATION справочной страницы apt-key(8) для подробной " +#~ "информации." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Метод «%s» не поддерживается и по умолчанию отключён. Рассмотрите " +#~ "возможность перехода на использование http(s). Чтобы включить его снова, " +#~ "установите параметр Dir::Bin::Methods::%s в значение «%s»." + +#~ msgid "Logging in" +#~ msgstr "Вход в систему" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Невозможно определить имя удалённого узла" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Невозможно определить локальное имя" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Сервер разорвал соединение и сообщил: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Команда USER не выполнена, сервер сообщил: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Команда PASS не выполнена, сервер сообщил: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "Прокси-сервер указан, однако нет сценария входа в систему: " +#~ "Acquire::ftp::ProxyLogin пуст." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "" +#~ "Команда «%s» сценария входа в систему завершилась неудачно, сервер " +#~ "сообщил: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Команда TYPE не выполнена, сервер сообщил: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Допустимое время ожидания для соединения истекло" + +#~ msgid "Server closed the connection" +#~ msgstr "Сервер прервал соединение" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Ответ переполнил буфер." + +#~ msgid "Protocol corruption" +#~ msgstr "Искажение протокола" + +#~ msgid "Could not create a socket" +#~ msgstr "Не удалось создать сокет" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Не удалось присоединить сокет данных: время ожидания для соединения " +#~ "истекло" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Не удалось присоединить пассивный сокет" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "Вызов getaddrinfo не смог получить сокет" + +#~ msgid "Could not bind a socket" +#~ msgstr "Не удалось привязать сокет" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Не удалось принимать соединения на сокете" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Не удалось определить имя сокета" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Невозможно послать команду PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Неизвестное семейство адресов %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Команда EPRT не выполнена, сервер сообщил: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Время на установление соединения для сокета данных истекло" + +#~ msgid "Unable to accept connection" +#~ msgstr "Невозможно принять соединение" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Невозможно получить файл, сервер сообщил: «%s»" + +#~ msgid "Data socket timed out" +#~ msgstr "Время ожидания для сокета данных истекло" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Передача данных завершилась неудачно, сервер сообщил: «%s»" + +#~ msgid "Query" +#~ msgstr "Запрос" + +#~ msgid "Unable to invoke " +#~ msgstr "Невозможно вызвать " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Соединение закрыто преждевременно" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Установлен: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Следующие зафиксированные пакеты будут изменены:" + #~ msgid "Yes, do as I say!" #~ msgstr "Да, делать, как я говорю!" @@ -4466,9 +4677,6 @@ msgstr "Пустые файлы не могут быть допустимыми #~ 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» или " diff --git a/po/sk.po b/po/sk.po index e1fd8da..83c1d9e 100644 --- a/po/sk.po +++ b/po/sk.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2012-06-28 20:49+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -53,8 +53,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,7 +121,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -129,8 +130,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -192,8 +193,7 @@ msgstr "" 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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -204,7 +204,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -223,6 +223,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Zlyhalo stiahnutie %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -243,13 +250,6 @@ msgstr "Nie je možné nájsť zdroj na stiahnutie verzie „%s“ balíka „%s msgid "Changelog unavailable for %s=%s" msgstr "Záznam zmien %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -644,6 +644,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaktická chyba %s:%u: Na konci súboru sú chybné údaje" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -754,11 +778,11 @@ msgstr "Podproces %s vrátil chybový kód (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Chyba pri čítaní" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Chyba pri zápise" @@ -1072,6 +1096,12 @@ msgstr "Nedá sa zamknúť adresár na správu (%s), ste root?" msgid "Not locked" msgstr "Nie je zamknuté" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1262,6 +1292,16 @@ msgstr "Pripraviť sa na prijatie riešenia" msgid "External solver failed without a proper error message" msgstr "Externý riešiteľ zlyhal bez uvedenia chybovej správy" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Prepočítava sa aktualizácia" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Celkom závislostí: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Spustiť externého riešiteľa" @@ -1569,10 +1609,6 @@ 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 @@ -1737,12 +1773,6 @@ msgstr "Balík „%s“ nie je nainštalovaný, nedá sa teda odstrániť\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Poznámka: „%s“ sa vyberá namiesto „%s“\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1846,6 +1876,12 @@ msgstr "Nasledovné informácie vám možno pomôžu vyriešiť túto situáciu: msgid "Broken packages" msgstr "Poškodené balíky" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Chyba pri zápise" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1860,10 +1896,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Niektoré archívy sa nedajú stiahnuť. Skúste spustiť apt-get update alebo --" +"Niektoré archívy sa nedajú stiahnuť. Skúste spustiť apt update alebo --" "fix-missing" #: apt-private/private-install.cc @@ -1899,8 +1935,14 @@ 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" +"Nezvyčajná udalosť... Veľkosti nesúhlasia, pošlite e-mail na " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Sťahuje sa %s %s" #. 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 @@ -1909,6 +1951,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Je potrebné stiahnuť %sB/%sB archívov.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Sťahuje sa %s %s" + #. 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 @@ -1916,13 +1964,55 @@ msgstr "Je potrebné stiahnuť %sB/%sB archívov.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Uložená menovka: %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 @@ -1940,19 +2030,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Chcete pokračovať?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Chcete pokračovať?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Prerušené." @@ -2014,6 +2103,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Vnútorná chyba, AutoRemover niečo pokazil" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2040,17 +2137,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2060,6 +2148,11 @@ msgstr "Navrhované balíky:" msgid "Recommended packages:" msgstr "Odporúčané balíky:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2195,10 +2288,32 @@ msgstr " alebo" msgid "The following packages have unmet dependencies:" msgstr "Nasledovné balíky majú nesplnené závislosti:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Zlyhalo splnenie %s závislosti pre %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Inštaluje sa %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Celkom závislostí: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Nasledovné balíky sa ODSTRÁNIA:" @@ -2209,6 +2324,16 @@ msgstr "Nasledovné balíky sa ODSTRÁNIA:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:" @@ -2217,10 +2342,24 @@ msgstr "Nasledovné balíky sa ponechajú v súčasnej verzii:" msgid "The following packages will be upgraded:" msgstr "Nasledovné balíky sa aktualizujú:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Nasledovné balíky sa DEGRADUJÚ:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Pripevnené balíky:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Nasledovné pridržané balíky sa zmenia:" @@ -2238,26 +2377,53 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Inštaluje sa %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu reinštalovaných, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Inštaluje sa %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu degradovaných, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Sťahuje sa %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2285,7 +2451,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2466,8 +2632,8 @@ msgstr "%s nemá žiadne závislosti na zostavenie.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" @@ -2508,6 +2674,11 @@ msgstr "Premenovanie %s na %s zlyhalo" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2525,12 +2696,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2577,6 +2773,12 @@ msgstr " Zmiešaných virtuálnych balíkov: " msgid " Missing: " msgstr " Chýbajúcich: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Celkom rôznych verzií: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Celkom rôznych verzií: " @@ -2908,6 +3110,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problém s hašovaním súboru" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3158,12 +3366,20 @@ msgstr "" msgid "edit the source information file" msgstr "Načítavajú sa stavové informácie" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Zlyhalo splnenie %s závislosti pre %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Chybné predvolené nastavenie!" @@ -3361,7 +3577,7 @@ msgstr "Neznámy kompresný algoritmus „%s“" msgid "Compressed output %s needs a compression set" msgstr "Komprimovaný výstup %s potrebuje kompresnú sadu" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Zlyhalo vytvorenie IPC rúry k podprocesu" @@ -3480,23 +3696,23 @@ 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" +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" +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" +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" +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" @@ -3534,7 +3750,7 @@ msgstr "Zlé dátové záhlavie" msgid "Connection failed" msgstr "Spojenie zlyhalo" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3576,7 +3792,7 @@ msgstr "Nedá sa odpojiť CD-ROM v %s - možno sa ešte používa." msgid "Disk not found." msgstr "Disk sa nenašiel." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Súbor sa nenašiel" @@ -3612,7 +3828,7 @@ msgstr "Nedá sa vytvoriť socket pre %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Nedá sa nadviazať spojenie na %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Chyba" @@ -3626,9 +3842,7 @@ msgstr "Nedá sa pripojiť k %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Nedá sa pripojiť k %s:%s (%s), uplynul čas spojenia" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Pripája sa k %s" @@ -3666,148 +3880,14 @@ msgstr "Vyhodnotenie zlyhalo" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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ť " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3827,21 +3907,19 @@ msgid "" 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Neznáma chyba pri spustení apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3880,18 +3958,138 @@ msgstr "Výber zlyhal" msgid "Connection timed out" msgstr "Uplynul čas spojenia" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problém s hašovaním súboru" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Chyba GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Prihlasovanie" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Nedá sa zistiť názov druhej strany" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Nedá sa zistiť lokálny názov" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Server zamietol naše spojenie s chybou: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Zlyhalo zadanie používateľa, server odpovedal: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Zlyhalo zadanie hesla, server odpovedal: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Príkaz „%s“ prihlasovacieho skriptu zlyhal, server odpovedal: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Zlyhalo zadanie typu, server odpovedal: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Uplynul čas spojenia" + +#~ msgid "Server closed the connection" +#~ msgstr "Server ukončil spojenie" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Odpoveď preplnila zásobník." + +#~ msgid "Protocol corruption" +#~ msgstr "Narušenie protokolu" + +#~ msgid "Could not create a socket" +#~ msgstr "Nedá sa vytvoriť socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Nedá sa pripojiť dátový socket, uplynul čas spojenia" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Nedá sa pripojiť pasívny socket." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo nezískal počúvajúci socket" + +#~ msgid "Could not bind a socket" +#~ msgstr "Nedá sa nadviazať socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Na sockete sa nedá počúvať" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Názov socketu sa nedá zistiť" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Príkaz PORT sa nedá odoslať" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Neznáma rodina adries %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Zlyhalo zadanie EPRT, server odpovedal: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Uplynulo spojenie dátového socketu" + +#~ msgid "Unable to accept connection" +#~ msgstr "Spojenie sa nedá prijať" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Súbor sa nedá stiahnuť, server odpovedal „%s“" + +#~ msgid "Data socket timed out" +#~ msgstr "Uplynula doba dátového socketu" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Prenos dát zlyhal, server odpovedal „%s“" + +#~ msgid "Query" +#~ msgstr "Dotaz" + +#~ msgid "Unable to invoke " +#~ msgstr "Nedá sa vyvolať " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Spojenie bolo predčasne ukončené" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Nainštalovaná verzia: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Nasledovné pridržané balíky sa zmenia:" + #~ msgid "Yes, do as I say!" #~ msgstr "Áno, urob to, čo vravím!" @@ -4129,8 +4327,8 @@ msgstr "Prázdne súbory nemôžu byť platné archívy" #~ " -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)." +#~ "Ďalšie informácie nájdete na manuálových stránkach apt-mark(8) a " +#~ "apt.conf(5)." #~ msgid "" #~ "Options:\n" @@ -4162,8 +4360,8 @@ msgstr "Prázdne súbory nemôžu byť platné archívy" #~ " -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)." +#~ "Ď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" @@ -4308,9 +4506,6 @@ msgstr "Prázdne súbory nemôžu byť platné archívy" #~ 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“" diff --git a/po/sl.po b/po/sl.po index 76814b1..06cce49 100644 --- a/po/sl.po +++ b/po/sl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2012-06-27 21:29+0000\n" "Last-Translator: Andrej Znidarsic \n" "Language-Team: Slovenian \n" @@ -53,8 +53,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,7 +121,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -129,8 +130,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -192,8 +193,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Distribucija v sporu: %s (pričakovana %s, toda dobljena %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -204,7 +204,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -223,6 +223,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Ni mogoče dobiti %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -243,13 +250,6 @@ msgstr "Ni mogoče najti vira za prejem različice '%s' paketa '%s'" msgid "Changelog unavailable for %s=%s" msgstr "Dnevnik sprememb za %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -641,6 +641,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Skladenjska napaka %s:%u: Dodatna krama na koncu datoteke" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -751,11 +775,11 @@ msgstr "Pod-opravilo %s je vrnilo kodo napake (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Napaka branja" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Napaka pisanja" @@ -1070,6 +1094,12 @@ msgstr "Skrbniške mape (%s) ni mogoče zakleniti. Ali ste skrbnik?" msgid "Not locked" msgstr "Ni zaklenjeno" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1261,6 +1291,16 @@ msgstr "Priprava za rešitev prejemanja" 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 apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Preračunavanje nadgradnje" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Vseh odvisnosti: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Izvedi zunanji reševalnik" @@ -1568,10 +1608,6 @@ 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 @@ -1737,12 +1773,6 @@ msgstr "Paket '%s' ni nameščen, zato ni bil odstranjen\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Izbiranje '%s' namesto '%s'\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1846,6 +1876,12 @@ msgstr "Naslednji podatki vam bodo morda pomagali rešiti težavo:" msgid "Broken packages" msgstr "Pokvarjeni paketi" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Napaka pisanja" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1860,10 +1896,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Nekaterih arhivov ni mogoče dobiti. Poskusite uporabiti apt-get update ali --" +"Nekaterih arhivov ni mogoče dobiti. Poskusite uporabiti apt update ali --" "fix-missing." #: apt-private/private-install.cc @@ -1899,8 +1935,14 @@ 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" +"Kako čudno ... Velikosti se ne ujemata, pošljite sporočilo na " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Prejemanje %s %s" #. 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 @@ -1909,6 +1951,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Potrebno je dobiti %sB/%sB arhivov.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Prejemanje %s %s" + #. 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 @@ -1916,13 +1964,55 @@ msgstr "Potrebno je dobiti %sB/%sB arhivov.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Shranjena oznaka: %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 @@ -1940,19 +2030,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Ali želite nadaljevati?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Ali želite nadaljevati?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Prekini." @@ -2020,6 +2109,15 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Notranja napaka, SamodejniOdstranjevalnik je pokvaril stvari" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2043,18 +2141,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2064,6 +2152,11 @@ msgstr "Predlagani paketi:" msgid "Recommended packages:" msgstr "Priporočeni paketi:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2199,10 +2292,32 @@ msgstr " ali" msgid "The following packages have unmet dependencies:" msgstr "Naslednji paketi imajo nerešene odvisnosti:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Ni mogoče zadostiti %s odvisnosti za %s: %s" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Nameščanje %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Vseh odvisnosti: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Naslednji novi paketi bodo ODSTRANJENI:" @@ -2213,6 +2328,16 @@ msgstr "Naslednji novi paketi bodo ODSTRANJENI:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Naslednji paketi so bili zadržani:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Naslednji paketi so bili zadržani:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Naslednji paketi so bili zadržani:" @@ -2221,10 +2346,24 @@ msgstr "Naslednji paketi so bili zadržani:" msgid "The following packages will be upgraded:" msgstr "Naslednji paketi bodo nadgrajeni:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Naslednji paketi bodo POSTARANI:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Pripeti paketi:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Naslednji zadržani paketi bodo spremenjeni:" @@ -2242,26 +2381,53 @@ msgstr "" "OPOZORILO: Naslednji nujni paketi bodo odstranjeni.\n" "Tega NE storite, razen če ne veste natanko kaj počenjate!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Nameščanje %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu posodobljenih, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Nameščanje %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu postaranih, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Prejemanje %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2289,7 +2455,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2470,8 +2636,8 @@ msgstr "%s nima odvisnosti za gradnjo.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" @@ -2512,6 +2678,11 @@ msgstr "Ni mogoče preimenovati %s v %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2529,12 +2700,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2582,6 +2778,12 @@ msgstr " Mešani navidezni paketi: " msgid " Missing: " msgstr " Manjka: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Vseh različic: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Vseh različic: " @@ -2912,6 +3114,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Težava med razprševanjem datoteke" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3163,12 +3371,20 @@ msgstr "" msgid "edit the source information file" msgstr "Branje podatkov o stanju" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Ni mogoče zadostiti %s odvisnosti za %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Napačna privzeta nastavitev!" @@ -3367,7 +3583,7 @@ msgstr "Neznan algoritem stiskanja '%s'" msgid "Compressed output %s needs a compression set" msgstr "Stisnjen izhod %s potrebuje niz stiskanja" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Ustvarjanje cevi IPC do podopravila je spodletelo" @@ -3486,23 +3702,23 @@ 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" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s nima tudi binarnega vnosa prepisa\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3540,7 +3756,7 @@ msgstr "Napačni podatki glave" msgid "Connection failed" msgstr "Povezava ni uspela" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3582,7 +3798,7 @@ msgstr "Ni mogoče odklopiti CD-ROM-a v %s, ker je morda še v uporabi." msgid "Disk not found." msgstr "Diska ni mogoče najti." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Datoteke ni mogoče najti" @@ -3618,7 +3834,7 @@ msgstr "Ni mogoče ustvariti vtiča za %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Ni mogoče začeti povezave z %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Spodletelo" @@ -3632,9 +3848,7 @@ msgstr "Ni se mogoče povezati z %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Ni se mogoče povezati z %s:%s (%s). Povezava je zakasnela." -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Povezovanje z %s" @@ -3672,148 +3886,14 @@ msgstr "Določitev ni uspela" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3834,21 +3914,19 @@ 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Neznana napaka med izvajanjem apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3886,18 +3964,138 @@ msgstr "Izbira ni uspela" msgid "Connection timed out" msgstr "Povezava je zakasnela" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Težava med razprševanjem datoteke" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Napaka GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Prijavljanje" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Ni mogoče ugotoviti imena gostitelja" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Ni mogoče določiti krajevnega imena" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Strežnik je zavrnil povezavo in sporočil: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER je spodletel, strežnik je odgovoril: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS je spodletel, strežnik je odgovoril: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Ukaz prijavne skripte '%s' ni uspel, strežnik je odgovoril: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE je spodletel, strežnik je odgovoril: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Povezava je zakasnela" + +#~ msgid "Server closed the connection" +#~ msgstr "Strežnik je zaprl povezavo" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Odgovor je prekoračil predpomnilnik." + +#~ msgid "Protocol corruption" +#~ msgstr "Okvara protokola" + +#~ msgid "Could not create a socket" +#~ msgstr "Ni mogoče ustvariti vtiča" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Ni mogoče povezati podatkovnega vtiča. Povezava je zakasnela." + +#~ msgid "Could not connect passive socket." +#~ msgstr "Ni mogoče povezat pasivnega vtiča." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo ni mogel dobiti poslušajočega vtiča" + +#~ msgid "Could not bind a socket" +#~ msgstr "Ni mogoče povezati vtiča" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Ni mogoče poslušati na vtiču" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Ni mogoče določiti imena vtiča" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Ni mogoče poslati ukaza PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Neznan naslov družine %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT ni uspel, strežnik je odgovoril: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Povezava podatkovne vtičnice je zakasnela" + +#~ msgid "Unable to accept connection" +#~ msgstr "Ni mogoče sprejeti povezave" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Ni mogoče pridobiti datoteke, strežnik je odgovoril '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Podatkovna vtič je potekel" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Prenos podatkov ni uspel, strežnik je odgovoril '%s'" + +#~ msgid "Query" +#~ msgstr "Poizvedba" + +#~ msgid "Unable to invoke " +#~ msgstr "Ni mogoče klicati " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Povezava se je prezgodaj zaprla" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Nameščen: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Naslednji zadržani paketi bodo spremenjeni:" + #~ msgid "Yes, do as I say!" #~ msgstr "Da, naredi tako kot pravim!" @@ -4113,8 +4311,8 @@ msgstr "Prazne datoteke ne morejo biti veljavni arhivi" #~ " -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" +#~ "Za več podrobnosti si oglejte strani priročnikov apt-cache(8) in " +#~ "apt.conf(5).\n" #, fuzzy #~ msgid "" @@ -4326,9 +4524,6 @@ msgstr "Prazne datoteke ne morejo biti veljavni arhivi" #~ 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'" diff --git a/po/sv.po b/po/sv.po index b9cbd0b..d5b0185 100644 --- a/po/sv.po +++ b/po/sv.po @@ -5,42 +5,48 @@ # the individual files for licensing information. # # This file is distributed under the same license as the apt package. -# Peter Karlsson , 2002-2008. +# Peter Krefting , 2002-2025. # Daniel Nylander , 2005-2010. # Anders Jonsson , 2015. # msgid "" msgstr "" -"Project-Id-Version: apt 1.0.5\n" +"Project-Id-Version: apt 2.9.2\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2015-08-19 21:33+0200\n" -"Last-Translator: Anders Jonsson \n" -"Language-Team: Swedish \n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-02-12 22:07+0100\n" +"Last-Translator: Peter Krefting \n" +"Language-Team: Swedish \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" +"X-Generator: Gtranslator 42.0\n" #: apt-pkg/acquire-item.cc msgid "" "Updating from such a repository can't be done securely, and is therefore " "disabled by default." msgstr "" +"Kan inte uppdatera från ett sådant förråd på ett säkert sätt, det har därför " +"inaktiverats 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 "" +"Kan inte autentisera data från ett sådant förråd och det kan därför " +"potentiellt vara farligt att använda." #: apt-pkg/acquire-item.cc msgid "" "See apt-secure(8) manpage for repository creation and user configuration " "details." msgstr "" +"Se manualsidan apt-secure(8) för detaljer om att skapa förråd och " +"användarkonfiguration." #: apt-pkg/acquire-item.cc #, c-format @@ -48,32 +54,32 @@ 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 +#, c-format msgid "The repository '%s' no longer has a Release file." -msgstr "Förrådet ”%s” är inte längre signerat." +msgstr "Förrådet ”%s” har inte längre någon Release-fil." #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"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." +"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 +#, c-format msgid "The repository '%s' is not signed." -msgstr "Förrådet ”%s” är inte längre signerat." +msgstr "Förrådet ”%s” är inte signerat." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' does not have a Release file." -msgstr "Förrådet ”%s” är inte längre signerat." +msgstr "Förrådet ”%s” saknar filen Release." #: apt-pkg/acquire-item.cc -#, fuzzy, c-format +#, c-format msgid "The repository '%s' provides only weak security information." -msgstr "Förrådet ”%s” är inte längre signerat." +msgstr "Förrådet ”%s” tillhandahåller endast svag säkerhetsinformation." #: apt-pkg/acquire-item.cc ftparchive/writer.cc #, c-format @@ -91,7 +97,7 @@ msgstr "Hash-kontrollsumman stämmer inte" #: apt-pkg/acquire-item.cc msgid "Insufficient information available to perform this download securely" -msgstr "" +msgstr "Inte tillräcklig information för att utföra hämtningen säkert" #: apt-pkg/acquire-item.cc apt-pkg/contrib/fileutl.cc #, c-format @@ -122,19 +128,22 @@ 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" +"uppdaterats och de tidigare indexfilerna kommer att användas. GPG-fel: %s: %s" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -142,6 +151,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" +"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” " +"saknar komponenten ”%s” (felstavad komponent i sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -149,6 +160,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't support " "architecture '%s'" msgstr "" +"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” " +"inte stöder arkitekturen ”%s”" #: apt-pkg/acquire-item.cc #, c-format @@ -156,6 +169,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' does not seem to " "provide it (sources.list entry misspelt?)" msgstr "" +"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” " +"inte verkar tillhandahålla den (felstavad post i sources.list?)" #: apt-pkg/acquire-item.cc #, c-format @@ -163,6 +178,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' provides only " "weak security information for it" msgstr "" +"Hoppar över hämtning av den konfigurerade filen ”%s” eftersom förrådet ”%s” " +"endast tillhandahåller svag säkerhetsinformation för den" #. 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 @@ -180,39 +197,35 @@ msgstr "" #. the time until the file will be valid - formatted in the same way as in #. the download progress display (e.g. 7d 3h 42min 1s) #: apt-pkg/acquire-item.cc -#, fuzzy, c-format -#| msgid "" -#| "Release file for %s is expired (invalid since %s). Updates for this " -#| "repository will not be applied." +#, c-format msgid "" "Release file for %s is not valid yet (invalid for another %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." +"Release-fil för %s är inte giltig ännu (ogiltig ytterligare %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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" -msgstr "" +msgstr "Förrådet ”%s” ändrade värdet på ”%s” från ”%s” till ”%s”" #: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its default priority for %s from %hi to %hi." -msgstr "" +msgstr "Förrådet ”%s” ändrade sin förvalda prioritet för %s från %hi till %hi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" -msgstr "" +msgstr "Ytterligare information om detta finns på nätet i versionsfakta på: %s" #. TRANSLATOR: %s is the name of the manpage in question, e.g. apt-secure(8) #: apt-pkg/acquire-item.cc @@ -221,12 +234,23 @@ msgid "" "This must be accepted explicitly before updates for this repository can be " "applied. See %s manpage for details." msgstr "" +"Detta måste accepteras explicit innan uppdateringar från förrådet kan tas " +"emot. Se manualsidan %s för detaljer." #: apt-pkg/acquire-item.cc 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/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" +"Förrådet bör tillhandahålla en läslig signerad ”InRelease”-fil, men ingen " +"hittades på %s." + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -243,26 +267,20 @@ msgstr "Kan inte hitta en källa för att hämta version ”%s” av ”%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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" +msgid "Changelog unavailable for %s=%s" +msgstr "Ändringslogg inte tillgänglig för %s=%s" #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." -msgstr "" +msgstr "Metoden ”%s” har explicit inaktiverats i konfigurationen." #: 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 "" +"Om det är meningen att använda Tor, kom ihåg att använda %s istället för %s." #: apt-pkg/acquire-worker.cc #, c-format @@ -304,18 +322,16 @@ msgstr "Kunde inte låsa katalogen %s" #, c-format msgid "No sandbox user '%s' on the system, can not drop privileges" msgstr "" +"Ingen sandlåda för användaren ”%s” på systemet, kan inte släppa privilegier" #: apt-pkg/acquire.cc -#, fuzzy, c-format -#| msgid "" -#| "Can't drop privileges for downloading as file '%s' couldn't be accessed " -#| "by user '%s'." +#, c-format 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”." +"Hämtningen utförs utan sandlåda eftersom filen ”%s” inte kunde kommas åt av " +"användaren ”%s”." #: apt-pkg/acquire.cc apt-pkg/clean.cc #, c-format @@ -556,18 +572,20 @@ msgid "Failed to stat the cdrom" msgstr "Kunde inte ta status på cd-romen" #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, 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." +msgstr "" +"Kommandoradsflaggan ”%c” [från %s] förstås inte tillsammans med de andra " +"flaggorna." #: apt-pkg/contrib/cmndline.cc -#, fuzzy, c-format +#, c-format msgid "" "Command line option %s is not understood in combination with the other " "options" -msgstr "Förstår inte kommandoradsflaggan %s" +msgstr "Kommandoradsflaggan %s förstås inte tillsammans med de andra flaggorna" #: apt-pkg/contrib/cmndline.cc #, c-format @@ -655,10 +673,34 @@ msgstr "Syntaxfel %s:%u: clear-direktivet kräver ett flaggträd som argument" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntaxfel %s:%u: Överflödigt skräp vid filens slut" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "Fel:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "Varning:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "Notis:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "Granskning:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "Felsökning:" + #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format +#, c-format msgid "Cannot find a configured compressor for '%s'" -msgstr "Kan inte hitta autentiseringspost för: %s" +msgstr "Kan inte hitta konfigurerad komprimerare för ”%s”" #: apt-pkg/contrib/extracttar.cc msgid "Corrupted archive" @@ -669,10 +711,9 @@ msgid "Tar checksum failed, archive corrupted" msgstr "Tar-kontrollsumma misslyckades, arkivet skadat" #: apt-pkg/contrib/extracttar.cc -#, fuzzy, c-format -#| msgid "Unknown TAR header type %u, member %s" +#, c-format msgid "Unknown TAR header type %u" -msgstr "Okänd TAR-rubriktyp %u, del %s" +msgstr "Okänd TAR-rubriktyp %u" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -695,15 +736,14 @@ 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 -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not get lock %s. It is held by process %d" -msgstr "Kunde inte erhålla låset %s" +msgstr "Kunde inte erhålla låset %s. Det hålls av process %d" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Could not get lock %s. It is held by process %d (%s)" -msgstr "" +msgstr "Kunde inte erhålla låset %s. Det hålls av process %d (%s)" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -715,6 +755,8 @@ msgid "" "Be aware that removing the lock file is not a solution and may break your " "system." msgstr "" +"Observera att ta bort låsfilen inte är en lösning och kan ödelägga ditt " +"system." #: apt-pkg/contrib/fileutl.cc #, c-format @@ -766,11 +808,11 @@ msgstr "Underprocessen %s svarade med en felkod (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Underprocessen %s avslutades oväntat" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Läsfel" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Skrivfel" @@ -781,7 +823,7 @@ msgstr "Problem med att stänga gzip-filen %s" #: apt-pkg/contrib/fileutl.cc msgid "Unexpected end of file" -msgstr "" +msgstr "Oväntat filslut" #: apt-pkg/contrib/fileutl.cc msgid "Failed to create subprocess IPC" @@ -897,6 +939,8 @@ msgid "" "%s: Credentials for %s match, but the protocol is not encrypted. Annotate " "with %s:// to use." msgstr "" +"%s: Vitsorden för %s stämmer, men protokollet är inte krypterat. Förse med " +"%s:// för att använda." #: apt-pkg/contrib/progress.cc #, c-format @@ -913,16 +957,14 @@ msgid "..." msgstr "…" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llu/%llus" -msgstr "%c%s… %u%%" +msgstr "%c%s... %llu/%llus" #: apt-pkg/contrib/progress.cc -#, fuzzy, c-format -#| msgid "%c%s... %u%%" +#, c-format msgid "%c%s... %llus" -msgstr "%c%s… %u%%" +msgstr "%c%s... %llus" #: apt-pkg/contrib/progress.cc #, c-format @@ -973,10 +1015,9 @@ msgid "Unparsable control file" msgstr "Kunde inte tolka control-filen" #: apt-pkg/deb/debindexfile.cc -#, fuzzy, c-format -#| msgid "Could not get lock %s" +#, c-format msgid "Could not read meta data from %s" -msgstr "Kunde inte erhålla låset %s" +msgstr "Kunde inte läsa metadata från %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; another identifier like Contents; @@ -984,7 +1025,7 @@ msgstr "Kunde inte erhålla låset %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s wants to acquire the same file (%s) as %s from source %s" -msgstr "" +msgstr "Målet %s önskar hämta samma fil (%s) som %s från källan %s" #. TRANSLATOR: an identifier like Packages; Releasefile key indicating #. a file like main/binary-amd64/Packages; filename and linenumber of @@ -992,7 +1033,7 @@ msgstr "" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Target %s (%s) is configured multiple times in %s and %s" -msgstr "" +msgstr "Målet %s (%s) är konfigurerat flera gånger i %s och %s" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -1015,6 +1056,8 @@ msgid "" "No Hash entry in Release file %s which is considered strong enough for " "security purposes" msgstr "" +"Ingen Hash-post i Release-filen %s som anses vara stark nog för " +"säkerhetsmässiga syften." #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -1026,16 +1069,19 @@ msgstr "Ogiltig ”%s”-post i Release-filen %s" #, c-format msgid "Conflicting values set for option %s regarding source %s %s" msgstr "" +"Motstridiga värden inställda för flaggan %s i förhållande till källan %s %s" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Invalid value set for option %s regarding source %s %s (%s)" -msgstr "" +msgstr "Ogiltigt värde för flaggan %s i förhållande till källan %s %s (%s)" #: apt-pkg/deb/debmetaindex.cc #, c-format msgid "Conflicting values set for option %s regarding source %s %s: %s != %s" msgstr "" +"Motstridiga värden inställda för flaggan %s i förhållande till källan %s %s: " +"%s != %s" #: apt-pkg/deb/debrecords.cc apt-pkg/tagfile.cc #, c-format @@ -1043,26 +1089,21 @@ msgid "Unable to parse package file %s (%d)" msgstr "Kunde inte tolka paketfilen %s (%d)" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Waiting for headers" +#, c-format msgid "Waiting for cache lock: %s" -msgstr "Väntar på rubriker" +msgstr "Väntar på cachelås: %s" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "" -#| "Unable to lock the administration directory (%s), is another process " -#| "using it?" +#, c-format msgid "" "Unable to acquire the dpkg frontend lock (%s), is another process using it?" msgstr "" -"Kunde inte låsa administrationskatalogen (%s). Använder en annan process den?" +"Kunde inte låsa dpkg-framändelåset (%s), använder en annan process det?" #: apt-pkg/deb/debsystem.cc -#, fuzzy, c-format -#| msgid "Unable to lock the administration directory (%s), are you root?" +#, c-format msgid "Unable to acquire the dpkg frontend lock (%s), are you root?" -msgstr "Kunde inte låsa administrationskatalogen (%s). Är du root?" +msgstr "Kunde inte låsa dpkg-framändelåset (%s), är du root?" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a @@ -1090,6 +1131,12 @@ msgstr "Kunde inte låsa administrationskatalogen (%s). Är du root?" msgid "Not locked" msgstr "Inte låst" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1280,29 +1327,35 @@ msgstr "Förbered för att motta lösning" msgid "External solver failed without a proper error message" msgstr "Extern lösare misslyckades utan något informativt felmeddelande" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Beräknar uppgradering" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Installing dependencies:" +msgid "Solving dependencies" +msgstr "Installerar beroenden:" + #: 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" +msgstr "Kör extern planerare" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send request to planner" -msgstr "Skicka förfrågan till lösare" +msgstr "Skicka förfrågan till planerare" #: apt-pkg/edsp.cc -#, fuzzy msgid "Send scenario to planner" -msgstr "Skicka scenario till lösare" +msgstr "Skicka scenario till planerare" #: apt-pkg/edsp.cc -#, fuzzy msgid "External planner failed without a proper error message" -msgstr "Extern lösare misslyckades utan något informativt felmeddelande" +msgstr "Extern planerare misslyckades utan något informativt felmeddelande" #: apt-pkg/indexcopy.cc #, c-format @@ -1404,9 +1457,8 @@ 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" +msgstr "Paketcachefilen är skadad, den har fel hash-värde" #: apt-pkg/pkgcache.cc msgid "Depends" @@ -1532,11 +1584,15 @@ msgstr "Förstod inte nåltypen %s" msgid "" "%s: The special 'Pin-Priority: %s' can only be used for 'Package: *' records" msgstr "" +"%s: Den speciella ”Pin-Priority: %s” kan endast användas för ”Package: *”-" +"poster" #: apt-pkg/policy.cc #, c-format msgid "%s: Value %s is outside the range of valid pin priorities (%d to %d)" msgstr "" +"%s: Värdet %s är utanför intervallet för giltiga fastnålningsprioriteter (%d " +"till %d)" #: apt-pkg/policy.cc msgid "No priority (or zero) specified for pin" @@ -1545,9 +1601,9 @@ 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 +#, c-format msgid "Malformed entry %u in %s file %s (%s)" -msgstr "Felaktig åsidosättning %s rad %llu (%s)" +msgstr "Felaktig post %u i %s-filen %s (%s)" #: apt-pkg/sourcelist.cc #, c-format @@ -1560,9 +1616,9 @@ 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 +#, c-format msgid "Malformed stanza %u in source list %s (type)" -msgstr "Rad %u i källistan %s har fel format (typ)" +msgstr "Stycket %u i källistan %s har fel format (typ)" #: apt-pkg/sourcelist.cc #, c-format @@ -1572,18 +1628,16 @@ msgstr "Typen ”%s” är inte känd i post %u i källistan %s" #: apt-pkg/sourcelist.cc apt-private/private-install.cc #, c-format msgid "Unsupported file %s given on commandline" -msgstr "" +msgstr "Filen %s som angavs på kommandoraden stöds ej" #: apt-pkg/srcrecords.cc -#, fuzzy -#| msgid "You must put some 'source' URIs in your sources.list" msgid "You must put some 'deb-src' URIs in your sources.list" -msgstr "Du måste lägga till några ”source”-URI:er i din sources.list" +msgstr "Du måste lägga till några ”deb-src”-URI:er i din sources.list" #: apt-pkg/tagfile.cc #, c-format msgid "Cannot convert %s to integer: out of range" -msgstr "" +msgstr "Kan inte omvandla %s till heltal: utanför intervallet" #: apt-pkg/update.cc msgid "" @@ -1593,10 +1647,6 @@ 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 @@ -1649,6 +1699,7 @@ msgid "" "Do you want to accept these changes and continue updating from this " "repository?" msgstr "" +"Vill du godta dessa ändringar och fortsätta uppdatera från detta förråd?" #: apt-private/private-cachefile.cc msgid "Correcting dependencies..." @@ -1689,17 +1740,17 @@ 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" +msgstr "Observera, väljer ”%s” för funktionen ”%s”\n" #: apt-private/private-cacheset.cc -#, fuzzy, c-format +#, c-format msgid "Note, selecting '%s' for glob '%s'\n" -msgstr "Observera, väljer \"%s\" för det reguljära uttrycket \"%s\"\n" +msgstr "Observera, väljer ”%s” för jokermönstret ”%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" +msgstr "Observera, väljer ”%s” för det reguljära uttrycket ”%s”\n" #: apt-private/private-cacheset.cc #, c-format @@ -1707,9 +1758,8 @@ 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]" +msgstr " [Installerat]" #: apt-private/private-cacheset.cc msgid " [Not candidate version]" @@ -1737,12 +1787,12 @@ 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" +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" +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 @@ -1759,22 +1809,16 @@ 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" +msgstr "Observera, väljer ”%s” istället för ”%s”\n" #: apt-private/private-cmndline.cc msgid "Most used commands:" -msgstr "" +msgstr "Vanligaste kommandona:" #: apt-private/private-cmndline.cc #, c-format msgid "See %s for more information about the available commands." -msgstr "" +msgstr "Se %s för mer information om tillgängliga kommandon." #: apt-private/private-cmndline.cc msgid "" @@ -1783,6 +1827,10 @@ msgid "" "Package and version choices can be expressed via apt_preferences(5).\n" "Security details are available in apt-secure(8).\n" msgstr "" +"Konfigurationsflaggor och –syntax beskrivs i apt.conf(5).\n" +"Information om hur du konfigurerar källor hittas i sources.list(5).\n" +"Paket- och versionsval kan uttryckas genom apt_preferences(5).\n" +"Säkerhetsinformation finns i apt-secure(8).\n" #: apt-private/private-cmndline.cc msgid "This APT has Super Cow Powers." @@ -1797,6 +1845,8 @@ msgid "" "--force-yes is deprecated, use one of the options starting with --allow " "instead." msgstr "" +"--force-yes rekommenderas inte, använd en av flaggorna som börjar med --" +"allow istället." #: apt-private/private-depends.cc apt-private/private-download.cc #: apt-private/private-show.cc cmdline/apt-mark.cc @@ -1820,11 +1870,11 @@ msgid "Install these packages without verification?" msgstr "Installera dessa paket utan verifiering?" #: 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" +msgstr "" +"Hittade oautentiserade paket och -y användes utan --allow-unauthenticated" #: apt-private/private-download.cc #, c-format @@ -1870,24 +1920,32 @@ msgstr "Följande information kan vara till hjälp för att lösa situationen:" msgid "Broken packages" msgstr "Trasiga paket" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Skrivfel" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"Ej sammanslagen usr stöds inte längre, använd usrmerge för att konvertera " +"till system med sammanslaget usr." #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc #, c-format msgid "See %s for more details." -msgstr "" +msgstr "Se %s för ytterligare detaljer." #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Vissa arkiv kunde inte hämtas. Prova att köra ”apt-get update” eller med --" +"Vissa arkiv kunde inte hämtas. Prova att köra ”apt update” eller med --" "fix-missing." #: apt-private/private-install.cc @@ -1899,23 +1957,22 @@ 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" +msgstr "" +"Systemkritiska paket togs bort och -y användes utan --allow-remove-essential." #: 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" +msgstr "Paket nedgraderades och -y användes utan --allow-downgrades." #: 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" +msgstr "" +"Fasthållna paket ändrades -y användes utan --allow-change-held-packages." #: apt-private/private-install.cc msgid "Internal error, Ordering didn't finish" @@ -1924,8 +1981,13 @@ 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" +"Konstigt… storlekarna stämde inte överens, skicka e-post till " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " Hämtningsstorlek: %sB / %sB\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 @@ -1934,6 +1996,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Behöver hämta %sB/%sB arkiv.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\n" +msgstr " Hämtningsstorlek: %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 @@ -1941,14 +2008,58 @@ msgstr "Behöver hämta %sB/%sB arkiv.\n" 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 "Space needed: %sB / %sB available\n" +msgstr "Nödvändigt utrymme: %sB / %sB tillgängligt\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "" +"Behöver mer plats än tillgängligt: %sB > %sB, installationen kan misslyckas" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "i %s: %sB / %sB tillgängligt\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" +"Behöver mer plats i %s än tillgängligt: %sB > %sB, installationen kan " +"misslyckas" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "Nödvändigt utrymme: %sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\n" +msgstr " Frigjort utrymme: %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 @@ -1965,19 +2076,20 @@ msgid "" "Removing essential system-critical packages is not permitted. This might " "break the system." msgstr "" - -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Vill du fortsätta?" +"Tillåter inte ta bort nödvändiga systemkritiska paket. Detta kan ödelägga " +"systemet." #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "" +msgid "Continue anyway?" +msgstr "Fortsätta ändå?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "" +msgid "Continue?" +msgstr "Fortsätta?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Vill du fortsätta?" # Visas då man svarar nej #: apt-private/private-install.cc @@ -2039,6 +2151,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Internt fel, AutoRemover förstörde något" +#: 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2061,16 +2180,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2080,6 +2191,10 @@ msgstr "Föreslagna paket:" msgid "Recommended packages:" msgstr "Rekommenderade paket:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "Följande ytterligare paket kommer att installeras:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2100,9 +2215,9 @@ 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 +#, c-format msgid "%s is already the newest version (%s).\n" -msgstr "%s är redan den senaste versionen.\n" +msgstr "%s är redan den senaste versionen (%s).\n" #: apt-private/private-install.cc cmdline/apt-get.cc cmdline/apt-mark.cc #, c-format @@ -2143,7 +2258,7 @@ msgid "" " 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" +"OBSERVERA: Detta är endast en simulering!\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" @@ -2216,19 +2331,41 @@ msgstr " eller" msgid "The following packages have unmet dependencies:" msgstr "Följande paket har beroenden som inte kan tillfredsställas:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "Otillfredsställda beroenden:" + #: 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 "Installing:" +msgstr "Installerar:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "Installerar beroenden:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "TAR BORT:" + #: 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 -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "Följande paket har hållits tillbaka:" +msgstr "Följande uppgraderingar har skjutits upp på grund av fasning:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "Uppgraderar inte ännu på grund av fasning:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "Uppgraderar inte:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2238,10 +2375,22 @@ msgstr "Följande paket har hållits tillbaka:" msgid "The following packages will be upgraded:" msgstr "Följande paket kommer att uppgraderas:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "Uppgraderar:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "NEDGRADERAR:" + #: 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 "Changing held packages:" +msgstr "Ändrar kvarhållna paket:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Följande tillbakahållna paket kommer att ändras:" @@ -2259,26 +2408,50 @@ 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 +msgid "Summary:" +msgstr "Sammanfattning:" + #: 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 "Upgrading: %lu, Installing: %lu, " +msgstr "Uppgraderar: %lu, Installerar: %lu," + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu att installera om, " +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "Ominstallerar: %lu, " + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu att nedgradera, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "Nedgraderar: %lu, " + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "Tar bort: %lu, Uppgraderar inte: %lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2306,7 +2479,7 @@ msgid "Y" msgstr "J" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2347,7 +2520,7 @@ msgstr "Fastnålade paket:" #: apt-private/private-show.cc #, c-format msgid "%s -> %s with priority %d\n" -msgstr "" +msgstr "%s -> %s med prioritet %d\n" #: apt-private/private-show.cc msgid " Installed: " @@ -2368,7 +2541,7 @@ msgstr " Versionstabell:" #: apt-private/private-show.cc msgid "phased" -msgstr "" +msgstr "fasad" #: apt-private/private-source.cc #, c-format @@ -2486,11 +2659,11 @@ msgstr "%s har inga byggberoenden.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"Ingen arkitekturinformation tillgänglig för %s. Se apt.conf(5) " +"APT::Architectures för inställning" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2501,6 +2674,7 @@ msgstr "Du måste ange minst ett paket att kontrollera byggberoenden för" msgid "" "Invalid operator '%c' at offset %d, did you mean '%c%c' or '%c='? - in: %s" msgstr "" +"Ogiltig operator ”%c” vid offset %d, menade du ”%c%c” eller ”%c=”? - i: %s" #: apt-private/private-source.cc #, c-format @@ -2526,11 +2700,15 @@ msgstr "Misslyckades med att tolka %s. Redigera igen? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Din ”%s”-fil ändrades, kör ”apt-get update”.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc -#, fuzzy, c-format +#, 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" +msgstr "Paketet %s med version %s har ett otillfredsställt beroende:\n" #: apt-private/private-update.cc msgid "The update command takes no arguments" @@ -2543,11 +2721,44 @@ msgid "" "Usage of %s should be preferred over embedding login information directly in " "the %s entry for '%s'" msgstr "" +"Det rekommenderas att använda %s istället för att bädda in " +"inloggningsinformation direkt i %s-posten för ”%s”" + +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "Saknad Signed-By i %s-posten för ”%s”" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" +"Se manualsidan apt-secure(8) för detaljer om att skapa förråd och " +"användarkonfiguration." + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" #: apt-private/private-update.cc @@ -2565,9 +2776,9 @@ msgid "All packages are up to date." msgstr "Alla paket är uppdaterade." #: cmdline/apt-cache.cc cmdline/apt-mark.cc -#, fuzzy, c-format +#, c-format msgid "%s does not take any arguments" -msgstr "Uppdateringskommandot tar inga argument" +msgstr "%s tar inga argument" #: cmdline/apt-cache.cc msgid "Total package names: " @@ -2597,6 +2808,12 @@ msgstr " Blandade virtuella paket: " msgid " Missing: " msgstr " Saknade: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Totalt antal olika versioner: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Totalt antal olika versioner: " @@ -2649,6 +2866,15 @@ msgid "" "too long ago, but in exchange apt-cache works independently of the\n" "availability of the configured sources (e.g. offline).\n" msgstr "" +"Användning: apt-cache [flaggor] kommando\n" +" apt-cache [flaggor] show paket1 [paket2 …]\n" +"\n" +"apt-cache efterfrågar och visar tillgänglig information om installerade\n" +"och installerbara paket. Det jobbar helt och hållet på data hämtat till\n" +"den lokala cachen med kommandot ”update” i t.ex. apt-get. Den visade\n" +"information kan därför vara föråldrad och den senaste uppdateringen\n" +"gjordes för länge sedan, men apt-cache fungerar däremot oavsett om de\n" +"konfigurerade källorna är tillgängliga (t.ex. utan nätverk).\n" #: cmdline/apt-cache.cc msgid "Show source records" @@ -2717,13 +2943,17 @@ msgid "" "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 "" +"Användning: apt-cdrom [flaggor] kommando\n" +"\n" +"apt-cdrom används för att lägga till CDROM:ar, USB-minnen och andra\n" +"borttagbara mediatyper som paketkällor för APT. Monteringspunkten\n" +"och enhetsinformationen hämtas från apt.conf(5), udev(7) och fstab(5).\n" #: 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" @@ -2732,15 +2962,17 @@ msgid "" msgstr "" "Användning: apt-config [flaggor] kommando\n" "\n" -"apt-config är ett enkelt verktyg för att läsa APTs konfigurationsfil\n" +"apt-config är ett gränssnitt mot konfigurationsinställningarna som\n" +"används av alla APT-verktyg, huvudsakligen tänkt för felsökning\n" +"och skalskript.\n" #: cmdline/apt-config.cc msgid "get configuration values via shell evaluation" -msgstr "" +msgstr "hämta konfigurationsvärden via skalutvärdering" #: cmdline/apt-config.cc msgid "show the active configuration setting" -msgstr "" +msgstr "visa aktiv konfigurationsinställning" #: cmdline/apt-dump-solver.cc msgid "" @@ -2749,9 +2981,12 @@ msgid "" "apt-dump-solver is an interface to store an EDSP scenario in\n" "a file and optionally forwards it to another solver.\n" msgstr "" +"Användning: apt-dump-solver\n" +"\n" +"apt-dump-solver är ett gränssnitt för att lagra ett EDSP-scenario\n" +"i en fil och möjligen vidaresända den till en annan lösare.\n" #: cmdline/apt-extracttemplates.cc -#, fuzzy msgid "" "Usage: apt-extracttemplates file1 [file2 ...]\n" "\n" @@ -2761,14 +2996,10 @@ msgid "" 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" +"apt-extracttemplates används för att hämta ut konfigurations- \n" +"och mallfiler från debianpaket. Det används huvudsakligen av\n" +"debconf(1) för att ställa konfigurationsfrågor innan paket\n" +"installeras.\n" #: cmdline/apt-extracttemplates.cc msgid "Cannot get debconf version. Is debconf installed?" @@ -2801,7 +3032,6 @@ 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" @@ -2813,11 +3043,12 @@ msgid "" "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" +" 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" +"apt-get är ett kommandoradsgränssnitt för att hämta paket\n" +"och installation om dem från autentiserade källor och för att\n" +"installera, uppgradera och ta bort paket och deras beroenden.\n" #: cmdline/apt-get.cc msgid "Retrieve new lists of packages" @@ -2832,10 +3063,8 @@ msgid "Install new packages (pkg is libc6 not libc6.deb)" msgstr "Installera nya paket (paket är libc6, inte libc6.deb)" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Install new packages (pkg is libc6 not libc6.deb)" msgid "Reinstall packages (pkg is libc6 not libc6.deb)" -msgstr "Installera nya paket (paket är libc6, inte libc6.deb)" +msgstr "Ominstallera paket (paket är libc6, inte libc6.deb)" #: cmdline/apt-get.cc msgid "Remove packages" @@ -2862,10 +3091,8 @@ msgid "Configure build-dependencies for source packages" msgstr "Tillfredsställ byggberoenden för källkodspaket" #: cmdline/apt-get.cc -#, fuzzy -#| msgid "Building dependency tree" msgid "Satisfy dependency strings" -msgstr "Bygger beroendeträd" +msgstr "Uppfyll beroendesträngar" #: cmdline/apt-get.cc msgid "Erase downloaded archive files" @@ -2906,10 +3133,9 @@ msgstr "Hämtning misslyckades" #: cmdline/apt-helper.cc #, c-format msgid "GetSrvRec failed for %s" -msgstr "" +msgstr "GetSrvRec misslyckades för %s" #: cmdline/apt-helper.cc -#, fuzzy msgid "" "Usage: apt-helper [options] command\n" " apt-helper [options] cat-file file ...\n" @@ -2919,9 +3145,12 @@ msgid "" "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" +" apt-helper [flaggor] cat-file file …\n" +" apt-helper [flaggor] download-file uri målsökväg\n" "\n" -"apt-helper är en intern hjälpare för apt\n" +"apt-helper innehåller flera olika kommandon som kan användas av\n" +"skalskript för att t.ex använda samma mellanserverinställningar\n" +"eller hämtningssystem som APT.\n" #: cmdline/apt-helper.cc msgid "download the given uri to the target-path" @@ -2929,11 +3158,17 @@ 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 "" +msgstr "slå upp en SRV-post (t.ex. _http._tcp.ftp.debian.org)" #: cmdline/apt-helper.cc msgid "concatenate files, with automatic decompression" -msgstr "" +msgstr "slå ihop filer, med automatisk dekomprimering" + +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problem med att lägga filen till hashtabellen" #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" @@ -2941,18 +3176,17 @@ msgstr "hitta proxy med hjälp av apt.conf" #: cmdline/apt-helper.cc msgid "wait for system to be online" -msgstr "" +msgstr "vänta på att systemet ansluter till nätverket" #: cmdline/apt-helper.cc msgid "drop privileges before running given command" -msgstr "" +msgstr "släpp privilegier innan angivet kommando körs" #: cmdline/apt-helper.cc msgid "analyse a pattern" -msgstr "" +msgstr "analysera ett mönster" #: cmdline/apt-internal-planner.cc -#, fuzzy msgid "" "Usage: apt-internal-planner\n" "\n" @@ -2960,20 +3194,13 @@ msgid "" "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" +"Användning: apt-internal-planner\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" +"apt-internal-planner är ett gränssnitt för att använda den aktuella\n" +"interna installationsplaneraren för APT-familjen på samma sätt som\n" +"en extern, för felsökning eller liknande.\n" #: cmdline/apt-internal-solver.cc -#, fuzzy msgid "" "Usage: apt-internal-solver\n" "\n" @@ -2983,15 +3210,9 @@ msgid "" 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" +"apt-internal-solver är ett gränssnitt för att använda den aktuella\n" +"interna lösaren för APT-familjen på samma sätt som en extern, för\n" +"felsökning eller liknande.\n" #: cmdline/apt-mark.cc #, c-format @@ -3010,13 +3231,11 @@ msgstr "%s var redan satt till automatiskt installerad.\n" #: cmdline/apt-mark.cc msgid "No changes necessary" -msgstr "" +msgstr "Inga ändringar nödvändiga" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "The following NEW packages will be installed:" msgid "The following packages will be marked as automatically installed:" -msgstr "Följande NYA paket kommer att installeras:" +msgstr "Följande paket kommer markeras som automatiskt installerade:" #: cmdline/apt-mark.cc #, c-format @@ -3045,20 +3264,19 @@ msgstr "Avbröt tillbakahållning av %s.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for purge.\n" -msgstr "" +msgstr "Valde ”%s” för radering.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for removal.\n" -msgstr "" +msgstr "Valde ”%s” för borttagning.\n" #: cmdline/apt-mark.cc #, c-format msgid "Selected %s for installation.\n" -msgstr "" +msgstr "Valde ”%s” för installation.\n" #: cmdline/apt-mark.cc -#, fuzzy msgid "" "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" "\n" @@ -3071,7 +3289,8 @@ msgstr "" "\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" +"användas för att ändra dpkg(1)-markeringsläge för paket, och\n" +"för att lista alla paket med eller utan vissa markeringar.\n" #: cmdline/apt-mark.cc msgid "Mark the given packages as automatically installed" @@ -3082,10 +3301,8 @@ msgid "Mark the given packages as manually installed" msgstr "Markera de angivna paketen som manuellt installerade" #: cmdline/apt-mark.cc -#, fuzzy -#| msgid "Mark the given packages as automatically installed" msgid "Mark all dependencies of meta packages as automatically installed." -msgstr "Markera de angivna paketen som automatiskt installerade" +msgstr "Markera alla beroenden för metapaket som automatiskt installerade." #: cmdline/apt-mark.cc msgid "Mark a package as held back" @@ -3119,6 +3336,12 @@ msgid "" "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 "" +"Användning: apt-sortpkgs [flaggor] fil1 [fil2 …]\n" +"\n" +"apt-sortpkgs är ett enkelt verktyg för att sortera paket-\n" +"informationsfiler. Som standard sorterar det efter binär\n" +"paketinformation, men flaggan -s kan användas för att byta till\n" +"källkodspaketsortering istället.\n" #: cmdline/apt.cc msgid "" @@ -3130,6 +3353,13 @@ msgid "" "like apt-get and apt-cache, but enables options more suitable for\n" "interactive use by default.\n" msgstr "" +"Användning: apt [flaggor] kommando\n" +"\n" +"apt är ett kommandoradspakethanterare och tillhandahåller kommandon\n" +"för att söka och hantera såväl som efterfråga information om paket.\n" +"Det tillhandahåller samma funktionalitet som de specialiserade\n" +"APT-verktygen, såsom apt-get och apt-cache, men tillhandahåller\n" +"som standard flaggor som är mer lämpliga för att användas interaktivt.\n" #. query #: cmdline/apt.cc @@ -3150,20 +3380,16 @@ msgid "install packages" msgstr "installera paket" #: cmdline/apt.cc -#, fuzzy -#| msgid "install packages" msgid "reinstall packages" -msgstr "installera paket" +msgstr "ominstallera paket" #: cmdline/apt.cc msgid "remove packages" msgstr "ta bort paket" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "Ta automatiskt bort alla oanvända paket" +msgstr "ta automatiskt bort alla oanvända paket" #. system wide stuff #: cmdline/apt.cc @@ -3184,10 +3410,16 @@ msgid "edit the source information file" msgstr "redigera källinformationsfilen" #: cmdline/apt.cc -#, fuzzy -#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "modernize .list files to .sources files" +msgstr "" + +#: cmdline/apt.cc msgid "satisfy dependency strings" -msgstr "Misslyckades med att tillfredsställa %s-beroendet för %s: %s" +msgstr "tillfredsställ beroendesträngar" + +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" #: dselect/install msgid "Bad default setting!" @@ -3210,8 +3442,7 @@ 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" +msgstr "att konfigureras. Detta kan resultera i dubblettfel eller fel orsakade" #: dselect/install msgid "or errors caused by missing dependencies. This is OK, only the errors" @@ -3389,7 +3620,7 @@ msgstr "Okänd komprimeringsalgoritm ”%s”" msgid "Compressed output %s needs a compression set" msgstr "Komprimerade utdata %s behöver en komprimeringsuppsättning" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Misslyckades med att skapa IPC-rör till underprocess" @@ -3511,24 +3742,28 @@ 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" +#, fuzzy, c-format +#| msgid " %s has no override entry\n" +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" +#, fuzzy, c-format +#| msgid " %s maintainer is %s not %s\n" +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" +#, fuzzy, c-format +#| msgid " %s has no source override entry\n" +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" +#, fuzzy, c-format +#| msgid " %s has no binary override entry either\n" +msgid " %.*s has no binary override entry either\n" msgstr " %s har heller ingen binär åsidosättningspost\n" #: methods/basehttp.cc @@ -3567,10 +3802,10 @@ msgstr "Felaktiga data i huvud" msgid "Connection failed" msgstr "Anslutningen misslyckades" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" -msgstr "" +msgstr "Filen har oväntad storlek (%llu != %llu). Spegelsynkning pågår?" #: methods/basehttp.cc #, c-format @@ -3611,7 +3846,7 @@ msgstr "Kunde inte avmontera cd-rom:en i %s, den kanske fortfarande används." msgid "Disk not found." msgstr "Skivan hittades inte." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Filen hittades inte" @@ -3619,7 +3854,7 @@ msgstr "Filen hittades inte" #: methods/connect.cc #, c-format msgid "Direct connection to %s domains is blocked by default." -msgstr "" +msgstr "Direkt anslutning till %s-domäner blockeras som standard." #: methods/connect.cc #, c-format @@ -3627,10 +3862,9 @@ msgid "[IP: %s %s]" msgstr "[IP: %s %s]" #: methods/connect.cc -#, fuzzy, c-format -#| msgid "Connecting to %s (%s)" +#, c-format msgid "Connected to %s (%s)" -msgstr "Ansluter till %s (%s)" +msgstr "Ansluten till %s (%s)" #: methods/connect.cc methods/http.cc #, c-format @@ -3648,7 +3882,7 @@ msgstr "Kunde inte skapa ett uttag (socket) för %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Kunde inte initiera anslutningen till %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Misslyckades" @@ -3662,9 +3896,7 @@ msgstr "Kunde inte ansluta till %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Kunde inte ansluta till %s:%s (%s), anslutningen överskred tidsgräns" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Ansluter till %s" @@ -3704,159 +3936,23 @@ msgstr "Misslyckades med att ta status" 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 +#: methods/gpgv.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 " +msgid "untrusted public key algorithm: %s" +msgstr "obetrodd algoritm för öppen nyckel: %s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc -#, fuzzy, c-format +#, 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?)" +"Signerad fil är inte giltig, fick ”%s” (kräver nätverket autentisering?)" #: methods/gpgv.cc msgid "At least one invalid signature was encountered." @@ -3870,26 +3966,19 @@ msgstr "" "fingeravtryck?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" -"Kunde inte köra ”apt-key” för att verifiera signatur (är gnupg installerad?)" +"Kunde inte köra ”gpgv” 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" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" +msgid "Unknown error executing gpgv" +msgstr "Okänt fel vid körning av gpgv" #. 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 algorithm (%s)" -msgstr "" +msgstr "Signaturen för nyckeln %s använder en svag algoritm (%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -3923,18 +4012,155 @@ msgstr "”Select” misslyckades" msgid "Connection timed out" msgstr "Anslutningen överskred tidsgränsen" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problem med att lägga filen till hashtabellen" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG-fel: %s: %s" + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "Metoden ”%s” stöds inte och har inaktiverats som standard. Överväg att " +#~ "byta till http(s). Sätt Dir::Bin::Methods::%s till ”%s” för att aktivera " +#~ "det igen." + +#~ msgid "Logging in" +#~ msgstr "Loggar in" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Kunde inte fastställa namnet på partnern" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Kunde inte fastställa det lokala namnet" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Servern nekade anslutningen och sade: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER misslyckades, servern sade: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS misslyckades, servern sade: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Kommandot ”%s” i inloggningsskriptet misslyckades, servern sade: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE misslyckades, servern sade: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Tidsgränsen för anslutningen överskreds" + +#~ msgid "Server closed the connection" +#~ msgstr "Servern stängde anslutningen" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Ett svar spillde bufferten." + +#~ msgid "Protocol corruption" +#~ msgstr "Protokollet skadat" + +#~ msgid "Could not create a socket" +#~ msgstr "Kunde inte skapa ett uttag (socket)" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Kunde inte ansluta datauttaget (socket), inget svar inom tidsgräns" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Kunde inte ansluta passivt uttag (socket)." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo kunde inte få tag i ett lyssnande uttag (socket)" + +#~ msgid "Could not bind a socket" +#~ msgstr "Kunde inte binda ett uttag (socket)" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Kunde inte lyssna på uttaget (socket)" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Kunde inte fastställa uttagets namn (socket)" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Kunde inte sända PORT-kommando" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Okänd adressfamilj %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT misslyckades, servern sade: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Anslutet datauttag (socket) fick inte svar inom tidsgränsen" + +#~ msgid "Unable to accept connection" +#~ msgstr "Kunde inte ta emot anslutningen" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Kunde inte hämta filen, servern sade ”%s”" + +#~ msgid "Data socket timed out" +#~ msgstr "Datauttag (socket) fick inte svar inom tidsgränsen" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Dataöverföringen misslyckades, servern sade ”%s”" + +# Statusmeddelande, byter från substantiv till verb +#~ msgid "Query" +#~ msgstr "Frågar" + +#~ msgid "Unable to invoke " +#~ msgstr "Kunde inte starta " + +#, c-format +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~ "section in apt-key(8) for details." +#~ msgstr "" +#~ "Nyckel lagras i den gamla nyckelringen trusted.gpg (%s), se DEPRECATION-" +#~ "stycket i apt-key(8) för detaljer." + +#~ msgid "Connection closed prematurely" +#~ msgstr "Anslutningen stängdes i förtid" + +#, fuzzy, c-format +#~ msgid " Installed size: %sB\n" +#~ msgstr " Installerad: " + +#, fuzzy +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Följande tillbakahållna paket kommer att ändras:" + #~ msgid "Yes, do as I say!" #~ msgstr "Ja, gör som jag säger!" diff --git a/po/th.po b/po/th.po index d51c443..4abba86 100644 --- a/po/th.po +++ b/po/th.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2014-12-12 13:00+0700\n" "Last-Translator: Theppitak Karoonboonyanan \n" "Language-Team: Thai \n" @@ -51,8 +51,8 @@ msgstr "ไดเรกทอรี %s ถูก divert" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -120,7 +120,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "เกิดข้อผิดพลาดขณะตรวจสอบลายเซ็น จะไม่ปรับข้อมูลคลังแพกเกจนี้ และจะใช้แฟ้มดัชนีเก่า " "ข้อผิดพลาดจาก GPG: %s: %s\n" @@ -128,8 +129,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "ข้อผิดพลาดจาก GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -191,8 +192,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "ชุดจัดแจกขัดแย้งกัน: %s (ต้องการ %s แต่พบ %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -203,7 +203,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -222,6 +222,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "ไม่สามารถดาวน์โหลด %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -240,13 +247,6 @@ msgstr "ไม่พบแหล่งที่จะดาวน์โหลด msgid "Changelog unavailable for %s=%s" msgstr "ปูมการแก้ไขสำหรับ %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -631,6 +631,30 @@ msgstr "ไวยากรณ์ผิดพลาด %s:%u: directive 'clear' msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "ไวยากรณ์ผิดพลาด %s:%u: มีขยะเกินหลังจบแฟ้ม" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -740,11 +764,11 @@ msgstr "โพรเซสย่อย %s คืนค่าข้อผิด msgid "Sub-process %s exited unexpectedly" msgstr "โพรเซสย่อย %s จบการทำงานกะทันหัน" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "การอ่านข้อมูลผิดพลาด" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "การเขียนข้อมูลผิดพลาด" @@ -1057,6 +1081,12 @@ msgstr "ไม่สามารถล็อคไดเรกทอรีดู msgid "Not locked" msgstr "ไม่ได้ล็อคอยู่" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1240,6 +1270,16 @@ msgstr "เตรียมรับคำตอบ" msgid "External solver failed without a proper error message" msgstr "กลไกการแก้ปัญหาภายนอกทำงานล้มเหลวโดยไม่มีข้อความข้อผิดพลาดที่เหมาะสม" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "กำลังคำนวณการปรับรุ่น" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "จำนวนการเชื่อมโยงระหว่างแพกเกจทั้งหมด: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "เรียกกลไกการแก้ปัญหาภายนอก" @@ -1542,10 +1582,6 @@ msgid "" "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 @@ -1708,12 +1744,6 @@ msgstr "แพกเกจ '%s' ไม่ได้ติดตั้งไว้ msgid "Note, selecting '%s' instead of '%s'\n" msgstr "หมายเหตุ: จะเลือก '%s' แทน '%s'\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1816,6 +1846,12 @@ msgstr "ข้อมูลต่อไปนี้อาจช่วยแก้ msgid "Broken packages" msgstr "แพกเกจมีปัญหา" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "การเขียนข้อมูลผิดพลาด" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1830,10 +1866,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"ดาวน์โหลดบางแพกเกจไม่สำเร็จ บางที การเรียก apt-get update หรือลองใช้ตัวเลือก --fix-" +"ดาวน์โหลดบางแพกเกจไม่สำเร็จ บางที การเรียก apt update หรือลองใช้ตัวเลือก --fix-" "missing อาจช่วยได้" #: apt-private/private-install.cc @@ -1870,6 +1906,12 @@ msgstr "ข้อผิดพลาดภายใน: การเรียง msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "แปลกประหลาด... ขนาดไม่ตรงกัน กรุณาอีเมลแจ้ง apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "กำลังดาวน์โหลด %s %s" + #. 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 @@ -1877,6 +1919,12 @@ msgstr "แปลกประหลาด... ขนาดไม่ตรงก msgid "Need to get %sB/%sB of archives.\n" msgstr "ต้องดาวน์โหลดแพกเกจ %sB/%sB\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "กำลังดาวน์โหลด %s %s" + #. 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 @@ -1884,13 +1932,55 @@ msgstr "ต้องดาวน์โหลดแพกเกจ %sB/%sB\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1908,19 +1998,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "คุณต้องการจะดำเนินการต่อไปหรือไม่?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "คุณต้องการจะดำเนินการต่อไปหรือไม่?" + #: apt-private/private-install.cc msgid "Abort." msgstr "เลิกทำ" @@ -1976,6 +2065,12 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "เกิดข้อผิดพลาดภายใน: AutoRemover ทำความเสียหาย" +#: 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 package was automatically installed and is no longer required:" @@ -1992,15 +2087,8 @@ msgid_plural "" 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 "จะติดตั้งแพกเกจเพิ่มเติมต่อไปนี้:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2010,6 +2098,11 @@ msgstr "แพกเกจที่แนะนำ:" msgid "Recommended packages:" msgstr "แพกเกจที่ควรใช้ร่วมกัน:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "จะติดตั้งแพกเกจเพิ่มเติมต่อไปนี้:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2139,10 +2232,32 @@ msgstr " หรือ" msgid "The following packages have unmet dependencies:" msgstr "แพกเกจต่อไปนี้ขาดแพกเกจที่ต้องใช้:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "จะติดตั้งแพกเกจ *ใหม่* ต่อไปนี้:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "กำลังติดตั้ง %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "จำนวนการเชื่อมโยงระหว่างแพกเกจทั้งหมด: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "จะ *ลบ* แพกเกจต่อไปนี้:" @@ -2153,6 +2268,16 @@ msgstr "จะ *ลบ* แพกเกจต่อไปนี้:" msgid "The following upgrades have been deferred due to phasing:" msgstr "จะคงรุ่นแพกเกจต่อไปนี้:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "จะคงรุ่นแพกเกจต่อไปนี้:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "จะคงรุ่นแพกเกจต่อไปนี้:" @@ -2161,10 +2286,24 @@ msgstr "จะคงรุ่นแพกเกจต่อไปนี้:" msgid "The following packages will be upgraded:" msgstr "จะปรับรุ่นแพกเกจต่อไปนี้ขึ้น:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "จะปรับรุ่นแพกเกจต่อไปนี้ *ลง*:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "แพกเกจที่ถูกตรึง:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "จะเปลี่ยนแปลงรายการคงรุ่นแพกเกจต่อไปนี้:" @@ -2182,26 +2321,53 @@ msgstr "" "*คำเตือน*: แพกเกจที่จำเป็นต่อไปนี้จะถูกถอดถอน\n" "คุณ *ไม่ควร* ทำเช่นนี้ นอกจากคุณเข้าใจสิ่งที่จะทำ!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "ปรับรุ่นขึ้น %lu, ติดตั้งใหม่ %lu, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "กำลังติดตั้ง %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "ติดตั้งซ้ำ %lu, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "กำลังติดตั้ง %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "ปรับรุ่นลง %lu, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "กำลังดาวน์โหลด %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2229,7 +2395,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2406,8 +2572,8 @@ msgstr "%s ไม่ต้องการสิ่งใดสำหรับ bu #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" "ไม่มีข้อมูลสถาปัตยกรรมสำหรับ %s ดูวิธีตั้งค่าที่หัวข้อ APT::Architectures ของ apt.conf(5)" @@ -2445,6 +2611,11 @@ msgstr "แจง %s ไม่สำเร็จ จะแก้ไขอีก msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "แฟ้ม '%s' ของคุณมีการเปลี่ยนแปลง กรุณาเรียก 'apt-get update'\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2462,12 +2633,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2513,6 +2709,12 @@ msgstr " แพกเกจเสมือนผสม: " msgid " Missing: " msgstr " แพกเกจที่ขาดหาย: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "จำนวนรุ่นที่แตกต่างกันทั้งหมด: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "จำนวนรุ่นที่แตกต่างกันทั้งหมด: " @@ -2847,6 +3049,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "เกิดปัญหาขณะคำนวณค่าแฮชของแฟ้ม" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "ตรวจหาพร็อกซีโดยใช้ apt.conf" @@ -3094,12 +3302,20 @@ msgstr "ปรับรุ่นระบบโดยถอดถอน/ติ msgid "edit the source information file" msgstr "แก้ไขแฟ้มข้อมูลแหล่งแพกเกจ" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "ไม่สามารถติดตั้งสิ่งเชื่อมโยง %s สำหรับ %s ได้: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "ค่าตั้งปริยายผิดพลาด!" @@ -3289,7 +3505,7 @@ msgstr "ไม่รู้จักอัลกอริทึมบีบอั msgid "Compressed output %s needs a compression set" msgstr "ผลลัพธ์ของการบีบอัด %s ต้องมีชุดของการบีบอัดด้วย" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "ไม่สามารถสร้างไปป์ IPC ไปยังโพรเซสย่อย" @@ -3408,23 +3624,23 @@ msgstr "แพกเกจไม่มีช่องข้อมูล 'Package #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s ไม่มีข้อมูล override\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s ไม่มีข้อมูล override สำหรับไบนารีเช่นกัน\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3462,7 +3678,7 @@ msgstr "ข้อมูลส่วนหัวผิดพลาด" msgid "Connection failed" msgstr "เชื่อมต่อไม่สำเร็จ" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3503,7 +3719,7 @@ msgstr "ไม่สามารถเลิกเมานท์ซีดีร msgid "Disk not found." msgstr "ไม่พบแผ่น" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "ไม่พบแฟ้ม" @@ -3539,7 +3755,7 @@ msgstr "ไม่สามารถสร้างซ็อกเก็ตสำ msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "ไม่สามารถเริ่มการเชื่อมต่อไปยัง %s:%s (%s)" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "ล้มเหลว" @@ -3553,9 +3769,7 @@ msgstr "ไม่สามารถเชื่อมต่อไปยัง %s msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "เชื่อมต่อไปยัง %s" @@ -3593,146 +3807,14 @@ msgstr "stat ไม่สำเร็จ" 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 +#: methods/gpgv.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 "ไม่สามารถเรียก " +msgid "untrusted public key algorithm: %s" +msgstr "" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3754,20 +3836,18 @@ msgid "" msgstr "ข้อผิดพลาดภายใน: ลายเซ็นใช้การได้ แต่ไม่สามารถระบุลายนิ้วมือของกุญแจ?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "ไม่สามารถเรียก 'apt-key' เพื่อตรวจสอบลายเซ็น (ได้ติดตั้ง gnupg ไว้หรือไม่?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "เกิดข้อผิดพลาดไม่ทราบสาเหตุขณะเรียก apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3804,18 +3884,137 @@ msgstr "select ไม่สำเร็จ" msgid "Connection timed out" msgstr "หมดเวลารอเชื่อมต่อ" +#: methods/http.cc +msgid "Problem hashing file" +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 "แฟ้มว่างเปล่าไม่สามารถเป็นแฟ้มจัดเก็บที่ใช้การได้" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "ข้อผิดพลาดจาก GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "เข้าระบบ" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "ไม่สามารถอ่านชื่อของอีกฝ่ายได้" + +#~ msgid "Unable to determine the local name" +#~ msgstr "ไม่สามารถอ่านชื่อของเครื่องนี้ได้" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "เซิร์ฟเวอร์ปฏิเสธการเชื่อมต่อโดยรายงานว่า: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "มีการระบุพร็อกซี แต่ไม่มีสคริปต์สำหรับเข้าระบบ ค่า Acquire::ftp:ProxyLogin ว่างเปล่า" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "คำสั่งสคริปต์เข้าระบบ '%s' ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s" + +#~ msgid "Connection timeout" +#~ msgstr "หมดเวลารอเชื่อมต่อ" + +#~ msgid "Server closed the connection" +#~ msgstr "เซิร์ฟเวอร์ปิดการเชื่อมต่อ" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "คำตอบท่วมบัฟเฟอร์" + +#~ msgid "Protocol corruption" +#~ msgstr "มีความเสียหายของโพรโทคอล" + +#~ msgid "Could not create a socket" +#~ msgstr "ไม่สามารถสร้างซ็อกเก็ต" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "ไม่สามารถเชื่อมต่อซ็อกเก็ตข้อมูล เนื่องจากหมดเวลาคอย" + +#~ msgid "Could not connect passive socket." +#~ msgstr "ไม่สามารถเชื่อมต่อซ็อกเกตแบบ passive" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo ไม่สามารถนำซ็อกเก็ตที่รอรับการเชื่อมต่อมาใช้" + +#~ msgid "Could not bind a socket" +#~ msgstr "ไม่สามารถ bind ซ็อกเก็ต" + +#~ msgid "Could not listen on the socket" +#~ msgstr "ไม่สามารถ listen ที่ซ็อกเก็ต" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "ไม่สามารถระบุชื่อซ็อกเก็ต" + +#~ msgid "Unable to send PORT command" +#~ msgstr "ไม่สามารถส่งคำสั่ง PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "ไม่รู้จักตระกูลที่อยู่ %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT ล้มเหลว เซิร์ฟเวอร์ตอบว่า: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "หมดเวลารอเชื่อมต่อซ็อกเก็ตข้อมูล" + +#~ msgid "Unable to accept connection" +#~ msgstr "ไม่สามารถรับการเชื่อมต่อ" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "ไม่สามารถดาวน์โหลดแฟ้ม เซิร์ฟเวอร์ตอบว่า: '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "หมดเวลาคอยที่ซ็อกเก็ตข้อมูล" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "ถ่ายโอนข้อมูลไม่สำเร็จ เซิร์ฟเวอร์ตอบว่า '%s'" + +#~ msgid "Query" +#~ msgstr "สอบถาม" + +#~ msgid "Unable to invoke " +#~ msgstr "ไม่สามารถเรียก " + +#~ msgid "Connection closed prematurely" +#~ msgstr "การเชื่อมต่อถูกปิดก่อนเวลาอันควร" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " ที่ติดตั้งอยู่: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "จะเปลี่ยนแปลงรายการคงรุ่นแพกเกจต่อไปนี้:" + #~ msgid "Yes, do as I say!" #~ msgstr "Yes, do as I say!" @@ -4231,9 +4430,6 @@ msgstr "แฟ้มว่างเปล่าไม่สามารถเป #~ 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'" diff --git a/po/tl.po b/po/tl.po index 0f6d8ac..0794900 100644 --- a/po/tl.po +++ b/po/tl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2007-03-29 21:36+0800\n" "Last-Translator: Eric Pareja \n" "Language-Team: Tagalog \n" @@ -53,8 +53,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -122,13 +122,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -184,8 +185,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -196,7 +196,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -215,6 +215,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Bigo sa pagkuha ng %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -235,13 +242,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "Kumokonekta sa %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -636,6 +636,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Syntax error %s:%u: May basura sa dulo ng talaksan" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -748,11 +772,11 @@ msgstr "Naghudyat ang sub-process %s ng error code (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Error sa pagbasa" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Error sa pagsulat" @@ -1060,6 +1084,12 @@ msgstr "Hindi maaldaba ang directory ng talaan" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1241,6 +1271,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Sinusuri ang pag-upgrade" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Kabuuan ng mga Dependensiya: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1544,10 +1584,6 @@ 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 @@ -1713,12 +1749,6 @@ msgstr "Hindi nakaluklok ang paketeng %s, kaya't hindi ito tinanggal\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Paunawa, pinili ang %s imbes na %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1824,6 +1854,12 @@ msgstr "" msgid "Broken packages" msgstr "Sirang mga pakete" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Error sa pagsulat" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1838,10 +1874,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Hindi nakuha ang ilang mga arkibo, maaaring patakbuhin ang apt-get update o " +"Hindi nakuha ang ilang mga arkibo, maaaring patakbuhin ang apt update o " "subukang may --fix-missing?" #: apt-private/private-install.cc @@ -1879,8 +1915,14 @@ 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" +"Nakapagtataka... Hindi magkatugma ang laki, mag-email sa " +"apt@packages.debian.org" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\n" +msgstr " Nakaluklok: " #. 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 @@ -1889,6 +1931,11 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Kailangang kumuha ng %sB/%sB ng arkibo.\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1896,14 +1943,56 @@ msgstr "Kailangang kumuha ng %sB/%sB ng arkibo.\n" 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 +#, c-format +msgid "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Naka-imbak na Label: %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 @@ -1921,19 +2010,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Nais niyo bang magpatuloy?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Nais niyo bang magpatuloy?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Abort." @@ -1987,6 +2075,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Error na internal, may nasira ang problem resolver" +#: 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 "" @@ -2006,16 +2101,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2025,6 +2112,11 @@ msgstr "Mga paketeng mungkahi:" msgid "Recommended packages:" msgstr "Mga paketeng rekomendado:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2156,10 +2248,31 @@ msgstr " o" msgid "The following packages have unmet dependencies:" msgstr "Ang sumusunod na mga pakete ay may kulang na dependensiya:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Bigo sa pagbuo ng dependensiyang %s para sa %s: %s" + #: 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 +#, fuzzy +msgid "Installing:" +msgstr "Iniluklok ang %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Kabuuan ng mga Dependensiya: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Ang sumusunod na mga pakete ay TATANGGALIN:" @@ -2170,6 +2283,16 @@ msgstr "Ang sumusunod na mga pakete ay TATANGGALIN:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:" @@ -2178,10 +2301,24 @@ msgstr "Ang sumusunod na mga pakete ay hinayaang maiwanan:" msgid "The following packages will be upgraded:" msgstr "Ang susunod na mga pakete ay iu-upgrade:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Mga naka-Pin na Pakete:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:" @@ -2199,26 +2336,50 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Iniluklok ang %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu iniluklok muli, " +#: apt-private/private-output.cc +#, fuzzy, c-format +msgid "Reinstalling: %lu, " +msgstr "Iniluklok ang %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu nai-downgrade, " +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2246,7 +2407,7 @@ msgid "Y" msgstr "O" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "H" @@ -2420,8 +2581,8 @@ msgstr "Walang build depends ang %s.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2458,6 +2619,11 @@ msgstr "Bigo ang pagpangalan muli ng %s tungong %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2475,12 +2641,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2527,6 +2718,12 @@ msgstr " Halong Birtwal na Pakete: " msgid " Missing: " msgstr " Kulang/Nawawala: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Kabuuan ng Natatanging mga Bersyon: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Kabuuan ng Natatanging mga Bersyon: " @@ -2859,6 +3056,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Problema sa pag-hash ng talaksan" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3100,12 +3303,20 @@ msgstr "" msgid "edit the source information file" msgstr "Pinagsasama ang magagamit na impormasyon" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Bigo sa pagbuo ng dependensiyang %s para sa %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Maling nakatakda na default!" @@ -3312,7 +3523,7 @@ msgstr "Hindi kilalang algorithmong compression '%s'" msgid "Compressed output %s needs a compression set" msgstr "Kailangan ng compression set ang compressed output %s" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Bigo sa paglikha ng IPC pipe sa subprocess" @@ -3431,23 +3642,23 @@ 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" +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" +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" +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" +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" @@ -3485,7 +3696,7 @@ msgstr "Maling datos sa panimula" msgid "Connection failed" msgstr "Bigo ang koneksyon" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3527,7 +3738,7 @@ msgstr "Hindi mai-unmount ang CD-ROM sa %s, maaaring ginagamit pa ito." msgid "Disk not found." msgstr "Hindi nahanap ang Disk." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Hindi Nahanap ang Talaksan" @@ -3563,7 +3774,7 @@ msgstr "Hindi makalikha ng socket para sa %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Hindi maumpisahan ang koneksyon sa %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Bigo" @@ -3577,9 +3788,7 @@ msgstr "Hindi maka-konekta sa %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "Hindi maka-konekta sa %s:%s (%s), nag-timeout ang koneksyon" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Kumokonekta sa %s" @@ -3617,148 +3826,14 @@ msgstr "Bigo ang pag-stat" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3781,21 +3856,16 @@ msgstr "" #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Hindi kilalang error sa pag-execute ng apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3834,18 +3904,129 @@ msgstr "Bigo ang pagpili" msgid "Connection timed out" msgstr "Nag-timeout ang koneksyon" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Problema sa pag-hash ng talaksan" + #: 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 "Logging in" +#~ msgstr "Pumapasok" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Hindi malaman ang pangalan ng peer" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Hindi malaman ang pangalang lokal" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Inayawan ng server ang ating koneksyon at ang sabi ay: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "Bigo ang USER/GUMAGAMIT, sabi ng server ay: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "Bigo ang PASS, sabi ng server ay: %s" + +#~ 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." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Bigo ang utos sa login script '%s', sabi ng server ay: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Bigo ang TYPE, sabi ng server ay: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Lumipas ang koneksyon" + +#~ msgid "Server closed the connection" +#~ msgstr "Sinarhan ng server ang koneksyon" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "May sagot na bumubo sa buffer." + +#~ msgid "Protocol corruption" +#~ msgstr "Sira ang protocol" + +#~ msgid "Could not create a socket" +#~ msgstr "Hindi maka-likha ng socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Hindi maka-konekta sa socket ng datos, nag-time-out ang koneksyon" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Hindi maka-konekta sa socket na passive." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "di makakuha ang getaddrinfo ng socket na nakikinig" + +#~ msgid "Could not bind a socket" +#~ msgstr "Hindi maka-bind ng socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Hindi makarinig sa socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Hindi malaman ang pangalan ng socket" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Hindi makapagpadala ng utos na PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Di kilalang pamilya ng address %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "Bigo ang EPRT, sabi ng server ay: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Nag-timeout ang socket ng datos" + +#~ msgid "Unable to accept connection" +#~ msgstr "Hindi makatanggap ng koneksyon" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Hindi makakuha ng talaksan, sabi ng server ay '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Nag-timeout ang socket ng datos" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Bigo ang paglipat ng datos, sabi ng server ay '%s'" + +#~ msgid "Query" +#~ msgstr "Tanong" + +#~ msgid "Unable to invoke " +#~ msgstr "Hindi ma-invoke " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Nagsara ng maaga ang koneksyon" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Ang susunod na mga hinawakang mga pakete ay babaguhin:" + #~ msgid "Yes, do as I say!" #~ msgstr "Oo, gawin ang sinasabi ko!" diff --git a/po/tr.po b/po/tr.po index d010962..1d8985b 100644 --- a/po/tr.po +++ b/po/tr.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 2.6.0\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2023-04-19 15:15+0300\n" "Last-Translator: Mert Dirik \n" "Language-Team: Debian l10n Turkish \n" @@ -60,12 +60,12 @@ 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." +"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." +"Bu duruma normalde izin verilmez, ama " +"Acquire::AllowDowngradeToInsecureRepositories seçeneği kullanıldığı için " +"izin veriliyor." #: apt-pkg/acquire-item.cc #, c-format @@ -130,10 +130,14 @@ msgstr "" "gerektiriyor mu?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -141,8 +145,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -210,8 +214,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Dağıtım çakışması: %s (beklenen %s ama eldeki %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "'%s' deposu '%s' değerini '%s' yerine '%s' olarak değiştirmiş" @@ -224,7 +227,7 @@ msgstr "" "değiştirdi." #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -247,6 +250,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "%s alınamadı %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -267,17 +277,6 @@ msgstr "'%2$s' paketinin '%1$s' sürümü hiçbir kaynakta bulunamadı" 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 unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"'%s' indirme yöntemi desteklenmemektedir ve öntanımlı olarak devre dışı " -"bırakılmıştır. Bunun yerine 'http(s)' yöntemine geçmeyi düşünebilirsiniz. " -"Yine de bu yöntemi kullanmak istiyorsanız Dir::Bin::Methods::%s ayarını " -"\"%s\" yaparak etkin hale getirebilirsiniz." - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -679,6 +678,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Söz dizimi hatası %s:%u: Dosya sonunda ilave gereksiz" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -793,11 +816,11 @@ msgstr "%s altsüreci bir hata kodu gönderdi (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Okuma hatası" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Yazma hatası" @@ -1114,6 +1137,12 @@ msgstr "Yönetim dizini (%s) kilitlenemiyor, root kullanıcısı mısınız?" msgid "Not locked" msgstr "Kilitlenmemiş" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1304,6 +1333,16 @@ msgstr "Çözüm almak için hazırlan" 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 apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Yükseltme hesaplanıyor" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Toplam bağımlılıklar: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Harici çözücüyü çalıştır" @@ -1379,8 +1418,8 @@ 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)" +"\"%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 @@ -1606,10 +1645,6 @@ 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 @@ -1778,12 +1813,6 @@ msgstr "'%s' kurulu değildi, dolayısıyla kaldırılmadı\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Not, '%2$s' yerine '%1$s' seçiliyor\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "Sık kullanılan komutlar:" @@ -1897,6 +1926,12 @@ msgstr "Aşağıdaki bilgiler durumu çözmenize yardımcı olabilir:" msgid "Broken packages" msgstr "Bozuk paketler" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Yazma hatası" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1912,10 +1947,10 @@ msgstr "%s paketi kaldırma için seçildi.\n" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Bazı arşivler alınamıyor, apt-get update'i çalıştırmayı ya da --fix-missing " +"Bazı arşivler alınamıyor, apt update'i çalıştırmayı ya da --fix-missing " "seçeneğini ekleyerek düzeltmeyi deneyin." #: apt-private/private-install.cc @@ -1960,6 +1995,12 @@ msgstr "" "Ne kadar ilginç... Boyutlar eşleşmedi, apt@packages.debian.org adresine e-" "posta atın" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "İndiriliyor %s %s" + #. 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 @@ -1967,6 +2008,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "%sB/%sB arşiv dosyası indirilecek.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "İndiriliyor %s %s" + #. 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 @@ -1974,13 +2021,55 @@ msgstr "%sB/%sB arşiv dosyası indirilecek.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Kayıtlı etiket: %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 @@ -2000,19 +2089,18 @@ msgstr "" "Kritik sistem paketlerini kaldırmak sisteminizi bozabileceği için " "yasaklanmıştır." -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Devam etmek istiyor musunuz?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Devam etmek istiyor musunuz?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Vazgeç." @@ -2071,6 +2159,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "İç hata, AutoRemover bazı şeyleri bozdu" +#: 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 package was automatically installed and is no longer required:" @@ -2092,15 +2187,8 @@ 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2110,6 +2198,10 @@ msgstr "Önerilen paketler:" msgid "Recommended packages:" msgstr "Tavsiye edilen paketler:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2244,10 +2336,32 @@ msgstr " ya da" msgid "The following packages have unmet dependencies:" msgstr "Aşağıdaki paketler karşılanmamış bağımlılıklara sahip:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "satisfy dependency strings" +msgid "Unsatisfied dependencies:" +msgstr "Bağımlılık dizgilerini karşıla" + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "%s kuruluyor" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Toplam bağımlılıklar: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Aşağıdaki paketler KALDIRILACAK:" @@ -2258,6 +2372,16 @@ msgstr "Aşağıdaki paketler KALDIRILACAK:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:" @@ -2266,10 +2390,24 @@ msgstr "Aşağıdaki paketlerin mevcut durumları korunacak:" msgid "The following packages will be upgraded:" msgstr "Aşağıdaki paketler yükseltilecek:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Sabitlenmiş paketler:" + #: 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:" @@ -2287,26 +2425,53 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "%s kuruluyor" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu paket yeniden kurulacak, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "%s kuruluyor" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu paketin sürümü düşürülecek, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "İndiriliyor %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2334,7 +2499,7 @@ msgid "Y" msgstr "E" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "H" @@ -2517,8 +2682,8 @@ msgstr "%s paketinin hiç inşa bağımlılığı yok.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" @@ -2559,6 +2724,11 @@ msgstr "%s ayrıştırılamadı. Tekrar düzenlemek ister misiniz? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "'%s' dosyası değişti, lütfen 'apt-get update' komutunu çalıştırın.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2578,12 +2748,43 @@ msgstr "" "Oturum açma ayrıcalıklarını '%3$s' '%2$s' girdisinin içinde doğrudan " "belirtmek yerine '%1$s' kullanmayı tercih edin" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +#, fuzzy +#| msgid "" +#| "See apt-secure(8) manpage for repository creation and user configuration " +#| "details." +msgid "See apt-secure(8) for best practices in configuring repository signing." +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-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2633,6 +2834,12 @@ msgstr " Karışık sanal paketler: " msgid " Missing: " msgstr " Eksik: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Toplam farklı sürümler: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Toplam farklı sürümler: " @@ -2983,6 +3190,12 @@ msgstr "Bir SRV kaydına bak (örneğin _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "Dosyaları birleştir, otomatik olarak aç" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Dosya sağlaması yapılamadı" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "apt.conf kullanarak vekil sunucuyu algıla" @@ -3220,10 +3433,18 @@ msgstr "Sistemi yükselt (paket kurarak, yükselterek ve kaldırarak)" msgid "edit the source information file" msgstr "Kaynak bilgi dosyasını düzenle" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "Bağımlılık dizgilerini karşıla" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Geçersiz öntanımlı ayar!" @@ -3425,7 +3646,7 @@ msgstr "Bilinmeyen sıkıştırma algoritması '%s'" 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 +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Altsürece IPC borusu oluşturulamadı" @@ -3544,23 +3765,23 @@ 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" +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" +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" +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" +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" @@ -3598,7 +3819,7 @@ msgstr "Kötü başlık verisi" msgid "Connection failed" msgstr "Bağlantı başarısız" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3644,7 +3865,7 @@ msgstr "%s konumundaki CD-ROM çıkarılamıyor, hâlâ kullanımda olabilir." msgid "Disk not found." msgstr "Disk bulunamadı." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Dosya bulunamadı" @@ -3679,7 +3900,7 @@ msgstr "%s için bir soket oluşturulamadı (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "%s:%s bağlantısı başlatılamıyor (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Başarısız" @@ -3693,9 +3914,7 @@ msgstr "Adrese bağlanılamadı: %s:%s (%s)." 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ı" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Bağlanılıyor: %s" @@ -3733,148 +3952,14 @@ msgstr "Durum bilgisi okunamadı" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3896,22 +3981,18 @@ msgid "" msgstr "İç hata: İmza iyi, ancak anahtar parmak izi belirlenemedi?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "apt-key çalıştırılırken bilinmeyen hata" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"Anahtar eski trusted.gpg anahtarlığında (%s) duruyor, ayrıntılar için apt-" -"key(8) rehber sayfasına bakılabilir." - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, fuzzy, c-format @@ -3949,18 +4030,161 @@ msgstr "Seçme başarısız" msgid "Connection timed out" msgstr "Bağlantı zaman aşımına uğradı" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Dosya sağlaması yapılamadı" + #: 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" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG hatası: %s: %s" + +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "Anahtar eski trusted.gpg anahtarlığında (%s) duruyor, ayrıntılar için apt-" +#~ "key(8) rehber sayfasına bakılabilir." + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "'%s' indirme yöntemi desteklenmemektedir ve öntanımlı olarak devre dışı " +#~ "bırakılmıştır. Bunun yerine 'http(s)' yöntemine geçmeyi düşünebilirsiniz. " +#~ "Yine de bu yöntemi kullanmak istiyorsanız Dir::Bin::Methods::%s ayarını " +#~ "\"%s\" yaparak etkin hale getirebilirsiniz." + +#~ msgid "Logging in" +#~ msgstr "Giriş yapılıyor" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Eş adı belirlenemiyor" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Yerel ad belirlenemiyor" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Sunucu bağlantıyı reddetti, sunucunun iletisi: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER başarısız, sunucunun iletisi: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS başarısız, sunucunun iletisi: %s" + +#~ 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ş." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE başarısız, sunucunun iletisi: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Bağlantı zaman aşımına uğradı" + +#~ msgid "Server closed the connection" +#~ msgstr "Sunucu bağlantıyı kesti" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Bir yanıt arabelleği taşırdı." + +#~ msgid "Protocol corruption" +#~ msgstr "İletişim kuralları bozulması" + +#~ msgid "Could not create a socket" +#~ msgstr "Bir soket oluşturulamadı" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "Veri soketine bağlanılamadı, bağlantı zaman aşımına uğradı" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Edilgen sokete bağlanılamadı." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo bir dinleme soketi alamıyor" + +#~ msgid "Could not bind a socket" +#~ msgstr "Bir sokete bağlanılamadı" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Soket dinlenemedi" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Soketin adı belirlenemedi" + +#~ msgid "Unable to send PORT command" +#~ msgstr "PORT komutu gönderilemedi" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Bilinmeyen adres ailesi %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT başarısız, sunucunun iletisi: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Veri soketi bağlantısı zaman aşımına uğradı" + +#~ msgid "Unable to accept connection" +#~ msgstr "Bağlantı kabul edilemiyor" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Dosya alınamıyor, sunucunun iletisi: '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Veri soketi zaman aşımına uğradı" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Veri aktarımı başarısız, sunucunun iletisi: '%s'" + +#~ msgid "Query" +#~ msgstr "Sorgu" + +#~ msgid "Unable to invoke " +#~ msgstr "Çağrılamıyor " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Bağlantı vaktinden önce kapandı" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Kurulu: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Aşağıdaki eski sürümlerinde tutulan paketler değiştirilecek:" + #~ msgid "Yes, do as I say!" #~ msgstr "Evet, söylediğim şekilde yap!" @@ -4075,8 +4299,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar" #~ "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ı)" +#~ "'Release' dosyasında olması beklenilen '%s' girdisi bulunamadı " +#~ "(sources.list dosyasındaki girdi ya da satır hatalı)" #~ msgid "Unmet dependencies. Try using --fix-broken." #~ msgstr "Karşılanmayan bağımlılıklar. --fix-broken kullanmayı deneyin." @@ -4175,8 +4399,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar" #~ " -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" +#~ " -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" @@ -4223,8 +4447,8 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar" #~ "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" +#~ " -o=? İsteğe bağlı ayar seçeneği belirtmenizi sağlar, örneğin -o " +#~ "dir::cache=/tmp\n" #~ msgid "" #~ "Options:\n" @@ -4435,9 +4659,6 @@ msgstr "Boş dosyalar geçerli birer arşiv dosyası olamazlar" #~ 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" diff --git a/po/uk.po b/po/uk.po index ab690b7..2a78a49 100644 --- a/po/uk.po +++ b/po/uk.po @@ -17,7 +17,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2012-09-25 20:19+0300\n" "Last-Translator: A. Bondarenko \n" "Language-Team: Українська \n" @@ -59,8 +59,8 @@ msgstr "Директорія %s є відхиленою (diverted)" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -127,7 +127,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "Виникла помилка під час перевірки підпису. Репозиторій не оновлено, " "попередні індексні файли будуть використані. Помилка GPG: %s: %s\n" @@ -135,8 +136,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "Помилка GPG: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -198,8 +199,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "Конфліктуючий дистрибутив: %s (очікувався %s, але є %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -210,7 +210,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -229,6 +229,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Не вдалося завантажити %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -249,13 +256,6 @@ msgstr "Неможливо знайти джерело для завантаже msgid "Changelog unavailable for %s=%s" msgstr "Журнал змін для %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -655,6 +655,30 @@ msgstr "" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "Синтаксична помилка %s:%u: Зайве сміття в кінці файла" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -769,11 +793,11 @@ msgstr "Підпроцес %s повернув код помилки (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "Підпроцес %s раптово завершився" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Помилка зчитування" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Помилка запису" @@ -875,8 +899,8 @@ 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)" +"Динамічний MMap використав усе місце. Будь-ласка, збільшіть розмір " +"APT::Cache-Start. Поточне значення: %lu. (man 5 apt.conf)" #: apt-pkg/contrib/mmap.cc #, c-format @@ -1093,6 +1117,12 @@ msgstr "Неможливо заблокувати адміністративну msgid "Not locked" msgstr "Не заблоковано" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1291,6 +1321,16 @@ msgstr "" "Зовнішній розв'язувач завершився невдало без відповідного повідомлення про " "помилку" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Обчислення оновлень" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Всього залежностей: " + #: apt-pkg/edsp.cc #, fuzzy msgid "Execute external solver" @@ -1600,10 +1640,6 @@ 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 @@ -1772,12 +1808,6 @@ msgstr "Пакунок '%s' не встановлений, тому не вид msgid "Note, selecting '%s' instead of '%s'\n" msgstr "Помітьте, вибирається '%s' замість '%s'\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1880,6 +1910,12 @@ msgstr "Наступна інформація можливо допоможе В msgid "Broken packages" msgstr "Зламані пакунки" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Помилка запису" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1894,10 +1930,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"Неможливо завантажити деякі архіви, імовірно треба виконати apt-get update " +"Неможливо завантажити деякі архіви, імовірно треба виконати apt update " "або спробувати повторити запуск з ключем --fix-missing?" #: apt-private/private-install.cc @@ -1936,6 +1972,12 @@ msgstr "Внутрішня помилка, Ordering не завершилася" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "Дивно... Розбіжність розмірів, напишіть на apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Завантаження %s %s" + #. 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 @@ -1943,6 +1985,12 @@ msgstr "Дивно... Розбіжність розмірів, напишіть msgid "Need to get %sB/%sB of archives.\n" msgstr "Необхідно завантажити %sB/%sB архівів.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Завантаження %s %s" + #. 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 @@ -1950,14 +1998,56 @@ msgstr "Необхідно завантажити %sB/%sB архівів.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1977,19 +2067,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "Бажаєте продовжити?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "Бажаєте продовжити?" + #: apt-private/private-install.cc msgid "Abort." msgstr "Перервано." @@ -2051,6 +2140,14 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "Внутрішня Помилка, AutoRemover щось поламав" +#: 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 package was automatically installed and is no longer required:" @@ -2074,17 +2171,8 @@ 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 "Будуть встановлені наступні додаткові пакунки:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2094,6 +2182,11 @@ msgstr "Пропоновані пакунки:" msgid "Recommended packages:" msgstr "Рекомендовані пакунки:" +#: apt-private/private-install.cc +#, fuzzy +msgid "The following additional packages will be installed:" +msgstr "Будуть встановлені наступні додаткові пакунки:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2230,10 +2323,32 @@ msgstr " чи" msgid "The following packages have unmet dependencies:" msgstr "Пакунки, що мають незадоволені залежності:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Неможливо задовольнити залежність типу %s для пакунка %s: %s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "НОВІ пакунки, які будуть встановлені:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Встановлюється %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Всього залежностей: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Пакунки, які будуть ВИДАЛЕНІ:" @@ -2244,6 +2359,16 @@ msgstr "Пакунки, які будуть ВИДАЛЕНІ:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Пакунки, які залишені в незмінному стані:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Пакунки, які залишені в незмінному стані:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Пакунки, які залишені в незмінному стані:" @@ -2252,10 +2377,24 @@ msgstr "Пакунки, які залишені в незмінному стан msgid "The following packages will be upgraded:" msgstr "Пакунки, які будуть ОНОВЛЕНІ:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "Пакунки, які будуть замінені на СТАРІШІ версії:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Зафіксовані пакунки:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "Пакунки, які мали б залишитися без змін, але будуть замінені:" @@ -2273,26 +2412,53 @@ msgstr "" "УВАГА: Наступні важливі пакунки будуть вилучені.\n" "НЕ РОБІТЬ цього, якщо ви НЕ уявляєте собі всі можливі наслідки!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "оновлено %lu, встановлено %lu нових, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Встановлюється %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu перевстановлено, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Встановлюється %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu замінено на старіші версії, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Завантаження %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2320,7 +2486,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2502,11 +2668,11 @@ msgstr "%s не має залежностей для побудови.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" -"Відсутня інформація про архітектуру для %s. Дивись apt.conf(5) APT::" -"Архітектури для налащтування" +"Відсутня інформація про архітектуру для %s. Дивись apt.conf(5) " +"APT::Архітектури для налащтування" #: apt-private/private-source.cc msgid "Must specify at least one package to check builddeps for" @@ -2544,6 +2710,11 @@ msgstr "Не вдалося перейменувати %s на %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2561,12 +2732,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2613,6 +2809,12 @@ msgstr " Змішаних віртуальних пакунків: " msgid " Missing: " msgstr " Відсутні: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Всього унікальних версій: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Всього унікальних версій: " @@ -2950,6 +3152,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Проблема хешування файла" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3204,12 +3412,20 @@ msgstr "" msgid "edit the source information file" msgstr "Зчитування інформації про стан" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Неможливо задовольнити залежність типу %s для пакунка %s: %s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Неправильне значення за умовчанням!" @@ -3420,7 +3636,7 @@ msgstr "Невідомий алгоритм стиснення '%s'" msgid "Compressed output %s needs a compression set" msgstr "Для отримання стиснутого виводу %s необхідно ввімкнути стиснення" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "Не вдалося створити IPC канал для підпроцесу" @@ -3539,23 +3755,23 @@ msgstr "Архів не мав поля 'package'" #: ftparchive/writer.cc #, fuzzy, c-format -msgid " %s has no override entry\n" -msgstr " Відсутній запис про перепризначення (override) для %s\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " Крім того, відсутній запис про бінарне перепризначення для %.*s\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3593,7 +3809,7 @@ msgstr "Погана заголовкова інформація" msgid "Connection failed" msgstr "З'єднання не вдалося" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3636,7 +3852,7 @@ msgstr "" msgid "Disk not found." msgstr "Диск не знайдено." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Файл не знайдено" @@ -3672,7 +3888,7 @@ msgstr "Неможливо створити сокет для %s (f=%u t=%u p=%u msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "Неможливо почати з'єднання з %s:%s (%s)." -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Невдача" @@ -3686,9 +3902,7 @@ msgstr "Неможливо під'єднатися до %s:%s (%s)." msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "З'єднання з %s" @@ -3727,148 +3941,14 @@ msgstr "Не вдалося одержати атрибути (stat)" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 "Неможливо викликати " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3890,21 +3970,19 @@ msgstr "" "відбиток?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "" "Неможливо виконати 'apt-key' для перевірки підпису (чи встановлено gnupg?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Невідома помилка виконання apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3943,18 +4021,139 @@ msgstr "Вибір провалився" msgid "Connection timed out" msgstr "Час очікування з'єднання вийшов" +#: methods/http.cc +msgid "Problem hashing file" +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 "Пусті файли не можуть бути правильними архівами" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Помилка GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Логінюсь в" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Неможливо визначити назву вузла" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Неможливо визначити локальну назву" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "Сервер розірвав з'єднання, відповівши: %s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER невдало, сервер мовив: %s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS невдало, сервер мовив: %s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "Вказано проксі-сервер, але відсутній скрипт логіну, " +#~ "Acquire::ftp::ProxyLogin пустий." + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "Команда '%s' у скрипті логіна не вдалася, сервер мовив: %s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE невдало, сервер мовив: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Час з'єднання вичерпався" + +#~ msgid "Server closed the connection" +#~ msgstr "Сервер закрив з'єднання" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Відповідь переповнила буфер." + +#~ msgid "Protocol corruption" +#~ msgstr "Спотворений протокол" + +#~ msgid "Could not create a socket" +#~ msgstr "Неможливо створити сокет (socket)" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "" +#~ "Неможливо під'єднати сокет (socket) з даними, час з'єднання вичерпався" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Неможливо під'єднати пасивний сокет (passive socket)." + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "Виклик getaddrinfo не зміг отримати слухаючий сокет" + +#~ msgid "Could not bind a socket" +#~ msgstr "Неможливо приєднатися до сокета" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Неможливо прослухати на сокеті" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Не вдалося визначити назву сокета" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Неможливо відіслати команду PORT" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Невідоме адресове сімейство %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT невдало, сервер мовив: %s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Час з'єднання з сокетом даних вичерпався" + +#~ msgid "Unable to accept connection" +#~ msgstr "Неможливо прийняти з'єднання" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "Неможливо завантажити файл, сервер мовив: '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Час з'єднання з сокетом (socket) з даними вичерпався" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "Передача даних обірвалася, сервер мовив '%s'" + +#~ msgid "Query" +#~ msgstr "Черга" + +#~ msgid "Unable to invoke " +#~ msgstr "Неможливо викликати " + +#~ msgid "Connection closed prematurely" +#~ msgstr "З'єднання завершено передчасно" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Встановлено: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Пакунки, які мали б залишитися без змін, але будуть замінені:" + #~ msgid "Yes, do as I say!" #~ msgstr "Так, робити, як я скажу!" @@ -4204,8 +4403,8 @@ msgstr "Пусті файли не можуть бути правильними #~ " -c=? Читати зазначений файл конфігурації.\n" #~ " -o=? Встановити умовну опцію конфігурації, наприклад, -o dir::cache=/" #~ "tmp\n" -#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і apt." -#~ "conf(5)." +#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і " +#~ "apt.conf(5)." #~ msgid "" #~ "Options:\n" @@ -4238,8 +4437,8 @@ msgstr "Пусті файли не можуть бути правильними #~ " -c=? Читати зазначений файл конфігурації.\n" #~ " -o=? Встановити умовну опцію конфігурації, наприклад, -o dir::cache=/" #~ "tmp\n" -#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і apt." -#~ "conf(5)." +#~ "Для докладної інформації дивіться керівництва для apt-mark(8) і " +#~ "apt.conf(5)." #~ msgid "" #~ "Usage: apt-sortpkgs [options] file1 [file2 ...]\n" @@ -4388,9 +4587,6 @@ msgstr "Пусті файли не можуть бути правильними #~ 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'" diff --git a/po/vi.po b/po/vi.po index c1c736f..88f9572 100644 --- a/po/vi.po +++ b/po/vi.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.0.8\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2014-09-12 13:48+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -57,8 +57,8 @@ 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." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -126,7 +126,8 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %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" @@ -135,8 +136,8 @@ msgstr "" #. 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" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -198,8 +199,7 @@ msgstr "" 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)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -210,7 +210,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -229,6 +229,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "Gặp lỗi khi lấy về %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -249,13 +256,6 @@ msgstr "Không tìm thấy nguồn cho việc tải về phiên bản “%s” o msgid "Changelog unavailable for %s=%s" msgstr "Changelog cho %s (%s)" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -648,6 +648,30 @@ msgstr "" 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" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -761,11 +785,11 @@ msgstr "Tiến trình con %s đã trả về một mã lỗi (%u)" 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 +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "Lỗi đọc" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "Lỗi ghi" @@ -1088,6 +1112,12 @@ msgstr "Không thể khoá thư mục quản trị (%s), bạn có quyền root msgid "Not locked" msgstr "Chưa được khoá" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1277,6 +1307,16 @@ msgstr "Chuẩn bị để lấy cách giải quyết" 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 apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "Đang tính toán nâng cấp" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "Tổng gói phụ thuộc: " + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "Thi hành bộ phân giải từ bên ngoài" @@ -1358,8 +1398,8 @@ 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)" +"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 @@ -1587,10 +1627,6 @@ 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 @@ -1754,12 +1790,6 @@ msgstr "Gói %s chưa được cài đặt, thế nên không thể gỡ bỏ n 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 "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1863,6 +1893,12 @@ msgstr "Có lẽ thông tin theo đây sẽ giúp đỡ bạn giải quyết tì msgid "Broken packages" msgstr "Gói bị hỏng" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "Lỗi ghi" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1877,10 +1913,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt 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 " +"Không thể lấy một số kho, có lẽ hãy chạy lệnh “apt 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?" @@ -1920,6 +1956,12 @@ 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-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB / %sB\n" +msgstr "Đang tải về %s %s" + #. 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 @@ -1927,6 +1969,12 @@ msgstr "" msgid "Need to get %sB/%sB of archives.\n" msgstr "Cần phải lấy %sB/%sB từ kho chứa.\n" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid " Download size: %sB\n" +msgstr "Đang tải về %s %s" + #. 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 @@ -1934,13 +1982,55 @@ msgstr "Cần phải lấy %sB/%sB từ kho chứa.\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\n" +msgstr "Nhãn đã lưu: %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 @@ -1960,19 +2050,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.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 "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.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 "Abort." msgstr "Hủy bỏ." @@ -2029,6 +2118,12 @@ msgstr "" 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 +#, 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 msgid "" "The following package was automatically installed and is no longer required:" @@ -2046,15 +2141,8 @@ msgid_plural "" 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:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2064,6 +2152,11 @@ msgstr "Các gói đề nghị:" msgid "Recommended packages:" msgstr "Gói khuyến khích:" +#: 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 #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2194,10 +2287,32 @@ msgstr " hay" 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 +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "Việc cố thỏa cách phụ thuộc %s cho %s bị lỗi: %s." + #: 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 +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "Đang cài đặt %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "Tổng gói phụ thuộc: " + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "Những gói sau sẽ bị GỠ BỎ:" @@ -2208,6 +2323,16 @@ msgstr "Những gói sau sẽ bị GỠ BỎ:" msgid "The following upgrades have been deferred due to phasing:" msgstr "Những gói sau đây được giữ lại:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "Những gói sau đây được giữ lại:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "Những gói sau đây được giữ lại:" @@ -2216,10 +2341,24 @@ msgstr "Những gói sau đây được giữ lại:" 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 "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: 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 +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "Các gói đã ghim:" + #: 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:" @@ -2237,26 +2376,53 @@ 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 +msgid "Summary:" +msgstr "" + #: 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 +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "Đang cài đặt %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "%lu được cài đặt lại, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "Đang cài đặt %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "%lu bị hạ cấp, " +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Downloading %s %s" +msgid "Downgrading: %lu, " +msgstr "Đang tải về %s %s" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2284,7 +2450,7 @@ msgid "Y" msgstr "C" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "K" @@ -2463,11 +2629,11 @@ msgstr "%s không phụ thuộc vào gì khi biên dịch.\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"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" +"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 msgid "Must specify at least one package to check builddeps for" @@ -2504,6 +2670,11 @@ msgstr "Gặp lỗi khi phân tích %s. Sửa lại chứ? " msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "Tập tin “%s” của bạn đã thay đổi, hãy chạy lệnh “apt-get update”.\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2521,12 +2692,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2572,6 +2768,12 @@ msgstr " Gói ảo hỗn hợp: " msgid " Missing: " msgstr " Thiếu: " +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "Tổng phiên bản riêng: " + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "Tổng phiên bản riêng: " @@ -2923,6 +3125,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "Gặp vấn đề băm tập tin" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "dò tìm proxy dùng apt.conf" @@ -3173,12 +3381,20 @@ msgstr "nâng cấp hệ thống bằng cách gỡ bỏ, cài đặt, nâng cấ msgid "edit the source information file" msgstr "sửa tập tin thông tin gói nguồn" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "Việc cố thỏa cách phụ thuộc %s cho %s bị lỗi: %s." +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "Cài đặt mặc định sai!" @@ -3391,7 +3607,7 @@ msgstr "Không biết thuật toán nén “%s”" 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 +#: ftparchive/multicompress.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" @@ -3510,23 +3726,23 @@ 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" +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" +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" +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" +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" @@ -3568,7 +3784,7 @@ msgstr "Dữ liệu phần đầu sai" msgid "Connection failed" msgstr "Kết nối bị lỗi" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3610,7 +3826,7 @@ msgstr "Không thể bỏ gắn đĩa CD-ROM trong %s. Có lẽ nó vẫn đang msgid "Disk not found." msgstr "Không tìm thấy đĩa." -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "Không tìm thấy tập tin" @@ -3646,7 +3862,7 @@ msgstr "Không thể tạo ổ cắm cho %s (f=%u t=%u p=%u)" 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 methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "Gặp lỗi" @@ -3660,9 +3876,7 @@ msgstr "Không thể kết nối đến %s:%s (%s)." 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ờ" -#. We say this mainly because the pause here is for the -#. ssh connection that is still going -#: methods/connect.cc methods/rsh.cc +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "Đang kết nối đến %s" @@ -3700,148 +3914,14 @@ msgstr "Gặp lỗi khi lấy thống kê" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3863,22 +3943,20 @@ msgid "" 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?)" +#, fuzzy +#| msgid "" +#| "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' 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" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "Gặp lỗi không rõ khi thực hiện apt-key" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3916,18 +3994,138 @@ msgstr "Việc chọn bị lỗi" msgid "Connection timed out" msgstr "Kết nối đã quá giờ" +#: methods/http.cc +msgid "Problem hashing file" +msgstr "Gặp vấn đề băm tập tin" + #: 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ệ" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "Lỗi GPG: %s: %s" + +#~ msgid "Logging in" +#~ msgstr "Đang đăng nhập vào" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "Không thể quyết định tên ngang hàng" + +#~ msgid "Unable to determine the local name" +#~ msgstr "Không thể phân giải tên cục bộ" + +#, 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" + +#, 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" + +#, 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" + +#~ 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." + +#, 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" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "Lệnh TYPE (kiểu) đã thất bại: máy chủ nói: %s" + +#~ msgid "Connection timeout" +#~ msgstr "Thời hạn kết nối" + +#~ msgid "Server closed the connection" +#~ msgstr "Máy phục vụ đã đóng kết nối" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "Một trả lời đã tràn bộ đệm." + +#~ msgid "Protocol corruption" +#~ msgstr "Giao thức bị hỏng" + +#~ msgid "Could not create a socket" +#~ msgstr "Không thể tạo ổ cắm" + +#~ 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ờ" + +#~ msgid "Could not connect passive socket." +#~ msgstr "Không thể kết nối ổ cắm bị động." + +#~ 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" + +#~ msgid "Could not bind a socket" +#~ msgstr "Không thể ràng buộc ổ cắm" + +#~ msgid "Could not listen on the socket" +#~ msgstr "Không thể lắng nghe trên ổ cắm đó" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "Không thể quyết định tên ổ cắm đó" + +#~ msgid "Unable to send PORT command" +#~ msgstr "Không thể gửi lệnh PORT (cổng)" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "Không biết họ địa chỉ %u (AF_*)" + +#, 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" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Quá giờ kết nối ổ cắm dữ liệu" + +#~ msgid "Unable to accept connection" +#~ msgstr "Không thể chấp nhận kết nối" + +#, 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”" + +#~ msgid "Data socket timed out" +#~ msgstr "Ổ cắm dữ liệu đã quá giờ" + +#, 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”" + +#~ msgid "Query" +#~ msgstr "Truy vấn" + +#~ msgid "Unable to invoke " +#~ msgstr "Không thể gọi " + +#~ msgid "Connection closed prematurely" +#~ msgstr "Kết nối bị đóng bất ngờ" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " Đã cài đặt: " + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "Những gói giữ lại sau đây sẽ bị THAY ĐỔI:" + #~ msgid "Yes, do as I say!" #~ msgstr "Có, làm đi!" @@ -4373,9 +4571,6 @@ msgstr "Các tập tin trống rỗng không phải là kho lưu hợp lệ" #~ 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” " diff --git a/po/zh_CN.po b/po/zh_CN.po index 82a580f..8ba36a7 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -10,14 +10,14 @@ # Carlos Z.F. Liu , 2004, 2006. # Aron Xu , 2009, 2010. # Mo Zhou , 2014, 2015, 2016, 2017, 2019. -# Boyuan Yang <073plan@gmail.com>, 2018, 2020, 2022. +# Boyuan Yang <073plan@gmail.com>, 2018, 2020, 2022, 2024, 2025. # msgid "" msgstr "" -"Project-Id-Version: apt 2.5.3\n" +"Project-Id-Version: apt 2.9.26\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" -"PO-Revision-Date: 2024-07-29 16:12+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" +"PO-Revision-Date: 2025-01-28 16:26-0500\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" @@ -25,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.1\n" +"X-Generator: Poedit 3.5\n" #: apt-pkg/acquire-item.cc msgid "" @@ -57,8 +57,8 @@ msgstr "仓库 “%s” 不再含有 Release 文件。" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" "一般不可以这样做,但选项 Acquire:: AllowDowngradeToInsecureRepositories 可以" "用于覆盖默认设置。" @@ -122,10 +122,14 @@ msgid "" msgstr "明文签署文件不可用,结果为‘%s’(您的网络需要认证吗?)" #: apt-pkg/acquire-item.cc -#, c-format +#, 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" 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" "校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。GPG 错误:" "%s: %s" @@ -133,8 +137,8 @@ msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" -msgstr "GPG 错误:%s: %s" +msgid "OpenPGP signature verification failed: %s: %s" +msgstr "" #: apt-pkg/acquire-item.cc #, c-format @@ -142,8 +146,8 @@ msgid "" "Skipping acquire of configured file '%s' as repository '%s' doesn't have the " "component '%s' (component misspelt in sources.list?)" msgstr "" -"鉴于仓库 '%2$s' 不含有 '%3$s' 组件,跳过配置文件 '%1$s' 的获取。(sources." -"list 中的组件名称是否拼写错误?)" +"鉴于仓库 '%2$s' 不含有 '%3$s' 组件,跳过配置文件 '%1$s' 的获取。" +"(sources.list 中的组件名称是否拼写错误?)" #: apt-pkg/acquire-item.cc #, c-format @@ -194,8 +198,7 @@ msgstr "%s 的 Release 文件已经过期(已经过期了 %s)。该仓库的更 msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "冲突的发行版:%s (期望 %s 但得到 %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "仓库'%s'将其'%s'值从'%s'修改到了'%s'" @@ -206,7 +209,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "仓库'%s'将其'%s'的默认优先级从'%hi'修改到了'%hi'。" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -226,6 +229,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "无法下载 %s %s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "仓库应当提供明文签署的 InRelease 文件,但在 %s 中并未找到。" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -246,15 +256,6 @@ msgstr "没有源可以用来下载 %s 版本的 %s" msgid "Changelog unavailable for %s=%s" msgstr "%s=%s 的 Changelog 不可用" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" -"目前“%s”方法不受支持且默认禁用。请考虑切换至 http(s)。您可以将 Dir::Bin::" -"Methods::%s 设置为“%s”来重新启用。" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -642,6 +643,30 @@ msgstr "语法错误 %s:%u:clean 指令需要一个选项树作为参数" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "语法错误 %s:%u:文件尾部有多余的无意义的数据" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "错误:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "警告:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "注意:" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "审计:" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "调试:" + #: apt-pkg/contrib/extracttar.cc #, c-format msgid "Cannot find a configured compressor for '%s'" @@ -749,11 +774,11 @@ msgstr "子进程 %s 返回了一个错误号 (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "子进程 %s 异常退出" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "读错误" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "写出错" @@ -772,7 +797,7 @@ msgstr "无法创建子进程的 IPC 管道" #: apt-pkg/contrib/fileutl.cc msgid "Failed to exec compressor " -msgstr "无法执行压缩程序" +msgstr "无法执行压缩程序 " #: apt-pkg/contrib/fileutl.cc #, c-format @@ -811,7 +836,7 @@ msgstr "同步文件出错" #: apt-pkg/contrib/fileutl.cc #, c-format msgid "Unable to mkstemp %s" -msgstr "无法建立临时文件(mkstemp) %s " +msgstr "无法建立临时文件(mkstemp) %s" #: apt-pkg/contrib/fileutl.cc #, c-format @@ -838,7 +863,7 @@ msgstr "无法关闭 mmap" #: apt-pkg/contrib/mmap.cc msgid "Unable to synchronize mmap" -msgstr "无法同步 mmap " +msgstr "无法同步 mmap" #: apt-pkg/contrib/mmap.cc #, c-format @@ -991,7 +1016,7 @@ msgstr "软件包仓库 Release 文件 %s 内无哈希条目" msgid "" "No Hash entry in Release file %s which is considered strong enough for " "security purposes" -msgstr "Release 文件 %s 中不含散列项,该文件用于保证足够的安全性。" +msgstr "Release 文件 %s 中不含散列项,该文件用于保证足够的安全性" #: apt-pkg/deb/debmetaindex.cc #, c-format @@ -1059,6 +1084,13 @@ msgstr "无法对状态列表目录加锁(%s),请查看您是否正以 root msgid "Not locked" msgstr "未锁定" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" +"由 Dir::Bin::dpkg 所设置的 dpkg 可执行文件缺失,回退到使用默认的 dpkg。" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1151,7 +1183,7 @@ msgstr "操作在完成之前被打断" #: apt-pkg/deb/dpkgpm.cc msgid "No apport report written because MaxReports is reached already" -msgstr "由于已经达到 MaxReports 限制,没有写入 apport 报告。" +msgstr "由于已经达到 MaxReports 限制,没有写入 apport 报告" #. check if its not a follow up error #: apt-pkg/deb/dpkgpm.cc @@ -1168,13 +1200,13 @@ msgstr "因为错误消息指示这是由于上一个问题导致的错误,没 msgid "" "No apport report written because the error message indicates a disk full " "error" -msgstr "因为错误消息指示这是由于磁盘已满,没有写入 apport 报告。" +msgstr "因为错误消息指示这是由于磁盘已满,没有写入 apport 报告" #: apt-pkg/deb/dpkgpm.cc msgid "" "No apport report written because the error message indicates a out of memory " "error" -msgstr "因为错误消息指示这是由于内存不足,没有写入 apport 报告。" +msgstr "因为错误消息指示这是由于内存不足,没有写入 apport 报告" #: apt-pkg/deb/dpkgpm.cc msgid "" @@ -1185,7 +1217,7 @@ msgstr "错误信息显示本地系统有一些问题,因此没有写入 appor #: 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 报告。" +msgstr "因为错误消息指示这是一个 dpkg I/O 错误,没有写入 apport 报告" #: apt-pkg/depcache.cc msgid "Building dependency tree" @@ -1239,6 +1271,14 @@ msgstr "准备接收依赖解决方案" msgid "External solver failed without a proper error message" msgstr "外部依赖解决器出错,错误信息不恰当" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "正在计算更新" + +#: apt-pkg/edsp.cc +msgid "Solving dependencies" +msgstr "正在解析依赖" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "执行外部依赖解决器" @@ -1330,8 +1370,8 @@ msgid "" "you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" "由于这次安装存在着一个 Conflicts/Pre-Depends 循环,因而需要暂时删除一个必不可" -"少的软件包 %s。通常并不建议这样做,但是如果您确实希望如此,可以打开 APT::" -"Force-LoopBreak 选项。" +"少的软件包 %s。通常并不建议这样做,但是如果您确实希望如此,可以打开 " +"APT::Force-LoopBreak 选项。" #: apt-pkg/pkgcache.cc msgid "Empty package cache" @@ -1534,10 +1574,6 @@ msgid "" "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 @@ -1649,7 +1685,7 @@ msgstr "虚拟软件包 %s 由下面的软件包提供:\n" #: apt-private/private-cacheset.cc msgid " [Installed]" -msgstr "[已安装]" +msgstr " [已安装]" #: apt-private/private-cacheset.cc msgid " [Not candidate version]" @@ -1700,14 +1736,6 @@ msgstr "软件包 %s 未安装,所以不会被卸载\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "注意,选中 '%s' 而非 '%s'\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" -"请使用 `apt dist-upgrade' 更新系统,使用 `apt upgrade' 可能造成系统更新不完" -"整。" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "常用命令:" @@ -1814,25 +1842,32 @@ msgstr "下列信息可能会对解决问题有所帮助:" msgid "Broken packages" msgstr "破损的软件包" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "写出错" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " "system." msgstr "" +"系统 usr 未合并的布局已不再受到支持。请使用 usrmerge 工具将系统转换为 merged-" +"usr 布局。" #. TRANSLATORS: %s is a url to a page describing merged-usr (bookworm release notes) #: apt-private/private-install.cc -#, fuzzy, c-format -#| msgid "Selected %s for removal.\n" +#, c-format msgid "See %s for more details." -msgstr "选中 %s 以待卸载。\n" +msgstr "更多细节请参阅 %s。" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再" +"有几个软件包无法下载,要不运行 apt update 或者加上 --fix-missing 的选项再" "试试?" #: apt-private/private-install.cc @@ -1870,6 +1905,11 @@ msgstr "内部错误,排序未完成" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "怪了……文件大小不符,请发邮件给 apt@packages.debian.org 吧" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB / %sB\n" +msgstr " 下载大小:%sB / %sB\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 @@ -1877,6 +1917,11 @@ msgstr "怪了……文件大小不符,请发邮件给 apt@packages.debian.org msgid "Need to get %sB/%sB of archives.\n" msgstr "需要下载 %sB/%sB 的归档。\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1884,13 +1929,54 @@ msgstr "需要下载 %sB/%sB 的归档。\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +msgstr "所需的空间超出了可用空间:%sB > %sB,安装可能失败" + +#. 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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\n" +msgstr "在 %s 中:%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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "在 %s 中,所需的空间超出了可用空间:%sB > %sB,安装可能失败" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "所需的空间:%sB\n" + +#: apt-private/private-install.cc +#, c-format +msgid " Freed space: %sB\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 @@ -1908,18 +1994,17 @@ msgid "" "break the system." msgstr "不允许移除系统必需的关键软件包。这么做可能损坏系统。" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "您希望继续执行吗?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." -msgstr "当前卸载操作涉及系统关键软件包,继续执行可能导致系统运行异常。" +msgid "Continue anyway?" +msgstr "仍然继续吗?" #: apt-private/private-install.cc -msgid "The following are critical system packages:" -msgstr "以下是系统关键软件包:" +msgid "Continue?" +msgstr "是否继续?" + +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "您希望继续执行吗?" #: apt-private/private-install.cc msgid "Abort." @@ -1972,6 +2057,12 @@ msgstr "似乎自动卸载工具损坏了一些软件,这不应该发生。请 msgid "Internal Error, AutoRemover broke stuff" msgstr "内部错误,自动卸载工具坏事了" +#: 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 package was automatically installed and is no longer required:" @@ -1988,14 +2079,8 @@ msgid_plural "" 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 "将会同时安装下列软件:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -2005,6 +2090,10 @@ msgstr "建议安装:" msgid "Recommended packages:" msgstr "推荐安装:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "将会同时安装下列软件:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2050,7 +2139,7 @@ msgstr "正在列表" 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[0] "还有 %i 个版本。请使用 -a 选项来查看它(它们)" #. TRANSLATORS: placeholder is a binary name like apt or apt-get #: apt-private/private-main.cc @@ -2133,19 +2222,41 @@ msgstr " 或" msgid "The following packages have unmet dependencies:" msgstr "下列软件包有未满足的依赖关系:" +#: apt-private/private-output.cc +msgid "Unsatisfied dependencies:" +msgstr "无法满足的依赖关系:" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "下列【新】软件包将被安装:" +#: apt-private/private-output.cc +msgid "Installing:" +msgstr "将要安装:" + +#: apt-private/private-output.cc +msgid "Installing dependencies:" +msgstr "将要安装的依赖:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "【将要卸载】:" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "下列软件包将被【卸载】:" #: apt-private/private-output.cc -#, fuzzy -#| msgid "The following packages have been kept back:" msgid "The following upgrades have been deferred due to phasing:" -msgstr "下列软件包的版本将保持不变:" +msgstr "下列软件包新版本的升级因阶段更新而被推迟:" + +#: apt-private/private-output.cc +msgid "Not upgrading yet due to phasing:" +msgstr "因阶段更新暂不升级:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "暂不升级:" #: apt-private/private-output.cc msgid "The following packages have been kept back:" @@ -2155,10 +2266,22 @@ msgstr "下列软件包的版本将保持不变:" msgid "The following packages will be upgraded:" msgstr "下列软件包将被升级:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "将被升级:" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "【将被降级】:" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "下列软件包将被【降级】:" +#: apt-private/private-output.cc +msgid "Changing held packages:" +msgstr "将改变原先被要求版本不变的软件包:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "下列被要求保持版本不变的软件包将被改变:" @@ -2176,26 +2299,50 @@ msgstr "" "【警告】:下列基础软件包将被卸载。\n" "请勿尝试,除非您确实知道您在做什么!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "摘要:" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "升级了 %lu 个软件包,新安装了 %lu 个软件包," +#: apt-private/private-output.cc +#, c-format +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "升级:%lu,安装:%lu," + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "重新安装了 %lu 个软件包," +#: apt-private/private-output.cc +#, c-format +msgid "Reinstalling: %lu, " +msgstr "重新安装:%lu," + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "降级了 %lu 个软件包," +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "卸载:%lu,不升级:%lu\n" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2223,7 +2370,7 @@ msgid "Y" msgstr "Y" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "N" @@ -2395,13 +2542,13 @@ msgstr "无法获得 %s 的构建依赖关系信息" #: apt-private/private-source.cc #, c-format msgid "%s has no build depends.\n" -msgstr " %s 没有构建依赖关系信息。\n" +msgstr "%s 没有构建依赖关系信息。\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" "找不到关于 %s 的有效体系结构信息。请参见 apt.conf(5) APT::Architectures for " "setup" @@ -2435,13 +2582,18 @@ msgstr "无法处理构建依赖关系" #: apt-private/private-sources.cc #, c-format msgid "Failed to parse %s. Edit again? " -msgstr "解析 %s 失败。请重新编辑之后再试。" +msgstr "解析 %s 失败。要重新编辑之后再试吗?" #: apt-private/private-sources.cc #, c-format msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "您的 %s 文件有过改动,请执行 ‘apt-get update’。\n" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "重新写入 %zu 个软件源配置吗?" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2449,7 +2601,7 @@ msgstr "版本为 %2$s 的软件包 %1$s 有未满足的依赖关系:\n" #: apt-private/private-update.cc msgid "The update command takes no arguments" -msgstr " update 命令不需要参数" +msgstr "update 命令不接受参数" #. TRANSLATOR: the first two are manpage references, the last the URI from a sources.list #: apt-private/private-update.cc @@ -2459,11 +2611,38 @@ msgid "" "the %s entry for '%s'" msgstr "您应当优先考虑使用 %s 而非直接把账户信息直接写在 %s 的条目 '%s' 中" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "%s 用于“%s”的条目应当被升级为 deb822 .sources 格式" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" +msgstr "对‘%2$s’在 %1$s 一项中缺失了 Signed-By" + +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "请考虑将所有 sources.list(5) 的条目迁移到 deb822 .sources 格式" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "deb822 .sources 格式同时支持嵌入式和外部的 OpenPGP 密钥" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "参见 apt-secure(8) 手册以了解配置仓库签名的最佳实践。" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." msgstr "" +"一些软件源配置可被改进为现代化的配置方法。请运行“apt modernize-sources”来进行" +"此操作。" #: apt-private/private-update.cc #, c-format @@ -2510,6 +2689,12 @@ msgstr " 混合虚拟软件包:" msgid " Missing: " msgstr " 缺失:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "按不同的版本共计:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "按不同的版本共计:" @@ -2846,6 +3031,10 @@ msgstr "查询一个 SRV 记录 (如: _http._tcp.ftp.debian.org)" msgid "concatenate files, with automatic decompression" msgstr "自动解压并连接文件" +#: cmdline/apt-helper.cc +msgid "hash file" +msgstr "散列文件" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "用 apt.conf 检测代理设置" @@ -3057,10 +3246,8 @@ msgid "remove packages" msgstr "移除软件包" #: cmdline/apt.cc -#, fuzzy -#| msgid "Remove automatically all unused packages" msgid "automatically remove all unused packages" -msgstr "卸载所有自动安装且不再使用的软件包" +msgstr "自动卸载所有不再使用的软件包" #. system wide stuff #: cmdline/apt.cc @@ -3080,10 +3267,18 @@ msgstr "通过 卸载/安装/升级 来更新系统" msgid "edit the source information file" msgstr "编辑软件源信息文件" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "将 .list 文件现代化并改写为 .sources 文件" + #: cmdline/apt.cc msgid "satisfy dependency strings" msgstr "使系统满足依赖关系字符串" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "错误的默认设置!" @@ -3276,7 +3471,7 @@ msgstr "未知的压缩算法“%s”" msgid "Compressed output %s needs a compression set" msgstr "压缩后的输出文件 %s 要求有一个压缩文件集合" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "无法为子进程创建 IPC 管道" @@ -3395,23 +3590,23 @@ msgstr "归档文件没有包含 package 字段" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s 中没有 override 项\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s 中没有二进制文件的 override 项\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3449,7 +3644,7 @@ msgstr "错误的报头数据" msgid "Connection failed" msgstr "连接失败" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "文件尺寸不符(%llu != %llu)。您使用的镜像正在同步中?" @@ -3476,7 +3671,7 @@ msgid "" "cannot be used to add new CD-ROMs" msgstr "" "请使用 apt-cdrom,通过它可以让 APT 识别该盘片。apt-get update 不能被用来加入" -"新的盘片。" +"新的盘片" #: methods/cdrom.cc msgid "Wrong CD-ROM" @@ -3491,7 +3686,7 @@ msgstr "无法卸载挂载于 %s 的 CD-ROM,它可能正被使用。" msgid "Disk not found." msgstr "找不到盘片。" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "无法找到文件" @@ -3524,9 +3719,9 @@ 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) 的连接" +msgstr "无法发起与 %s:%s (%s) 的连接。" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "失败" @@ -3540,9 +3735,7 @@ msgstr "无法连接上 %s:%s (%s)。" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "正在连接 %s" @@ -3580,148 +3773,15 @@ msgstr "无法读取状态" 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 +#: methods/gpgv.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 "无法调用 " +msgid "untrusted public key algorithm: %s" +msgstr "不受信任的公钥算法:%s" #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" -msgstr "" +msgid "%s will be deprecated in a future release" +msgstr "%s 将会在未来的版本中被弃用" #. TRANSLATORS: %s is a single techy word like 'NODATA' #: methods/gpgv.cc @@ -3740,28 +3800,18 @@ msgid "" msgstr "内部错误:签名正确无误,但是无法确认密钥指纹?!" #: methods/gpgv.cc -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" -msgstr "无法运行 apt-key 以验证签名(您安装了 gnupg 吗?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" +msgstr "无法运行 'gpgv' 以验证签名(您安装了 gnupg 吗?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" -msgstr "运行 apt-key 时发生未知错误" - -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" -"密钥存储在过时的 trusted.gpg 密钥环中(%s),请参见 apt-key(8) 的 " -"DEPRECATION 一节以了解详情。" +msgid "Unknown error executing gpgv" +msgstr "运行 gpgv 时发生未知错误" #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc -#, fuzzy, c-format -#| msgid "Signature by key %s uses weak digest algorithm (%s)" +#, c-format msgid "Signature by key %s uses weak algorithm (%s)" -msgstr "密钥 %s 生成的数字签名使用了弱安全性摘要算法(%s)" +msgstr "密钥 %s 生成的数字签名使用了弱安全性的算法(%s)" #: methods/gpgv.cc msgid "The following signatures were invalid:\n" @@ -3787,24 +3837,163 @@ msgstr "写入文件出错" #: methods/http.cc msgid "Select failed" -msgstr "select 调用出错" +msgstr "Select 调用出错" #: methods/http.cc msgid "Connection timed out" msgstr "连接超时" +#: methods/http.cc +msgid "Problem hashing file" +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 "空文件不是有效归档" +#, c-format +#~ msgid "GPG error: %s: %s" +#~ msgstr "GPG 错误:%s: %s" + +#, fuzzy, c-format +#~| msgid "" +#~| "Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " +#~| "section in apt-key(8) for details." +#~ msgid "" +#~ "Key is stored in legacy trusted.gpg keyring (%s). Use Signed-By instead. " +#~ "See the USER CONFIGURATION section in apt-secure(8) for details." +#~ msgstr "" +#~ "密钥存储在过时的 trusted.gpg 密钥环中(%s),请参见 apt-key(8) 的 " +#~ "DEPRECATION 一节以了解详情。" + +#, c-format +#~ msgid "" +#~ "The method '%s' is unsupported and disabled by default. Consider " +#~ "switching to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it " +#~ "again." +#~ msgstr "" +#~ "目前“%s”方法不受支持且默认禁用。请考虑切换至 http(s)。您可以将 " +#~ "Dir::Bin::Methods::%s 设置为“%s”来重新启用。" + +#~ msgid "Logging in" +#~ msgstr "正在登录" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "无法获知对方主机名" + +#~ msgid "Unable to determine the local name" +#~ msgstr "无法获知本地主机名" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "服务器拒绝了我们的连接,响应信息为:%s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER 指令出错,服务器响应信息为:%s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS 指令出错,服务器响应信息为:%s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "您指定了代理服务器,但是没有登陆脚本,Acquire::ftp::ProxyLogin 设置为空。" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "登录脚本命令“%s”出错,服务器响应信息为:%s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE 指令出错,服务器响应信息为:%s" + +#~ msgid "Connection timeout" +#~ msgstr "连接超时" + +#~ msgid "Server closed the connection" +#~ msgstr "服务器关闭了连接" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "回应超出了缓存区大小。" + +#~ msgid "Protocol corruption" +#~ msgstr "协议有误" + +#~ msgid "Could not create a socket" +#~ msgstr "无法创建套接字" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "无法连接数据套接字,连接超时" + +#~ msgid "Could not connect passive socket." +#~ msgstr "无法连接被动模式的套接字。" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo 无法得到监听套接字" + +#~ msgid "Could not bind a socket" +#~ msgstr "无法绑定套接字" + +#~ msgid "Could not listen on the socket" +#~ msgstr "无法在套接字上监听" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "无法确定套接字的名字" + +#~ msgid "Unable to send PORT command" +#~ msgstr "无法发出 PORT 指令" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "无法识别的地址族 %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT 指令失败,服务器响应为:%s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "数据套接字连接超时" + +#~ msgid "Unable to accept connection" +#~ msgstr "无法接受连接" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "无法获取文件,服务器响应为“%s”" + +#~ msgid "Data socket timed out" +#~ msgstr "数据套接字超时" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "数据传送出错,服务器响应为“%s”" + +#~ msgid "Query" +#~ msgstr "查询" + +#~ msgid "Unable to invoke " +#~ msgstr "无法调用 " + +#~ msgid "Connection closed prematurely" +#~ msgstr "连接被永久关闭" + +#, fuzzy, c-format +#~| msgid " Installed: " +#~ msgid " Installed size: %sB\n" +#~ msgstr " 已安装:" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "下列被要求保持版本不变的软件包将被改变:" + #~ msgid "Yes, do as I say!" #~ msgstr "是,按我说的做!" @@ -4328,8 +4517,8 @@ msgstr "空文件不是有效归档" #~ "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。" +#~ "无法立即对已经解压的 %s 进行配置。请查看 man 5 apt.conf 中的 " +#~ "APT::Immediate-Configure。" #~ msgid "Error occurred while processing %s (NewPackage)" #~ msgstr "处理 %s (NewPackage)时出错" diff --git a/po/zh_TW.po b/po/zh_TW.po index 3657c1c..26ed1c7 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -12,11 +12,11 @@ msgid "" msgstr "" "Project-Id-Version: apt 1.2.X\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2024-07-29 16:08+0800\n" +"POT-Creation-Date: 2025-05-19 18:28+0200\n" "PO-Revision-Date: 2009-01-28 10:41+0800\n" "Last-Translator: Tetralet \n" -"Language-Team: Debian-user in Chinese [Big5] \n" +"Language-Team: Debian-user in Chinese [Big5] \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -53,8 +53,8 @@ msgstr "路徑 %s 已被抽換" #: apt-pkg/acquire-item.cc msgid "" -"This is normally not allowed, but the option Acquire::" -"AllowDowngradeToInsecureRepositories was given to override it." +"This is normally not allowed, but the option " +"Acquire::AllowDowngradeToInsecureRepositories was given to override it." msgstr "" #: apt-pkg/acquire-item.cc @@ -121,13 +121,14 @@ msgstr "" #, 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" +"updated and the previous index files will be used. OpenPGP signature " +"verification failed: %s: %s" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) #: apt-pkg/acquire-item.cc #, c-format -msgid "GPG error: %s: %s" +msgid "OpenPGP signature verification failed: %s: %s" msgstr "" #: apt-pkg/acquire-item.cc @@ -183,8 +184,7 @@ msgstr "" msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "發行版本衝突:%s(應當是 %s 但卻得到 %s)" -#. Both messages are reused from the ReleaseInfoChange feature in acquire-item.cc -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "Repository '%s' changed its '%s' value from '%s' to '%s'" msgstr "" @@ -195,7 +195,7 @@ msgid "Repository '%s' changed its default priority for %s from %hi to %hi." msgstr "" #. TRANSLATOR: the "this" refers to changes in the repository like a new release or owner change -#: apt-pkg/acquire-item.cc apt-private/private-update.cc +#: apt-pkg/acquire-item.cc #, c-format msgid "" "More information about this can be found online in the Release notes at: %s" @@ -214,6 +214,13 @@ msgstr "" msgid "Failed to fetch %s %s" msgstr "無法取得 %s,%s" +#: apt-pkg/acquire-item.cc +#, c-format +msgid "" +"Repositories should provide a clear-signed InRelease file, but none found at " +"%s." +msgstr "" + #: apt-pkg/acquire-item.cc #, c-format msgid "" @@ -234,13 +241,6 @@ msgstr "" msgid "Changelog unavailable for %s=%s" msgstr "正和 %s (%s) 連線" -#: apt-pkg/acquire-worker.cc -#, c-format -msgid "" -"The method '%s' is unsupported and disabled by default. Consider switching " -"to http(s). Set Dir::Bin::Methods::%s to \"%s\" to enable it again." -msgstr "" - #: apt-pkg/acquire-worker.cc #, c-format msgid "The method '%s' is explicitly disabled via configuration." @@ -622,6 +622,30 @@ msgstr "語法錯誤 %s:%u:指令只能於最高層級執行" msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "語法錯誤 %s:%u:在檔案結尾有多餘的垃圾" +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Error:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Warning:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Notice:" +msgstr "" + +#: apt-pkg/contrib/error.cc +msgid "Audit:" +msgstr "" + +#. TRANSLATOR: This is a warning level displayed before the message +#: apt-pkg/contrib/error.cc +msgid "Debug:" +msgstr "" + #: apt-pkg/contrib/extracttar.cc #, fuzzy, c-format msgid "Cannot find a configured compressor for '%s'" @@ -731,11 +755,11 @@ msgstr "子程序 %s 傳回錯誤碼 (%u)" msgid "Sub-process %s exited unexpectedly" msgstr "子程序 %s 不預期得結束" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Read error" msgstr "讀取錯誤" -#: apt-pkg/contrib/fileutl.cc methods/ftp.cc methods/rsh.cc +#: apt-pkg/contrib/fileutl.cc msgid "Write error" msgstr "寫入錯誤" @@ -1044,6 +1068,12 @@ msgstr "無法鎖定列表目錄" msgid "Not locked" msgstr "" +#: apt-pkg/deb/debsystem.cc +msgid "" +"The dpkg executable set in Dir::Bin::dpkg is missing, falling back to using " +"default dpkg." +msgstr "" + #. we don't care for the difference #: apt-pkg/deb/dpkgpm.cc #, c-format @@ -1224,6 +1254,16 @@ msgstr "" msgid "External solver failed without a proper error message" msgstr "" +#: apt-pkg/edsp.cc apt-pkg/upgrade.cc +msgid "Calculating upgrade" +msgstr "籌備升級中" + +#: apt-pkg/edsp.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Solving dependencies" +msgstr "相依關係合計:" + #: apt-pkg/edsp.cc msgid "Execute external solver" msgstr "" @@ -1519,10 +1559,6 @@ msgid "" "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 @@ -1684,12 +1720,6 @@ msgstr "套件 %s 並沒有被安裝,所以也不會被移除\n" msgid "Note, selecting '%s' instead of '%s'\n" msgstr "注意,選擇了以 %s 替代 %s\n" -#: apt-private/private-cmndline.cc -msgid "" -"Please use `apt dist-upgrade' to upgrade your system. Using `apt upgrade' " -"may result in incomplete upgrades." -msgstr "" - #: apt-private/private-cmndline.cc msgid "Most used commands:" msgstr "" @@ -1791,6 +1821,12 @@ msgstr "以下的資訊或許有助於解決當前的情況:" msgid "Broken packages" msgstr "損毀的套件" +#: apt-private/private-install.cc +#, fuzzy +#| msgid "Write error" +msgid "Writing error report" +msgstr "寫入錯誤" + #: apt-private/private-install.cc msgid "" "Unmerged usr is no longer supported, use usrmerge to convert to a merged-usr " @@ -1805,10 +1841,10 @@ msgstr "" #: apt-private/private-install.cc msgid "" -"Unable to fetch some archives, maybe run apt-get update or try with --fix-" +"Unable to fetch some archives, maybe run apt update or try with --fix-" "missing?" msgstr "" -"有部份套件檔無法取得,試著執行 apt-get update 或者試著加上 --fix-missing 選" +"有部份套件檔無法取得,試著執行 apt update 或者試著加上 --fix-missing 選" "項?" #: apt-private/private-install.cc @@ -1845,6 +1881,12 @@ msgstr "內部錯誤,排序未能完成" msgid "How odd... The sizes didn't match, email apt@packages.debian.org" msgstr "怪哉... 檔案大小不符,請發信給 apt@packages.debian.org" +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid " Installed: " +msgid " Download size: %sB / %sB\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-install.cc @@ -1852,6 +1894,11 @@ msgstr "怪哉... 檔案大小不符,請發信給 apt@packages.debian.org" msgid "Need to get %sB/%sB of archives.\n" msgstr "需要下載 %sB/%sB 的套件檔。\n" +#: apt-private/private-install.cc +#, c-format +msgid " Download size: %sB\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 @@ -1859,13 +1906,55 @@ msgstr "需要下載 %sB/%sB 的套件檔。\n" 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 "Space needed: %sB / %sB available\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 "More space needed than available: %sB > %sB, installation may fail" +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 - +#. The first %s is the location of the boot directory (determined from Dir::Boot), +#. and it tells the space being needed there. +#. (We have two spaces to align with parent "space needed:"for /boot) +#: apt-private/private-install.cc +#, c-format +msgid "in %s: %sB / %sB available\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 +#. The first %s is the location of the boot directory (determined from Dir::Boot) +#: apt-private/private-install.cc +#, c-format +msgid "" +"More space needed in %s than available: %sB > %sB, installation may fail" +msgstr "" + +#: apt-private/private-install.cc +#, c-format +msgid "Space needed: %sB\n" +msgstr "" + +#: apt-private/private-install.cc +#, fuzzy, c-format +#| msgid "Stored label: %s\n" +msgid " Freed space: %sB\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 @@ -1883,19 +1972,18 @@ msgid "" "break the system." msgstr "" -#: apt-private/private-install.cc cmdline/apt-mark.cc -msgid "Do you want to continue?" -msgstr "是否繼續進行 [Y/n]?" - #: apt-private/private-install.cc -msgid "The current uninstallation operation involves system-critical " -"packages. Continuing may cause system instability." +msgid "Continue anyway?" msgstr "" #: apt-private/private-install.cc -msgid "The following are critical system packages:" +msgid "Continue?" msgstr "" +#: apt-private/private-install.cc cmdline/apt-mark.cc +msgid "Do you want to continue?" +msgstr "是否繼續進行 [Y/n]?" + #: apt-private/private-install.cc msgid "Abort." msgstr "放棄執行。" @@ -1950,6 +2038,13 @@ msgstr "" msgid "Internal Error, AutoRemover broke stuff" msgstr "內部錯誤,AutoRemover 處理失敗" +#: 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 "" @@ -1969,15 +2064,8 @@ 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 "下列的額外套件將被安裝:" +msgid "Result calculated by the 3.0 solver." +msgstr "" #: apt-private/private-install.cc msgid "Suggested packages:" @@ -1987,6 +2075,10 @@ msgstr "建議套件:" msgid "Recommended packages:" msgstr "推薦套件:" +#: apt-private/private-install.cc +msgid "The following additional packages will be installed:" +msgstr "下列的額外套件將被安裝:" + #: apt-private/private-install.cc #, c-format msgid "Skipping %s, it is already installed and upgrade is not set.\n" @@ -2116,10 +2208,32 @@ msgstr "或" msgid "The following packages have unmet dependencies:" msgstr "下列的套件有未滿足的相依關係:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Failed to satisfy %s dependency for %s: %s" +msgid "Unsatisfied dependencies:" +msgstr "無法滿足 %2$s 的相依關係 %1$s:%3$s" + #: apt-private/private-output.cc msgid "The following NEW packages will be installed:" msgstr "下列【新】套件將會被安裝:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Installing %s" +msgid "Installing:" +msgstr "正在安裝 %s" + +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Total dependencies: " +msgid "Installing dependencies:" +msgstr "相依關係合計:" + +#: apt-private/private-output.cc +msgid "REMOVING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be REMOVED:" msgstr "下列套件將會被【移除】:" @@ -2130,6 +2244,16 @@ msgstr "下列套件將會被【移除】:" msgid "The following upgrades have been deferred due to phasing:" msgstr "下列套件將會維持其原有版本:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "The following packages have been kept back:" +msgid "Not upgrading yet due to phasing:" +msgstr "下列套件將會維持其原有版本:" + +#: apt-private/private-output.cc +msgid "Not upgrading:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages have been kept back:" msgstr "下列套件將會維持其原有版本:" @@ -2138,10 +2262,24 @@ msgstr "下列套件將會維持其原有版本:" msgid "The following packages will be upgraded:" msgstr "下列套件將會被升級:" +#: apt-private/private-output.cc +msgid "Upgrading:" +msgstr "" + +#: apt-private/private-output.cc +msgid "DOWNGRADING:" +msgstr "" + #: apt-private/private-output.cc msgid "The following packages will be DOWNGRADED:" msgstr "下列套件將會被【降級】:" +#: apt-private/private-output.cc +#, fuzzy +#| msgid "Pinned packages:" +msgid "Changing held packages:" +msgstr "鎖定的套件:" + #: apt-private/private-output.cc msgid "The following held packages will be changed:" msgstr "下列被保留 (hold) 的套件將會被更改:" @@ -2159,26 +2297,52 @@ msgstr "" "【警告】:下列的基本套件都將被移除。\n" "除非您很清楚您在做什麼,否則請勿輕易嘗試!" +#: apt-private/private-output.cc +msgid "Summary:" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "升級 %lu 個,新安裝 %lu 個," +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Upgrading: %lu, Installing: %lu, " +msgstr "正在安裝 %s" + #: apt-private/private-output.cc #, c-format msgid "%lu reinstalled, " msgstr "重新安裝 %lu 個," +#: apt-private/private-output.cc +#, fuzzy, c-format +#| msgid "Installing %s" +msgid "Reinstalling: %lu, " +msgstr "正在安裝 %s" + #: apt-private/private-output.cc #, c-format msgid "%lu downgraded, " msgstr "降級 %lu 個," +#: apt-private/private-output.cc +#, c-format +msgid "Downgrading: %lu, " +msgstr "" + #: 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 "Removing: %lu, Not Upgrading: %lu\n" +msgstr "" + #: apt-private/private-output.cc #, c-format msgid "%lu not fully installed or removed.\n" @@ -2206,7 +2370,7 @@ msgid "Y" msgstr "" #. TRANSLATOR: "No" answer printed for a yes/no question if --assume-no is set -#: apt-private/private-output.cc +#: apt-private/private-output.cc apt-private/private-sources.cc msgid "N" msgstr "" @@ -2380,8 +2544,8 @@ msgstr "%s 沒有編譯相依關係。\n" #: apt-private/private-source.cc #, c-format msgid "" -"No architecture information available for %s. See apt.conf(5) APT::" -"Architectures for setup" +"No architecture information available for %s. See apt.conf(5) " +"APT::Architectures for setup" msgstr "" #: apt-private/private-source.cc @@ -2418,6 +2582,11 @@ msgstr "無法將 %s 更名為 %s" msgid "Your '%s' file changed, please run 'apt-get update'.\n" msgstr "" +#: apt-private/private-sources.cc +#, c-format +msgid "Rewrite %zu sources?" +msgstr "" + #: apt-private/private-unmet.cc #, c-format msgid "Package %s version %s has an unmet dep:\n" @@ -2435,12 +2604,37 @@ msgid "" "the %s entry for '%s'" msgstr "" +#. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list +#: apt-private/private-update.cc +#, c-format +msgid "The %s entry for '%s' should be upgraded to deb822 .sources" +msgstr "" + #. TRANSLATOR: the first is manpage reference, the last the URI from a sources.list #: apt-private/private-update.cc #, c-format msgid "Missing Signed-By in the %s entry for '%s'" msgstr "" +#: apt-private/private-update.cc +msgid "" +"Consider migrating all sources.list(5) entries to the deb822 .sources format" +msgstr "" + +#: apt-private/private-update.cc +msgid "" +"The deb822 .sources format supports both embedded as well as external " +"OpenPGP keys" +msgstr "" + +#: apt-private/private-update.cc +msgid "See apt-secure(8) for best practices in configuring repository signing." +msgstr "" + +#: apt-private/private-update.cc +msgid "Some sources can be modernized. Run 'apt modernize-sources' to do so." +msgstr "" + #: apt-private/private-update.cc #, c-format msgid "%i package can be upgraded. Run 'apt list --upgradable' to see it.\n" @@ -2487,6 +2681,12 @@ msgstr " 混合虛擬套件:" msgid " Missing: " msgstr " 找不到:" +#: cmdline/apt-cache.cc +#, fuzzy +#| msgid "Total distinct versions: " +msgid "Total distinct source versions: " +msgstr "個別版本合計:" + #: cmdline/apt-cache.cc msgid "Total distinct versions: " msgstr "個別版本合計:" @@ -2815,6 +3015,12 @@ msgstr "" msgid "concatenate files, with automatic decompression" msgstr "" +#: cmdline/apt-helper.cc +#, fuzzy +#| msgid "Problem hashing file" +msgid "hash file" +msgstr "有問題的雜湊檔" + #: cmdline/apt-helper.cc msgid "detect proxy using apt.conf" msgstr "" @@ -3062,12 +3268,20 @@ msgstr "" msgid "edit the source information file" msgstr "正在讀取狀態資料" +#: cmdline/apt.cc +msgid "modernize .list files to .sources files" +msgstr "" + #: cmdline/apt.cc #, fuzzy #| msgid "Failed to satisfy %s dependency for %s: %s" msgid "satisfy dependency strings" msgstr "無法滿足 %2$s 的相依關係 %1$s:%3$s" +#: cmdline/apt.cc +msgid "produce a reason trace for the current state of the package" +msgstr "" + #: dselect/install msgid "Bad default setting!" msgstr "錯誤的預設設定!" @@ -3263,7 +3477,7 @@ msgstr "未知的壓縮演算法 '%s'" msgid "Compressed output %s needs a compression set" msgstr "要壓縮輸出 %s 需搭配壓縮動作" -#: ftparchive/multicompress.cc methods/rsh.cc +#: ftparchive/multicompress.cc msgid "Failed to create IPC pipe to subprocess" msgstr "無法和子程序建立 IPC 管線" @@ -3382,23 +3596,23 @@ msgstr "套件檔裡沒有套件資訊" #: ftparchive/writer.cc #, c-format -msgid " %s has no override entry\n" -msgstr " %s 沒有重新定義項目\n" +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" +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" +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" +msgid " %.*s has no binary override entry either\n" +msgstr " %.*s 也沒有二元碼重新定義項目\n" #: methods/basehttp.cc msgid "Waiting for headers" @@ -3436,7 +3650,7 @@ msgstr "錯誤的標頭資料" msgid "Connection failed" msgstr "連線失敗" -#: methods/basehttp.cc methods/ftp.cc methods/http.cc +#: methods/basehttp.cc methods/http.cc #, c-format msgid "File has unexpected size (%llu != %llu). Mirror sync in progress?" msgstr "" @@ -3477,7 +3691,7 @@ msgstr "無法卸載 %s 裡的光碟片,或許它仍在使用中。" msgid "Disk not found." msgstr "找不到磁碟。" -#: methods/cdrom.cc methods/file.cc methods/rsh.cc +#: methods/cdrom.cc methods/file.cc msgid "File not found" msgstr "找不到檔案" @@ -3513,7 +3727,7 @@ msgstr "無法建立 socket 指向 %s (f=%u t=%u p=%u)" msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "無法初始和 %s:%s (%s) 的連線。" -#: methods/connect.cc methods/ftp.cc methods/rsh.cc +#: methods/connect.cc msgid "Failed" msgstr "失敗" @@ -3527,9 +3741,7 @@ msgstr "無法和 %s:%s (%s) 連線。" msgid "Could not connect to %s:%s (%s), connection timed out" 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 +#: methods/connect.cc #, c-format msgid "Connecting to %s" msgstr "正連線至 %s" @@ -3567,147 +3779,14 @@ msgstr "無法取得狀態" 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 +#: methods/gpgv.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." +msgid "untrusted public key algorithm: %s" 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 " #: methods/gpgv.cc #, c-format -msgid "untrusted public key algorithm: %s" +msgid "%s will be deprecated in a future release" msgstr "" #. TRANSLATORS: %s is a single techy word like 'NODATA' @@ -3728,20 +3807,15 @@ msgstr "內部錯誤:簽章無誤,但卻無法辨識密鑰的指紋碼?! #: methods/gpgv.cc #, fuzzy -msgid "Could not execute 'apt-key' to verify signature (is gnupg installed?)" +msgid "Could not execute 'gpgv' to verify signature (is gnupg installed?)" msgstr "無法執行 '%s' 來驗證簽章(gnupg 是否安裝了?)" #: methods/gpgv.cc -msgid "Unknown error executing apt-key" +#, fuzzy +#| msgid "Unknown error executing apt-key" +msgid "Unknown error executing gpgv" msgstr "在執行 apt-key 時發生未知的錯誤" -#: methods/gpgv.cc -#, c-format -msgid "" -"Key is stored in legacy trusted.gpg keyring (%s), see the DEPRECATION " -"section in apt-key(8) for details." -msgstr "" - #. TRANSLATORS: The second %s is the reason and is untranslated for repository owners. #: methods/gpgv.cc #, c-format @@ -3778,18 +3852,128 @@ msgstr "選擇失敗" msgid "Connection timed out" msgstr "連線逾時" +#: methods/http.cc +msgid "Problem hashing file" +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 "Logging in" +#~ msgstr "登入中" + +#~ msgid "Unable to determine the peer name" +#~ msgstr "無法解析對方主機名稱" + +#~ msgid "Unable to determine the local name" +#~ msgstr "無法解析本機名稱" + +#, c-format +#~ msgid "The server refused the connection and said: %s" +#~ msgstr "伺服器不接受連線,並回應:%s" + +#, c-format +#~ msgid "USER failed, server said: %s" +#~ msgstr "USER 指令失敗,伺服器回應:%s" + +#, c-format +#~ msgid "PASS failed, server said: %s" +#~ msgstr "PASS 指令失敗,伺服器回應:%s" + +#~ msgid "" +#~ "A proxy server was specified but no login script, " +#~ "Acquire::ftp::ProxyLogin is empty." +#~ msgstr "" +#~ "指定了代理伺服器,但沒有指定登入 script,Acquire::ftp::ProxyLogin 是空的。" + +#, c-format +#~ msgid "Login script command '%s' failed, server said: %s" +#~ msgstr "登入 script 指令 '%s' 失敗,伺服器回應:%s" + +#, c-format +#~ msgid "TYPE failed, server said: %s" +#~ msgstr "TYPE 指令失敗,伺服器回應:%s" + +#~ msgid "Connection timeout" +#~ msgstr "連線逾時" + +#~ msgid "Server closed the connection" +#~ msgstr "伺服器已關閉連線" + +#~ msgid "A response overflowed the buffer." +#~ msgstr "回應超過緩衝區長度。" + +#~ msgid "Protocol corruption" +#~ msgstr "協定失敗" + +#~ msgid "Could not create a socket" +#~ msgstr "無法建立 Socket" + +#~ msgid "Could not connect data socket, connection timed out" +#~ msgstr "無法和 data socket 連線,連線逾時" + +#~ msgid "Could not connect passive socket." +#~ msgstr "無法和 passive socket 連線。" + +#~ msgid "getaddrinfo was unable to get a listening socket" +#~ msgstr "getaddrinfo 無法取得監聽 socket" + +#~ msgid "Could not bind a socket" +#~ msgstr "無法 bind 至 socket" + +#~ msgid "Could not listen on the socket" +#~ msgstr "無法監聽 socket" + +#~ msgid "Could not determine the socket's name" +#~ msgstr "無法解析 socket 名稱" + +#~ msgid "Unable to send PORT command" +#~ msgstr "無法送出 PORT 指令" + +#, c-format +#~ msgid "Unknown address family %u (AF_*)" +#~ msgstr "未知的地址家族 %u (AF_*)" + +#, c-format +#~ msgid "EPRT failed, server said: %s" +#~ msgstr "EPRT 指令失敗,伺服器回應:%s" + +#~ msgid "Data socket connect timed out" +#~ msgstr "Data socket 連線逾時" + +#~ msgid "Unable to accept connection" +#~ msgstr "無法接受連線" + +#, c-format +#~ msgid "Unable to fetch file, server said '%s'" +#~ msgstr "無法取得檔案,伺服器回應 '%s'" + +#~ msgid "Data socket timed out" +#~ msgstr "Data socket 連線逾時" + +#, c-format +#~ msgid "Data transfer failed, server said '%s'" +#~ msgstr "資料傳輸失敗,伺服器回應 '%s'" + +#~ msgid "Query" +#~ msgstr "查詢" + +#~ msgid "Unable to invoke " +#~ msgstr "無法 invoke " + +#~ msgid "Connection closed prematurely" +#~ msgstr "連線突然終止" + +#, fuzzy +#~| msgid "The following held packages will be changed:" +#~ msgid "Changing held packages:Changing held packages:" +#~ msgstr "下列被保留 (hold) 的套件將會被更改:" + #~ msgid "Yes, do as I say!" #~ msgstr "Yes, do as I say!" diff --git a/prepare-release b/prepare-release index fe9628f..e77dfe4 100755 --- a/prepare-release +++ b/prepare-release @@ -11,7 +11,7 @@ VERSION=$(dpkg-parsechangelog -S 'Version') DISTRIBUTION=$(dpkg-parsechangelog -S 'Distribution') LIBAPTPKGVERSION="$(awk -v ORS='.' '/^#define APT_PKG_M/ {print $3}' apt-pkg/contrib/macros.h | sed 's/\.$//')" -LIBSUFFIX="t64" +LIBSUFFIX="" librarysymbolsfromfile() { local MISSING="$(grep '^+#MISSING' "$1")" @@ -233,7 +233,6 @@ elif [ "$1" = 'spellcheckers' -o "$1" = 'lint' ]; then -e '^.*apt-pkg/pkgcache\.h.*mmaped.*==>.*mapped.*$' \ -e '^.*apt-pkg/pkgcachegen\.cc.*mmaped.*==>.*mapped.*$' \ -e '^.*apt-pkg/contrib/mmap\.h.*mmaped.*==>.*mapped.*$' \ - -e '^.*cmdline/apt-key\.in.*dashs.*==>.*dashes.*$' \ -e '^.*methods/aptmethod\.h.*creat.*==>.*create.*$' \ -e '^.*dselect/install.*ans.*==>.*and.*$' \ -e '^.*ftparchive/writer\.h.*Delink.*==>.*Unlink.*$' \ @@ -276,9 +275,6 @@ elif [ "$1" = 'spellcheckers' -o "$1" = 'lint' ]; then -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$' \ diff --git a/test/integration/framework b/test/integration/framework index 0570d5c..37f09c6 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -19,6 +19,9 @@ while [ -n "$1" -a -z "$CHECK_ARGS" ]; do elif [ "$1" = '--level' ]; then export MSGLEVEL=$2 shift + elif [ "$1" = '--solver' ]; then + export APT_SOLVER=$2 + shift else echo >&2 "WARNING: Unknown parameter »$1« will be ignored" fi @@ -171,6 +174,13 @@ getaptconfig() { } runapt() { msgdebug "Executing: ${CCMD}$*${CDEBUG} " + local unbuffer= + unset NO_COLOR + if [ "$1" = "--unbuffer" ]; then + unbuffer="unbuffer" + export NO_COLOR=1 + shift + fi local CMD="$1" shift case "$CMD" in @@ -178,9 +188,9 @@ runapt() { *) CMD="${APTCMDLINEBINDIR}/$CMD";; esac if [ "$CMD" = 'aptitude' ]; then - MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" command "$CMD" "$@" + MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" command $unbuffer "$CMD" "$@" else - MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" "$CMD" "$@" + MALLOC_PERTURB_=21 MALLOC_CHECK_=2 APT_CONFIG="$(getaptconfig)" LD_LIBRARY_PATH="${LIBRARYPATH}:${LD_LIBRARY_PATH}" $unbuffer "$CMD" "$@" fi } runpython3() { runapt command python3 "$@"; } @@ -189,7 +199,6 @@ 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 "$@"; } @@ -200,6 +209,7 @@ aptextracttemplates() { runapt apt-extracttemplates "$@"; } aptinternalsolver() { runapt "${APTINTERNALSOLVER}" "$@"; } aptdumpsolver() { runapt "${APTDUMPSOLVER}" "$@"; } aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; } +sq() { command sq --key-store=none --cert-store=none "$@"; } dpkg() { "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@" @@ -247,10 +257,17 @@ valgrind() { *) CMD="$1";; esac shift + if [ "$CMD" = "apt-ftparchive" ]; then + CMD="${APTFTPARCHIVEBINDIR}/${CMD}" + fi if [ "${CMD##*/}" = "$CMD" ]; then CMD="${APTCMDLINEBINDIR}/${CMD}" fi - runapt command valgrind "$CMD" "$@" + if command valgrind --version >/dev/null 2>&1; then + runapt command valgrind -q --error-exitcode=7 "$CMD" "$@" + else + runapt command "$CMD" "$@" + fi } lastmodification() { @@ -324,6 +341,7 @@ setupenvironment() { unset DEB_CHECK_COMMAND DEB_SIGN_KEYID DEB_BUILD_OPTIONS DEB_BUILD_PROFILES unset DH_VERBOSE DH_QUIET DH_COMPAT DH_NO_ACT DH_OPTIONS DH_EXTRA_ADDONS unset GREP_OPTIONS POSIXLY_CORRECT + unset SUDO_USER SUDO_UID SUDO_GID SUDO_COMMAND unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy export GCOV_ERROR_FILE=/dev/null @@ -444,16 +462,10 @@ _setupprojectenvironment() { 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 "Binary::apt::APT::Output-Version \"0\";" >> 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 "${APTCMDLINEBINDIR}/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 \"${APTCMDLINEBINDIR}/apt-key\";" >> aptconfig.conf if [ "$(id -u)" = '0' ]; then - echo 'Binary::gpgv::APT::Sandbox::User "root";' >> aptconfig.conf - # same for the solver executables + # run the solvers as root so we don't lose coverage data echo 'APT::Solver::RunAsUser "root";' >> aptconfig.conf echo 'APT::Planner::RunAsUser "root";' >> aptconfig.conf fi @@ -535,7 +547,10 @@ exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root= 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 - + # Set the solver for the test case. + if [ "$APT_SOLVER" ]; then + echo "APT::Solver \"$APT_SOLVER\";" >> aptconfig.conf + fi { echo 'quiet "0";' echo 'quiet::NoUpdate "true";' @@ -565,6 +580,8 @@ EOF echo 'APT::Machine-ID "912e43bd1c1d4ba481f9f8ccab25f9ee";' > rootdir/etc/apt/apt.conf.d/machine-id + echo "APT::Get::Update::SourceListWarnings::SignedBy \"false\";" >> rootdir/etc/apt/apt.conf.d/signed-by + configcompression '.' 'gz' #'bz2' 'lzma' 'xz' confighashes 'SHA256' # these are tests, not security best-practices @@ -572,10 +589,11 @@ EOF echo 'DPkg::Path "";' >> aptconfig.conf echo 'Dir::Bin::ischroot "/bin/false";' >> aptconfig.conf - # 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 + echo 'quiet::NoSolver3Explanation "true";' > rootdir/etc/apt/apt.conf.d/disable-solver3-context + + + export APT_SEQUOIA_CRYPTO_POLICY="$PWD/sequoia.config" + touch "$APT_SEQUOIA_CRYPTO_POLICY" # most tests just need one signed Release file, not both export APT_DONT_SIGN='Release.gpg' @@ -583,6 +601,9 @@ EOF # prefer our apt binaries over the system apt binaries export PATH="${APTCMDLINEBINDIR}:${PATH}:/usr/sbin:/sbin" } +allowremovemanual() { + echo 'APT::Solver::RemoveManual "true";' >> ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/allow-remove-manual.conf +} getarchitecture() { if [ "$1" = "native" -o -z "$1" ]; then @@ -863,9 +884,8 @@ buildsimplenativepackage() { | 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" +# sq sign --signer-file ./keys/joesixpack.sec +# -o "${BUILDDIR}/../${SRC}.sign" --cleartext "${BUILDDIR}/../$SRC" # mv "${BUILDDIR}/../${SRC}.sign" "${BUILDDIR}/../$SRC" # fi done @@ -880,8 +900,12 @@ buildsimplenativepackage() { 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) + if [ ! -e "${BUILDDIR}/debian/tmp/DEBIAN/control" ]; then + (cd "${BUILDDIR}"; dpkg-gencontrol -DArchitecture=$arch) + fi + if [ ! -e "${BUILDDIR}/debian/tmp/DEBIAN/md5sums" ]; then + (cd "${BUILDDIR}/debian/tmp"; md5sum $(find usr/ -type f) > DEBIAN/md5sums) + fi local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log" # ensure the right permissions as dpkg-deb insists chmod 755 "${BUILDDIR}/debian/tmp/DEBIAN" @@ -1096,9 +1120,11 @@ insertinstalledpackage() { for arch in $(getarchitecturesfromcommalist "$ARCH"); do echo "Package: $NAME Status: $STATUS -Priority: $PRIORITY -Section: $SECTION -Installed-Size: 42 +Priority: $PRIORITY" >> "$FILE" + if [ "$SECTION" != '' ]; then + echo "Section: $SECTION" >> "$FILE" + fi + echo "Installed-Size: 42 Maintainer: Joe Sixpack Version: $VERSION" >> "$FILE" test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE" @@ -1279,22 +1305,7 @@ killgpgagent() { 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}" @@ -1326,20 +1337,22 @@ signreleasefiles() { 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" + chronic sq key expire --expiration 1w --cert-file "${REXKEY}.sec" --output "$SECUNEXPIRED" + chronic sq key subkey expire --expiration 1w --policy-as-of 2020-01-01 --cert-file "$SECUNEXPIRED" --output "$SECUNEXPIRED" --overwrite --key B3C9747B5FFD84E5585C3055DB4B332DD8DA0F4F + chronic sq key delete --cert-file "${SECUNEXPIRED}" --output "$PUBUNEXPIRED" + cp "${SECUNEXPIRED}" "${REXKEY}.sec" + cp "${PUBUNEXPIRED}" "${REXKEY}.pub" 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" + if [ ! -e "${KEY}.new.pub" ]; then + cp "${K}.pub" "${KEY}.new.pub" + cp "${K}.sec" "${KEY}.new.sec" + else + chronic sq keyring merge "${KEY}.new.pub" "${K}.pub" --output "${KEY}.new.pub" --overwrite + chronic sq keyring merge "${KEY}.new.sec" "${K}.sec" --output "${KEY}.new.sec" --overwrite + fi fi done if [ ! -e "${KEY}.pub" ]; then @@ -1352,14 +1365,18 @@ signreleasefiles() { if [ "$APT_DONT_SIGN" = 'Release.gpg' ]; then rm -f "${RELEASE}.gpg" else - dosigning "$KEY" "$@" $SIGUSERS --armor --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}" + if command sq --cli-version 0.40 version 2>/dev/null; then + sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --output "${RELEASE}.gpg" --signature-file "${RELEASE}" + else + sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --signature-file "${RELEASE}.gpg" "${RELEASE}" + fi 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" + sq sign $time --signer-file "$KEY.sec" "$@" --overwrite --output "${INRELEASE}" --cleartext "${RELEASE}" touch -d "$DATE" "${INRELEASE}" fi done @@ -1548,7 +1565,11 @@ cleanup_output() { cat "$1" | sed \ -e '/gpgv: WARNING: This key is not suitable for signing in --compliance=gnupg mode/ d' \ -e '/^profiling:/ d' \ - | sed -e '/\.\.\.profiling:/ {N;s#\.\.\.profiling:.*\n#...#g}' \ + -e '/\.\.\.profiling:/ {N;s#\.\.\.profiling:.*\n#...#g}' \ + -e '/^Solving dependencies\.\.\.$/ d' \ + -e '/^Calculating upgrade\.\.\.$/ d' \ + -e 's/Solving dependencies\.\.\.//' \ + -e 's/Calculating upgrade\.\.\.//' \ >"$2" } @@ -1991,24 +2012,14 @@ testfailure() { 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 + 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 - 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 + msgpass fi else msgpass @@ -2063,6 +2074,19 @@ testfailureequal() { testreturnstateequal 'testfailure' "$@" } +grepmsg() { + awk '{ + if (/^[WEN]:/) + msg=1; + else if (/^ / && msg) + msg=1; + else + msg=0; + if (msg) + print + }' +} + testfailuremsg() { msggroup 'testfailuremsg' local CMP="$1" @@ -2070,7 +2094,7 @@ testfailuremsg() { 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 + grepmsg < "${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output" > "$COMPAREFILE" 2>&1 || true testoutputequal "$COMPAREFILE" echo "$CMP" msggroup } @@ -2081,7 +2105,7 @@ testwarningmsg() { 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 + grepmsg < "${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output" > "$COMPAREFILE" 2>&1 || true testoutputequal "$COMPAREFILE" echo "$CMP" msggroup } @@ -2146,14 +2170,6 @@ mapkeynametokeyid() { shift done } -testaptkeys() { - local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/aptkeylist.output" - if ! aptkey list --with-colon 2>/dev/null | 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 diff --git a/test/integration/run-tests b/test/integration/run-tests index c1cc780..9399f28 100755 --- a/test/integration/run-tests +++ b/test/integration/run-tests @@ -22,7 +22,16 @@ while [ -n "$1" ]; do elif [ "$1" = '-j' ]; then APT_TEST_JOBS=$2 shift - elif [ -x "$1" ]; then + elif [ "$1" = '--solver' ]; then + export APT_SOLVER="$2" + shift + elif [ "$1" = '--skip' ]; then + export APT_SKIP_TEST_FILE="$2" + shift + elif [ "$1" = '--only' ]; then + TESTLIST="$2" + shift + elif [ -e "$1" ]; then TESTTORUN="$1" else echo >&2 "WARNING: Unknown parameter »$1« will be ignored" @@ -52,14 +61,22 @@ if [ -n "$TESTTORUN" ]; then CURRENTTRAP="rm -f \"$OUTPUT\"; $CURRENTTRAP" trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM { - if [ "$MSGLEVEL" -le 1 ]; then + if [ "$APT_SKIP_TEST_FILE" ] && sed 's/ *#.*//' "$APT_SKIP_TEST_FILE" | grep -qFx "${TESTTORUN##*/}"; then + if [ "$MSGLEVEL" -le 2 ]; then + printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}" + else + printf "${CTEST}Skip Testcase ${CHIGH}${TESTTORUN##*/}${CRESET}\n" + fi + SKIP='yes' + elif [ "$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 + + if [ "$SKIP" != "yes" ] && ! "$TESTTORUN"; then FAIL='yes' if [ "$MSGLEVEL" -le 2 ]; then printf >&2 "\n${CHIGH}Running ${TESTTORUN##*/} -> FAILED${CRESET}\n" @@ -83,6 +100,9 @@ if [ -n "$TESTTORUN" ]; then stty sane || true cat >&2 "$OUTPUT" stty sane || true + if [ "$STATS_FILE" ]; then + flock "$STATS_FILE" -c "echo $TESTTORUN skip=${SKIP:-no} fail=${FAIL:-no} >> \"$STATS_FILE\"" + fi if [ "$FAIL" = 'yes' ]; then exit 1 else @@ -96,8 +116,15 @@ ALL=0 FAILED_TESTS="" DIR="$(readlink -f "$(dirname "$0")")" cd "$DIR" -TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)" +if [ -e "$TESTLIST" ]; then + TESTLIST="$(sort < "$TESTLIST" | sed 's#^#./#;s/ *#.*//')" +else + TESTLIST="$(find . -mindepth 1 -maxdepth 1 -regex '^\./test-[^/]*$' | sort)" +fi if [ -n "$APT_TEST_JOBS" ]; then + export STATS_FILE="$(mktemp)" + CURRENTTRAP="rm -f \"$STATS_FILE\"; $CURRENTTRAP" + trap "$CURRENTTRAP" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM if [ "$MSGCOLOR" != 'NO' ]; then export MSGCOLOR='ALWAYS' fi @@ -107,24 +134,37 @@ if [ -n "$APT_TEST_JOBS" ]; then elif command -v parallel.moreutils >/dev/null 2>&1; then parallel=parallel.moreutils fi - exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") + $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST") || true + ALL=$(wc -l < "$STATS_FILE") + SKIP=$(grep -c "skip=yes" "$STATS_FILE" || true) + PASS=$(grep -c "skip=no fail=no" "$STATS_FILE" || true) + FAIL=$(grep -c "fail=yes" "$STATS_FILE" || true) + PASSED_TESTS=$(awk '! /fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs) + SKIPPED_TESTS=$(awk '/fail=skip/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs) + FAILED_TESTS=$(awk '/fail=yes/ {print $1}' < "$STATS_FILE" | cut -f2 -d/ | sort | xargs) + echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed, $SKIP skipped" + if [ -n "$FAILED_TESTS" ]; then + if [ $PASS -lt $FAIL ]; then + echo >&2 "Passed tests: $PASSED_TESTS" + else + echo >&2 "Failed tests: $FAILED_TESTS" + fi + 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)) 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 [ "$APT_SKIP_TEST_FILE" ] && grep -qFx "${testcase##*/}" "$APT_SKIP_TEST_FILE"; then + printf "${CTEST}Skipping Testcase ${CHIGH}${testcase##*/}${CRESET}\n" + continue + fi if [ "$MSGLEVEL" -le 1 ]; then printf "${testcase##*/}" elif [ "$MSGLEVEL" -le 2 ]; then diff --git a/test/integration/solver3.broken b/test/integration/solver3.broken new file mode 100644 index 0000000..0e2005d --- /dev/null +++ b/test/integration/solver3.broken @@ -0,0 +1,7 @@ +test-allow-scores-for-all-dependency-types # TBD: We are lacking single-sided conflicts preferences +test-apt-get-upgrade-by-source # TBD: Upgrading by source is not supported yet, mostly same issue as above +test-apt-install-order-matters-a-bit # Wontfix: Cannot fix, the order is not recorded in the depcache +test-bug-470115-new-and-tighten-recommends # TBD: Calculation of what is already satisfied Recommends is broken +test-prevent-markinstall-multiarch-same-versionscrew # TBD: We consider the skewed ones obsolete and remove them... +test-resolve-by-keep-obsolete-removals # TBD: ResolveByKeep() usage is badly aligned here +test-ubuntu-bug-1304403-obsolete-priority-standard # TBD: Solver3 here happily removes 10 deps to upgrade a package diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types index 999efc0..0d9ec6e 100755 --- a/test/integration/test-allow-scores-for-all-dependency-types +++ b/test/integration/test-allow-scores-for-all-dependency-types @@ -41,9 +41,14 @@ 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... +testsuccess aptmark auto ~i +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following packages were automatically installed and are no longer required: + libdb-dev libdb5.3-dev +Use 'apt autoremove' to remove them. The following packages will be REMOVED: libdb5.1-dev The following NEW packages will be installed: @@ -55,10 +60,14 @@ 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... +Conf libdb5.3-dev (5.3.28-3 unversioned [amd64])" aptget dist-upgrade -st unversioned +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following packages were automatically installed and are no longer required: + libdb-dev libdb5.3-dev +Use 'apt autoremove' to remove them. The following packages will be REMOVED: libdb5.1-dev The following NEW packages will be installed: @@ -70,32 +79,49 @@ 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 +Conf libdb5.3-dev (5.3.28-3 versioned [amd64])" aptget dist-upgrade -st versioned rm -f rootdir/var/lib/dpkg/status insertinstalledpackage 'foo' 'amd64' '1' insertinstalledpackage 'bar' 'amd64' '1' -testsuccessequal 'Reading package lists... +testsuccess aptmark auto ~i +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following packages were automatically installed and are no longer required: + bar foo +Use 'apt autoremove' to remove them. 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... +0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st unversioned +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following packages were automatically installed and are no longer required: + bar foo +Use 'apt autoremove' to remove them. 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... +0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st versioned +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following packages were automatically installed and are no longer required: + bar foo +Use 'apt autoremove' to remove them. 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... +0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded." aptget dist-upgrade -st multipleno +testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following package was automatically installed and is no longer required: + bar +Use 'apt autoremove' to remove it. The following packages will be REMOVED: foo The following packages will be upgraded: @@ -103,10 +129,11 @@ The following packages will be upgraded: 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 +Conf bar (2.2 multipleyes [amd64])" aptget dist-upgrade -st multipleyes testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following NEW packages will be installed: baz 0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. @@ -114,6 +141,7 @@ Inst baz (2 unversioned [amd64]) Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following additional packages will be installed: bar The following packages will be REMOVED: @@ -134,8 +162,10 @@ rm -f rootdir/var/lib/dpkg/status insertinstalledpackage 'gdm3' 'amd64' '1' 'Depends: libaudit0, libaudit0' insertinstalledpackage 'login' 'amd64' '1' 'Essential: yes' insertinstalledpackage 'libaudit0' 'amd64' '1' +testsuccess aptmark auto ~i testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following packages will be REMOVED: gdm3 libaudit0 diff --git a/test/integration/test-apt-by-hash-update b/test/integration/test-apt-by-hash-update index 65c3766..a33eb91 100755 --- a/test/integration/test-apt-by-hash-update +++ b/test/integration/test-apt-by-hash-update @@ -13,6 +13,7 @@ insertpackage 'unstable' 'foo' 'all' '1.0' insertpackage 'unstable' 'bar' 'i386' '1.0' setupaptarchive --no-update +changetowebserver # make Packages *only* accessible by-hash for this test makebyhashonly() { @@ -100,8 +101,7 @@ msgmsg 'Test InRelease by-hash with' 'no fallback' rm -rf aptarchive/dists cp -a aptarchive/dists.bak aptarchive/dists -testfailureequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease -Err:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease - File not found - ${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/by-hash/SHA256/${inrelease_hash} (2: No such file or directory) +testfailureequal "Err:1 http://localhost:${APTHTTPPORT} unstable InRelease + 404 Not Found Reading package lists... -E: Failed to fetch file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease File not found - ${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/by-hash/SHA256/${inrelease_hash} (2: No such file or directory)" aptget update +E: Failed to fetch http://localhost:${APTHTTPPORT}/dists/unstable/InRelease 404 Not Found" aptget update diff --git a/test/integration/test-apt-cache-showsrc b/test/integration/test-apt-cache-showsrc index d3f61d9..0f0e21d 100755 --- a/test/integration/test-apt-cache-showsrc +++ b/test/integration/test-apt-cache-showsrc @@ -29,3 +29,9 @@ testsuccess grep "Package: unrelated" output.txt aptcache showsrc --only-source foo > output.txt testsuccess grep "Package: foo" output.txt testfailure grep "Package: unrelated" output.txt + +# by default apt-cache showsrc will look into "binary" and "source" names +# and show all matches +aptcache showsrc src:foo > output.txt +testsuccess grep "Package: foo" output.txt +testfailure grep "Package: unrelated" output.txt diff --git a/test/integration/test-apt-cdrom b/test/integration/test-apt-cdrom index e8ccb10..b323476 100755 --- a/test/integration/test-apt-cdrom +++ b/test/integration/test-apt-cdrom @@ -32,6 +32,7 @@ aptcdromlog() { sed -e '/gpgv\?:\s*Signature made/ d' \ -e '/gpgv\?:\s*Good signature/ d' \ -e '/gpgv\?:\s*using RSA key/ d' \ + -e '/gpgv\?:\s*asserted signer/d' \ -e '/gpgv\?:\s*issuer/ d' \ -e '/^Identifying/ d' \ -e '/Reading / d' rootdir/tmp/apt-cdrom.log @@ -41,23 +42,6 @@ aptcdromlog() { aptautotest_aptcdromlog_add() { aptautotest_aptget_update "$@"; } -msgtest "Checking --assert-pubkey-algo support" -gpgv_msg="" -test="$(LC_ALL=C.UTF-8 gpgv --assert-pubkey-algo 2>&1 || :)" -case "$test" in - *"missing argument"*) - gpgv_msg=" -gpgv: asserted signer '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' with algo rsa2048" - msgpass - ;; - *[Ii]"nvalid option"*"assert-pubkey-algo"*) - msgskip - ;; - *) - msgfail "Unknown response from gpgv to --assert-pubkey-algo check: $test" - ;; -esac - CDROM_PRE="Using CD-ROM mount point $(readlink -f ./rootdir/media)/cdrom/ Unmounting CD-ROM... Waiting for disc... @@ -65,7 +49,7 @@ 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'$gpgv_msg +'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 diff --git a/test/integration/test-apt-cli-json-hooks b/test/integration/test-apt-cli-json-hooks index 9a3208c..ee936e1 100755 --- a/test/integration/test-apt-cli-json-hooks +++ b/test/integration/test-apt-cli-json-hooks @@ -29,25 +29,29 @@ export TEST_HOOK_VERSION=0.2 cat >> json-hook.sh << EOF #!/bin/bash trap '' SIGPIPE +clean_json() { + jq 'del (.params.options[]? | select(.name != "APT::Architecture"))' +} while true; do read request <&\$APT_HOOK_SOCKET || exit 1 - if echo "\$request" | grep -q ".hello"; then + if echo "\$request" 2>/dev/null | grep -q ".hello"; then echo "HOOK: HELLO" fi - if echo "\$request" | grep -q ".bye"; then + if echo "\$request" 2>/dev/null | grep -q ".bye"; then echo "HOOK: BYE" exit 0; fi - echo HOOK: request \$request + request="\$(printf "%s" "\$request" | clean_json)" + echo "HOOK: request \$request" read empty <&\$APT_HOOK_SOCKET || exit 1 echo HOOK: empty \$empty - if echo "\$request" | grep -q ".hello"; then + if echo "\$request" 2>/dev/null | grep -q ".hello"; then printf '{"jsonrpc": "2.0", "result": {"version": "'\$TEST_HOOK_VERSION'"}, "id": 0}\n\n' >&\$APT_HOOK_SOCKET 2>/dev/null || exit 1 fi @@ -69,9 +73,36 @@ EOF ############################# Success search ####################### testsuccessequal 'HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.search.pre", + "params": { + "command": "search", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [] + } +} HOOK: empty HOOK: BYE Sorting... @@ -80,25 +111,106 @@ foo/unstable 1.0 all Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.post","params":{"command":"search","search-terms":["foo"],"unknown-packages":[],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.search.post", + "params": { + "command": "search", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [] + } +} HOOK: empty HOOK: BYE' apt search foo ############################# Failed search ####################### testsuccessequal 'HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.pre","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.search.pre", + "params": { + "command": "search", + "search-terms": [ + "foox" + ], + "unknown-packages": [], + "packages": [] + } +} HOOK: empty HOOK: BYE Sorting... Full Text Search... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.search.fail","params":{"command":"search","search-terms":["foox"],"unknown-packages":[],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.search.fail", + "params": { + "command": "search", + "search-terms": [ + "foox" + ], + "unknown-packages": [], + "packages": [] + } +} HOOK: empty HOOK: BYE' apt search foox @@ -108,9 +220,38 @@ HOOK: BYE' apt search foox testfailureequal 'Reading package lists... Building dependency tree... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.fail","params":{"command":"install","search-terms":["foxxx"],"unknown-packages":["foxxx"],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.fail", + "params": { + "command": "install", + "search-terms": [ + "foxxx" + ], + "unknown-packages": [ + "foxxx" + ], + "packages": [] + } +} HOOK: empty HOOK: BYE E: Unable to locate package foxxx' apt install foxxx @@ -120,32 +261,300 @@ E: Unable to locate package foxxx' apt install foxxx testsuccessequal 'Reading package lists... Building dependency tree... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.pre-prompt", + "params": { + "command": "install", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [ + { + "id": 2, + "name": "foo", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + } + } + } + ] + } +} HOOK: empty HOOK: BYE The following NEW packages will be installed: foo HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.package-list", + "params": { + "command": "install", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [ + { + "id": 2, + "name": "foo", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + } + } + } + ] + } +} HOOK: empty HOOK: BYE 0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.statistics", + "params": { + "command": "install", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [ + { + "id": 2, + "name": "foo", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + } + } + } + ] + } +} HOOK: empty HOOK: BYE Inst foo (1.0 Lemons:unstable [all]) Conf foo (1.0 Lemons:unstable [all]) HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"install","search-terms":["foo"],"unknown-packages":[],"packages":[{"id":2,"name":"foo","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":2,"version":"1.0","architecture":"all","pin":500,"origins":[{"archive":"unstable","codename":"sid","origin":"Oranges","label":"Lemons","site":""}]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.post", + "params": { + "command": "install", + "search-terms": [ + "foo" + ], + "unknown-packages": [], + "packages": [ + { + "id": 2, + "name": "foo", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 2, + "version": "1.0", + "architecture": "all", + "pin": 500, + "origins": [ + { + "archive": "unstable", + "codename": "sid", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + } + } + } + ] + } +} HOOK: empty HOOK: BYE' apt install foo -s @@ -154,9 +563,38 @@ HOOK: BYE' apt install foo -s testfailureequal 'Reading package lists... Building dependency tree... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.fail","params":{"command":"dist-upgrade","search-terms":["foxxx"],"unknown-packages":["foxxx"],"packages":[]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.fail", + "params": { + "command": "dist-upgrade", + "search-terms": [ + "foxxx" + ], + "unknown-packages": [ + "foxxx" + ], + "packages": [] + } +} HOOK: empty HOOK: BYE E: Unable to locate package foxxx' apt dist-upgrade foxxx @@ -167,32 +605,320 @@ testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.pre-prompt", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "upgrade", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE The following packages will be upgraded: upgrade HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.package-list", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "upgrade", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.statistics", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "upgrade", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE Inst upgrade [1.0] (2.0 Lemons:testing [i386]) Conf upgrade (2.0 Lemons:testing [i386]) HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"upgrade","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.post", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "upgrade", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE' apt dist-upgrade -s @@ -204,32 +930,320 @@ testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.pre-prompt","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.pre-prompt", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE The following packages will be upgraded: upgrade HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.package-list","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.package-list", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.statistics","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.statistics", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE Inst upgrade [1.0] (2.0 Lemons:testing [i386]) Conf upgrade (2.0 Lemons:testing [i386]) HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.install.post","params":{"command":"dist-upgrade","search-terms":[],"unknown-packages":[],"packages":[{"id":1,"name":"upgrade","architecture":"i386","mode":"install","automatic":false,"versions":{"candidate":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"install":{"id":1,"version":"2.0","architecture":"i386","pin":500,"origins":[{"archive":"testing","codename":"testing","origin":"Oranges","label":"Lemons","site":""}]},"current":{"id":3,"version":"1.0","architecture":"i386","pin":100,"origins":[]}}}]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.install.post", + "params": { + "command": "dist-upgrade", + "search-terms": [], + "unknown-packages": [], + "packages": [ + { + "id": 1, + "name": "upgrade", + "architecture": "i386", + "mode": "install", + "automatic": false, + "versions": { + "candidate": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "install": { + "id": 1, + "version": "2.0", + "architecture": "i386", + "pin": 500, + "origins": [ + { + "archive": "testing", + "codename": "testing", + "origin": "Oranges", + "label": "Lemons", + "site": "" + } + ] + }, + "current": { + "id": 3, + "version": "1.0", + "architecture": "i386", + "pin": 100, + "origins": [] + } + } + } + ] + } +} HOOK: empty HOOK: BYE' apt dist-upgrade -s @@ -241,10 +1255,42 @@ testfailureequal 'Reading package lists... Building dependency tree... Calculating upgrade... HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty HOOK: HELLO -HOOK: request {"jsonrpc":"2.0","method":"org.debian.apt.hooks.hello","id":0,"params":{"versions":["0.1","0.2"]}} +HOOK: request { + "jsonrpc": "2.0", + "method": "org.debian.apt.hooks.hello", + "id": 0, + "params": { + "versions": [ + "0.1", + "0.2" + ], + "options": [ + { + "name": "APT::Architecture", + "value": "i386" + } + ] + } +} HOOK: empty E: Unknown hook version in handshake from hook '$HOOK': {"jsonrpc": "2.0", "result": {"version": "42"}, "id": 0} E: Sub-process '$HOOK' returned an error code (1) diff --git a/test/integration/test-apt-cli-pager b/test/integration/test-apt-cli-pager new file mode 100755 index 0000000..ffa4e82 --- /dev/null +++ b/test/integration/test-apt-cli-pager @@ -0,0 +1,130 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'amd64' +DESCR='Some description + That has multiple lines' +insertsource 'unstable' 'foo' 'all' '1.0' +insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR" +insertpackage 'unstable' 'multi' 'all' '1.0' '' '' "$DESCR" +insertpackage 'unstable' 'multi' 'all' '2.0' '' '' "$DESCR" + +setupaptarchive + +APTARCHIVE=$(readlink -f ./aptarchive) + +cat >> head3 << EOF +#!/bin/sh +exec head -3 +EOF + +chmod +x head3 + +for show in info show; do +msgmsg "$show supports pager" +PAGER=cat testsuccessequal "Package: multi +Version: 2.0 +Priority: optional +Section: other +Maintainer: Joe Sixpack +Installed-Size: 43.0 kB +Download-Size: 42 B +APT-Sources: file:$APTARCHIVE unstable/main all Packages +Description: Some description + That has multiple lines + +N: There is 1 additional record. Please use the '-a' switch to see it" runapt --unbuffer apt $show multi -o TestPager=cat + +PAGER="head -3" testsuccessequal "Package: multi +Version: 2.0 +Priority: optional" runapt --unbuffer apt $show multi -o TestPager="head -3" + +PAGER="cat|./head3" testsuccessequal "Package: multi +Version: 2.0 +Priority: optional" runapt --unbuffer apt $show multi -o TestPager="head -3" + +# Test that we are not blocking +PAGER=more testsuccessequal "Package: multi +Version: 2.0 +Priority: optional +Section: other +Maintainer: Joe Sixpack +Installed-Size: 43.0 kB +Download-Size: 42 B +APT-Sources: file:$APTARCHIVE unstable/main all Packages +Description: Some description + That has multiple lines + +N: There is 1 additional record. Please use the '-a' switch to see it" runapt --unbuffer apt $show multi -o TestThatWeAreNotBlocking=1 + +PAGER=not-a-valid-pager testsuccessequal "Package: multi +Version: 2.0 +Priority: optional +Section: other +Maintainer: Joe Sixpack +Installed-Size: 43.0 kB +Download-Size: 42 B +APT-Sources: file:$APTARCHIVE unstable/main all Packages +Description: Some description + That has multiple lines + +W: Could not execute pager - PagerSetup (2: No such file or directory) +N: There is 1 additional record. Please use the '-a' switch to see it" runapt --unbuffer apt $show multi -o TestPager="not-a-valid-pager" +PAGER="dd status=none of=/dev/null" testsuccessequal "" runapt --unbuffer apt $show multi -o Test="everything is paged" +done + +msgmsg "list supports pager" +PAGER="head -1" testsuccessequal "foo/unstable 1.0 all +multi/unstable 2.0 all" apt list -qq +PAGER="head -1" testsuccessequal "foo/unstable 1.0 all" runapt --unbuffer apt list -qq -o TestPager="head -1" + +PAGER="dd status=none of=/dev/null" testsuccessequal "Listing..." runapt --unbuffer apt list -o Test="progress is not paged" + +msgmsg "search supports pager" +PAGER="head -1" testsuccessequal "foo/unstable 1.0 all + Some description + +multi/unstable 2.0 all + Some description +" apt search -qq . + +PAGER="head -1" testsuccessequal "foo/unstable 1.0 all" runapt --unbuffer apt search -qq . -o TestPager="head -1" + +PAGER="dd status=none of=/dev/null" testsuccessequal "Sorting... +Full Text Search..." runapt --unbuffer apt search . -o Test="progress is not paged" + +msgmsg "policy supports pager" +PAGER="head -1" testsuccessequal "foo: + Installed: (none) + Candidate: 1.0 + Version table: + 1.0 500 + 500 file:${APTARCHIVE} unstable/main all Packages" apt policy foo + +PAGER="head -1" testsuccessequal "foo:" runapt --unbuffer apt policy foo -o TestPager="head -1" + +PAGER="dd status=none of=/dev/null" testsuccessequal "" runapt --unbuffer apt policy foo -o Test="everything is paged" + +msgmsg "showsrc supports pager" +PAGER="head -2" testsuccessequal "Package: foo +Binary: foo +Version: 1.0 +Maintainer: Joe Sixpack +Architecture: all +Files: + b998e085e36cf162e6a33c2801318fef 11 foo_1.0.dsc + d46b9a02af8487cbeb49165540c88184 14 foo_1.0.tar.gz +Checksums-Sha256: + ed7c25c832596339bee13e4e7c45cf49f869b60d2bf57252f18191d75866c2a7 11 foo_1.0.dsc + f3da8c6ebc62c8ef2dae439a498dddcdacc1a07f45ff67ad12f44b6e2353c239 14 foo_1.0.tar.gz +" runapt apt showsrc foo + +PAGER="head -2" testsuccessequal "Package: foo +Binary: foo" runapt --unbuffer apt showsrc foo -o TestPager="head- 2" + +PAGER='echo $LESS' testsuccessequal "FRSXMK" runapt --unbuffer apt showsrc foo -o TestPager='echo $LESS (1)' +LESS=FRXM PAGER='echo $LESS' testsuccessequal "FRXM" runapt --unbuffer apt showsrc foo -o TestPager='echo $LESS (2)' diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show index 05a801f..8f9aa03 100755 --- a/test/integration/test-apt-cli-show +++ b/test/integration/test-apt-cli-show @@ -28,6 +28,10 @@ setupaptarchive APTARCHIVE=$(readlink -f ./aptarchive) +testfailureequal "N: Unable to locate package : +N: Unable to locate package : +E: No packages found" apt show : + # note that we do not display Description-md5 with the "apt" cmd # and also show some additional fields that are calculated testsuccessequal "Package: foo @@ -53,6 +57,9 @@ SHA256: 0000000000000000000000000000000000000000000000000000000000000000 Download-Size: 42 B APT-Manual-Installed: yes APT-Sources: file:$APTARCHIVE unstable/main all Packages +APT-Pin: 500 +APT-Candidate: yes +APT-Release: a=unstable,n=sid,c=main,b=all Description: Some description That has multiple lines " apt show foo --full diff --git a/test/integration/test-apt-cli-why b/test/integration/test-apt-cli-why new file mode 100755 index 0000000..8a4c94b --- /dev/null +++ b/test/integration/test-apt-cli-why @@ -0,0 +1,71 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertinstalledpackage 'root' 'all' '1' 'Depends: level-1' +insertinstalledpackage 'level-1' 'all' '1' 'Depends: level-2' +insertinstalledpackage 'level-2' 'all' '1' 'Depends: level-2' +insertpackage 'unstable' 'other-level-2' 'all' '1' 'Conflicts: level-2 +Provides: level-2' +insertpackage 'unstable' 'almost-level-2' 'all' '1' 'Conflicts: level-2' +insertpackage 'unstable' 'level-3' 'all' '1' 'Conflicts: level-3' +setupaptarchive + +testsuccess aptmark auto level-1 level-2 + + +testsuccessequal "level-2:amd64=1 is selected for install because: +1. root:amd64 is selected for install +2. root:amd64 Depends level-1 +3. level-1:amd64 Depends level-2 + [selected level-1:amd64] +For context, additional choices that could not be installed: +* In level-1:amd64 Depends level-2: + - other-level-2:amd64=1 -> | other-level-2:amd64 + but none of the choices are installable: + - other-level-2:amd64 is not selected for install because: + 1-3. level-2:amd64=1 is selected for install as above + 4. other-level-2:amd64 Conflicts level-2 + For context, additional choices that could not be installed: + * In level-1:amd64 Depends level-2: + - other-level-2:amd64=1 is not selected for install as above" apt why level-2 + + +testsuccessequal "other-level-2:amd64 is not actually marked for install" apt why other-level-2 +testsuccessequal "other-level-2:amd64 is not selected for install because: +1. root:amd64 is selected for install +2. root:amd64 Depends level-1 +3. level-1:amd64 Depends level-2 + [selected level-2:amd64=1 for install] +4. other-level-2:amd64 Conflicts level-2 +For context, additional choices that could not be installed: +* In level-1:amd64 Depends level-2: + - other-level-2:amd64=1 -> | other-level-2:amd64 + but none of the choices are installable: + - other-level-2:amd64 is not selected for install as above" apt why-not other-level-2 + +testsuccessequal "almost-level-2:amd64 is not actually marked for install" apt why almost-level-2 +testsuccessequal "almost-level-2:amd64 is not selected for install because: +1. root:amd64 is selected for install +2. root:amd64 Depends level-1 +3. level-1:amd64 Depends level-2 + [selected level-2:amd64=1 for install] +4. almost-level-2:amd64 Conflicts level-2 + [selected level-2:amd64=1] +For context, additional choices that could not be installed: +* In level-1:amd64 Depends level-2: + - other-level-2:amd64=1 -> | other-level-2:amd64 + but none of the choices are installable: + - other-level-2:amd64 is not selected for install because: + 1-3. level-2:amd64=1 is selected for install as above + 4. other-level-2:amd64 Conflicts level-2 + For context, additional choices that could not be installed: + * In level-1:amd64 Depends level-2: + - other-level-2:amd64=1 is not selected for install as above" apt why-not almost-level-2 + + +testsuccessequal "level-3:amd64 is undecided" apt why level-3 diff --git a/test/integration/test-apt-ftparchive-cachedb b/test/integration/test-apt-ftparchive-cachedb index 73d762c..c005804 100755 --- a/test/integration/test-apt-ftparchive-cachedb +++ b/test/integration/test-apt-ftparchive-cachedb @@ -1,6 +1,11 @@ #!/bin/sh set -e +db_dump=db_dump +if command -v db_dump-5 >/dev/null 2>&1; then + db_dump=db_dump-5 +fi + ensure_correct_packages_file() { testequal "Package: foo Architecture: i386 @@ -33,6 +38,8 @@ mkdir -p aptarchive/dists/test/main/binary-i386 mkdir -p aptarchive/pool/main mkdir aptarchive-overrides +touch aptarchive-overrides/bin-override +touch aptarchive-overrides/extra-override mkdir aptarchive-cache cat > ftparchive.conf <<"EOF" Dir { @@ -60,7 +67,9 @@ TreeDefault { Tree "dists/test" { Sections "main"; Architectures "i386"; - + BinOverride "bin-override"; + ExtraOverride "extra-override"; + //FileList "file-list"; }; EOF @@ -77,6 +86,11 @@ testsuccessequal ' Misses in Cache: 2 dists/test/Contents-i386: New 402 B Misses in Cache: 0' grep Misses stats-out.txt # generate again +# ensure Contents file is not newer than Packages file; to avoid a race condition with the +# test case: If Contents file happened to be newer than the Packages file, we'd skip its +# generation (failing the test case); but if they are generated at the same time it may +# be out-of-date strictly speaking and needed regenerating. +touch -r ./aptarchive/dists/test/main/binary-i386/Packages ./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 @@ -94,6 +108,67 @@ 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 +msgmsg "Test overrides" + +manyX=$(head -c2000 /dev/zero | tr '\0' 'X') + +echo "foo priority${manyX} overrideSection" > aptarchive-overrides/bin-override +echo "foo Extra ${manyX}trailer" > aptarchive-overrides/extra-override + +testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1 +testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages + + +msgmsg "Test long paths" +x128=$(head -c 128 /dev/zero | tr '\0' 'X') +longPath=${x128}/${x128}/${x128}/${x128}/${x128}/${x128}/${x128}/${x128} +mkdir -p aptarchive/pool/main/$longPath +mv aptarchive/pool/main/foo_1_i386.deb aptarchive/pool/main/$longPath/foo_1_i386.deb + +# before +testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db +testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:cl$" dump +testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:cn$" dump +testsuccess grep "^ ./aptarchive/pool/main/foo_1_i386.deb:st$" dump +testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1 + +# file is still found +testsuccessequal "Filename: pool/main/${longPath}/foo_1_i386.deb" grep ^Filename ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages + +# file is in the database +testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cl$" dump +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cn$" dump +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:st"$ dump + +msgmsg "Test file lists" + +# Check that the empty file list produces no packages +rm aptarchive-cache/packages-main-i386.db +testsuccess sed -i s#//FileList#FileList# ftparchive.conf +testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1 +testfileequal ./aptarchive/dists/test/main/binary-i386/Packages "" + +# Add the packages and run our checks again +echo "pool/main/${longPath}/foo_1_i386.deb" > file-list +testsuccess aptftparchive generate ftparchive.conf -o APT::FTPArchive::ShowCacheMisses=1 +testsuccessequal "Filename: pool/main/${longPath}/foo_1_i386.deb" grep ^Filename ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Priority: priority${manyX}" grep ^Priority ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Section: overrideSection" grep ^Section ./aptarchive/dists/test/main/binary-i386/Packages +testsuccessequal "Extra: ${manyX}trailer" grep ^Extra ./aptarchive/dists/test/main/binary-i386/Packages + +# file is in the database +testsuccess $db_dump -f dump -p aptarchive-cache/packages-main-i386.db +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cl$" dump +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:cn$" dump +testsuccess grep "^ ./aptarchive/pool/main/${longPath}/foo_1_i386.deb:st"$ dump + +msgmsg "Test Clean" # and clean rm -rf aptarchive/pool/main/* testsuccessequal "packages-main-i386.db" aptftparchive clean ftparchive.conf @@ -101,3 +176,4 @@ testsuccess aptftparchive clean ftparchive.conf -o Debug::APT::FTPArchive::Clean 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-corner-cases b/test/integration/test-apt-ftparchive-corner-cases new file mode 100755 index 0000000..9f56a52 --- /dev/null +++ b/test/integration/test-apt-ftparchive-corner-cases @@ -0,0 +1,49 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +allowremovemanual +configarchitecture 'amd64' 'i386' + +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 +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 +} + +msgmsg 'Test a deep tree' +msgtest 'Test for succesfull execution of' 'mkdir -p <1024 times x/>' +testsuccess --nomsg mkdir -p incoming/pkg-deep-tree/$(seq 1024 | sed s#.*#x# | tr '\n' '/') +msgtest 'Test for succesfull execution of' 'touch <1024 times x/>/y' +testsuccess --nomsg touch incoming/pkg-deep-tree/$(seq 1024 | sed s#.*#x# | tr '\n' '/')/y +createpkg deep-tree + +testsuccessequal "$(seq 1024 | sed s#.*#x# | tr '\n' '/')y pkg-deep-tree" valgrind aptftparchive contents ./incoming/pkg-deep-tree_0_all.deb + + +msgmsg 'Test many files in one directory' + +testsuccess mkdir -p incoming/pkg-many-files/usr/lib/many-files +testsuccess sh -c 'for i in $(seq -w 4096); do touch incoming/pkg-many-files/usr/lib/many-files/$i; done' +createpkg many-files + +# OMG, this formatting is annoying to implement +testsuccessequal "$(seq -w 4096 | xargs -IA printf "usr/lib/many-files/%s\t\t\t\t\t %s\n" "A" "pkg-many-files")" valgrind aptftparchive contents ./incoming/pkg-many-files_0_all.deb + diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove index 66257f4..af47420 100755 --- a/test/integration/test-apt-get-autoremove +++ b/test/integration/test-apt-get-autoremove @@ -27,10 +27,6 @@ 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... @@ -39,20 +35,28 @@ 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... +for sudouser in '_apt' ''; do + if [ -n "$sudouser" ]; then + export SUDO_USER="$sudouser" + AUTOREMOVE='sudo apt autoremove' + else + unset SUDO_USER + AUTOREMOVE='apt autoremove' + fi + 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... + 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... + testequal "Reading package lists... Building dependency tree... Reading state information... Calculating upgrade... @@ -60,6 +64,8 @@ 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 +done + testsuccessequal 'Reading package lists... Building dependency tree... Reading state information... @@ -111,7 +117,7 @@ Reading state information... Calculating upgrade... The following package was automatically installed and is no longer required: po-debconf -Use '$AUTOREMOVE' to remove it. +Use 'apt 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 @@ -163,13 +169,13 @@ 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. +Use 'apt 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. +Use 'apt 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 @@ -258,3 +264,45 @@ Purg foo-plus-2 [1]' apt autopurge -s testdpkgstatus 'pi' '1' 'unrelated' testsuccess apt purge unrelated -y + +insertinstalledpackage 'foo-has-update' 'all' '1' +insertpackage 'stable' 'foo-has-update' 'all' '2' +testsuccess aptmark auto 'foo-has-update' + +setupaptarchive + +# Test removed package version (with -V flag), when package has update +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + foo-has-update (1) + foo-multi1-1 (1) + foo-multi1-2 (1) + foo-multi2-1 (1) + foo-multi2-2 (1) + foo-plus-1 (1) + foo-plus-2 (1) +0 upgraded, 0 newly installed, 7 to remove and 0 not upgraded. +Remv foo-has-update [1] +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 -sV + +# Test automatic removed package version (with -V flag), when package has update +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... +The following packages were automatically installed and are no longer required: + foo-has-update (1) + foo-multi1-1 (1) + foo-multi1-2 (1) + foo-multi2-1 (1) + foo-multi2-2 (1) + foo-plus-1 (1) + foo-plus-2 (1) +Use 'apt autoremove' to remove them. +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." apt remove -sV diff --git a/test/integration/test-apt-get-autoremove-real-virtual-provider b/test/integration/test-apt-get-autoremove-real-virtual-provider index 4940ab5..7fda4d3 100755 --- a/test/integration/test-apt-get-autoremove-real-virtual-provider +++ b/test/integration/test-apt-get-autoremove-real-virtual-provider @@ -23,6 +23,16 @@ needs-provider4' aptmark showauto testsuccess aptget check -s +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +Solving dependencies... +The following packages will be REMOVED: + needs-provider1 needs-provider4 +0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. +Remv needs-provider1 [1] +Remv needs-provider4 [1]' aptget autoremove -s --solver 3.1 + testsuccessequal 'Reading package lists... Building dependency tree... Reading state information... diff --git a/test/integration/test-apt-get-build-dep b/test/integration/test-apt-get-build-dep index 403de8f..f6158a1 100755 --- a/test/integration/test-apt-get-build-dep +++ b/test/integration/test-apt-get-build-dep @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' insertpackage 'stable' 'build-essential' 'i386' '1' diff --git a/test/integration/test-apt-get-build-dep-barbarian b/test/integration/test-apt-get-build-dep-barbarian index 688f7a5..8763e8f 100755 --- a/test/integration/test-apt-get-build-dep-barbarian +++ b/test/integration/test-apt-get-build-dep-barbarian @@ -83,6 +83,16 @@ testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep cool-foo -s testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-foo -s -a i386 testsuccessequal "$(installsfoosamey 'amd64' 'i386')" apt build-dep bad-armel-foo -s -a i386 testsuccessequal "$(installsfoosamey 'i386' 'i386')" apt build-dep bad-amd64-armel-foo -s -a i386 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:bad-amd64-i386-foo:i386=1 is selected for install + 2. builddeps:bad-amd64-i386-foo:i386 Depends foo:i386 + but none of the choices are installable: + - foo:amd64=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-foo:i386=1 is selected for install + 2. builddeps:bad-amd64-i386-foo:i386 Conflicts foo:amd64 + - foo:i386=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-foo:i386=1 is selected for install as above + 2. builddeps:bad-amd64-i386-foo:i386 Conflicts foo:i386' apt build-dep bad-amd64-i386-foo -s -a i386 --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -94,7 +104,17 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: builddeps:bad-amd64-i386-foo:i386 : Depends: foo:i386 -E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386 +E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-foo -s -a i386 --solver internal +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:bad-amd64-i386-armel-foo:i386=1 is selected for install + 2. builddeps:bad-amd64-i386-armel-foo:i386 Depends foo:i386 + but none of the choices are installable: + - foo:amd64=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-armel-foo:i386=1 is selected for install + 2. builddeps:bad-amd64-i386-armel-foo:i386 Conflicts foo:amd64 + - foo:i386=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-armel-foo:i386=1 is selected for install as above + 2. builddeps:bad-amd64-i386-armel-foo:i386 Conflicts foo:i386' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -106,13 +126,26 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: builddeps:bad-amd64-i386-armel-foo:i386 : Depends: foo:i386 -E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386 +E: Unable to correct problems, you have held broken packages.' apt build-dep bad-amd64-i386-armel-foo -s -a i386 --solver internal testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep cool-foo -s -a armel testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-foo -s -a armel testsuccessequal "$(installsfoosamey 'amd64' 'armel')" apt build-dep bad-armel-foo -s -a armel testsuccessequal "$(installsfoosamey 'i386' 'armel')" apt build-dep bad-amd64-armel-foo -s -a armel testsuccessequal "$(installsfoosamey 'armel' 'armel')" apt build-dep bad-amd64-i386-foo -s -a armel +FAILUREMSG="E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:bad-amd64-i386-armel-foo:armel=1 is selected for install + 2. builddeps:bad-amd64-i386-armel-foo:armel Depends foo:armel + but none of the choices are installable: + - foo:amd64=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-armel-foo:armel=1 is selected for install + 2. builddeps:bad-amd64-i386-armel-foo:armel Conflicts foo:amd64 + - foo:i386=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-armel-foo:armel=1 is selected for install as above + 2. builddeps:bad-amd64-i386-armel-foo:armel Conflicts foo:i386 + - foo:armel=1 is not selected for install because: + 1. builddeps:bad-amd64-i386-armel-foo:armel=1 is selected for install as above + 2. builddeps:bad-amd64-i386-armel-foo:armel Conflicts foo:armel" FAILURE='Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -124,8 +157,9 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: builddeps:bad-amd64-i386-armel-foo:armel : Depends: foo:armel E: Unable to correct problems, you have held broken packages.' +testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver 3.0 testfailureequal "Reading package lists... -$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel +$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel --solver internal msgmsg 'BarbarianArchitectures' 'cmdline options' rm rootdir/etc/apt/apt.conf.d/99barbarianarchs @@ -134,7 +168,10 @@ testsuccess aptcache gencaches testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel testsuccess aptcache gencaches -o APT::BarbarianArchitectures::=armel testsuccessequal "$(installsfoosamey 'mipsel' 'armel')" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=armel -testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel +testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver 3.0 +testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver 3.0 +testfailuremsg "$FAILUREMSG" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver 3.0 +testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel --solver internal +testfailureequal "$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures::=mipsel -o APT::BarbarianArchitectures::=armel --solver internal testfailureequal "Reading package lists... -$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel +$FAILURE" apt build-dep bad-amd64-i386-armel-foo -s -a armel -o APT::BarbarianArchitectures=mipsel,armel --solver internal diff --git a/test/integration/test-apt-get-build-dep-file b/test/integration/test-apt-get-build-dep-file index 88bf10b..fd48aef 100755 --- a/test/integration/test-apt-get-build-dep-file +++ b/test/integration/test-apt-get-build-dep-file @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' insertpackage 'stable' 'debhelper' 'i386' '7' @@ -158,6 +159,12 @@ testsuccess aptget build-dep --simulate '..' cd ../.. testfailureequal 'E: Must specify at least one package to check builddeps for' aptget build-dep +testfailuremsg 'W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:./foo-1.0:armel=1 is selected for install + 2. builddeps:./foo-1.0:armel Depends debhelper:armel (>= 7) + but none of the choices are installable: + [no choices]' aptget build-dep --simulate ./foo-1.0 -a armel --solver 3.0 testfailureequal "Note, using directory './foo-1.0' to get the build dependencies Reading package lists... Building dependency tree... @@ -170,7 +177,7 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: builddeps:./foo-1.0:armel : Depends: debhelper:armel (>= 7) but it is not installable W: No architecture information available for armel. See apt.conf(5) APT::Architectures for setup -E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel +E: Unable to correct problems, you have held broken packages." aptget build-dep --simulate ./foo-1.0 -a armel --solver internal testfailureequal 'Reading package lists... E: Unable to find a source package for foo' aptget build-dep --simulate foo diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb index bcf8bae..07de975 100755 --- a/test/integration/test-apt-get-install-deb +++ b/test/integration/test-apt-get-install-deb @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' # regression test for #754904 @@ -31,6 +32,11 @@ done buildsimplenativepackage 'foo' 'i386,amd64' '1.0' +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:amd64 is not selected for install because: + 1. foo:i386=1.0 is selected for install + 2. foo:amd64 Conflicts foo:i386 + 2. foo:amd64=1.0 is selected for install" aptget install ./incoming/foo_1.0_i386.deb ./incoming/foo_1.0_amd64.deb -s --solver 3.0 testfailureequal "Reading package lists... Building dependency tree... Note, selecting 'foo:i386' instead of './incoming/foo_1.0_i386.deb' @@ -44,7 +50,7 @@ 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 +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 --solver internal testsuccess apt show foo --with-source ./incoming/foo_1.0_amd64.deb testequal 'Package: foo @@ -175,7 +181,12 @@ echo 'Package: /pkg-/ Pin: release a=experimental Pin-Priority: 501' > rootdir/etc/apt/preferences.d/pinit -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. pkg-last-line-parse:amd64=0 is selected for install + 2. pkg-last-line-parse:amd64 PreDepends pkg-as-it-should-be + but none of the choices are installable: + [no choices]' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver 3.0 +testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install -q=0 ./incoming/pkg-last-line-parse_0_all.deb --solver internal testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb testsuccess aptget install ./incoming/pkg-last-line-parse_0_all.deb testsuccess aptget install "$(readlink -f ./incoming/pkg-leading-newline_0_all.deb)" diff --git a/test/integration/test-apt-get-mark-auto b/test/integration/test-apt-get-mark-auto new file mode 100755 index 0000000..844412e --- /dev/null +++ b/test/integration/test-apt-get-mark-auto @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'unstable' 'package' 'all' '3' + +setupaptarchive + +testsuccessequal "Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + package +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst package (3 unstable [all]) +Conf package (3 unstable [all])" aptget install package --mark-auto -s + +# Specifically if we mark the package as automatically installed but also have auto-remove on, +# the package should still be installed... + +testsuccessequal "Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + package +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst package (3 unstable [all]) +Conf package (3 unstable [all])" aptget install package --mark-auto --auto-remove -s diff --git a/test/integration/test-apt-get-satisfy b/test/integration/test-apt-get-satisfy index 267760f..8e5e068 100755 --- a/test/integration/test-apt-get-satisfy +++ b/test/integration/test-apt-get-satisfy @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' 'amd64' insertpackage 'stable' 'depends' 'i386' '1' @@ -79,6 +80,12 @@ testrun 'External' 'Reading package lists... Building dependency tree... Execute external solver...' --solver apt +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. satisfy:command-line:i386=1 is selected for install + 2. satisfy:command-line:i386 Depends depends (>= 2) + but none of the choices are installable: + [no choices]" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver 3.0 + testfailureequal "Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -89,8 +96,10 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed -E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" +E: Unable to correct problems, you have held broken packages." aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver internal +if [ "$APT_SOLVER" != "3.0" ]; then +# FIXME: solver3 doesn't produce nice errors in the external solver scenario testfailureequal "Reading package lists... Building dependency tree... Execute external solver... @@ -109,3 +118,4 @@ The following packages have unmet dependencies: satisfy:command-line : Depends: depends (>= 2) but it is not going to be installed Conflicts: conflicts:i386 (>= 1) E: External solver failed with: The following packages have unmet dependencies:" aptget satisfy --simulate "depends (>= 2)" "Conflicts: conflicts:i386 (>= 1) [i386], conflicts:amd64 (>= 1) [amd64]" --solver apt +fi diff --git a/test/integration/test-apt-get-source-only b/test/integration/test-apt-get-source-only new file mode 100755 index 0000000..e5d246f --- /dev/null +++ b/test/integration/test-apt-get-source-only @@ -0,0 +1,148 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture "amd64" + + +# not-foo builds foo, but foo builds not-foo +insertpackage 'stable' 'foo' 'amd64' '1.0' 'Source: not-foo' +insertsource 'stable' 'not-foo' 'amd64' '1.0' 'Build-Depends: not-foo-bd' 'foo' + +insertpackage 'stable' 'not-foo' 'amd64' '1.0' 'Source: foo' +insertsource 'stable' 'foo' 'amd64' '1.0' 'Build-Depends: foo-bd' 'not-foo' + +insertinstalledpackage 'build-essential' 'amd64' '1.0' + +setupaptarchive + +APTARCHIVE=$(readlink -f ./aptarchive) + +HEADER='Reading package lists...' +DOWNLOADFOO="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" +DOWNLOADNOTFOO="Need to get 0 B/33 B of source archives. +'file:${APTARCHIVE}/not-foo_1.0.dsc' not-foo_1.0.dsc 15 SHA256:db578a571c87d2555e90245732042845be4f481755f5b2f5786ac7a26bde9f4f +'file:${APTARCHIVE}/not-foo_1.0.tar.gz' not-foo_1.0.tar.gz 18 SHA256:8701846f1cba0ca81c552ac0ec93e2a89ae113cf2872b9cd51b29b4a9ff6b122" + +if [ "$APT_SOLVER" = "3.0" ]; then +BUILDDEPFOO="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:foo : Depends: foo-bd but it is not installable +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:foo:amd64=1 is selected for install + 2. builddeps:foo:amd64 Depends foo-bd + but none of the choices are installable: + [no choices]" + +BUILDDEPNOTFOO="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:not-foo : Depends: not-foo-bd but it is not installable +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:not-foo:amd64=1 is selected for install + 2. builddeps:not-foo:amd64 Depends not-foo-bd + but none of the choices are installable: + [no choices]" +else +BUILDDEPFOO="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:foo : Depends: foo-bd but it is not installable +E: Unable to correct problems, you have held broken packages." + +BUILDDEPNOTFOO="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:not-foo : Depends: not-foo-bd but it is not installable +E: Unable to correct problems, you have held broken packages." +fi + +testsuccessequal "$HEADER +Picking 'not-foo' as source package instead of 'foo' +$DOWNLOADNOTFOO" aptget source -q --print-uris foo + +testsuccessequal "$HEADER +Picking 'not-foo' as source package instead of 'foo' +$DOWNLOADNOTFOO" aptget source -q --print-uris foo:amd64 + +testsuccessequal "$HEADER +$DOWNLOADNOTFOO" aptget source -q --print-uris --only-source not-foo + +testsuccessequal "$HEADER +$DOWNLOADNOTFOO" aptget source -q --print-uris src:not-foo + +testsuccessequal "$HEADER +Picking 'foo' as source package instead of 'not-foo' +$DOWNLOADFOO" aptget source -q --print-uris not-foo + +testsuccessequal "$HEADER +Picking 'foo' as source package instead of 'not-foo' +$DOWNLOADFOO" aptget source -q --print-uris not-foo:amd64 + +testsuccessequal "$HEADER +$DOWNLOADFOO" aptget source -q --print-uris --only-source foo + +testsuccessequal "$HEADER +$DOWNLOADFOO" aptget source -q --print-uris src:foo + +# Same dance with build-dep +testequal "$HEADER +Picking 'not-foo' as source package instead of 'foo' +$BUILDDEPNOTFOO" aptget build-dep -q -s foo + +testequal "$HEADER +Picking 'not-foo' as source package instead of 'foo' +$BUILDDEPNOTFOO" aptget build-dep -q -s foo:amd64 + +testequal "$HEADER +$BUILDDEPNOTFOO" aptget build-dep -q -s --only-source not-foo + +testequal "$HEADER +$BUILDDEPNOTFOO" aptget build-dep -q -s src:not-foo + +testequal "$HEADER +Picking 'foo' as source package instead of 'not-foo' +$BUILDDEPFOO" aptget build-dep -q -s not-foo + +testequal "$HEADER +Picking 'foo' as source package instead of 'not-foo' +$BUILDDEPFOO" aptget build-dep -q -s not-foo:amd64 + +testequal "$HEADER +$BUILDDEPFOO" aptget build-dep -q -s --only-source foo + +testequal "$HEADER +$BUILDDEPFOO" aptget build-dep -q -s src:foo + + + diff --git a/test/integration/test-apt-get-update-sourceslist-warning b/test/integration/test-apt-get-update-sourceslist-warning index 3a3cb2e..5a941da 100755 --- a/test/integration/test-apt-get-update-sourceslist-warning +++ b/test/integration/test-apt-get-update-sourceslist-warning @@ -8,6 +8,7 @@ setupenvironment configarchitecture 'amd64' setupaptarchive --no-update +rm rootdir/etc/apt/apt.conf.d/signed-by testsuccess apt update testsuccess apt update --no-download @@ -27,19 +28,11 @@ touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binar touch rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free-firmware_binary-amd64_Packages find rootdir/var/lib/apt/lists/ -type f -exec chmod 644 {} \; -NOTESURL='https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split' BOILERPLATE='Reading package lists... Building dependency tree... All packages are up to date.' -msgmsg 'Do not suggest new non-free-firmware component if no non-free' -echo 'deb http://example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list -testsuccessequal "$BOILERPLATE" apt update --no-download -echo 'deb-src http://example.org/debian bookworm main non-free' > rootdir/etc/apt/sources.list.d/example.list -testsuccessequal "$BOILERPLATE" apt update --no-download - msgmsg 'Suggest Signed-By for deb822 sources.list(5) entries' -rm rootdir/etc/apt/sources.list.d/example.list echo 'Types: deb URIs: http://example.org/debian Suites: bookworm @@ -49,38 +42,22 @@ testsuccessequal "$BOILERPLATE N: Missing Signed-By in the sources.list(5) entry for 'http://example.org/debian'" apt update --no-download rm rootdir/etc/apt/sources.list.d/example.sources -msgmsg 'Is non-free-firmware missing?' -echo 'deb http://example.org/debian bookworm main non-free' > rootdir/etc/apt/sources.list.d/example.list -cat >> rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binary-amd64_Packages < rootdir/var/lib/apt/lists/example.org_debian_dists_bookworm_non-free_binary-amd64_Packages -testsuccessequal "$BOILERPLATE -N: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware' -N: More information about this can be found online in the Release notes at: $NOTESURL" apt update --no-download - -msgmsg 'Component already present' -echo 'deb http://example.org/debian bookworm non-free non-free-firmware' > rootdir/etc/apt/sources.list.d/example.list -testsuccessequal "$BOILERPLATE" apt update --no-download -echo 'deb http://example.org/debian bookworm non-free -deb http://example.org/debian bookworm non-free-firmware' > rootdir/etc/apt/sources.list.d/example.list -testsuccessequal "$BOILERPLATE" apt update --no-download - msgmsg 'Detect login info embedded in sources.list' echo 'deb http://apt:debian@example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list testsuccessequal "$BOILERPLATE -N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'http://example.org/debian'" apt update --no-download +N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'http://example.org/debian' +A: The sources.list(5) entry for 'http://example.org/debian' should be upgraded to deb822 .sources +A: Missing Signed-By in the sources.list(5) entry for 'http://example.org/debian' +A: Consider migrating all sources.list(5) entries to the deb822 .sources format +A: The deb822 .sources format supports both embedded as well as external OpenPGP keys +A: See apt-secure(8) for best practices in configuring repository signing. +N: Some sources can be modernized. Run 'apt modernize-sources' to do so." apt update --no-download --audit echo 'deb tor+https://apt:debian@example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list testsuccessequal "$BOILERPLATE -N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'tor+https://example.org/debian'" apt update --no-download - -msgmsg 'Firmware packages without upgrades' -echo 'deb http://example.org/debian bookworm main' > rootdir/etc/apt/sources.list.d/example.list -insertinstalledpackage 'firmware-linux-nonfree' 'all' '1' -testsuccessequal "$BOILERPLATE -N: Repository 'Debian bookworm' changed its 'firmware component' value from 'non-free' to 'non-free-firmware' -N: More information about this can be found online in the Release notes at: $NOTESURL" apt update --no-download - +N: Usage of apt_auth.conf(5) should be preferred over embedding login information directly in the sources.list(5) entry for 'tor+https://example.org/debian' +A: The sources.list(5) entry for 'tor+https://example.org/debian' should be upgraded to deb822 .sources +A: Missing Signed-By in the sources.list(5) entry for 'tor+https://example.org/debian' +A: Consider migrating all sources.list(5) entries to the deb822 .sources format +A: The deb822 .sources format supports both embedded as well as external OpenPGP keys +A: See apt-secure(8) for best practices in configuring repository signing. +N: Some sources can be modernized. Run 'apt modernize-sources' to do so." apt update --no-download --audit diff --git a/test/integration/test-apt-get-update-unauth-warning b/test/integration/test-apt-get-update-unauth-warning index 42c4e5a..9f252ad 100755 --- a/test/integration/test-apt-get-update-unauth-warning +++ b/test/integration/test-apt-get-update-unauth-warning @@ -28,9 +28,7 @@ testwarning aptget update --allow-insecure-repositories 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 +testfailureequal "Ign:1 file:$APTARCHIVE unstable InRelease Err:2 file:$APTARCHIVE unstable Release File not found - ${APTARCHIVE}/dists/unstable/Release (2: No such file or directory) Reading package lists... @@ -44,46 +42,13 @@ testequal 'auxfiles 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 2- ).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 +testwarningequal "Ign:1 file:$APTARCHIVE unstable InRelease 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. @@ -92,3 +57,38 @@ N: See apt-secure(8) manpage for repository creation and user configuration deta 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 + +rm -rf rootdir/var/lib/apt/lists +changetowebserver + +filesize() { + local CREATEDBY="$1" + shift + stat -c%s "${APTARCHIVE}/$(aptget indextargets --no-release-info --format '$(URI)' "Created-By: $CREATEDBY" "$@" | cut -d'/' -f 4- ).gz" +} +testwarningequal "Ign:1 http://localhost:$APTHTTPPORT unstable InRelease +Ign:2 http://localhost:$APTHTTPPORT unstable Release +Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources +Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages +Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages +Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en +Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources +Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages +Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages +Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en +Ign:3 http://localhost:$APTHTTPPORT unstable/main Sources +Ign:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages +Ign:5 http://localhost:$APTHTTPPORT unstable/main all Packages +Ign:6 http://localhost:$APTHTTPPORT unstable/main Translation-en +Get:3 http://localhost:$APTHTTPPORT unstable/main Sources [$(filesize 'Sources') B] +Get:4 http://localhost:$APTHTTPPORT unstable/main i386 Packages [$(filesize 'Packages' 'Architecture: i386') B] +Get:5 http://localhost:$APTHTTPPORT unstable/main all Packages [$(filesize 'Packages' 'Architecture: all') B] +Get:6 http://localhost:$APTHTTPPORT unstable/main Translation-en [$(filesize 'Translations') B] +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." 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 index 50a90ce..0eaa5a0 100755 --- a/test/integration/test-apt-get-upgrade +++ b/test/integration/test-apt-get-upgrade @@ -29,9 +29,14 @@ insertpackage 'unstable' 'sysvinit' 'all' '2' setupaptarchive +# Solver 3.0 only wants to remove automatically installed packages +testsuccess aptmark auto ~i +echo 'APT::Get::HideAutoRemove "1";' > rootdir/etc/apt/apt.conf.d/hide-auto-remove + # Test if normal upgrade works as expected UPGRADE='Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following packages have been kept back: init upgrade-with-conflict upgrade-with-new-dep @@ -46,6 +51,7 @@ testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs # Test if apt-get upgrade --with-new-pkgs works UPGRADENEW='Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following NEW packages will be installed: new-dep @@ -60,12 +66,38 @@ 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])' +if [ "$APT_SOLVER" = "3.0" ]; then +# FIXME: It would be better if we would keep back the upgrade rather than switch to sysvinit, +# but it's not clear that is reliably possible. +UPGRADENEW="Reading package lists... +Building dependency tree... +Reading state information... +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])" +fi 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... +Reading state information... Calculating upgrade... The following packages will be REMOVED: conflicting-dep @@ -98,6 +130,7 @@ testsuccessequal "$UPGRADE" apt upgrade -s --without-new-pkgs UPGRADENEW='Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following NEW packages will be installed: new-dep sysvinit @@ -121,6 +154,7 @@ testsuccessequal "$UPGRADENEW" apt upgrade -s testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following packages will be REMOVED: conflicting-dep @@ -142,3 +176,56 @@ 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 + +# --no-strict-pinning pulls in systemd due to the dependency +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +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 --no-strict-pinning --solver 3.0 + +# --no-strict-pinning does not cause a package to be upgraded on its own, though. +echo 'Package: upgrade-simple +Pin: release unstable +Pin-Priority: -1' > rootdir/etc/apt/preferences.d/no-strict-pinning.pref +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +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-with-conflict upgrade-with-new-dep +3 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-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-with-new-dep (2.0 unstable [all])' aptget -s dist-upgrade --no-strict-pinning --solver 3.0 diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper index ae1ca74..4f883b4 100755 --- a/test/integration/test-apt-helper +++ b/test/integration/test-apt-helper @@ -74,10 +74,11 @@ E: Download Failed" setupproxydetect() { local METH="$1" shift - { - echo '#!/bin/sh -e' - echo "$@" - } > "${TMPWORKINGDIRECTORY}/apt-proxy-detect" + cat >"${TMPWORKINGDIRECTORY}/apt-proxy-detect" < rootdir/etc/apt/apt.conf.d/02proxy-detect } @@ -97,15 +98,38 @@ W: ProxyAutoDetect command returned an empty line" apthelper auto-detect-proxy h chmod -x "${TMPWORKINGDIRECTORY}/apt-proxy-detect" testfailureequal "E: ProxyAutoDetect command '${TMPWORKINGDIRECTORY}/apt-proxy-detect' can not be executed! - access (13: Permission denied)" apthelper auto-detect-proxy http://example.com/ - msgmsg "apt-helper $CONFNAME" '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 - testsuccessequal "Using proxy '' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com + for meth in 'http' 'https'; do + msgmsg "apt-helper $CONFNAME" "${meth} proxy" + for type in 'http' 'https' 'socks5h'; do + setupproxydetect "$meth" "echo '${type}://some-proxy'" + testsuccessequal "Using proxy '${type}://some-proxy' for URL '${meth}://www.example.com/'" apthelper auto-detect-proxy "${meth}://www.example.com" + if [ "$meth" = 'http' ]; then + testsuccessequal "Using proxy '' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy 'https://ssl.example.com' + else + testsuccessequal "Using proxy '' for URL 'http://no-ssl.example.com/'" apthelper auto-detect-proxy 'http://no-ssl.example.com' + fi + done + done + + msgmsg "apt-helper $CONFNAME" 'no strange proxy' + for meth in gpgv copy store file; do + setupproxydetect "$meth" "echo '${meth}://some-proxy'" + testsuccessequal "Using proxy '' for URL '${meth}:/foo/bar'" apthelper auto-detect-proxy "${meth}:/foo/bar" + testsuccessequal "Using proxy '' for URL '${meth}://./foo/bar'" apthelper auto-detect-proxy "${meth}://./foo/bar" + done + for url in 'cdrom://Moo Cow Rom/debian' 'cdrom://[The Debian 1.2 disk, 1/2 R16]/debian/'; do + setupproxydetect "${url%%:*}" "echo 'cdrom://some-proxy'" + testsuccessequal "Using proxy '' for URL '${url}'" apthelper auto-detect-proxy "$url" + done + for meth in tor tor+http tor+https; do + setupproxydetect "$meth" "echo 'socks5h://some-proxy'" + testsuccessequal "Using proxy 'socks5h://some-proxy' for URL '${meth}://example.org/'" apthelper auto-detect-proxy "${meth}://example.org" + + setupproxydetect "$meth" "echo 'DIRECT'" + testwarningequal "Using proxy '' for URL '${meth}://example.org/' +W: ProxyAutoDetect command returned incompatible proxy 'DIRECT' for access type ${meth}" apthelper auto-detect-proxy "${meth}://example.org" + done - msgmsg "apt-helper $CONFNAME" 'https proxy' - setupproxydetect 'https' 'echo "https://https-proxy"' - testsuccessequal "Using proxy '' for URL 'http://no-ssl.example.com/'" apthelper auto-detect-proxy http://no-ssl.example.com - testsuccessequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com rm -f rootdir/etc/apt/apt.conf.d/02proxy-detect "${TMPWORKINGDIRECTORY}/apt-proxy-detect" } diff --git a/test/integration/test-apt-install-file-reltag b/test/integration/test-apt-install-file-reltag index afbf9be..053c785 100755 --- a/test/integration/test-apt-install-file-reltag +++ b/test/integration/test-apt-install-file-reltag @@ -29,15 +29,20 @@ Standards-Version: 4.1.3 EOF buildsimplenativepackage 'foobar2' 'all' '1' 'unstable' 'Depends: foo (= 5), baz' +testunsat() { + testfailure "$@" + testsuccess grep -E "^E: (Unable to correct problems,|Unable to satisfy dependencies. Reached two conflicting decisions)" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output" +} + ln -s "$(readlink -f ./incoming/foobar2_1_all.deb)" foobar.deb mkdir -p foobar -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep "$(readlink -f ./foobar.dsc)" -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install "$(readlink -f ./foobar.deb)" -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ./foobar.dsc -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ./foobar.deb -s +testunsat apt build-dep "$(readlink -f ./foobar.dsc)" -s +testunsat apt install "$(readlink -f ./foobar.deb)" -s +testunsat apt build-dep ./foobar.dsc -s +testunsat apt install ./foobar.deb -s cd foobar -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ../foobar.dsc -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ../foobar.deb -s +testunsat apt build-dep ../foobar.dsc -s +testunsat apt install ../foobar.deb -s cd .. SUCCESSDSC='The following NEW packages will be installed: @@ -84,11 +89,11 @@ $SUCCESSDEB" apt install "../foobar.deb/experimental" -s cd .. msgmsg 'fail with' 'incorrect release' -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep "$(readlink -f ./foobar.dsc)/stable" -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install "$(readlink -f ./foobar.deb)/stable" -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ./foobar.dsc/stable -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ./foobar.deb/stable -s +testunsat apt build-dep "$(readlink -f ./foobar.dsc)/stable" -s +testunsat apt install "$(readlink -f ./foobar.deb)/stable" -s +testunsat apt build-dep ./foobar.dsc/stable -s +testunsat apt install ./foobar.deb/stable -s cd foobar -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt build-dep ../foobar.dsc/stable -s -testfailuremsg 'E: Unable to correct problems, you have held broken packages.' apt install ../foobar.deb/stable -s +testunsat apt build-dep ../foobar.dsc/stable -s +testunsat apt install ../foobar.deb/stable -s cd .. diff --git a/test/integration/test-apt-keep-downloaded-pkgs b/test/integration/test-apt-keep-downloaded-pkgs index c5f6295..4938aef 100755 --- a/test/integration/test-apt-keep-downloaded-pkgs +++ b/test/integration/test-apt-keep-downloaded-pkgs @@ -30,7 +30,7 @@ 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 +testfailuremsg 'E: Unable to fetch some archives, maybe run apt 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 diff --git a/test/integration/test-apt-key b/test/integration/test-apt-key deleted file mode 100755 index a1e633c..0000000 --- a/test/integration/test-apt-key +++ /dev/null @@ -1,428 +0,0 @@ -#!/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 -chmod o+x "${TMPWORKINGDIRECTORY}/.." -configarchitecture 'amd64' - -insertpackage 'unstable' 'bar' 'i386' '1' -insertsource 'unstable' 'foo' 'all' '1' -setupaptarchive --no-update - -# 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 2>/dev/null | grep '^pub' | cut -d':' -f 5 > "$OUTPUT"; then - echo -n > "$OUTPUT" - fi - testfileequal "$OUTPUT" "$(mapkeynametokeyid "$@")" -} -testsuccessempty() { - testempty "$@" -} -testrun() { - local EXT="${1:-gpg}" - local TESTSTATE="${2:-testsuccess}" - 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' - - ${TESTSTATE} aptkey list - msgtest 'Check that paths in list output are not' 'double-slashed' - testfailure --nomsg grep '//' "${ROOTDIR}/tmp/${TESTSTATE}.output" - - ${TESTSTATE} aptkey finger - msgtest 'Check that paths in finger output are not' 'double-slashed' - testfailure --nomsg grep '//' "${ROOTDIR}/tmp/${TESTSTATE}.output" - - cp -a "${KEYDIR}/joesixpack.pub.${EXT}" "${KEYDIR}/joesixpack.pub.${EXT}.bak" - if [ "$TESTSTATE" = 'testwarning' ]; then - testwarning aptkey --fakeroot update - testsuccess grep '^gpg: key .*DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) " not changed$' "${ROOTDIR}/tmp/testwarning.output" - testsuccess grep '^W: .* are ignored as the file has an unsupported filetype' "${ROOTDIR}/tmp/testwarning.output" - else - testequalor2 'gpg: key DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) " not changed -gpg: Total number processed: 1 -gpg: unchanged: 1' 'gpg: key 5A90D141DBAC8DAE: "Joe Sixpack (APT Testcases Dummy) " not changed -gpg: Total number processed: 1 -gpg: unchanged: 1' aptkey --fakeroot update - fi - 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" - - ${TESTSTATE} 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" 2>/dev/null - 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 'Check that multiple keys can be' 'exported' - aptkey export 'Sixpack' 'Expired' > "${TMPWORKINGDIRECTORY}/aptkey.export" 2>/dev/null - aptkey --keyring "${KEYDIR}/rexexpired.pub.${EXT}" \ - --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' - ${TESTSTATE} --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' - - ${TESTSTATE} aptkey --fakeroot del DBAC8DAE - "${TESTSTATE}empty" 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}~" - "${TESTSTATE}empty" 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' - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del d141dbac8dae - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del 0xDBAC8DAE 528144E2 - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del 5A90D141DBAC8DAE - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del '34A8 E9D1 8DB3 20F3 67E8 EAA0 5A90 D141 DBAC 8DAE' - "${TESTSTATE}empty" 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}" - ${TESTSTATE} --nomsg aptkey --fakeroot del DBAC8DAE - "${TESTSTATE}empty" 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 - ${TESTSTATE} aptkey --fakeroot add "${KEYDIR}/joesixpack.pub.${EXT}" - ln -sf "$(readlink -f "${KEYDIR}/marvinparanoid.pub.${EXT}")" "${KEYDIR}/marvin paránöid.pub.${EXT}" - ${TESTSTATE} 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 - aptkey --keyring "${KEYDIR}/testcase-multikey.pub.gpg" 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}" - ${TESTSTATE} --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}" - ${TESTSTATE} --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}" - ${TESTSTATE} --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' - ${TESTSTATE} --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' - ${TESTSTATE} --nomsg aptkey adv --batch --yes --delete-keys 27CE74F9 - testaptkeys 'Joe Sixpack' 'Joe Sixpack' 'Marvin Paranoid' - - msgtest 'Test merge-back of' 'removed duplicate keys' - ${TESTSTATE} --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' - ${TESTSTATE} --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 - # check that apt users see warnings, too - rm -rf "${ROOTDIR}/var/lib/apt/lists" - testwarning apt update - - 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 verify a file' 'with good keyrings 1' - testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/joesixpack.pub.${EXT}" \ - --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" verify "${SIGNATURE}.gpg" "${SIGNATURE}" - - msgtest 'Test verify a file' 'with good keyrings 2' - testsuccess --nomsg aptkey --quiet --readonly --keyring "${KEYDIR}/marvinparanoid.pub.${EXT}" \ - --keyring "${KEYDIR}/joesixpack.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' - ${TESTSTATE} --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" - - # try to perform an entire update with this gpgv - rm -rf "${ROOTDIR}/var/lib/apt/lists" - ${TESTSTATE} apt update -o Test::Dir="${ROOTDIR}" - 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' - ${TESTSTATE} --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' - -msgmsg 'Tests to be run with' 'bad files' -# don't let the plate be so clean anymore -cleanplate() { - rm -rf "${ROOTDIR}/etc/apt/trusted.gpg.d/" "${ROOTDIR}/etc/apt/trusted.gpg" - mkdir "${ROOTDIR}/etc/apt/trusted.gpg.d/" - touch "${ROOTDIR}/etc/apt/trusted.gpg.d/emptyfile.gpg" - touch "${ROOTDIR}/etc/apt/trusted.gpg.d/emptyfile.asc" - echo 'broken' > "${ROOTDIR}/etc/apt/trusted.gpg.d/brokenfile.gpg" - echo 'broken' > "${ROOTDIR}/etc/apt/trusted.gpg.d/brokenfile.asc" -} -testrun 'gpg' 'testwarning' diff --git a/test/integration/test-apt-key-net-update b/test/integration/test-apt-key-net-update deleted file mode 100755 index b9f716e..0000000 --- a/test/integration/test-apt-key-net-update +++ /dev/null @@ -1,41 +0,0 @@ -#!/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 deleted file mode 100755 index b5ed327..0000000 --- a/test/integration/test-apt-key-used-in-maintainerscript +++ /dev/null @@ -1,43 +0,0 @@ -#!/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-modernize-sources b/test/integration/test-apt-modernize-sources new file mode 100755 index 0000000..6a23a73 --- /dev/null +++ b/test/integration/test-apt-modernize-sources @@ -0,0 +1,97 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'native' + +echo 'deb http://example.org/debian stable rocks' > rootdir/etc/apt/sources.list.d/rocks.list +echo 'deb http://deb.debian.org/debian stable main' >> rootdir/etc/apt/sources.list +echo 'deb http://deb.debian.org/debian-ports unstable main' >> rootdir/etc/apt/sources.list +echo 'deb-src http://deb.debian.org/debian stable main' >> rootdir/etc/apt/sources.list +echo 'deb-src http://deb.debian.org/debian unstable main' >> rootdir/etc/apt/sources.list +echo 'deb http://example.org/debian stable bananas' >> rootdir/etc/apt/sources.list +echo 'deb [trusted=yes] http://example.org/debian trusted bananas' >> rootdir/etc/apt/sources.list + + +mkdir -p rootdir/usr/share/keyrings/ +mkdir -p rootdir/var/lib/apt/lists +echo > rootdir/etc/apt/trusted.gpg.d/rocks.gpg +echo > rootdir/usr/share/keyrings/debian-archive-keyring.gpg +echo > rootdir/usr/share/keyrings/debian-ports-archive-keyring.gpg +echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_unstable_InRelease +echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_stable_InRelease +echo "Date: $(date -ud '-2 weeks' '+%a, %d %b %Y %H:%M:%S %Z')" > rootdir/var/lib/apt/lists/deb.debian.org_debian-ports_dists_unstable_InRelease +echo "Origin: Debian" >> rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_unstable_InRelease +echo "Origin: Debian" >> rootdir/var/lib/apt/lists/deb.debian.org_debian_dists_stable_InRelease +echo "Origin: Debian Ports" >> rootdir/var/lib/apt/lists/deb.debian.org_debian-ports_dists_unstable_InRelease + +# We test that appending produces valid output here, so we already configure a source in here. +echo "Types: deb" >> rootdir/etc/apt/sources.list.d/debian.sources +echo "URIs: https://deb.debian.org/debian/" >> rootdir/etc/apt/sources.list.d/debian.sources +echo "Suites: experimental" >> rootdir/etc/apt/sources.list.d/debian.sources +echo "Components: contrib" >> rootdir/etc/apt/sources.list.d/debian.sources +echo "Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg" >> rootdir/etc/apt/sources.list.d/debian.sources + +testwarning apt modernize-sources -y + +testsuccessequal "rootdir/etc/apt/sources.list.bak + +rootdir/etc/apt/sources.list.d: +debian-ports.sources +debian.sources +moved-from-main.sources +rocks.list.bak +rocks.sources" ls -1 rootdir/etc/apt/sources.list* + +testfileequal rootdir/etc/apt/sources.list.d/debian.sources "Types: deb +URIs: https://deb.debian.org/debian/ +Suites: experimental +Components: contrib +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg + +# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list +Types: deb deb-src +URIs: http://deb.debian.org/debian/ +Suites: stable +Components: main +Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-archive-keyring.gpg + +# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list +Types: deb-src +URIs: http://deb.debian.org/debian/ +Suites: unstable +Components: main +Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-archive-keyring.gpg" + +testfileequal rootdir/etc/apt/sources.list.d/debian-ports.sources "# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list +Types: deb +URIs: http://deb.debian.org/debian-ports/ +Suites: unstable +Components: main +Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/usr/share/keyrings/debian-ports-archive-keyring.gpg" + +testfileequal rootdir/etc/apt/sources.list.d/rocks.sources "Types: deb +URIs: http://example.org/debian/ +Suites: stable +Components: rocks +Signed-By: ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg.d/rocks.gpg" + +testfileequal rootdir/etc/apt/sources.list.d/moved-from-main.sources "# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list +Types: deb +URIs: http://example.org/debian/ +Suites: stable +Components: bananas +Signed-By: + +# Modernized from ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list +Types: deb +URIs: http://example.org/debian/ +Suites: trusted +Components: bananas +Signed-By: +Trusted: yes" + +testsuccessequal "All sources are modern." apt modernize-sources diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections index b47966e..bf08507 100755 --- a/test/integration/test-apt-never-markauto-sections +++ b/test/integration/test-apt-never-markauto-sections @@ -20,16 +20,18 @@ 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' '' '' '' buildsimplenativepackage 'foreignpkg' 'i386' '1' 'stable' 'Multi-Arch: foreign' setupaptarchive -testsuccess aptcache show nosection -testfailure grep 'Section' rootdir/tmp/testsuccess.output -testempty aptmark showmanual +insertinstalledpackage 'nosection' 'amd64' '1' '' '' '' '' '' +testsuccess aptmark auto nosection +testempty aptmark showmanual testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +testsuccess aptcache show nosection +testfailure grep 'Section' rootdir/tmp/testsuccess.output + testmarkedmanual 'mydesktop' testmarkedauto 'mydesktop-core' 'foreignpkg:i386' 'texteditor' 'browser' 'nosection' @@ -47,7 +49,19 @@ Remv foreignpkg:i386 [1] Remv nosection [1] Remv texteditor [1]' aptget autoremove mydesktop -s -testequal 'Reading package lists... +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. bad-texteditor:amd64 is selected for install because: + 1. mydesktop:amd64 is selected for install + 2. mydesktop:amd64 Depends mydesktop-core + 3. mydesktop-core:amd64 Depends bad-texteditor | texteditor + [selected mydesktop-core:amd64] + For context, additional choices that could not be installed: + * In mydesktop-core:amd64 Depends bad-texteditor | texteditor: + - texteditor:amd64 is selected for removal + 2. bad-texteditor:amd64 Depends texteditor + but none of the choices are installable: + - texteditor:amd64 is selected for removal' aptget autoremove texteditor -s --solver 3.0 #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 +testsuccessequal 'Reading package lists... Building dependency tree... Reading state information... The following packages will be REMOVED: @@ -55,8 +69,8 @@ The following packages will be REMOVED: 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 +Remv texteditor [1]' aptget autoremove texteditor -s --solver internal #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 +testsuccess aptget autoremove texteditor -y --solver internal testdpkgnotinstalled mydesktop mydesktop-core texteditor testdpkginstalled browser diff --git a/test/integration/test-apt-progress-fd-error b/test/integration/test-apt-progress-fd-error index 39c1053..ca2c232 100755 --- a/test/integration/test-apt-progress-fd-error +++ b/test/integration/test-apt-progress-fd-error @@ -19,7 +19,7 @@ setupaptarchive exec 3> apt-progress.log testfailure aptget install foo1 foo2 -y -o APT::Status-Fd=3 msgtest 'Ensure correct error message' 'file-conflict' -testsuccess --nomsg grep "foo2_0.8.15_[^.]\+.deb:[0-9.]\+:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1 0.8.15" apt-progress.log +testsuccess --nomsg grep "foo2_0.8.15_[^.]\+.deb:[0-9.]\+:trying to overwrite '/usr/bin/file-conflict', which is also in package foo1" 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-update-expected-size b/test/integration/test-apt-update-expected-size index 32fa039..0fd2f92 100755 --- a/test/integration/test-apt-update-expected-size +++ b/test/integration/test-apt-update-expected-size @@ -34,12 +34,18 @@ test_packagestoobig() { signreleasefiles # append junk at the end of the Packages.gz/Packages SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)" + SHA256="$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages.gz | awk '{print $1}')" + DATE="$(grep ^Date aptarchive/dists/unstable/Release | cut -f2- -d' ')" 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 File has unexpected size ($NEW_SIZE != $SIZE). Mirror sync in progress? + Hashes of expected file: + - Filesize:$SIZE [weak] + - SHA256:$SHA256 + Release file created at: $DATE 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 @@ -51,12 +57,18 @@ test_packagestoosmall() { signreleasefiles # replace Packages.gz/Packages with short junk SIZE="$(stat --printf=%s aptarchive/dists/unstable/main/binary-i386/Packages.gz)" + SHA256="$(sha256sum aptarchive/dists/unstable/main/binary-i386/Packages.gz | awk '{print $1}')" + DATE="$(grep ^Date aptarchive/dists/unstable/Release | cut -f2- -d' ')" 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 File is smaller than expected ($NEW_SIZE < $SIZE). Mirror sync in progress? + Hashes of expected file: + - Filesize:$SIZE [weak] + - SHA256:$SHA256 + Release file created at: $DATE 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 diff --git a/test/integration/test-apt-update-ims b/test/integration/test-apt-update-ims index 1894c3a..101c2f2 100755 --- a/test/integration/test-apt-update-ims +++ b/test/integration/test-apt-update-ims @@ -48,7 +48,7 @@ runtest() { # 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 + $TEST aptget update -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 $APTOPT cp rootdir/tmp/${TEST}.output goodsign.output testfileequal 'listsdir.lst' "$(listcurrentlistsdirectory)" testsuccess grep '^Got GOODSIG ' goodsign.output diff --git a/test/integration/test-apt-update-incomplete-file-mirror b/test/integration/test-apt-update-incomplete-file-mirror new file mode 100755 index 0000000..dec9383 --- /dev/null +++ b/test/integration/test-apt-update-incomplete-file-mirror @@ -0,0 +1,68 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture "amd64" +configcompression 'gz' + +insertpackage 'unstable' 'foo' 'amd64' '1' + +setupaptarchive --no-update + +testfailure aptcache show foo + +# the Release file says gz available, but the mirror has only uncompressed files +find aptarchive/dists -name '*.gz' -delete + +testsuccess apt update +testsuccess aptcache show foo +testfailure aptcache show bar + +testsuccess apt update + +rm -rf rootdir/var/lib/apt/lists + + +msgmsg 'File mirror was hacked' +mkdir aptarchive2 +cp -a aptarchive/dists aptarchive2/ +rm -rf rootdir/var/lib/apt/lists +find aptarchive/dists -name 'Packages' | while read FILE; do + echo 'hacked' > $FILE +done +testfailure apt update -o Debug::pkgAcquire::Worker=1 +testsuccessequal '4' grep -c -- '- Filesize:' rootdir/tmp/testfailure.output +testsuccessequal '2' grep -c '%0aAlt-Checksum-FileSize-Hash:%20' rootdir/tmp/testfailure.output + +echo 'Acquire::By-Hash "force";' > rootdir/etc/apt/apt.conf.d/99force-by-hash.conf + +msgmsg 'Fallback over hashsum errors' +rm -f rootdir/etc/apt/sources.list rootdir/etc/apt/sources.list.d/* +echo "deb mirror+file:${TMPWORKINGDIRECTORY}/mirror.list unstable main" > rootdir/etc/apt/sources.list +rm -rf rootdir/var/lib/apt/lists +cat > mirror.list < mirror.list < mirror.list < + if test -e "${METHODSDIR}/sqv"; then + # FIXME: Do not assert sqv output + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: file:${APTARCHIVE} unstable InRelease: Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature: Message has been manipulated +W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature: Message has been manipulated +W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq + else + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: file:${APTARCHIVE} unstable InRelease: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq + fi # ensure we keep the repo - testfailure grep 'evil' rootdir/var/lib/apt/lists/*InRelease + testfailure grep ': evil' rootdir/var/lib/apt/lists/*InRelease testfileequal lists.before "$(listcurrentlistsdirectory)" assert_repo_is_intact } @@ -218,12 +225,18 @@ test_release_gpg_to_invalid_release_release_gpg() # 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) + if test -e "${METHODSDIR}/sqv"; then + # FIXME: Do not assert sqv output + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: file:${APTARCHIVE} unstable Release: Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature: Message has been manipulated +W: Failed to fetch file:${APTARCHIVE}/dists/unstable/Release.gpg Sub-process /usr/bin/sqv returned an error code (1), error message is: Verifying signature: Message has been manipulated +W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq + else + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: file:${APTARCHIVE} unstable Release: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) W: Failed to fetch file:${APTARCHIVE}/dists/unstable/Release.gpg The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq + fi - testfailure grep 'evil' rootdir/var/lib/apt/lists/*Release + testfailure grep 'evil data' rootdir/var/lib/apt/lists/*Release testfileequal lists.before "$(listcurrentlistsdirectory)" assert_repo_is_intact } diff --git a/test/integration/test-apt-update-repeated-ims-hit b/test/integration/test-apt-update-repeated-ims-hit index 74d46b3..3c171e9 100755 --- a/test/integration/test-apt-update-repeated-ims-hit +++ b/test/integration/test-apt-update-repeated-ims-hit @@ -40,7 +40,11 @@ rm -f rootdir/etc/apt/trusted.gpg.d/* sed -i -e 's#^deb #deb [trusted=yes] #' rootdir/etc/apt/sources.list.d/* APTARCHIVE="$(readlink -f ./aptarchive)" -GPGERROR="W: GPG error: file:$APTARCHIVE Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE" +if test -e "${METHODSDIR}/sqv"; then +GPGERROR="W: OpenPGP signature verification failed: file:$APTARCHIVE Release: The signatures couldn't be verified because no keyring is specified" +else +GPGERROR="W: OpenPGP signature verification failed: file:$APTARCHIVE Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE" +fi msgmsg 'Running update again does not change result' '0' testwarningmsg "$GPGERROR" apt update diff --git a/test/integration/test-apt-update-rollback b/test/integration/test-apt-update-rollback index 8235968..b35cd50 100755 --- a/test/integration/test-apt-update-rollback +++ b/test/integration/test-apt-update-rollback @@ -156,9 +156,16 @@ test_inrelease_to_unauth_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 + if test -e "${METHODSDIR}/sqv"; then + # FIXME: Do not assert sqv output + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: file:${APTARCHIVE} unstable InRelease: Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key DE66AECA9151AFA1877EC31DE8525D47528144E2, which is needed to verify signature. +W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key DE66AECA9151AFA1877EC31DE8525D47528144E2, which is needed to verify signature. +W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq + else + testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: 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 + fi testfileequal lists.before "$(listcurrentlistsdirectory)" testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease' diff --git a/test/integration/test-apt-update-simple b/test/integration/test-apt-update-simple index 0d28034..6855f1d 100755 --- a/test/integration/test-apt-update-simple +++ b/test/integration/test-apt-update-simple @@ -34,9 +34,4 @@ main/i18n/Translation-de' aptget indextargets --format '$(METAKEY)' # Check that -o Acquire::Queue-Mode=access does not crash find rootdir/var/lib/apt/lists/ -type f -delete -if [ "$(command dpkg --print-architecture)" = "armhf" ]; then - msgskip "valgrind on armhf is broken" - testsuccess aptget update -o Acquire::Queue-Mode=access -else - testsuccess valgrind aptget update -o Acquire::Queue-Mode=access -fi +testsuccess valgrind aptget update -o Acquire::Queue-Mode=access diff --git a/test/integration/test-bug-1069874-working-with-not-normalized-packages b/test/integration/test-bug-1069874-working-with-not-normalized-packages new file mode 100755 index 0000000..d45acee --- /dev/null +++ b/test/integration/test-bug-1069874-working-with-not-normalized-packages @@ -0,0 +1,57 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +WORKDIR="${TMPWORKINGDIRECTORY}/badcontrol" +mkdir -p "${WORKDIR}/DEBIAN" +cat > "${WORKDIR}/DEBIAN/control" << EOF +Package: perccli +Version: 007.2616.0000.0000 +Section: perccli +Priority: optional +Architecture: all +Depends: +Pre-Depends: +Recommends: +Suggests: +Installed-Size: 7000 +Maintainer: Jane Doe +Conflicts: +Replaces: +Provides: +Description: Not a real package +EOF +buildsimplenativepackage 'perccli' 'all' '007.2616.0000.0000' 'stable' '' '' '' '' "${WORKDIR}/DEBIAN" +cp -a "${WORKDIR}/DEBIAN/control" aptarchive/Packages +rm -rf "$WORKDIR" + +setupaptarchive --no-update +echo "deb [trusted=yes] file:${TMPWORKINGDIRECTORY}/aptarchive ./" > rootdir/etc/apt/sources.list.d/00badcontrol.list +testsuccess apt update + +# uses the flat Packages file which includes the line ending spaces +testsuccess aptcache show perccli +cp -a rootdir/tmp/testsuccess.output perccli.show +testsuccessequal '4' grep -c '^\(\(Pre-\|\)Depends\|Provides\|Replaces\): \+$' perccli.show + +testdpkgnotinstalled perccli +testsuccess apt install perccli +testdpkginstalled perccli + +testsuccess apt policy perccli +cp -a rootdir/tmp/testsuccess.output perccli.policy +testsuccessequal '3' grep -c '7\.2616\.' perccli.policy + +# apt-ftparchive outputs empty fields, but not the space ending +testsuccess rm rootdir/var/lib/apt/lists/*_._Packages +testsuccess aptcache show perccli/now +cp -a rootdir/tmp/testsuccess.output perccli.show +testsuccessequal '4' grep -c '^\(\(Pre-\|\)Depends\|Provides\|Replaces\):$' perccli.show + +testsuccess apt policy perccli +cp -a rootdir/tmp/testsuccess.output perccli.policy +testsuccessequal '3' grep -c '7\.2616\.' perccli.policy diff --git a/test/integration/test-bug-470115-new-and-tighten-recommends b/test/integration/test-bug-470115-new-and-tighten-recommends index f27990e..e1c272b 100755 --- a/test/integration/test-bug-470115-new-and-tighten-recommends +++ b/test/integration/test-bug-470115-new-and-tighten-recommends @@ -165,8 +165,6 @@ Conf upgrade-over-new (2 unstable [all])' aptget install upgrade-over-new -s # 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. diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed index 90ce58a..8abc7c8 100755 --- a/test/integration/test-bug-549968-install-depends-of-not-installed +++ b/test/integration/test-bug-549968-install-depends-of-not-installed @@ -25,4 +25,24 @@ 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 +Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s --solver internal + +# 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... +Package 'extracoolstuff' is not installed, so not removed +Solving dependencies...Install coolstuff:i386 () +[0] Install:coolstuff:i386=1.0 () +Delete extracoolstuff:i386 +[0] Reject:extracoolstuff:i386 () +[0] Install:coolstuff:i386 (coolstuff:i386=1.0) +Optional Item (0@0) coolstuff:i386 -> | extracoolstuff:i386 + +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::APT::Solver=1 -s --solver 3.0 diff --git a/test/integration/test-bug-591882-conkeror b/test/integration/test-bug-591882-conkeror index 6b90343..f3ac286 100755 --- a/test/integration/test-bug-591882-conkeror +++ b/test/integration/test-bug-591882-conkeror @@ -9,6 +9,7 @@ setupaptarchive UPGRADEFAIL="Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following packages will be REMOVED: conkeror libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9 @@ -41,6 +42,7 @@ E: Trivial Only specified but this is not a trivial operation." UPGRADESUCCESS="Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... The following packages will be REMOVED: libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9 @@ -72,6 +74,9 @@ 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." +# solver3 otherwise chooses to keep back xulrunner-1.9 rather than replace it with xulrunner-1.9.1,, +# and keep back reverse dependencies of xulrunner-1.9 which seems correct. +testsuccess aptmark auto libdatrie0 libkrb53 libxcb-xlib0 xulrunner-1.9 # Test that the old behavior can be restored with the option -testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0 +testfailureequal "$UPGRADEFAIL" aptget dist-upgrade --trivial-only -o pkgProblemResolver::FixByInstall=0 --solver internal testfailureequal "$UPGRADESUCCESS" aptget dist-upgrade --trivial-only #-o pkgProblemResolver::FixByInstall=0 diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo index 4d0e3dc..2cfdc53 100755 --- a/test/integration/test-bug-596498-trusted-unsigned-repo +++ b/test/integration/test-bug-596498-trusted-unsigned-repo @@ -15,10 +15,15 @@ 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)" +PKGSIZE=$(aptcache show cool | awk '/^Size:/ {print $2}') +PKGTEXT="Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + cool +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Need to get 0 B/$PKGSIZE B of archives. +After this operation, 11.3 kB of additional disk space will be used." +DOWNLOG="Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main i386 cool i386 1.0 [$PKGSIZE B]" DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-*.list' testsuccessequal "$PKGTEXT diff --git a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy index e7e4093..b3f1195 100755 --- a/test/integration/test-bug-598669-install-postfix-gets-exim-heavy +++ b/test/integration/test-bug-598669-install-postfix-gets-exim-heavy @@ -7,6 +7,14 @@ setupenvironment configarchitecture "i386" setupaptarchive +# FIXME: Should this say selected postifx? +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. postfix:i386=2.7.1-1 is selected for install + 2. postfix:i386=2.7.1-1 is not selected for install because: + 1. exim4-daemon-light:i386 is selected for install + 2. exim4-daemon-light:i386 Conflicts mail-transport-agent + [selected exim4-daemon-light:i386]" aptget install postfix --solver 3.0 +allowremovemanual testfailureequal "Reading package lists... Building dependency tree... The following packages will be REMOVED: diff --git a/test/integration/test-bug-601961-install-info b/test/integration/test-bug-601961-install-info index 3e13560..be55e76 100755 --- a/test/integration/test-bug-601961-install-info +++ b/test/integration/test-bug-601961-install-info @@ -47,4 +47,21 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: findutils : Depends: essentialpkg but it is not going to be installed -E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only +E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget remove essentialpkg --trivial-only --solver internal + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + findutils : Depends: essentialpkg but it is not going to be installed +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. essentialpkg:i386 is selected for removal + 2. essentialpkg:i386 is selected for install because: + 1. findutils:i386 is selected for install + 2. findutils:i386 Depends essentialpkg' aptget remove essentialpkg --trivial-only --solver 3.0 diff --git a/test/integration/test-bug-604222-new-and-autoremove b/test/integration/test-bug-604222-new-and-autoremove index 47da810..70dc4ca 100755 --- a/test/integration/test-bug-604222-new-and-autoremove +++ b/test/integration/test-bug-604222-new-and-autoremove @@ -17,26 +17,38 @@ 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' +insertpackage 'stable' 'libgphoto2-l10n' 'all' '2' +insertinstalledpackage 'libfoto1' 'i386' '1' +insertpackage 'installed,stable' 'photoapp1' 'all' '1' 'Depends: libfoto1 +Recommends: libgphoto2-l10n (= 1)' +insertinstalledpackage 'photoapp2' 'all' '1' +insertpackage 'stable' 'libfoto1t64' 'i386' '1' 'Provides: libfoto1' +insertpackage 'stable' 'photoapp2' 'all' '2' 'Conflicts: photoapp1 +Depends: libfoto1t64 +Recommends: libgphoto2-l10n (= 2)' + setupaptarchive +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages have been kept back: + photoapp2 +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' apt upgrade -s + 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. +Use 'apt autoremove' to remove it. The following NEW packages will be installed: libavcodec52 -0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. Inst libavcodec52 (4:0.5.2-6 stable [i386]) Conf libavcodec52 (4:0.5.2-6 stable [i386])" aptget install libavcodec52 -s @@ -44,10 +56,10 @@ 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. +Use 'apt autoremove' to remove it. The following NEW packages will be installed: libavcodec52 -0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +0 upgraded, 1 newly installed, 0 to remove and 2 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 @@ -56,12 +68,12 @@ Building dependency tree... Reading state information... The following package was automatically installed and is no longer required: libvtk5.4 -Use '$AUTOREMOVE' to remove it. +Use 'apt autoremove' to remove it. 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 1 not upgraded. +0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded. Need to get 0 B/126 B of archives. 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 @@ -69,18 +81,40 @@ 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. +Use 'apt autoremove' to remove it. 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 1 not upgraded. +0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded. Need to get 0 B/126 B of archives. 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 rm -f rootdir/var/lib/dpkg/status rootdir/var/lib/apt/extended_states +if [ "$APT_SOLVER" = "3.0" ]; then +CONFLICTING='Reading package lists... +Building dependency tree... +Solving dependencies...Install dummy-archive:i386 () +[0] Install:dummy-archive:i386=0.invalid.0 () +[0] Install:dummy-archive:i386 (dummy-archive:i386=0.invalid.0) +[0] Install:libavcodec52:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386) +[0] Install:libavcodec52:i386=4:0.5.2-6 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386) +[0] Reject:libvtk5-dev:i386=5.4.2-8 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386) +[0] Reject:libvtk5-dev:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libavcodec52:i386 -> not libvtk5-dev:i386=5.4.2-8) +[0] Install:libopenal-dev:i386 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386) +[0] Install:libopenal-dev:i386=1:1.12.854-2 (dummy-archive:i386=0.invalid.0 -> dummy-archive:i386 -> libopenal-dev:i386) + +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. +Need to get 0 B/126 B of archives. +After this operation, 129 kB of additional disk space will be used. +E: Trivial Only specified but this is not a trivial operation.' +else CONFLICTING='Reading package lists... Building dependency tree... MarkInstall dummy-archive:i386 < none -> 0.invalid.0 @un puN Ib > FU=1 @@ -96,10 +130,11 @@ The following NEW packages will be installed: Need to get 0 B/126 B of archives. After this operation, 129 kB of additional disk space will be used. E: Trivial Only specified but this is not a trivial operation.' +fi -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 +testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=0 -o Debug::APT::Solver=1 +testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=1 -o Debug::APT::Solver=1 +testfailureequal "$CONFLICTING" aptget install dummy-archive --trivial-only -o Debug::pkgDepCache::Marker=1 -o APT::Get::HideAutoRemove=small -o Debug::APT::Solver=1 insertinstalledpackage 'my-metapackage' 'i386' '1' 'Depends: gwenview' insertinstalledpackage 'gwenview' 'i386' '4:15.08.0-1' 'Depends: libkipi-data diff --git a/test/integration/test-bug-611729-mark-as-manual b/test/integration/test-bug-611729-mark-as-manual index 63f8245..026ede3 100755 --- a/test/integration/test-bug-611729-mark-as-manual +++ b/test/integration/test-bug-611729-mark-as-manual @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture "i386" +allowremovemanual buildsimplenativepackage "peace-dpkg" "all" "1.0" "stable" @@ -56,14 +57,8 @@ 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" ] && [ "$(id -u "$SUDO_USER")" -gt 0 ]; 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' ' +testfileequal 'rootdir/var/log/apt/history.log' ' Reinstall: b:i386 (1.0)' -fi testsuccessequal 'Reading package lists... Building dependency tree... diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts index bc57395..a005127 100755 --- a/test/integration/test-bug-612099-multiarch-conflicts +++ b/test/integration/test-bug-612099-multiarch-conflicts @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' 'amd64' buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable' diff --git a/test/integration/test-bug-612557-garbage-upgrade b/test/integration/test-bug-612557-garbage-upgrade index e0ede78..00bc9ac 100755 --- a/test/integration/test-bug-612557-garbage-upgrade +++ b/test/integration/test-bug-612557-garbage-upgrade @@ -17,6 +17,16 @@ testsuccess aptmark markauto python-uno openoffice.org-common #aptmark unmarkauto openoffice.org-emailmerge testmarkedauto python-uno openoffice.org-common +# The 3.0 solver does not remove openoffice.org-emailmerge because it is manually installed. +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. openoffice.org-common:i386=1:3.2.1-11+squeeze2 is not selected for install because: + 1. python-uno:i386=1:3.3.0-2 is selected as an upgrade + 2. python-uno:i386=1:3.3.0-2 Depends libreoffice-common + 3. libreoffice-common:i386 Conflicts openoffice.org-common + 2. openoffice.org-common:i386=1:3.2.1-11+squeeze2 is selected for install because: + 1. openoffice.org-emailmerge:i386 is selected for install + 2. openoffice.org-emailmerge:i386 PreDepends openoffice.org-common + 3. openoffice.org-common:i386 is available in version 1:3.2.1-11+squeeze2" aptget --trivial-only install python-uno --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Reading state information... @@ -31,7 +41,7 @@ The following packages will be upgraded: 1 upgraded, 1 newly installed, 2 to remove and 0 not upgraded. Need to get 0 B/84 B of archives. 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 +E: Trivial Only specified but this is not a trivial operation.' aptget --trivial-only install python-uno --solver internal testsuccess aptmark markauto openoffice.org-emailmerge testmarkedauto python-uno openoffice.org-common openoffice.org-emailmerge diff --git a/test/integration/test-bug-613420-new-garbage-dependency b/test/integration/test-bug-613420-new-garbage-dependency index 46c3d94..0d83097 100755 --- a/test/integration/test-bug-613420-new-garbage-dependency +++ b/test/integration/test-bug-613420-new-garbage-dependency @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture "i386" insertpackage 'unstable' 'libreoffice' 'all' '1:3.3.1~rc1-2' 'Depends: libreoffice-core' @@ -16,17 +17,13 @@ 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. +Use 'apt autoremove' to remove them. The following additional packages will be installed: libreoffice-core libreoffice-officebean openoffice.org-officebean The following packages will be REMOVED: @@ -43,7 +40,7 @@ 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. +Use 'apt autoremove' to remove them. The following additional packages will be installed: libreoffice-core libreoffice-officebean openoffice.org-officebean The following packages will be REMOVED: diff --git a/test/integration/test-bug-618848-always-respect-user-requests b/test/integration/test-bug-618848-always-respect-user-requests index 225db29..b1cccef 100755 --- a/test/integration/test-bug-618848-always-respect-user-requests +++ b/test/integration/test-bug-618848-always-respect-user-requests @@ -13,6 +13,21 @@ insertpackage 'unstable' 'exim4-daemon-heavy' 'all' '1.0' 'Depends: libdb4.8' setupaptarchive +# This does not work in 3.0 solver: We do not remove manually installed packages. +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. exim4-daemon-light:i386 is selected for install + 2. exim4-daemon-light:i386 Depends libdb4.8 + but none of the choices are installable: + - libdb4.8:i386 is selected for removal" aptget remove libdb4.8 --solver 3.0 -s +allowremovemanual +testsuccessequal "Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + exim4 exim4-daemon-light libdb4.8 +0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. +Remv exim4 [1.0] +Remv exim4-daemon-light [1.0] +Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s testsuccessequal "Reading package lists... Building dependency tree... MarkDelete libdb4.8:i386 < 1.0 @ii pmK > FU=1 @@ -28,4 +43,4 @@ 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 +Remv libdb4.8 [1.0]" aptget remove libdb4.8 -s -o Debug::pkgDepCache::Marker=1 --solver internal diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction index 0cf8d35..6e39b38 100755 --- a/test/integration/test-bug-632221-cross-dependency-satisfaction +++ b/test/integration/test-bug-632221-cross-dependency-satisfaction @@ -35,6 +35,11 @@ insertsource 'unstable' 'source-specific-armel' 'armel' '1' 'Build-Depends: spec setupaptarchive +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:forbidden-no:armel=1 is selected for install + 2. builddeps:forbidden-no:armel Depends amdboot:any + but none of the choices are installable: + [no choices]" aptget build-dep forbidden-no -s -a armel --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -46,7 +51,13 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-no -s -a armel --solver internal + +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:forbidden-same:armel=1 is selected for install + 2. builddeps:forbidden-same:armel Depends libc6:any + but none of the choices are installable: + [no choices]" aptget build-dep forbidden-same -s -a armel --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -58,7 +69,13 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-same -s -a armel --solver internal + +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:forbidden-foreign:armel=1 is selected for install + 2. builddeps:forbidden-foreign:armel Depends doxygen:any + but none of the choices are installable: + [no choices]' aptget build-dep forbidden-foreign -s -a armel --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -70,7 +87,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep forbidden-foreign -s -a armel --solver internal testsuccessequal 'Reading package lists... Reading package lists... diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold index fe3bde6..cfb2416 100755 --- a/test/integration/test-bug-64141-install-dependencies-for-on-hold +++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'native' 'strange-arch' +native=$(getarchitecture 'native') insertpackage 'unstable' 'unrelated' 'strange-arch' '1' @@ -19,9 +20,43 @@ insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3' setupaptarchive +# Solver 3.0 does not remove manual packages 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. +Need to get 0 B/42 B 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 --solver 3.0 + +testfailure aptget dist-upgrade --trivial-only --solver 3.0 -o debug::apt::solver=2 +testsuccess grep -Fx "[0] Reject:apt:$native=0.8.10 (oldcrap:$native -> oldcrap:$native=1-1)" rootdir/tmp/testfailure.output + +testsuccess aptmark auto ~i + +testfailureequal 'Reading package lists... +Building dependency tree... +Reading state information... +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. +Need to get 0 B/126 B 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 + +testfailureequal 'Reading package lists... +Building dependency tree... +Reading state information... +Calculating upgrade... The following packages will be REMOVED: oldcrap The following NEW packages will be installed: @@ -35,9 +70,13 @@ E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgr testsuccess aptmark hold apt -testfailureequal 'Reading package lists... +testfailureequal "Reading package lists... Building dependency tree... +Reading state information... Calculating upgrade... +The following package was automatically installed and is no longer required: + oldcrap +Use 'apt autoremove' to remove it. The following packages have been kept back: apt The following packages will be upgraded: @@ -45,4 +84,4 @@ The following packages will be upgraded: 1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 0 B/42 B 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 -o Test='hold-back-apt' +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 index 42b8521..20b4711 100755 --- a/test/integration/test-bug-657695-resolver-breaks-on-virtuals +++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals @@ -16,9 +16,31 @@ insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks setupaptarchive -testfailureequal 'Reading package lists... +testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... +The following packages have been kept back: + xserver-xorg-core +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --trivial-only --solver 3.0 + + +allowremovemanual +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages have been kept back: + xserver-xorg-core +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' aptget dist-upgrade --trivial-only --solver 3.0 + +testsuccess aptmark auto ~i + +testfailureequal "Reading package lists... +Building dependency tree... +Reading state information... +Calculating upgrade... +The following package was automatically installed and is no longer required: + xserver-xorg-core +Use 'apt autoremove' to remove it. The following packages will be REMOVED: xserver-xorg-video-driver1 xserver-xorg-video-driver10 xserver-xorg-video-driver11 xserver-xorg-video-driver12 @@ -50,4 +72,4 @@ The following packages will be upgraded: 1 upgraded, 0 newly installed, 50 to remove and 0 not upgraded. Need to get 0 B/42 B of archives. 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 +E: Trivial Only specified but this is not a trivial operation." aptget dist-upgrade --trivial-only diff --git a/test/integration/test-bug-675449-essential-are-protected b/test/integration/test-bug-675449-essential-are-protected index e7460ae..c8e832d 100755 --- a/test/integration/test-bug-675449-essential-are-protected +++ b/test/integration/test-bug-675449-essential-are-protected @@ -112,4 +112,21 @@ 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: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget purge libfoo -s +E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' aptget purge libfoo -s --solver internal + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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 satisfy dependencies. Reached two conflicting decisions: + 1. libfoo:amd64 is selected for removal + 2. libfoo:amd64 is selected for install because: + 1. foo:amd64 is selected for install + 2. foo:amd64 Depends libfoo' aptget purge libfoo -s --solver 3.0 diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages index 831e1f8..a682a2f 100755 --- a/test/integration/test-bug-683786-build-dep-on-virtual-packages +++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages @@ -41,6 +41,11 @@ The following NEW packages will be installed: Inst po-debconf (1 unstable [all]) Conf po-debconf (1 unstable [all])' aptget build-dep dash -s +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:dash:armel=1 is selected for install + 2. builddeps:dash:armel Depends po-debconf:armel + but none of the choices are installable: + [no choices]' aptget build-dep -aarmel dash -s --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -52,7 +57,13 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s --solver internal + +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:diffutils:armel=1 is selected for install + 2. builddeps:diffutils:armel Depends texi2html:armel + but none of the choices are installable: + [no choices]' aptget build-dep -aarmel diffutils -s --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -64,7 +75,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s --solver internal testsuccessequal "Reading package lists... Reading package lists... @@ -75,6 +86,11 @@ The following NEW packages will be installed: Inst libselinux1-dev (1 unstable [amd64]) Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. builddeps:sed:armel=1 is selected for install + 2. builddeps:sed:armel Depends libselinux-dev:armel + but none of the choices are installable: + [no choices]' aptget build-dep -aarmel sed -s --solver 3.0 testfailureequal 'Reading package lists... Reading package lists... Building dependency tree... @@ -86,7 +102,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s --solver internal testsuccessequal "Reading package lists... Reading package lists... diff --git a/test/integration/test-bug-686346-package-missing-architecture b/test/integration/test-bug-686346-package-missing-architecture index d28600a..a064e5d 100755 --- a/test/integration/test-bug-686346-package-missing-architecture +++ b/test/integration/test-bug-686346-package-missing-architecture @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' insertinstalledpackage 'pkgb' 'none' '1' 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 index 9c96bbe..b9cda18 100755 --- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch +++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' buildsimplenativepackage 'toolkit' 'all' '1' 'stable' 'Multi-Arch: foreign' diff --git a/test/integration/test-bug-720597-build-dep-purge b/test/integration/test-bug-720597-build-dep-purge index 4b36989..9ff0d23 100755 --- a/test/integration/test-bug-720597-build-dep-purge +++ b/test/integration/test-bug-720597-build-dep-purge @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual # we need this construct here as it isn't really possible to fake native arch for dpkg-* tools NATIVE="$(command dpkg --print-architecture)" diff --git a/test/integration/test-bug-723586-any-stripped-in-single-arch b/test/integration/test-bug-723586-any-stripped-in-single-arch index 38eb026..6724131 100755 --- a/test/integration/test-bug-723586-any-stripped-in-single-arch +++ b/test/integration/test-bug-723586-any-stripped-in-single-arch @@ -29,6 +29,24 @@ 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])' +if [ "$APT_SOLVER" = "3.0" ]; then +FAILLOG='Reading package lists... +Building dependency tree... +Solving dependencies... +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 satisfy dependencies. Reached two conflicting decisions: + 1. python-mips:amd64=3 is selected for install + 2. python-mips:amd64 Depends python3:mips + but none of the choices are installable: + [no choices]' +else FAILLOG='Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -40,6 +58,7 @@ 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.' +fi testsuccessequal "$INSTALLLOG" aptget install python3-gnupg -s aptcache showpkg python3 > showpkg.log diff --git a/test/integration/test-bug-733028-gpg-resource-limit b/test/integration/test-bug-733028-gpg-resource-limit index b44facd..2fc5ed3 100755 --- a/test/integration/test-bug-733028-gpg-resource-limit +++ b/test/integration/test-bug-733028-gpg-resource-limit @@ -13,7 +13,6 @@ 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' diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable index b836451..83992e3 100755 --- a/test/integration/test-bug-735967-lib32-to-i386-unavailable +++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' 'amd64' insertpackage 'unstable' 'lib32nss-mdns' 'amd64' '0.10-6' 'Depends: libnss-mdns-i386 (= 0.10-6)' @@ -31,6 +32,12 @@ setupaptarchive --no-update configarchitecture 'amd64' testsuccess aptget update +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages have been kept back: + lib32nss-mdns libnss-mdns +0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' aptget dist-upgrade -s --solver 3.0 testsuccessequal 'Reading package lists... Building dependency tree... Calculating upgrade... @@ -41,8 +48,15 @@ The following packages will be upgraded: 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 +Conf libnss-mdns (0.10-6 unstable [amd64])' aptget dist-upgrade -s --solver internal +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. libfoo:amd64 is selected for install because: + 1. foo:amd64=1 is selected for install + 2. foo:amd64 Depends libfoo + 2. libfoo:amd64 Depends libfoo-bin + but none of the choices are installable: + [no choices]' aptget install foo -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -53,7 +67,7 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: libfoo : Depends: libfoo-bin but it is not installable -E: Unable to correct problems, you have held broken packages.' aptget install foo -s +E: Unable to correct problems, you have held broken packages.' aptget install foo -s --solver internal # activate multiarch configarchitecture 'amd64' 'i386' diff --git a/test/integration/test-bug-745046-candidate-propagation-fails b/test/integration/test-bug-745046-candidate-propagation-fails index 64aaa6a..f4fc15e 100755 --- a/test/integration/test-bug-745046-candidate-propagation-fails +++ b/test/integration/test-bug-745046-candidate-propagation-fails @@ -17,6 +17,21 @@ setupaptarchive testfailureequal "Reading package lists... Building dependency tree... Selected version '2' (experimental [amd64]) for 'gedit' +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 --solver internal + +testfailureequal "Reading package lists... +Building dependency tree... +Selected version '2' (experimental [amd64]) for 'gedit' +Solving dependencies... 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 @@ -25,7 +40,11 @@ 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 +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. gedit:amd64=2 is selected as an upgrade + 2. gedit:amd64=2 Depends common (>= 2) + but none of the choices are installable: + [no choices]" aptget install gedit/experimental -sq=0 --solver 3.0 insertinstalledpackage 'common' 'amd64' '2' diff --git a/test/integration/test-bug-747261-arch-specific-conflicts b/test/integration/test-bug-747261-arch-specific-conflicts index e137043..093542d 100755 --- a/test/integration/test-bug-747261-arch-specific-conflicts +++ b/test/integration/test-bug-747261-arch-specific-conflicts @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'sparc' 'armel' insertinstalledpackage 'foobar' 'armel' '1' diff --git a/test/integration/test-bug-758153-versioned-provides-support b/test/integration/test-bug-758153-versioned-provides-support index 7bf9d76..a057d33 100755 --- a/test/integration/test-bug-758153-versioned-provides-support +++ b/test/integration/test-bug-758153-versioned-provides-support @@ -7,6 +7,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' insertinstalledpackage 'webapp' 'all' '1' 'Depends: httpd' @@ -393,11 +394,18 @@ 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 +if [ "$APT_SOLVER" = "3.0" ]; then +TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 1) + Depends: selfprov (= 2) + Depends: selfprov (= 3)" +else +TOPDEPENDS=" needsselfprov123 : Depends: selfprov (= 3)" +fi 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) +$TOPDEPENDS $SOMEPACKAGESCOULDNOT needsselfprov123 : Depends: selfprov (= 1) diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run index ce2c193..0a2dd25 100755 --- a/test/integration/test-bug-769609-triggers-still-pending-after-run +++ b/test/integration/test-bug-769609-triggers-still-pending-after-run @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' msgtest 'Check if installed dpkg supports' 'noawait trigger' diff --git a/test/integration/test-bug-796070-downgrade-simulate b/test/integration/test-bug-796070-downgrade-simulate index 61ecc87..d1b6b7f 100755 --- a/test/integration/test-bug-796070-downgrade-simulate +++ b/test/integration/test-bug-796070-downgrade-simulate @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' insertpackage 'unstable' 'apt' 'all' '1.0.10.1' 'Depends: libapt-pkg4.16 (>= 1.0.10.1)' diff --git a/test/integration/test-bug-869859-retry-downloads b/test/integration/test-bug-869859-retry-downloads index 4e169b3..821d7bc 100755 --- a/test/integration/test-bug-869859-retry-downloads +++ b/test/integration/test-bug-869859-retry-downloads @@ -48,15 +48,53 @@ Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 429 Unknown HTTP code Err:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 429 Unknown HTTP code -E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/testpkg_1_all.deb 429 Unknown HTTP code" apt download testpkg -o acquire::retries=3 -o debug::acquire::retries=true -q +E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/testpkg_1_all.deb 429 Unknown HTTP code" apt download testpkg -o acquire::retries=3 -o debug::acquire::retries=true -q -o Acquire::Progress::Ignore::ShowErrorText=true +testfailure test -f testpkg_1_all.deb +testsecondsgreaterequal 5 testfailureequal "Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 1 seconds +Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 +Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 2 seconds +Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 +Delaying http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 by 4 seconds +Ign:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 +Err:1 http://localhost:${APTHTTPPORT} stable/main all testpkg all 1 + 429 Unknown HTTP code +E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/testpkg_1_all.deb 429 Unknown HTTP code" apt download testpkg -o acquire::retries=3 -o debug::acquire::retries=true -q -o Acquire::Progress::Ignore::ShowErrorText=false testfailure test -f testpkg_1_all.deb +msgmsg 'Retry 429 TooManyRequests after Retry-After time' +webserverconfig 'aptwebserver::failrequest' '429' +webserverconfig 'aptwebserver::failrequest::retryafter' '5' +webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '1' +testsecondsgreaterequal 5 testsuccess apt download testpkg -o acquire::retries=1 -o acquire::retries::handleretryafter=true -o debug::acquire::retries=true -q +webserverconfig 'aptwebserver::failrequest::retryafter' '0' +testsuccess test -f testpkg_1_all.deb +rm -f testpkg_1_all.deb + msgmsg 'Success in the third try' webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '2' testsuccess apt download testpkg -o acquire::retries=3 -o acquire::retries::delay=false testsuccess test -f testpkg_1_all.deb rm -f testpkg_1_all.deb +msgmsg 'Hard failure after retry request' +webserverconfig 'aptwebserver::failrequest::pool/unavailable_1_all.deb' '1' +testfailureequal "Ign:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb + 429 Unknown HTTP code +Err:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb + 404 Not Found +E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb 404 Not Found +E: Download Failed" apthelper download-file "http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb" 'unavailable_1_all.deb' -o acquire::retries=2 -o acquire::retries::delay=false -o Acquire::Progress::Ignore::ShowErrorText=true +testfailure test -f unavailable_1_all.deb +webserverconfig 'aptwebserver::failrequest::pool/unavailable_1_all.deb' '1' +testfailureequal "Ign:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb +Err:1 http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb + 429 Unknown HTTP code + 404 Not Found +E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb 404 Not Found +E: Download Failed" apthelper download-file "http://localhost:${APTHTTPPORT}/pool/unavailable_1_all.deb" 'unavailable_1_all.deb' -o acquire::retries=2 -o acquire::retries::delay=false -o Acquire::Progress::Ignore::ShowErrorText=false +testfailure test -f unavailable_1_all.deb + + msgmsg 'Do not try everything again, hard failures keep hard failures' webserverconfig 'aptwebserver::failrequest' '404' webserverconfig 'aptwebserver::failrequest::pool/testpkg_1_all.deb' '2' diff --git a/test/integration/test-bug-921685-binary-detached-signature b/test/integration/test-bug-921685-binary-detached-signature index df86319..e9bbb80 100755 --- a/test/integration/test-bug-921685-binary-detached-signature +++ b/test/integration/test-bug-921685-binary-detached-signature @@ -13,10 +13,13 @@ setupdistsaptarchive for RELEASE in $(find aptarchive -name 'Release'); do # note the missing --armor - dosigning "keys/joesixpack" --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}" + if command sq --cli-version 0.40 version 2>/dev/null; then + sq sign --binary --signer-file "keys/joesixpack.sec" --output "${RELEASE}.gpg" --signature-file "${RELEASE}" + else + sq sign --binary --signer-file "keys/joesixpack.sec" --signature-file "${RELEASE}.gpg" "${RELEASE}" + fi done testfailure apt show foo testfailure aptget update -testsuccess grep 'W: .* Detached signature file .* is in unsupported binary format' rootdir/tmp/testfailure.output testfailure apt show foo diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict index 272378b..270536f 100755 --- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict +++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-conflict @@ -15,6 +15,7 @@ Important: yes' setupaptarchive +# This only works on internal, we do not have magic essential autoswitch ability for 3.0 testsuccessequal "Reading package lists... Building dependency tree... Removing: systemd-sysv:amd64 as upgrade is not an option for runit-init:amd64 (1) @@ -50,4 +51,4 @@ Remv init [1] MarkDelete systemd-sysv:amd64 < 1 | none @ii H > FU=1 Remv systemd-sysv [1] Inst runit-init (1 unstable [all]) -Conf runit-init (1 unstable [all])" apt install runit-init -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Allow-Solver-Remove-Essential=1 +Conf runit-init (1 unstable [all])" apt install runit-init -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 -o APT::Get::Allow-Solver-Remove-Essential=1 --solver internal diff --git a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends index ca6bf8d..492958c 100755 --- a/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends +++ b/test/integration/test-bug-960705-propagate-protected-to-satisfied-depends @@ -18,6 +18,38 @@ insertpackage 'unstable' 'fine-foo' 'all' '1' setupaptarchive +testsuccessequal "Reading package lists... +Building dependency tree... +Solving dependencies...Install foobar:amd64 () +[0] Install:foobar:amd64=1 () +[0] Install:foobar:amd64 (foobar:amd64=1) +[0] Install:requires-foo:amd64 (foobar:amd64=1 -> foobar:amd64) +[0] Install:requires-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64) +[0] Install:foo:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64) +[0] Install:foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64) +[0] Install:foo-depends:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64) +[0] Reject:conflicts-foo:amd64 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo:amd64=1) +[0] Install:foo-depends:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo-depends:amd64) +[0] Install:fine-foo:amd64 (foobar:amd64=1 -> foobar:amd64) +[0] Reject:conflicts-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> requires-foo:amd64 -> foo:amd64 -> foo:amd64=1 -> not conflicts-foo:amd64) +[0] Install:fine-foo:amd64=1 (foobar:amd64=1 -> foobar:amd64 -> fine-foo:amd64) + +The following additional packages will be installed: + fine-foo foo foo-depends requires-foo +The following NEW packages will be installed: + fine-foo foo foo-depends foobar requires-foo +0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. +Inst fine-foo (1 unstable [all]) +Inst foo-depends (1 unstable [all]) +Inst foo (1 unstable [all]) +Inst requires-foo (1 unstable [all]) +Inst foobar (1 unstable [all]) +Conf fine-foo (1 unstable [all]) +Conf foo-depends (1 unstable [all]) +Conf foo (1 unstable [all]) +Conf requires-foo (1 unstable [all]) +Conf foobar (1 unstable [all])" apt install foobar -so Debug::APT::Solver=1 --solver 3.0 + testsuccessequal "Reading package lists... Building dependency tree... Installing foo:amd64 as Depends of foobar:amd64 @@ -42,4 +74,4 @@ Conf fine-foo (1 unstable [all]) Conf foo-depends (1 unstable [all]) Conf foo (1 unstable [all]) Conf requires-foo (1 unstable [all]) -Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 +Conf foobar (1 unstable [all])" apt install foobar -so Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal diff --git a/test/integration/test-bug-961266-hold-means-hold b/test/integration/test-bug-961266-hold-means-hold index 89c18ba..750d329 100755 --- a/test/integration/test-bug-961266-hold-means-hold +++ b/test/integration/test-bug-961266-hold-means-hold @@ -75,7 +75,30 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: git-ng : Depends: git (> 1:2.26.2) -E: Unable to correct problems, you have held broken packages.' apt install git-ng -s +E: Unable to correct problems, you have held broken packages.' apt install git-ng -s --solver internal + + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + but none of the choices are installable: + - git:amd64=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install + 2. git:amd64=1:2.25.1-1 conflicts with other versions of itself + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install as above + 2. git:amd64 Conflicts git:i386' apt install git-ng -s --solver 3.0 msgmsg 'Now mix it up by' 'holding git-cvs' @@ -98,7 +121,34 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: git-cvs : Depends: git (< 1:2.25.1-.) -E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' apt install git-ng -s +E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.' apt install git-ng -s --solver internal + + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git:amd64=1:2.26.2-1 is selected as an upgrade because: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + [selected git-ng:amd64] + For context, additional choices that could not be installed: + * In git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.): + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64 is selected for install + 2. git:amd64 Conflicts git:i386 + 2. git:amd64=1:2.26.2-1 is not selected for install because: + 1. git-cvs:amd64=1:2.25.1-1 is selected for install + 2. git-cvs:amd64=1:2.25.1-1 Depends git (> 1:2.25.1) and Depends git (< 1:2.25.1-.) + 3. git:amd64=1:2.25.1-1 conflicts with other versions of itself' apt install git-ng -s --solver 3.0 msgmsg 'Now mix it up by' 'holding both' @@ -121,4 +171,26 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: git-ng : Depends: git (> 1:2.26.2) -E: Unable to correct problems, you have held broken packages.' apt install git-ng -s +E: Unable to correct problems, you have held broken packages.' apt install git-ng -s --solver internal + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + but none of the choices are installable: + - git:amd64=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install + 2. git:amd64=1:2.25.1-1 conflicts with other versions of itself + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install as above + 2. git:amd64 Conflicts git:i386' apt install git-ng -s --solver 3.0 diff --git a/test/integration/test-bug-lp1562402-nomark-removals-as-keep b/test/integration/test-bug-lp1562402-nomark-removals-as-keep index 6e8225a..6cc6249 100755 --- a/test/integration/test-bug-lp1562402-nomark-removals-as-keep +++ b/test/integration/test-bug-lp1562402-nomark-removals-as-keep @@ -18,10 +18,23 @@ insertinstalledpackage 'maas-region-controller' 'all' '2.0.0~alpha3+bzr4810-0ubu 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 have been kept back: + maas-common maas-region-controller maas-region-controller-min +0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.' aptget dist-upgrade -s --solver 3.0 + +testsuccess aptmark auto ~i + +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... +Reading state information... +Calculating upgrade... +The following packages were automatically installed and are no longer required: + maas-common maas-region-api maas-region-controller +Use 'apt autoremove' to remove them. The following packages will be REMOVED: maas-region-controller-min The following NEW packages will be installed: @@ -35,5 +48,5 @@ Inst maas-common [2.0.0~alpha3+bzr4810-0ubuntu1] (2.0.0~alpha4+bzr4843-0ubuntu1~ 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])' \ +Conf maas-region-api (2.0.0~alpha4+bzr4843-0ubuntu1~xenial2 unstable [amd64])" \ aptget dist-upgrade -s diff --git a/test/integration/test-crossgrades b/test/integration/test-crossgrades index 6398e7e..b428215 100755 --- a/test/integration/test-crossgrades +++ b/test/integration/test-crossgrades @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'i386' 'amd64' 'armel' configdpkgnoopchroot diff --git a/test/integration/test-cve-2013-1051-InRelease-parsing b/test/integration/test-cve-2013-1051-InRelease-parsing index 1f0cbda..4bfa62a 100755 --- a/test/integration/test-cve-2013-1051-InRelease-parsing +++ b/test/integration/test-cve-2013-1051-InRelease-parsing @@ -49,7 +49,7 @@ testwarningequal "Get:1 http://localhost:${APTHTTPPORT} stable InRelease [$(stat Err:1 http://localhost:${APTHTTPPORT} stable InRelease Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed Reading package lists... -W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://localhost:${APTHTTPPORT} stable InRelease: Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed +W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: http://localhost:${APTHTTPPORT} stable InRelease: Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/stable/InRelease Splitting up ${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial/localhost:${APTHTTPPORT}_dists_stable_InRelease into data and signature failed W: Some index files failed to download. They have been ignored, or old ones used instead." --nomsg aptget update testfileequal './listsdir.lst' "$(listcurrentlistsdirectory | sed '/_InRelease/ d')" diff --git a/test/integration/test-cve-2019-3462-dequote-injection b/test/integration/test-cve-2019-3462-dequote-injection index 23cef4f..0504254 100755 --- a/test/integration/test-cve-2019-3462-dequote-injection +++ b/test/integration/test-cve-2019-3462-dequote-injection @@ -37,7 +37,7 @@ After this operation, 11.3 kB of additional disk space will be used. Err:1 http://localhost:${APTHTTPPORT} unstable/main all alpha all 1 $ERRMSG E: Failed to fetch $BADFETCH $ERRMSG -E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?" aptget install alpha "$@" +E: Unable to fetch some archives, maybe run apt update or try with --fix-missing?" aptget install alpha "$@" } runwithbaduri "beeta_1_all.deb%0a%0a201%20URI%20Done%0aURI:%20http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb%0aFilename:%20${TMPWORKINGDIRECTORY}/rootdir/var/cache/apt/archives/partial/alpha_1_all.deb%0aSize:%2020672%0aLast-Modified:%20Fri,%2018%20Jan%202019%2009:52:02%20+0000%0aSHA256-Hash:%20${SHA256}%0aChecksum-FileSize-Hash:%2012345%0a%0a%0a" 'SECURITY: URL redirect target contains control characters, rejecting.' -o Acquire::Send-URI-Encoded=false rm -rf rootdir/var/lib/apt/lists @@ -77,4 +77,4 @@ E: Failed to fetch http://localhost:${APTHTTPPORT}/pool/beeta_1_all.deb Hash Su - SHA256:DEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF - Filesize:12345 [weak] Last modification reported: Fri, 18 Jan 2019 09:52:02 +0000 -E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?" aptget install alpha +E: Unable to fetch some archives, maybe run apt update or try with --fix-missing?" aptget install alpha diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages index f3fed04..f93e10e 100755 --- a/test/integration/test-disappearing-packages +++ b/test/integration/test-disappearing-packages @@ -60,23 +60,12 @@ all files have been overwritten by other packages: 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" ] && [ "$(id -u "$SUDO_USER")" -gt 0 ]; 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' ' +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 diff --git a/test/integration/test-dont-forget-conflicts-via-unknown-architectures b/test/integration/test-dont-forget-conflicts-via-unknown-architectures index 07d5d8f..f8b41c6 100755 --- a/test/integration/test-dont-forget-conflicts-via-unknown-architectures +++ b/test/integration/test-dont-forget-conflicts-via-unknown-architectures @@ -6,6 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'arm64' configdpkgnoopchroot +allowremovemanual buildsimplenativepackage 'pkga' 'arm64' '1' 'stable' buildsimplenativepackage 'pkgb' 'arm64' '1' 'stable' @@ -38,6 +39,6 @@ testsuccess apt update #apt upgrade pkga -o Debug::pkgDpkgPm=1 -y -o Dpkg::use-pty=0 rm -f rootdir/var/cache/apt/*.bin -testsuccess apt upgrade pkga -y +testsuccess apt install pkga -y testdpkginstalled 'pkga' testdpkgnotinstalled 'pkgb' diff --git a/test/integration/test-dpkg-i-apt-install-fix-broken b/test/integration/test-dpkg-i-apt-install-fix-broken index 0b75b5f..2529331 100755 --- a/test/integration/test-dpkg-i-apt-install-fix-broken +++ b/test/integration/test-dpkg-i-apt-install-fix-broken @@ -14,6 +14,30 @@ setupaptarchive testfailure dpkg -i incoming/autopkgtest-*.deb testsuccessequal 'Reading package lists... Building dependency tree... +Correcting dependencies...Install autopkgtest-satdep:amd64 () +[0] Install:autopkgtest-satdep:amd64 () +[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64) +[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64) +[0] Install:debhelper:amd64 (autopkgtest-satdep:amd64 -> debhelper:amd64=1) + Done +Solving dependencies...Install debhelper:amd64 (M) +Install autopkgtest-satdep:amd64 () +[0] Install:autopkgtest-satdep:amd64 () +[0] Install:autopkgtest-satdep:amd64=1 (autopkgtest-satdep:amd64) +[0] Install:debhelper:amd64=1 (autopkgtest-satdep:amd64) +[0] Install:debhelper:amd64 (autopkgtest-satdep:amd64 -> debhelper:amd64=1) + +The following additional packages will be installed: + debhelper +The following NEW packages will be installed: + debhelper +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +1 not fully installed or removed. +Inst debhelper (1 stable [all]) +Conf debhelper (1 stable [all]) +Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::APT::Solver=1 --solver 3.0 +testsuccessequal 'Reading package lists... +Building dependency tree... Correcting dependencies... MarkInstall autopkgtest-satdep:amd64 < 1 @iU K Nb Ib > FU=0 MarkInstall debhelper:amd64 < none -> 1 @un uN > FU=0 Starting pkgProblemResolver with broken count: 0 @@ -31,4 +55,4 @@ The following NEW packages will be installed: 1 not fully installed or removed. Inst debhelper (1 stable [all]) Conf debhelper (1 stable [all]) -Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1 +Conf autopkgtest-satdep (1 stable [amd64])' apt install -fso Debug::pkgProblemResolver=1 -o DEbug::pkgDepCache::Marker=1 --solver internal diff --git a/test/integration/test-explore-or-groups-in-markinstall b/test/integration/test-explore-or-groups-in-markinstall index fe7e998..60de591 100755 --- a/test/integration/test-explore-or-groups-in-markinstall +++ b/test/integration/test-explore-or-groups-in-markinstall @@ -55,7 +55,11 @@ _testsuccessheadtailequal() { msggroup } testsuccessheadequal() { - _testsuccessheadtailequal 'head' "$@" + msg="$1" + shift + testsuccess "$@" + cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess-no-sim-equal.output" + testsuccessequal "$msg" awk '{print} /not upgraded.$/ {exit}' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess-no-sim-equal.output" } testsuccesstailequal() { _testsuccessheadtailequal 'tail' "$@" @@ -63,14 +67,14 @@ testsuccesstailequal() { checkfoos() { msgmsg 'Install checks with foos dependency type' "$2" for level in 0 1 2; do - testsuccessheadequal 7 "Reading package lists... + testsuccessheadequal "Reading package lists... Building dependency tree... The following additional packages will be installed: okay The following NEW packages will be installed: foo-${1}-level${level} okay 0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-level${level} -s - testsuccessheadequal 9 "Reading package lists... + testsuccessheadequal "Reading package lists... Building dependency tree... The following additional packages will be installed: upgrade @@ -81,7 +85,7 @@ The following packages will be upgraded: 1 upgraded, 1 newly installed, 0 to remove and 2 not upgraded." apt install foo-${1}-upgrade-level${level} -s done - testsuccessheadequal 7 "Reading package lists... + testsuccessheadequal "Reading package lists... Building dependency tree... The following additional packages will be installed: okay @@ -90,7 +94,8 @@ The following NEW packages will be installed: 0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-conflict -s } checkfoos 'd' 'Depends' -checkfoos 'r' 'Recommends' +# FIXME? The 3.0 solver solves Recommends after Depends, so they do not influence our decisions here. +[ "$APT_SOLVER" = "3.0" ] || checkfoos 'r' 'Recommends' testsuccessequal 'Reading package lists... Building dependency tree... @@ -124,9 +129,9 @@ if $TEST_WITH_APTITUDE; then Need to get 0 B/84 B of archives. After unpacking 86.0 kB will be used. Would download/install/remove packages.' testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-d-level2 -sy - testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-level2 -sy + [ "$APT_SOLVER" = "3.0" ] || testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-level2 -sy # FIXME: See above for 3.0 testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-d-conflict -sy - testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-conflict -sy + [ "$APT_SOLVER" = "3.0" ] || testsuccesstailequal 3 "$OKAYAPTITUDE" aptitude install foo-r-conflict -sy # FIXME: See above for 3.0 fi BADSOLVETEXT='Reading package lists... @@ -137,17 +142,50 @@ 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: ' +BADSOLVETEXT3='Reading package lists... +Building dependency tree... +Solving dependencies... +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 "$BADSOLVETEXT The following packages have unmet dependencies: bad-level0 : Depends: unknown but it is not installable bad-upgrade-level0 : Depends: unknown but it is not installable -E: Unable to correct problems, you have held broken packages." apt install bad-upgrade-level1 -s +E: Unable to correct problems, you have held broken packages." apt install bad-upgrade-level1 -s --solver internal +testfailureequal "$BADSOLVETEXT3 +The following packages have unmet dependencies: + bad-upgrade-level1 : Depends: bad-upgrade-level0 (>= 2) but 1 is to be installed + Depends: unneeded2 but it is not going to be installed +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. bad-upgrade-level0:amd64=2 is selected as an upgrade because: + 1. bad-upgrade-level1:amd64=2 is selected as an upgrade + 2. bad-upgrade-level1:amd64=2 Depends bad-upgrade-level0 (>= 2) + 2. bad-upgrade-level0:amd64=2 Depends unknown + but none of the choices are installable: + [no choices]" apt install bad-upgrade-level1 -s --solver 3.0 testfailureequal "$BADSOLVETEXT The following packages have unmet dependencies: bad-conflict-level0 : Conflicts: bad-conflict-level2 but 1 is to be installed bad-level0 : Depends: unknown but it is not installable -E: Unable to correct problems, you have held broken packages." apt install bad-conflict-level2 -s +E: Unable to correct problems, you have held broken packages." apt install bad-conflict-level2 -s --solver internal +testfailureequal "$BADSOLVETEXT3 +The following packages have unmet dependencies: + bad-conflict-level2 : Depends: bad-conflict-level1 but it is not going to be installed + Depends: unneeded2 but it is not going to be installed +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. bad-conflict-level1:amd64 is selected for install because: + 1. bad-conflict-level2:amd64=1 is selected for install + 2. bad-conflict-level2:amd64 Depends bad-conflict-level1 + 2. bad-conflict-level1:amd64 Depends bad-conflict-level0 + but none of the choices are installable: + - bad-conflict-level0:amd64 is not selected for install because: + 1. bad-conflict-level2:amd64=1 is selected for install as above + 2. bad-conflict-level0:amd64 Conflicts bad-conflict-level2" apt install bad-conflict-level2 -s --solver 3.0 if $TEST_WITH_APTITUDE; then testsuccesstailequal 6 'The following packages have been kept back: diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol index 485a770..cbfd7b7 100755 --- a/test/integration/test-external-dependency-solver-protocol +++ b/test/integration/test-external-dependency-solver-protocol @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'amd64' 'i386' +allowremovemanual insertinstalledpackage 'cool' 'all' '1' insertinstalledpackage 'stuff' 'all' '1' @@ -113,17 +114,13 @@ 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. +Use 'apt autoremove' to remove it. The following packages will be REMOVED: cool* somestuff* 0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded. @@ -139,6 +136,43 @@ 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" +rm -f "$APT_EDSP_DUMP_FILENAME" +testfailure apt upgrade --solver dump +testsuccess test -s "$APT_EDSP_DUMP_FILENAME" +testsuccessequal "Request: EDSP 0.5 +Architecture: amd64 +Architectures: amd64 i386 +Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee +Upgrade-All: yes +Upgrade: yes +Forbid-New-Install: no +Forbid-Remove: yes +Solver: dump" awk '/^$/ {exit} {print}' "$APT_EDSP_DUMP_FILENAME" + +rm -f "$APT_EDSP_DUMP_FILENAME" +testfailure aptget upgrade --solver dump +testsuccess test -s "$APT_EDSP_DUMP_FILENAME" +testsuccessequal "Request: EDSP 0.5 +Architecture: amd64 +Architectures: amd64 i386 +Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee +Upgrade-All: yes +Upgrade: yes +Forbid-New-Install: yes +Forbid-Remove: yes +Solver: dump" awk '/^$/ {exit} {print}' "$APT_EDSP_DUMP_FILENAME" + +rm -f "$APT_EDSP_DUMP_FILENAME" +testfailure aptget dist-upgrade --solver dump +testsuccess test -s "$APT_EDSP_DUMP_FILENAME" +testsuccessequal "Request: EDSP 0.5 +Architecture: amd64 +Architectures: amd64 i386 +Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee +Upgrade-All: yes +Dist-Upgrade: yes +Solver: dump" awk '/^$/ {exit} {print}' "$APT_EDSP_DUMP_FILENAME" + testsuccess aptget dist-upgrade -s testsuccess aptget dist-upgrade -s --solver apt @@ -192,6 +226,7 @@ Source: stuff Source-Version: 3 Priority: optional Section: other +Size: 42 APT-Release: a=experimental,n=experimental,c=main,b=all APT-Pin: 1 @@ -205,6 +240,7 @@ Source: stuff Source-Version: 2 Priority: optional Section: other +Size: 42 APT-Release: a=unstable,n=sid,c=main,b=all APT-Pin: 500 @@ -293,18 +329,32 @@ 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)' +cat > Packages <= 2), ccc +Depends: ddd, eee (>= 42), fff +Recommends: ggg, hhh (>> 42), iii +Suggests: jjj, kkk (= 42), lll +Enhances: mmm, nnn (>> 42), ooo +Replaces: ppp, qqq (<< 42), rrr +Conflicts: sss, ttt (= 42), uuu +Breaks: vvv, www (<= 42), xxx +EOF + configarchitecture 'amd64' 'i386' for arch in 'amd64' 'i386' 'armel' 'armhf'; do insertinstalledpackage "dummy-httpd-$arch" "$arch" '1' 'Provides: httpd' done buildsimplenativepackage 'dummy-webserver' 'all' '1' 'unstable' 'Provides: httpd Multi-Arch: foreign' -testfailure apt install -s dummy-webserver -testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb -testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --solver apt -testfailure apt install -s ./incoming/dummy-webserver_1_all.deb --solver dump +testfailure apt install -s dummy-webserver --with-source Packages +testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --with-source Packages +testsuccess apt install -s ./incoming/dummy-webserver_1_all.deb --solver apt --with-source Packages +testfailure apt install -s ./incoming/dummy-webserver_1_all.deb --solver dump --with-source Packages -testsuccess aptcache showpkg dummy-webserver --with-source ./incoming/dummy-webserver_1_all.deb +testsuccess aptcache showpkg dummy-webserver --with-source ./incoming/dummy-webserver_1_all.deb --with-source Packages cp -a rootdir/tmp/testsuccess.output showpkg.output testequal 'Reverse Depends: Dependencies: @@ -317,3 +367,8 @@ Provides: httpd Provides: httpd Provides: httpd Provides: httpd' grep 'Provides:' "$APT_EDSP_DUMP_FILENAME" + +if dpkg-checkbuilddeps -d 'dctrl-tools' /dev/null >/dev/null 2>&1; then + testsuccessequal "$(cat Packages) +" grep-dctrl -P depparse -s 'Package,Version,Architecture,Pre-Depends,Depends,Recommends,Suggests,Enhances,Replaces,Conflicts,Breaks' "$APT_EDSP_DUMP_FILENAME" +fi diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol index 192f21b..1a04d24 100755 --- a/test/integration/test-external-installation-planner-protocol +++ b/test/integration/test-external-installation-planner-protocol @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same' diff --git a/test/integration/test-handle-redirect-as-used-mirror-change b/test/integration/test-handle-redirect-as-used-mirror-change index a6f8b78..1ce1232 100755 --- a/test/integration/test-handle-redirect-as-used-mirror-change +++ b/test/integration/test-handle-redirect-as-used-mirror-change @@ -67,7 +67,18 @@ Get:3 http://0.0.0.0:${APTHTTPPORT} unstable/main all Packages [$(stat -c %s apt 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 +All packages are up to date." apt update -o Acquire::Progress::Ignore::ShowErrorText=true +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 +Ign:3 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main all Packages +Ign:4 http://0.0.0.0:${APTHTTPPORT}/storage unstable/main Translation-en +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 -o Acquire::Progress::Ignore::ShowErrorText=false find aptarchive -name 'InRelease' -delete rm -rf rootdir/var/lib/apt/lists diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups index 564ea88..5c882b5 100755 --- a/test/integration/test-handling-broken-orgroups +++ b/test/integration/test-handling-broken-orgroups @@ -47,6 +47,11 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. coolstuff-broken:i386=1.0-1 is selected for install + 2. coolstuff-broken:i386 Depends cool2 | stuff2 + but none of the choices are installable: + [no choices]' aptget install coolstuff-broken --solver 3.0 -s testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -58,7 +63,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken --solver internal -s testsuccessequal 'Reading package lists... Building dependency tree... @@ -94,6 +99,11 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. extrastuff:i386=1.0-1 is not selected for install + 2. extrastuff:i386=1.0-1 is selected for install because: + 1. coolstuff-provided-broken:i386=1.0-1 is selected for install + 2. coolstuff-provided-broken:i386 Depends cool2 | stuff-abi-2' aptget install coolstuff-provided-broken --solver 3.0 -s testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -105,4 +115,4 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken --solver internal -s diff --git a/test/integration/test-history b/test/integration/test-history new file mode 100755 index 0000000..47829e1 --- /dev/null +++ b/test/integration/test-history @@ -0,0 +1,40 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +buildsimplenativepackage 'pkg1' 'amd64' '1' 'stable' +buildsimplenativepackage 'pkg2' 'amd64' '1' 'stable' + + +setupaptarchive + +cathistory() { + sed rootdir/var/log/apt/history.log -re 's/^(Commandline|Start-Date|End-Date):.*/\1: dummy/' +} + + +testsuccess aptget install pkg1 + +testequal " +Start-Date: dummy +Commandline: dummy +Install: pkg1:amd64 (1) +End-Date: dummy" cathistory + +testsuccess aptget install pkg2 --comment="A test comment" + +testequal " +Start-Date: dummy +Commandline: dummy +Install: pkg1:amd64 (1) +End-Date: dummy + +Start-Date: dummy +Commandline: dummy +Comment: A test comment +Install: pkg2:amd64 (1) +End-Date: dummy" cathistory diff --git a/test/integration/test-ignore-provides-if-versioned-breaks b/test/integration/test-ignore-provides-if-versioned-breaks index ebcbecf..87e609b 100755 --- a/test/integration/test-ignore-provides-if-versioned-breaks +++ b/test/integration/test-ignore-provides-if-versioned-breaks @@ -32,7 +32,12 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Breaks: foo-same' setupaptarchive - +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-breaker-none:i386=1.0 is selected for install + 2. foo-breaker-none:i386 is not selected for install because: + 1. foo-provider:i386=1.0 is selected for install + 2. foo-breaker-none:i386 Breaks foo + [selected foo-provider:i386=1.0]' aptget install foo-provider foo-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -43,7 +48,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... @@ -71,6 +76,12 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-foreign-provider:i386=1.0 is selected for install + 2. foo-foreign-provider:i386=1.0 is not selected for install because: + 1. foo-foreign-breaker-none:i386=1.0 is selected for install + 2. foo-foreign-breaker-none:i386 Breaks foo-foreign + [selected foo-foreign-breaker-none:i386]' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -81,7 +92,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... @@ -109,6 +120,12 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-same-breaker-none:i386=1.0 is selected for install + 2. foo-same-breaker-none:i386 is not selected for install because: + 1. foo-same-provider:i386=1.0 is selected for install + 2. foo-same-breaker-none:i386 Breaks foo-same + [selected foo-same-provider:i386=1.0]' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -119,7 +136,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... diff --git a/test/integration/test-ignore-provides-if-versioned-conflicts b/test/integration/test-ignore-provides-if-versioned-conflicts index 3243cfb..cdf6965 100755 --- a/test/integration/test-ignore-provides-if-versioned-conflicts +++ b/test/integration/test-ignore-provides-if-versioned-conflicts @@ -33,6 +33,12 @@ insertpackage 'unstable' 'foo-same-breaker-none' 'i386' '1.0' 'Conflicts: foo-sa setupaptarchive +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-breaker-none:i386=1.0 is selected for install + 2. foo-breaker-none:i386 is not selected for install because: + 1. foo-provider:i386=1.0 is selected for install + 2. foo-breaker-none:i386 Conflicts foo + [selected foo-provider:i386=1.0]' aptget install foo-provider foo-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -43,7 +49,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-provider foo-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... @@ -71,6 +77,12 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-foreign-provider:i386=1.0 is selected for install + 2. foo-foreign-provider:i386=1.0 is not selected for install because: + 1. foo-foreign-breaker-none:i386=1.0 is selected for install + 2. foo-foreign-breaker-none:i386 Conflicts foo-foreign + [selected foo-foreign-breaker-none:i386]' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -81,7 +93,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-foreign-provider foo-foreign-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... @@ -109,6 +121,12 @@ 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 +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-same-breaker-none:i386=1.0 is selected for install + 2. foo-same-breaker-none:i386 is not selected for install because: + 1. foo-same-provider:i386=1.0 is selected for install + 2. foo-same-breaker-none:i386 Conflicts foo-same + [selected foo-same-provider:i386=1.0]' aptget install foo-same-provider foo-same-breaker-none -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -119,7 +137,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-same-provider foo-same-breaker-none -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index 208bd14..20a0968 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -45,10 +45,6 @@ testprotected() { 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... @@ -60,7 +56,7 @@ The following packages were automatically installed and are no longer required: ${CURRENTKERNEL}+variant (5-1) ${CURRENTKERNEL}-686-pae:i386 (5-1) ${CURRENTKERNEL}-dbg (5-1) -Use '$AUTOREMOVE' to remove them. +Use 'apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV -o APT::Protect-Kernels=0 testsuccessequal "Reading package lists... Building dependency tree... @@ -74,13 +70,13 @@ The following packages were automatically installed and are no longer required: ${CURRENTKERNEL}-686-pae:i386 (5-1) ${CURRENTKERNEL}-dbg (5-1) ${CURRENTKERNEL}-rt (5-1) -Use '$AUTOREMOVE' to remove them. +Use 'apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -sV --ignore-hold -o APT::Protect-Kernels=0 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. +Use 'apt autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small -o APT::Protect-Kernels=0 testequal "Reading package lists... Building dependency tree... diff --git a/test/integration/test-method-gpgv b/test/integration/test-method-gpgv index 0f014e3..7d0d867 100755 --- a/test/integration/test-method-gpgv +++ b/test/integration/test-method-gpgv @@ -7,7 +7,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'i386' -cat > faked-apt-key < faked-gpgv <&\${GPGSTATUSFD} gpgv.output cat gpgv.output EOF -chmod +x faked-apt-key +chmod +x faked-gpgv testgpgv() { echo "$4" > gpgv.output @@ -38,53 +38,113 @@ testgpgv() { testrun() { testgpgv 'Good signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Good signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Good signed with long keyid and asserted' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE [GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 rsa1024' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Good signed with fingerprint and asserted' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE [GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 rsa1024' + testsuccess grep '^201 URI Done$' method.output + + testgpgv 'Not asserted in the next level' 'SoonWorthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) +[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE +[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 brainpoolP256r1' + testsuccess grep '^201 URI Done$' method.output + + testgpgv 'Not asserted in the future level' 'LaterWorthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) +[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE +[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 nistp256' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Good subkey signed with long keyid' 'Good: GOODSIG 5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 5B6896415D44C43E Sebastian Subkey [GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Good subkey signed with fingerprint' 'Good: GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, 4281DEDBD466EAE8C1F4157E5B6896415D44C43E!' '[GNUPG:] GOODSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E Sebastian Subkey [GNUPG:] VALIDSIG 4281DEDBD466EAE8C1F4157E5B6896415D44C43E 2018-08-16 1534459673 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^201 URI Done$' method.output testgpgv 'Untrusted signed with long keyid' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 1 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^400 URI Failure$' method.output testsuccess grep '^\s\+Good:\s\+$' method.output testgpgv 'Untrusted signed with fingerprint' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 1 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output testgpgv 'Unasserted signed with long keyid' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE [GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 rsa1024' testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output testgpgv 'Unaserted signed with fingerprint' 'Worthless: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE, ' '' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE [GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 rsa1024' testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output testgpgv 'Weak signed with long keyid' 'Good: GOODSIG 5A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 2 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak algorithm (SHA1)$' method.output + testsuccess grep '^201 URI Done$' method.output testgpgv 'Weak signed with fingerprint' 'Good: GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' '34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE!' '[GNUPG:] GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 2 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' testsuccess grep '^Message: Signature by key 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE uses weak algorithm (SHA1)$' method.output + testsuccess grep '^201 URI Done$' method.output testgpgv 'No Pubkey with long keyid' 'NoPubKey: NO_PUBKEY E8525D47528144E2' '' '[GNUPG:] ERRSIG E8525D47528144E2 1 11 00 1472744666 9 [GNUPG:] NO_PUBKEY E8525D47528144E2' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: .*public key is not available' method.output testgpgv 'No Pubkey with fingerprint' 'NoPubKey: NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2' '' '[GNUPG:] ERRSIG DE66AECA9151AFA1877EC31DE8525D47528144E2 1 11 00 1472744666 9 [GNUPG:] NO_PUBKEY DE66AECA9151AFA1877EC31DE8525D47528144E2' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: .*public key is not available' method.output testgpgv 'Expired key with long keyid' 'Worthless: EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired , ' '' '[GNUPG:] EXPKEYSIG 4BC0A39C27CE74F9 Rex Expired [GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: The following signatures were invalid: EXPKEYSIG' method.output testgpgv 'Expired key with fingerprint' 'Worthless: EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired , ' '' '[GNUPG:] EXPKEYSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 Rex Expired [GNUPG:] VALIDSIG 891CC50E605796A0C6E733F74BC0A39C27CE74F9 2016-09-01 1472742629 0 4 0 1 11 00 891CC50E605796A0C6E733F74BC0A39C27CE74F9' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: The following signatures were invalid: EXPKEYSIG' method.output + + testgpgv 'Expired signature (gpgv-g10code)' 'Worthless: EXPSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) , ' '' '[GNUPG:] NEWSIG joe@example.org +[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 +[GNUPG:] SIG_ID pwbegSQxpqXn4lSZ1N4DLwyM4rc 2016-09-24 1474732092 +[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 +[GNUPG:] EXPSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) +[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-24 1474732092 1491040800 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: The following signatures were invalid: EXPSIG' method.output + + testgpgv 'Expired signature (gpgv-sq)' 'Bad: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) ' '' '[GNUPG:] NEWSIG joe@example.org +[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 +[GNUPG:] KEYEXPIRED 1491040800 +[GNUPG:] BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) +' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: The following signatures were invalid: BADSIG' method.output + + testgpgv 'GPG-untrusted digest (MD5)' 'Worthless: ERRSIG 5A90D141DBAC8DAE, ' '' '[GNUPG:] NEWSIG joe@example.org +[GNUPG:] KEY_CONSIDERED 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 0 +[GNUPG:] ERRSIG 5A90D141DBAC8DAE 1 1 00 1734647007 5 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' + testsuccess grep '^\s\+Good:\s\+$' method.output + testsuccess grep '^400 URI Failure$' method.output + testsuccess grep 'Message: The following signatures were invalid: ERRSIG' method.output } echo 'Test' > message.data @@ -106,8 +166,11 @@ EOF gpgvmethod() { echo "601 Configuration Config-Item: Debug::Acquire::gpgv=1 -Config-Item: Dir::Bin::apt-key=./faked-apt-key +Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv Config-Item: APT::Hashes::SHA1::Weak=true +Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1 +Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256 +Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048 600 URI Acquire URI: file://${TMPWORKINGDIRECTORY}/message.sig @@ -119,8 +182,11 @@ testrun gpgvmethod() { echo "601 Configuration Config-Item: Debug::Acquire::gpgv=1 -Config-Item: Dir::Bin::apt-key=./faked-apt-key +Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv Config-Item: APT::Hashes::SHA1::Weak=true +Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1 +Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256 +Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048 600 URI Acquire URI: file://${TMPWORKINGDIRECTORY}/message.sig @@ -133,8 +199,11 @@ testrun gpgvmethod() { echo "601 Configuration Config-Item: Debug::Acquire::gpgv=1 -Config-Item: Dir::Bin::apt-key=./faked-apt-key +Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv Config-Item: APT::Hashes::SHA1::Weak=true +Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1 +Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256 +Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048 600 URI Acquire URI: file://${TMPWORKINGDIRECTORY}/message.sig @@ -156,8 +225,11 @@ testsuccess grep 'verified because the public key is not available: GOODSIG' met gpgvmethod() { echo "601 Configuration Config-Item: Debug::Acquire::gpgv=1 -Config-Item: Dir::Bin::apt-key=./faked-apt-key +Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv Config-Item: APT::Hashes::SHA1::Weak=true +Config-Item: APT::Key::Assert-Pubkey-Algo=>=rsa2048,nistp256,brainpoolP256r1 +Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=rsa2048,nistp256 +Config-Item: APT::Key::Assert-Pubkey-Algo::Future=>=rsa2048 600 URI Acquire URI: file://${TMPWORKINGDIRECTORY}/message.sig @@ -184,18 +256,41 @@ setupaptarchive --no-update echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey [GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output -testsuccess apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 +testsuccess apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 rm -rf rootdir/var/lib/apt/lists echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey ' > gpgv.output -testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 +testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 rm -rf rootdir/var/lib/apt/lists echo '[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output -testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 +testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 rm -rf rootdir/var/lib/apt/lists echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Sebastian Subkey [GNUPG:] VALIDSIG 0000000000000000000000000000000000000000 2018-08-16 1534459673 0 4 0 1 11 00 4281DEDBD466EAE8C1F4157E5B6896415D44C43E' > gpgv.output -testfailure apt update -o Dir::Bin::apt-key="./faked-apt-key" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 +testfailure apt update -o APT::Key::GPGVCommand="$PWD/faked-gpgv" -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 rm -rf rootdir/var/lib/apt/lists + +gpgvmethod() { + echo "601 Configuration +Config-Item: Debug::Acquire::gpgv=1 +Config-Item: APT::Key::GPGVCommand=$PWD/faked-gpgv +Config-Item: APT::Hashes::SHA1::Weak=true +Config-Item: APT::Key::Assert-Pubkey-Algo::Next=>=invalid + +600 URI Acquire +URI: file://${TMPWORKINGDIRECTORY}/message.sig +Filename: ${TMPWORKINGDIRECTORY}/message.data +Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE! +" | runapt "${METHODSDIR}/gpgv" +} + + +echo '[GNUPG:] GOODSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) +[GNUPG:] VALIDSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 2016-09-01 1472742625 0 4 0 1 11 00 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE +[GNUPG:] ASSERT_PUBKEY_ALGO 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE 1 brainpoolP256r1' > gpgv.output + +msgtest "Warns about invalid specification" ">=invalid" +gpgvmethod >method.output 2>&1 || true +testsuccess --nomsg grep "Message: Unrecognized public key specification '>=invalid' in option APT::Key::Assert-Pubkey-Algo::Next" method.output diff --git a/test/integration/test-method-gpgv-legacy-keyring b/test/integration/test-method-gpgv-legacy-keyring index 3c3e453..89c45b2 100755 --- a/test/integration/test-method-gpgv-legacy-keyring +++ b/test/integration/test-method-gpgv-legacy-keyring @@ -7,29 +7,42 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture "amd64" -insertpackage 'unstable' 'foo' 'all' '1' +insertpackage 'testing' 'foo' 'all' '1' buildaptarchive setupaptarchive --no-update +changetowebserver -testsuccessequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B] -Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B] -Get:2 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main all Packages [246 B] -Get:3 file:${TMPWORKINGDIRECTORY}/aptarchive unstable/main Translation-en [224 B] +alias inrelease_size="stat -c %s aptarchive/dists/testing/InRelease" + +testsuccessequal "Get:1 http://localhost:${APTHTTPPORT} testing InRelease [$(inrelease_size) B] +Get:2 http://localhost:${APTHTTPPORT} testing/main all Packages [248 B] +Get:3 http://localhost:${APTHTTPPORT} testing/main Translation-en [225 B] Reading package lists..." aptget update -q -cat rootdir/etc/apt/trusted.gpg.d/*.gpg > rootdir/etc/apt/trusted.gpg -rm rootdir/etc/apt/trusted.gpg.d/*.gpg +mv rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg rootdir/etc/apt/trusted.gpg + +if test -e "${METHODSDIR}/sqv"; then + missing_key="The signatures couldn't be verified because no keyring is specified" +else + missing_key="The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5A90D141DBAC8DAE" +fi + +testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease +Reading package lists... +W: http://localhost:${APTHTTPPORT}/dists/testing/InRelease: Loading ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg from deprecated option Dir::Etc::Trusted" aptget update -q -o Dir::Etc::trusted=trusted.gpg -testwarningequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B] -Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1420 B] +testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease +Err:1 http://localhost:${APTHTTPPORT} testing InRelease + $missing_key Reading package lists... -W: file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details." aptget update -q +W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. OpenPGP signature verification failed: http://localhost:${APTHTTPPORT} testing InRelease: $missing_key +W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/testing/InRelease $missing_key +W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -q + +rmdir rootdir/etc/apt/trusted.gpg.d -# 2.4.0 regression: If the InRelease file was signed with two keys, fallback to trusted.gpg did not -# work: It ran the fallback, but then ignored the result, as keys were still missing. -signreleasefiles 'Joe Sixpack,Marvin Paranoid' -testwarningequal "Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1867 B] -Get:1 file:${TMPWORKINGDIRECTORY}/aptarchive unstable InRelease [1867 B] +testwarningequal "Hit:1 http://localhost:${APTHTTPPORT} testing InRelease Reading package lists... -W: file:${TMPWORKINGDIRECTORY}/aptarchive/dists/unstable/InRelease: Key is stored in legacy trusted.gpg keyring (${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details." aptget update -q -omsg=with-two-signatures +W: http://localhost:${APTHTTPPORT}/dists/testing/InRelease: Loading ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/trusted.gpg from deprecated option Dir::Etc::Trusted" aptget update -q -o Dir::Etc::trusted=trusted.gpg + diff --git a/test/integration/test-method-mirror b/test/integration/test-method-mirror index ce44b86..79c6754 100755 --- a/test/integration/test-method-mirror +++ b/test/integration/test-method-mirror @@ -124,9 +124,22 @@ msgmsg 'all mirrored via file' APTARCHIVE="$(readlink -f ./aptarchive)" sed -i -e "s#mirror+http://localhost:${APTHTTPPORT}#mirror+file:${APTARCHIVE}#" rootdir/etc/apt/sources.list.d/* testrun '*_localhost_*' '*_aptarchive_mirror.txt.gz_*' +sed -i -e 's#/mirror\.txt\.gz stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/* + +mv rootdir/etc/apt/sources.list.d rootdir/etc/apt/sources.list.d.bak +mkdir rootdir/etc/apt/sources.list.d +msgmsg 'fail gracefully if mirror uri has no filename' +echo "deb mirror://localhost:${APTHTTPPORT}/ stable main" > rootdir/etc/apt/sources.list.d/mirrordir.list +testfailure apt update + +msgmsg 'but succeed if it is indeed a mirror list' +ln -s mirror.txt aptarchive/index.html +testsuccess apt update +rm aptarchive/index.html rootdir/etc/apt/sources.list.d/mirrordir.list +rmdir rootdir/etc/apt/sources.list.d +mv rootdir/etc/apt/sources.list.d.bak rootdir/etc/apt/sources.list.d msgmsg 'fallback mirrors are used if needed' 'as usual' -sed -i -e 's#/mirror\.txt\.gz stable#/mirror.txt stable#' rootdir/etc/apt/sources.list.d/* echo "http://localhost:${APTHTTPPORT}/failure2 priority:3 http://localhost:${APTHTTPPORT}/redirectme priority:2 http://localhost:${APTHTTPPORT}/failure priority:1" > aptarchive/mirror.txt @@ -242,7 +255,6 @@ echo "file:/nonexistent/apt/archive priority:1 http://localhost:${APTHTTPPORT}/redirectme " > aptarchive/mirror.txt testsuccessequal "Get:1 foo+file:${APTARCHIVE}/mirror.txt Mirrorlist [$(stat -c%s 'aptarchive/mirror.txt') B] -Get:2 foo+file:/nonexistent/apt/archive unstable InRelease Ign:2 foo+file:/nonexistent/apt/archive unstable InRelease File not found - /nonexistent/apt/archive/dists/unstable/InRelease (2: No such file or directory) Hit:2 foo+http://localhost:${APTHTTPPORT}/redirectme unstable InRelease diff --git a/test/integration/test-multiarch-allowed b/test/integration/test-multiarch-allowed index fc63d0e..ca13cc5 100755 --- a/test/integration/test-multiarch-allowed +++ b/test/integration/test-multiarch-allowed @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' insertpackage 'unstable' 'foo' 'amd64,i386' '1' 'Multi-Arch: allowed' @@ -63,20 +64,41 @@ Inst needsfoo:i386 (1 unstable [i386]) Conf foo:i386 (1 unstable [i386]) Conf needsfoo:i386 (1 unstable [i386])' aptget install needsfoo:i386 -s # FIXME: same problem, but two different unmet dependency messages depending on install order +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needsfoo:i386=1 is selected for install + 2. needsfoo:i386 Depends foo:i386 + but none of the choices are installable: + - foo:i386 is not selected for install because: + 1. foo:amd64=1 is selected for install + 2. foo:i386 Conflicts foo" aptget install needsfoo:i386 foo:amd64 -s --solver 3.0 testfailureequal "$BADPREFIX The following packages have unmet dependencies: foo : Conflicts: foo:i386 but 1 is to be installed foo:i386 : Conflicts: foo but 1 is to be installed -E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s +E: Unable to correct problems, you have held broken packages." aptget install needsfoo:i386 foo:amd64 -s --solver internal +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needsfoo:i386=1 is selected for install + 2. needsfoo:i386 Depends foo:i386 + but none of the choices are installable: + - foo:i386 is not selected for install because: + 1. foo:amd64=1 is selected for install + 2. foo:i386 Conflicts foo" aptget install foo:amd64 needsfoo:i386 -s --solver 3.0 testfailureequal "$BADPREFIX The following packages have unmet dependencies: needsfoo:i386 : Depends: foo:i386 but it is not installable -E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s +E: Unable to correct problems, you have held broken packages." aptget install foo:amd64 needsfoo:i386 -s --solver internal +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needsfoo:amd64=1 is selected for install + 2. needsfoo:amd64 Depends foo + but none of the choices are installable: + - foo:amd64 is not selected for install because: + 1. foo:i386=1 is selected for install + 2. foo:amd64 Conflicts foo:i386" aptget install needsfoo foo:i386 -s --solver 3.0 testfailureequal "$BADPREFIX The following packages have unmet dependencies: foo : Conflicts: foo:i386 but 1 is to be installed foo:i386 : Conflicts: foo but 1 is to be installed -E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s +E: Unable to correct problems, you have held broken packages." aptget install needsfoo foo:i386 -s --solver internal solveableinsinglearch1() { testsuccessequal "Reading package lists... @@ -127,6 +149,24 @@ Conf $1 (1 unstable [amd64])" aptget install $1 foo:i386 -s testneedsfooallgood 'needsfooany' testneedsfooallgood 'needsfoover1' +if [ "$APT_SOLVER" = "3.0" ]; then +NEEDSFOO2NATIVE="$BADPREFIX +The following packages have unmet dependencies: + needsfoover2 : Depends: foo:any (>= 2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needsfoover2:amd64=1 is selected for install + 2. needsfoover2:amd64 Depends foo:any (>= 2) + but none of the choices are installable: + [no choices]" +NEEDSFOO2FOREIGN="$BADPREFIX +The following packages have unmet dependencies: + needsfoover2:i386 : Depends: foo:any (>= 2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needsfoover2:i386=1 is selected for install + 2. needsfoover2:i386 Depends foo:any (>= 2) + but none of the choices are installable: + [no choices]" +else NEEDSFOO2NATIVE="$BADPREFIX The following packages have unmet dependencies: needsfoover2 : Depends: foo:any (>= 2) @@ -135,32 +175,69 @@ NEEDSFOO2FOREIGN="$BADPREFIX The following packages have unmet dependencies: needsfoover2:i386 : Depends: foo:any (>= 2) E: Unable to correct problems, you have held broken packages." +fi 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() { + testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:amd64=1 is selected for install + 2. foo:amd64=1 is not selected for install because: + 1. hatesfoo:amd64=1 is selected for install + 2. hatesfoo:amd64 Conflicts foo' aptget install foo hatesfoo -s --solver 3.0 + + if [ "$(getarchitectures)" = "amd64 " ]; then + testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:amd64=1 is selected for install + 2. foo:amd64=1 is not selected for install because: + 1. hatesfooany:amd64=1 is selected for install + 2. hatesfooany:amd64 Conflicts foo:any' aptget install foo hatesfooany -s --solver 3.0 + else + testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:amd64=1 is selected for install + 2. foo:amd64=1 is not selected for install because: + 1. hatesfooany:amd64=1 is selected for install + 2. hatesfooany:amd64 Conflicts foo:any + [selected hatesfooany:amd64]' aptget install foo hatesfooany -s --solver 3.0 + fi + testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:amd64=1 is selected for install + 2. foo:amd64=1 is not selected for install because: + 1. hatesfoonative:amd64=1 is selected for install + 2. hatesfoonative:amd64 Conflicts foo:amd64' aptget install foo hatesfoonative -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoo -s --solver internal # the message differs slightly between single and multiarch - testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s + testfailuremsg 'E: Unable to correct problems, you have held broken packages.' aptget install foo hatesfooany -s --solver internal 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 +E: Unable to correct problems, you have held broken packages." aptget install foo hatesfoonative -s --solver internal } solveableinsinglearch2 +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:i386=1 is selected for install + 2. foo:i386=1 is not selected for install because: + 1. hatesfoo:amd64=1 is selected for install + 2. hatesfoo:amd64 Conflicts foo:i386" aptget install foo:i386 hatesfoo -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfoo -s --solver internal +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:i386=1 is selected for install + 2. foo:i386=1 is not selected for install because: + 1. hatesfooany:amd64=1 is selected for install + 2. hatesfooany:amd64 Conflicts foo:any + [selected hatesfooany:amd64]" aptget install foo:i386 hatesfooany -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install foo:i386 hatesfooany -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: @@ -171,11 +248,16 @@ Inst hatesfoonative (1 unstable [amd64]) Conf foo:i386 (1 unstable [i386]) Conf hatesfoonative (1 unstable [amd64])' aptget install foo:i386 hatesfoonative -s +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needscoolfoo:i386=1 is selected for install + 2. needscoolfoo:i386 Depends coolfoo:i386 + but none of the choices are installable: + [no choices]" aptget install needscoolfoo:i386 -s --solver 3.0 testfailureequal "$BADPREFIX The following packages have unmet dependencies: needscoolfoo:i386 : Depends: coolfoo:i386 but it is not installable Depends: coolbar:i386 but it is not installable -E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s +E: Unable to correct problems, you have held broken packages." aptget install needscoolfoo:i386 -s --solver internal solveneedscoolfooanyin() { local NEEDSCOOL='needscoolfooany' if [ "$1" != 'amd64' ]; then NEEDSCOOL="${NEEDSCOOL}:$1"; fi @@ -243,15 +325,25 @@ Inst needscoolfoover1 (1 unstable [amd64]) Conf coolfoo (1 unstable [amd64]) Conf coolfoover (1 unstable [amd64]) Conf needscoolfoover1 (1 unstable [amd64])' aptget install needscoolfoover1 -s + testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needscoolfoover2:amd64=1 is selected for install + 2. needscoolfoover2:amd64 Depends coolfoo:any (>= 2) + but none of the choices are installable: + [no choices]" aptget install needscoolfoover2 -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover2 -s --solver internal + testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. needscoolfoover3:amd64=1 is selected for install + 2. needscoolfoover3:amd64 Depends coolfoo:any (>= 2) + but none of the choices are installable: + [no choices]" aptget install needscoolfoover3 -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install needscoolfoover3 -s --solver internal } solveableinsinglearch3 diff --git a/test/integration/test-multiarch-barbarian b/test/integration/test-multiarch-barbarian index 293f227..b897834 100755 --- a/test/integration/test-multiarch-barbarian +++ b/test/integration/test-multiarch-barbarian @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' buildsimplenativepackage 'foreign-foo' 'amd64,i386' '1' 'stable' 'Multi-Arch: foreign diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign index 713b27b..a04b854 100755 --- a/test/integration/test-multiarch-foreign +++ b/test/integration/test-multiarch-foreign @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' 'armel' insertpackage 'unstable' 'cool-foo' 'amd64,i386' '1.0' 'Depends: foo' @@ -178,16 +179,27 @@ 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: ' + testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. hates-foo:amd64=1.0 is selected for install + 2. hates-foo:amd64 is not selected for install because: + 1. ${1%:*}:$4=1.0 is selected for install + 2. hates-foo:amd64 Conflicts foo + [selected ${1%:*}:$4=1.0]" aptget install $1 hates-foo -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install $1 hates-foo -s --solver internal + testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo:$4=1.0 is selected for install + 2. foo:$4=1.0 is not selected for install because: + 1. $2:amd64=1.0 is selected for install + 2. $2:amd64 Conflicts foo:$4" aptget install $1 $2 -s --solver 3.0 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 +E: Unable to correct problems, you have held broken packages." aptget install $1 $2 -s --solver internal testsuccessequal "Reading package lists... Building dependency tree... The following NEW packages will be installed: diff --git a/test/integration/test-not-upgrading-removed-depends b/test/integration/test-not-upgrading-removed-depends new file mode 100755 index 0000000..cc16bba --- /dev/null +++ b/test/integration/test-not-upgrading-removed-depends @@ -0,0 +1,53 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'unstable' 'untouchable-for-solving' 'all' '1' 'Conflicts: main' +insertpackage 'installed' 'bad' 'all' '1' 'Depends: main (= 1)' +insertpackage 'unstable' 'bad' 'all' '2' 'Depends: main (= 2), untouchable-for-solving' + +insertpackage 'installed' 'main' 'all' '1' +insertpackage 'unstable' 'main' 'all' '2' 'Breaks: bad' + +insertpackage 'unstable' 'else' 'all' '1' +insertpackage 'unstable' 'meta' 'all' '1' 'Depends: main (= 2) | else' + +setupaptarchive +testsuccess aptmark auto ~i + +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + bad +The following packages will be upgraded: + main +1 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv bad [1] +Inst main [1] (2 unstable [all]) +Conf main (2 unstable [all])' apt install -s main +testsuccess apt install -s main -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +testfailure grep 'untouchable-for-solving' rootdir/tmp/testsuccess.output +testsuccessequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following additional packages will be installed: + main +The following packages will be REMOVED: + bad +The following NEW packages will be installed: + meta +The following packages will be upgraded: + main +1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. +Remv bad [1] +Inst main [1] (2 unstable [all]) +Inst meta (1 unstable [all]) +Conf main (2 unstable [all]) +Conf meta (1 unstable [all])' apt install -s meta +testsuccess apt install -s meta -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +testfailure grep 'untouchable-for-solving' rootdir/tmp/testsuccess.output diff --git a/test/integration/test-parse-all-archs-into-cache b/test/integration/test-parse-all-archs-into-cache index 7485431..b1992e7 100755 --- a/test/integration/test-parse-all-archs-into-cache +++ b/test/integration/test-parse-all-archs-into-cache @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'i386' +allowremovemanual insertpackage 'unstable' 'bar' 'i386' '1' 'Depends: foo' insertpackage 'unstable' 'foo' 'i386' '1' 'Multi-Arch: foreign diff --git a/test/integration/test-phased-updates-upgrade b/test/integration/test-phased-updates-upgrade index 4f415f2..15464bd 100755 --- a/test/integration/test-phased-updates-upgrade +++ b/test/integration/test-phased-updates-upgrade @@ -237,7 +237,7 @@ Conf depends-phased-dep (3 unstable-updates [all]) Conf phased-new (3 unstable-updates [all]) Conf depends-phased-new (3 unstable-updates [all]) Conf phased-security (3 unstable-updates [all]) -Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget $upgrade -s -q depends-phased-dep +Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget $upgrade -s -q depends-phased-dep --solver internal # FIXME? 3.0 does not support overrides of the policy done testsuccessequal "Reading package lists... @@ -257,7 +257,7 @@ Inst phased-security-same [1] (3 unstable-security, unstable-updates [all]) Conf phased-dep (3 unstable-updates [all]) Conf depends-phased-dep (3 unstable-updates [all]) Conf phased-security (3 unstable-updates [all]) -Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q depends-phased-dep +Conf phased-security-same (3 unstable-security, unstable-updates [all])" aptget upgrade -s -q depends-phased-dep --solver internal # FIXME? 3.0 does not support overrides of the policy # install does not respect phasing testsuccessequal "Reading package lists... diff --git a/test/integration/test-policy-pinning b/test/integration/test-policy-pinning index dc3192f..99f1939 100755 --- a/test/integration/test-policy-pinning +++ b/test/integration/test-policy-pinning @@ -80,8 +80,9 @@ testglobalpolicy msgmsg 'Test with specific packages' +# Yeesh, the XB-Source stuff is hacky, hopefully this won't break. buildsimplenativepackage "coolstuff" "all" "1.0" "stable" -buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports" +buildsimplenativepackage "coolstuff" "all" "2.0~bpo1" "backports" "XB-Source: coolstuff (2.0~bpo1-source-version)" setupaptarchive @@ -434,6 +435,20 @@ testsuccessequal "coolstuff: 1.0 500 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff +echo "Package: coolstuff +Pin: source-version 2.0~bpo1-source-version +Pin-Priority: 1000" > rootdir/etc/apt/preferences +testsuccessequal "coolstuff: + Installed: 2.0~bpo1 + Candidate: 2.0~bpo1 + Version table: + 2.0~bpo2 100 + 100 file:${tmppath}/aptarchive backports/main all Packages + *** 2.0~bpo1 1000 + 100 ${tmppath}/rootdir/var/lib/dpkg/status + 1.0 500 + 500 file:${tmppath}/aptarchive stable/main all Packages" aptcache policy coolstuff + # Check for 0 echo "Package: coolstuff Pin: release n=backports diff --git a/test/integration/test-prefer-higher-priority-providers b/test/integration/test-prefer-higher-priority-providers index 7c3f323..87954c5 100755 --- a/test/integration/test-prefer-higher-priority-providers +++ b/test/integration/test-prefer-higher-priority-providers @@ -5,6 +5,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'native' +native=$(getarchitecture 'native') insertpackage 'unstable' 'foo' 'all' '1' 'Provides: stuff' 'important' insertpackage 'unstable' 'bar' 'all' '1' 'Provides: stuff' 'optional' @@ -90,6 +91,16 @@ Inst awesome (1 unstable [all]) Conf baz (1 unstable [all]) Conf awesome (1 unstable [all])" aptget install awesome foo- bar- -s +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. baz:$native is not selected for install + 2. baz:$native=1 is selected for install because: + 1. awesome:$native=1 is selected for install + 2. awesome:$native Depends stuff + [selected awesome:$native] + For context, additional choices that could not be installed: + * In awesome:$native Depends stuff: + - foo:$native=1 is not selected for install + - bar:$native=1 is not selected for install" aptget install awesome foo- bar- baz- -s --solver 3.0 testfailureequal "Reading package lists... Building dependency tree... Package 'foo' is not installed, so not removed @@ -103,4 +114,4 @@ 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 +E: Unable to correct problems, you have held broken packages." aptget install awesome foo- bar- baz- -s --solver internal diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching index 5233dec..52d3e5a 100755 --- a/test/integration/test-release-candidate-switching +++ b/test/integration/test-release-candidate-switching @@ -117,6 +117,8 @@ Need to get 0 B/252 B of archives. 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 +phonon_backend_default="phonon-backend-null (4:4.20.0+sid)" +[ "$APT_SOLVER" != "3.0" ] || phonon_backend_default="phonon-backend-xine (4:4.6.0really4.4.2-1+sid)" testfailureequal "Reading package lists... Building dependency tree... Selected version '2.3.2-2+exp' (experimental [i386]) for 'amarok-null' @@ -127,14 +129,14 @@ The following additional packages will be installed: 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) + $phonon_backend_default 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) + $phonon_backend_default 0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B/252 B of archives. After this operation, 258 kB of additional disk space will be used. @@ -422,6 +424,7 @@ E: Trivial Only specified but this is not a trivial operation." aptget install a testfailureequal "Reading package lists... Building dependency tree... Selected version '1.0' (experimental [all]) for 'uninstallablepkg' +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 @@ -431,7 +434,27 @@ 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 +E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V --solver internal + +# if one depends doesn't work, we don't need to look deeper… (solver3 version) +testfailureequal "Reading package lists... +Building dependency tree... +Selected version '1.0' (experimental [all]) for 'uninstallablepkg' +Solving dependencies... +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 it is not going to be installed +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. amarok-utils:i386=2.3.2-2+exp is not selected for install + 2. amarok-utils:i386=2.3.2-2+exp is selected for install because: + 1. uninstallablepkg:i386=1.0 is selected for install + 2. uninstallablepkg:i386 Depends amarok-utils (= 2.3.2-2+exp)" aptget install uninstallablepkg/experimental --trivial-only -V --solver 3.0 insertinstalledpackage 'libmtp8' 'i386' '1' insertinstalledpackage 'amarok' 'i386' '3' 'Depends: amarok-common (= 3), libmtp8 (>= 1)' diff --git a/test/integration/test-releasefile-verification b/test/integration/test-releasefile-verification index 8104276..dcc162a 100755 --- a/test/integration/test-releasefile-verification +++ b/test/integration/test-releasefile-verification @@ -97,10 +97,27 @@ echo -n 'apt' > 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 + testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 testsuccess grep -E "$1" rootdir/tmp/testwarning.output } +foreachgpg() { + rm -f rootdir/etc/apt/apt.conf.d/00gpgvcmd + local sqv="true" + if [ "$1" = "--no-sqv" ]; then + local sqv= + shift + fi + if [ "$sqv" ]; then + "$@" + fi + for GPGV in "gpgv-sq" "gpgv-g10code"; do + msgmsg "Forcing $GPGV to be used" + echo "APT::Key::GPGVCommand \"$GPGV\";" > "rootdir/etc/apt/apt.conf.d/00gpgvcmd" + "$@" + done +} + runtest() { msgmsg 'Cold archive signed by' 'Joe Sixpack' prepare "${PKGFILE}" @@ -137,39 +154,17 @@ runtest() { 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' + updatewithwarnings '^W: .* (EXPKEYSIG|Expired)' 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' + successfulaptgetupdate 'NO_PUBKEY\|GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt installaptold @@ -179,7 +174,7 @@ runtest() { 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' + successfulaptgetupdate 'EXPKEYSIG\|GOODSIG 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE' rm -f rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt @@ -189,7 +184,7 @@ runtest() { prepare "${PKGFILE}" rm -rf rootdir/var/lib/apt/lists signreleasefiles 'Marvin Paranoid' - updatewithwarnings '^W: .* NO_PUBKEY' + updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt failaptold @@ -214,20 +209,21 @@ runtest() { msgmsg 'Good warm archive signed by' 'Marvin Paranoid' prepare "${PKGFILE}-new" signreleasefiles 'Marvin Paranoid' - updatewithwarnings '^W: .* NO_PUBKEY' + updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)' 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 + # Use a colon here to test weird filenames too + cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rex:expired.gpg signreleasefiles 'Rex Expired' - updatewithwarnings '^W: .* EXPKEYSIG' + updatewithwarnings '^W: .* (EXPKEYSIG|Expired)' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt installaptold - rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg + rm rootdir/etc/apt/trusted.gpg.d/rex:expired.gpg msgmsg 'Good warm archive signed by' 'Joe Sixpack' prepare "${PKGFILE}-new" @@ -241,7 +237,7 @@ runtest() { rm -rf rootdir/var/lib/apt/lists local MARVIN="$(readlink -f keys/marvinparanoid.pub)" sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/* - updatewithwarnings '^W: .* NO_PUBKEY' + updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)' msgmsg 'Cold archive signed by good keyring' 'Marvin Paranoid' prepare "${PKGFILE}" @@ -271,12 +267,12 @@ runtest() { installaptold sed -i "s# \[signed-by=[^]]\+\] # #" rootdir/etc/apt/sources.list.d/* - local MARVIN="$(aptkey --keyring $MARVIN finger --with-colons | grep '^fpr' | cut -d':' -f 10)" + local MARVIN="DE66AECA9151AFA1877EC31DE8525D47528144E2" 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: .*' + updatewithwarnings '^W: .* (be verified because the public key is not available: .*|No good signature from required signer)' msgmsg 'Cold archive signed by good keyid' 'Marvin Paranoid' rm -rf rootdir/var/lib/apt/lists @@ -290,12 +286,12 @@ runtest() { 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' + successfulaptgetupdate 'NoPubKey: GOODSIG\|DE66AECA9151AFA1877EC31DE8525D47528144E2' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt installaptold - local SIXPACK="$(aptkey --keyring keys/joesixpack.pub finger --with-colons | grep '^fpr' | cut -d':' -f 10)" + local SIXPACK="34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE" msgmsg 'Cold archive signed by good keyids' 'Joe Sixpack' rm -rf rootdir/var/lib/apt/lists signreleasefiles 'Joe Sixpack' @@ -335,7 +331,7 @@ Signed-By: ${SIXPACK}" rootdir/var/lib/apt/lists/*Release 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' + updatewithwarnings 'W: .* (public key is not available: GOODSIG|No good signature from required signer:)' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt installaptold @@ -365,7 +361,7 @@ Signed-By: ${MARVIN} ${MARVIN}, \\ installaptnew cp -a keys/sebastiansubkey.pub rootdir/etc/apt/trusted.gpg.d/sebastiansubkey.gpg - local SEBASTIAN="$(aptkey --keyring keys/sebastiansubkey.pub finger --with-colons | grep -m 1 '^fpr' | cut -d':' -f 10)" + local SEBASTIAN="648E6A33FDE5CB5BA2D896A3CA3E1DFF1E6BE149" msgmsg 'Warm archive with subkey signing' 'Sebastian Subkey' rm -rf rootdir/var/lib/apt/lists cp -a rootdir/var/lib/apt/lists-bak rootdir/var/lib/apt/lists @@ -378,28 +374,41 @@ Signed-By: ${SEBASTIAN}" rootdir/var/lib/apt/lists/*Release " aptcache show apt installaptnew + if [ -z "$GPGV" ] && test -e "${METHODSDIR}/sqv"; then + msgmsg 'Warm archive with ahead-policy-rejected subkey signing' 'Sebastian Subkey' + cat > test-sequoia.config << EOF +[asymmetric_algorithms] +rsa3072 = $(date +%Y-%m-%d --date="now + 6 months") +EOF + APT_SEQUOIA_CRYPTO_POLICY=$PWD/test-sequoia.config updatewithwarnings "W: http://localhost:${APTHTTPPORT}/.*Release.*: Policy will reject signature within a year, see --audit for details" + fi + msgmsg 'Warm archive with wrong exact subkey signing' 'Sebastian Subkey' 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: ${SEBASTIAN}!" 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' + updatewithwarnings 'W: .* (public key is not available: GOODSIG|No good signature from required signer:)' testsuccessequal "$(cat "${PKGFILE}") " aptcache show apt installaptold - local SUBKEY="$(aptkey --keyring keys/sebastiansubkey.pub finger --with-colons | grep -m 2 '^fpr' | tail -n -1 | cut -d':' -f 10)" + local SUBKEY="4281DEDBD466EAE8C1F4157E5B6896415D44C43E" + # This is only supported for gpgv, so require an explicit gpgv command, + # otherwise the default verification backend may be sqv. + if [ "$GPGV" ]; then msgmsg 'Warm archive with correct exact subkey signing' 'Sebastian Subkey' 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\ + sed -i "/^Valid-Until: / a\ Signed-By: ${SUBKEY}!" rootdir/var/lib/apt/lists/*Release - touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release - successfulaptgetupdate - testsuccessequal "$(cat "${PKGFILE}-new") + touch -d 'now - 1 year' rootdir/var/lib/apt/lists/*Release + successfulaptgetupdate + testsuccessequal "$(cat "${PKGFILE}-new") " aptcache show apt - installaptnew + installaptnew + fi rm -f rootdir/etc/apt/trusted.gpg.d/sebastiansubkey.gpg } @@ -420,6 +429,18 @@ runtest2() { " aptcache show apt failaptnew + msgmsg 'Cold archive signed by' 'Empty signature' + rm -rf rootdir/var/lib/apt/lists + find aptarchive -name Release -exec touch {}.gpg \; + testfailuremsg "E: OpenPGP signature verification failed: http://localhost:${APTHTTPPORT} Release: Signed file isn't valid, got 'NODATA' (does the network require authentication?)" aptget update -o Debug::gpgv=1 + + msgmsg 'Cold archive signed by' 'Unknown format signature' + rm -rf rootdir/var/lib/apt/lists + find aptarchive -name Release -exec sh -c "echo Hello > {}.gpg" \; + testfailuremsg "E: OpenPGP signature verification failed: http://localhost:${APTHTTPPORT} Release: Signed file isn't valid, got 'NODATA' (does the network require authentication?)" aptget update + + find aptarchive/ \( -name InRelease -o -name Release.gpg \) -delete + # Unsigned archive from the beginning must also be detected. msgmsg 'Cold archive signed by' 'nobody' rm -rf rootdir/var/lib/apt/lists @@ -449,25 +470,25 @@ Acquire::AllowInsecureRepositories "1"; Acquire::AllowDowngradeToInsecureRepositories "1"; EOF # the hash marked as configurable in our gpgv method -export APT_TESTS_DIGEST_ALGO='SHA224' +export APT_TESTS_DIGEST_ALGO='SHA512' successfulaptgetupdate() { - testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 + testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 if [ -n "$1" ]; then cp rootdir/tmp/testsuccess.output aptupdate.output testsuccess grep "$1" aptupdate.output fi } -runtest3 'Trusted' +foreachgpg runtest3 'Trusted' successfulaptgetupdate() { - testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 + testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 if [ -n "$1" ]; then testsuccess grep "$1" rootdir/tmp/testwarning.output fi testsuccess grep 'uses weak algorithm' rootdir/tmp/testwarning.output } -runtest3 'Weak' +foreachgpg --no-sqv 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 @@ -478,14 +499,14 @@ runfailure() { 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 + testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 + testsuccess grep 'The following signatures were invalid\|MD5 is not considered secure' rootdir/tmp/testfailure.output testnopackage 'apt' - testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 + testwarning aptget update --allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=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 + testwarning aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 failaptold sed -i 's#^deb\(-src\)\? \[allow-insecure=yes\] #deb\1 #' rootdir/etc/apt/sources.list.d/* @@ -493,17 +514,13 @@ runfailure() { 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 + testfailure aptget update --no-allow-insecure-repositories -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1 -o Debug::Acquire::sqv=1 testnopackage 'apt' - updatewithwarnings '^W: .* NO_PUBKEY' + updatewithwarnings '^W: .* (NO_PUBKEY|Missing key)' 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 +foreachgpg --no-sqv runfailure diff --git a/test/integration/test-releasefile-verification-noflat b/test/integration/test-releasefile-verification-noflat index 3953c64..d1b1d84 100755 --- a/test/integration/test-releasefile-verification-noflat +++ b/test/integration/test-releasefile-verification-noflat @@ -12,7 +12,7 @@ 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 ' ')" +SIXPACK="34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE" testsuccess aptget update diff --git a/test/integration/test-resolve-by-keep-new-recommends b/test/integration/test-resolve-by-keep-new-recommends index 3591ed8..16acbe0 100755 --- a/test/integration/test-resolve-by-keep-new-recommends +++ b/test/integration/test-resolve-by-keep-new-recommends @@ -19,3 +19,21 @@ The following packages have been kept back: 0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded." testsuccessequal "$UPGRADE_KEEP" aptget upgrade -s +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" apt upgrade -s + +UPGRADE_KEEP="Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + foo +1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst foo [1.0] (2.0 unstable [i386]) +Conf foo (2.0 unstable [i386])" +testsuccessequal "$UPGRADE_KEEP" aptget dist-upgrade -s + diff --git a/test/integration/test-resolve-by-keep-obsolete-removals b/test/integration/test-resolve-by-keep-obsolete-removals new file mode 100755 index 0000000..3fe824f --- /dev/null +++ b/test/integration/test-resolve-by-keep-obsolete-removals @@ -0,0 +1,47 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment + +configarchitecture "amd64" + +insertpackage 'installed' 'obsolete-dependency' 'amd64' '1.0' +insertpackage 'installed,unstable' 'foo' 'amd64' '2.0' 'Depends: obsolete-dependency' + +setupaptarchive + +echo 'Debug::pkgProblemResolver "1";' > rootdir/etc/apt/apt.conf.d/debug-problemresolver + +# We mark obsolete dependency for removal in B, then in C it is restored. +testsuccessequal "A: foo:amd64 < 2.0 @ii mK > +A: obsolete-dependency:amd64 < 1.0 @ii mK > +B: foo:amd64 < 2.0 @ii mK Ib > +B: obsolete-dependency:amd64 < 1.0 @ii mR > +Entering ResolveByKeep + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > +Keeping package foo:amd64 + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > +Package foo:amd64 foo:amd64 Depends on obsolete-dependency:amd64 < 1.0 @ii mR > + Keeping Package obsolete-dependency:amd64 due to Depends +C: foo:amd64 < 2.0 @ii mK > +C: obsolete-dependency:amd64 < 1.0 @ii mK >" runapt ${APTTESTHELPERSBINDIR}/testkeep obsolete-dependency + +# We have protected our decision to remove the obsolete dependency, so we fail to resolve it. +testfailureequal "A: foo:amd64 < 2.0 @ii mK > +A: obsolete-dependency:amd64 < 1.0 @ii mK > +B: foo:amd64 < 2.0 @ii mK Ib > +B: obsolete-dependency:amd64 < 1.0 @ii pmR > +Entering ResolveByKeep + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > +Keeping package foo:amd64 + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > +Package foo:amd64 foo:amd64 Depends on obsolete-dependency:amd64 < 1.0 @ii pmR > + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > + Dependencies are not satisfied for foo:amd64 < 2.0 @ii mK Ib > +C: foo:amd64 < 2.0 @ii mK Ib > +C: obsolete-dependency:amd64 < 1.0 @ii pmR > +E: Unable to correct problems, you have held broken packages." runapt ${APTTESTHELPERSBINDIR}/testkeep obsolete-dependency --hold diff --git a/test/integration/test-resolver-delays-remove-decisions b/test/integration/test-resolver-delays-remove-decisions index a069954..f3480ca 100755 --- a/test/integration/test-resolver-delays-remove-decisions +++ b/test/integration/test-resolver-delays-remove-decisions @@ -17,10 +17,29 @@ insertpackage 'unstable' 'bar' 'all' '1' setupaptarchive +testsuccess aptmark auto ~i + # We are needlessly removing "stuff" if we don't delay its marking here # as we do not question the remove later on testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... +The following package was automatically installed and is no longer required: + stuff +Use 'apt autoremove' to remove it. +The following additional packages will be installed: + bar +The following NEW packages will be installed: + bar foobar +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst bar (1 unstable [all]) +Inst foobar (1 unstable [all]) +Conf bar (1 unstable [all]) +Conf foobar (1 unstable [all])" apt install foobar -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1 Installing foo:amd64 as Depends of foobar:amd64 Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1) @@ -33,6 +52,9 @@ Building dependency tree... Starting pkgProblemResolver with broken count: 0 Starting 2 pkgProblemResolver with broken count: 0 Done +The following package was automatically installed and is no longer required: + stuff +Use 'apt autoremove' to remove it. The following additional packages will be installed: bar The following NEW packages will be installed: @@ -41,19 +63,38 @@ The following NEW packages will be installed: Inst bar (1 unstable [all]) Inst foobar (1 unstable [all]) Conf bar (1 unstable [all]) -Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal insertinstalledpackage 'uninstallable' 'all' '1' testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... +The following additional packages will be installed: + foo foo-dep +The following packages will be REMOVED: + stuff +The following NEW packages will be installed: + foo foo-dep foobar +0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded. +Remv stuff [1] +Inst foo-dep (1 unstable [all]) +Inst foo (1 unstable [all]) +Inst foobar (1 unstable [all]) +Conf foo-dep (1 unstable [all]) +Conf foo (1 unstable [all]) +Conf foobar (1 unstable [all])" apt install foobar -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1 Installing foo:amd64 as Depends of foobar:amd64 Delayed Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1) MarkInstall foo:amd64 < none -> 1 @un uN Ib > FU=0 Installing foo-dep:amd64 as Depends of foo:amd64 MarkInstall foo-dep:amd64 < none -> 1 @un uN > FU=0 - MarkDelete stuff:amd64 < 1 @ii mK > FU=0 + MarkDelete stuff:amd64 < 1 @ii gK > FU=0 Starting pkgProblemResolver with broken count: 0 Starting 2 pkgProblemResolver with broken count: 0 Done @@ -71,15 +112,35 @@ Inst foo (1 unstable [all]) Inst foobar (1 unstable [all]) Conf foo-dep (1 unstable [all]) Conf foo (1 unstable [all]) -Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +Conf foobar (1 unstable [all])" apt install foobar -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal # Same solution but the installs are considered protected now as there is no other solution testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... +Package 'bar' is not installed, so not removed +The following additional packages will be installed: + foo foo-dep +The following packages will be REMOVED: + stuff +The following NEW packages will be installed: + foo foo-dep foobar +0 upgraded, 3 newly installed, 1 to remove and 0 not upgraded. +Remv stuff [1] +Inst foo-dep (1 unstable [all]) +Inst foo (1 unstable [all]) +Inst foobar (1 unstable [all]) +Conf foo-dep (1 unstable [all]) +Conf foo (1 unstable [all]) +Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... MarkInstall foobar:amd64 < none -> 1 @un puN Ib > FU=1 Installing foo:amd64 as Depends of foobar:amd64 Removing: stuff:amd64 as upgrade is not an option for foo:amd64 (1) - MarkDelete stuff:amd64 < 1 @ii mK > FU=0 + MarkDelete stuff:amd64 < 1 @ii gK > FU=0 MarkInstall foo:amd64 < none -> 1 @un puN Ib > FU=0 Installing foo-dep:amd64 as Depends of foo:amd64 MarkInstall foo-dep:amd64 < none -> 1 @un puN > FU=0 @@ -103,4 +164,4 @@ Inst foo (1 unstable [all]) Inst foobar (1 unstable [all]) Conf foo-dep (1 unstable [all]) Conf foo (1 unstable [all]) -Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 +Conf foobar (1 unstable [all])" apt install foobar bar- -q=0 -s -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1 --solver internal diff --git a/test/integration/test-resolver-provider-exchange b/test/integration/test-resolver-provider-exchange index 0a85db3..938d8f5 100755 --- a/test/integration/test-resolver-provider-exchange +++ b/test/integration/test-resolver-provider-exchange @@ -7,6 +7,7 @@ setupenvironment configarchitecture 'amd64' insertinstalledpackage 'fuse' 'all' '2' +insertpackage 'unstable' 'fuse' 'all' '2' insertpackage 'unstable' 'fuse3' 'all' '3' 'Conflicts: fuse Provides: fuse' @@ -20,10 +21,12 @@ Conflicts: fuse3' insertpackage 'unstable' 'foobar-r3' 'all' '1' 'Recommends: fuse3' setupaptarchive +testsuccess aptmark auto ~i installfoobars() { testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following NEW packages will be installed: foobar-d 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -31,6 +34,7 @@ Inst foobar-d (1 unstable [all]) Conf foobar-d (1 unstable [all])' apt install -s foobar-d testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following NEW packages will be installed: foobar-d2 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -38,6 +42,7 @@ Inst foobar-d2 (1 unstable [all]) Conf foobar-d2 (1 unstable [all])' apt install -s foobar-d2 testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... The following additional packages will be installed: fuse3 The following packages will be REMOVED: @@ -53,6 +58,7 @@ Conf foobar-d3 (1 unstable [all])" apt install -s foobar-d3 testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following NEW packages will be installed: foobar-r 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -60,6 +66,7 @@ Inst foobar-r (1 unstable [all]) Conf foobar-r (1 unstable [all])' apt install -s foobar-r testsuccessequal 'Reading package lists... Building dependency tree... +Reading state information... The following NEW packages will be installed: foobar-r2 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -68,6 +75,22 @@ Conf foobar-r2 (1 unstable [all])' apt install -s foobar-r2 if [ -z "$1" ]; then testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... +The following additional packages will be installed: + fuse3 +The following packages will be REMOVED: + fuse +The following NEW packages will be installed: + foobar-r3 fuse3 +0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded. +Remv fuse [2]$1 +Inst foobar-r3 (1 unstable [all]) +Inst fuse3 (3 unstable [all]) +Conf foobar-r3 (1 unstable [all]) +Conf fuse3 (3 unstable [all])" apt install -s foobar-r3 + testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... The following additional packages will be installed: fuse3 The following packages will be REMOVED: @@ -83,6 +106,7 @@ Conf fuse3 (3 unstable [all])" apt install -s foobar-r3 else testsuccessequal "Reading package lists... Building dependency tree... +Reading state information... The following additional packages will be installed: fuse3 The following packages will be REMOVED: @@ -94,7 +118,18 @@ Remv fuse [2]$1 Inst fuse3 (3 unstable [all]) Inst foobar-r3 (1 unstable [all]) Conf fuse3 (3 unstable [all]) -Conf foobar-r3 (1 unstable [all])" apt install -s foobar-r3 +Conf foobar-r3 (1 unstable [all])" apt install -s foobar-r3 --solver internal + testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... +Solving dependencies... +Recommended packages: + fuse3 +The following NEW packages will be installed: + foobar-r3 +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst foobar-r3 (1 unstable [all]) +Conf foobar-r3 (1 unstable [all])" apt install -s foobar-r3 --solver 3.0 fi } msgmsg 'fuse has no installed dependers' diff --git a/test/integration/test-same-version-but-different b/test/integration/test-same-version-but-different index 595a66f..e57150c 100755 --- a/test/integration/test-same-version-but-different +++ b/test/integration/test-same-version-but-different @@ -107,3 +107,13 @@ testsuccessequal "diff-sha256: 500 file:${APTARCHIVE} testing/main all Packages 1 500 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-sha256 +testsuccessequal "diff-sha256: + Installed: (none) + Candidate: 1 + Version table: + 1 500 + 500 file:${APTARCHIVE} testing/main all Packages + 500 ${APTARCHIVE}/dists/unstable/main/binary-all/Packages + 500 ${APTARCHIVE}/dists/testing/main/binary-all/Packages + 1 500 + 500 file:${APTARCHIVE} unstable/main all Packages" apt policy diff-sha256 --with-source ${APTARCHIVE}/dists/unstable/main/binary-all/Packages --with-source ${APTARCHIVE}/dists/testing/main/binary-all/Packages diff --git a/test/integration/test-signed-by-option b/test/integration/test-signed-by-option index 58e4c4b..62081eb 100755 --- a/test/integration/test-signed-by-option +++ b/test/integration/test-signed-by-option @@ -40,13 +40,7 @@ setupaptarchive --no-update rm -f rootdir/etc/apt/sources.list.d/* rootdir/etc/apt/sources.list rm -f rootdir/etc/apt/trusted.gpg.d/* rootdir/etc/apt/trusted.gpg -cat > rootdir/etc/apt/sources.list.d/deb822.sources << EOF -Types: deb -URIs: file://$PWD/aptarchive -Suites: stable -Components: main -xSigned-By: - -----BEGIN PGP PUBLIC KEY BLOCK----- +GPGKEYBLOCK='-----BEGIN PGP PUBLIC KEY BLOCK----- . mQENBExsGNYBCADNVx+TQ6h1tEyUP11f7ihfta3ZePkW1rIdkdHgA3Fw/TeLnTEq mWuhMw2pL4zy1vQhU8efNrRaNUrUS7kV3LIdSjd5K4Aizqtsdy/gLKFoTcO8LFIm @@ -63,11 +57,66 @@ xSigned-By: xNHhRHzEPTYZ4PCCyaRX4YRAwsEMFsscsghpQgqRDhGSWq+jUVI+Aay7FTnd+1UA 1snsGpB0o9qxx8JpGMXI =c/k4 - -----END PGP PUBLIC KEY BLOCK----- + -----END PGP PUBLIC KEY BLOCK-----' +cat > rootdir/etc/apt/sources.list.d/deb822.sources << EOF +Types: deb +URIs: file://$PWD/aptarchive +Suites: stable +Components: main +xSigned-By: + $GPGKEYBLOCK EOF testfailure apt update -o Debug::Acquire::gpgv=1 -testsuccess grep "NO_PUBKEY 5A90D141DBAC8DAE" rootdir/tmp/testfailure.output +testsuccess grep -E "(NO_PUBKEY 5A90D141DBAC8DAE|no keyring is specified)" rootdir/tmp/testfailure.output sed -i s/^xSigned-By/Signed-By/ rootdir/etc/apt/sources.list.d/deb822.sources testsuccess apt update -o Debug::Acquire::gpgv=1 +testsuccessequal "$(echo "$GPGKEYBLOCK" | sed 's/^ \+/ /')\n$(echo "$GPGKEYBLOCK" | sed 's/^ \+/ /')" aptget indextargets --format '$(SIGNED_BY)' # make sure we did not leave leftover files (LP: #1995247) testsuccessequal "" ls "${TMPDIR}" +rm -f rootdir/etc/apt/sources.list.d/* + +msgtest 'Check that a repository with' 'only the fisrt entry has no Signed-By value works' +cat > rootdir/etc/apt/sources.list.d/example.sources << EOF +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component + +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component2 +Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE +EOF +testsuccess --nomsg aptcache policy + +msgtest 'Check that a repository with' 'only the second entry has no Signed-By value works' +cat > rootdir/etc/apt/sources.list.d/example.sources << EOF +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component +Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE + +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component2 +EOF +testsuccess --nomsg aptcache policy + +cat > rootdir/etc/apt/sources.list.d/example.sources << EOF +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component +Signed-By: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE + +Types: deb +URIs: http://example.org/ +Suites: suite +Components: component2 +Signed-By: DE66AECA9151AFA1877EC31DE8525D47528144E2 +EOF +testfailuremsg 'E: Conflicting values set for option Signed-By regarding source http://example.org/ suite: 34A8E9D18DB320F367E8EAA05A90D141DBAC8DAE != DE66AECA9151AFA1877EC31DE8525D47528144E2 +E: The list of sources could not be read.' aptget update --print-uris diff --git a/test/integration/test-snapshot b/test/integration/test-snapshot index 26ef5a7..31a02ca 100755 --- a/test/integration/test-snapshot +++ b/test/integration/test-snapshot @@ -66,7 +66,7 @@ testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' local 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -for option in -S --snapshot; do +for option in '-S' '-S ' '--snapshot ' '--snapshot=' '-o APT::Snapshot='; do testsuccessequal "'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/InRelease' snapshot.debian.org_archive_debian_BANANA_dists_stable_InRelease 0 'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/source/Sources.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_source_Sources 0 'https://snapshot.debian.org/archive/debian/BANANA/dists/stable/main/binary-amd64/Packages.xz' snapshot.debian.org_archive_debian_BANANA_dists_stable_main_binary-amd64_Packages 0 @@ -76,7 +76,7 @@ testsuccessequal "'https://snapshot.debian.org/archive/debian/BANANA/dists/stabl 'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0 -'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA +'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris ${option}BANANA done @@ -93,6 +93,12 @@ Get:6 http://localhost:${APTHTTPPORT}/snapshot/BANANA stable/main Translation-en Reading package lists..." \ aptget update -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA +for option in '-S' '-S ' '--snapshot ' '--snapshot=' '-o APT::Snapshot='; do + testsuccessequal 'Listing...' apt list --upgradable -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" ${option}BANANA + testsuccessequal 'Listing... +awesome/stable 42 amd64' apt list awesome -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" ${option}BANANA +done + msgmsg "Cache constructed without snapshot" testsuccessequal "Package files: 500 http://localhost:${APTHTTPPORT} stable/main all Packages @@ -102,7 +108,7 @@ testsuccessequal "Package files: release o=Debian,a=stable,n=stable,l=Testcases,c=main,b=amd64 origin localhost Pinned packages:" \ - aptcache policy -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" + aptcache policy -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/awesome_42_amd64.deb' awesome_42_amd64.deb $(stat -c %s aptarchive/pool/awesome_42_amd64.deb) " \ aptget install --print-uris -qq awesome @@ -121,7 +127,6 @@ Pinned packages:" \ testsuccessequal "'http://localhost:${APTHTTPPORT}/snapshot/BANANA/pool/awesome_42_amd64.deb' awesome_42_amd64.deb $(stat -c %s aptarchive/pool/awesome_42_amd64.deb) " \ aptget install --print-uris -qq awesome -o Acquire::Snapshots::URI::Label::Testcases="http://localhost:${APTHTTPPORT}/snapshot/@SNAPSHOTID@/" -SBANANA - msgmsg "Origin: Ubuntu" releasechanger 'Origin' 'Ubuntu' testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/InRelease' snapshot.ubuntu.com_ubuntu_BANANA_dists_stable_InRelease 0 @@ -133,7 +138,7 @@ testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/InRele 'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0 -'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA +'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -S BANANA msgmsg "Label: Debian" releasechanger 'Label' 'Debian' @@ -146,7 +151,7 @@ testsuccessequal "'https://snapshot.ubuntu.com/ubuntu/BANANA/dists/stable/InRele 'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0 -'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA +'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -S BANANA testsuccessequal "'http://localhost:${APTHTTPPORT}/dists/stable/InRelease' localhost:${APTHTTPPORT}_dists_stable_InRelease 0 'http://localhost:${APTHTTPPORT}/snapshot/BANANA/dists/stable/InRelease' localhost:${APTHTTPPORT}_snapshot_BANANA_dists_stable_InRelease 0 @@ -171,7 +176,7 @@ testsuccessequal "'https://example.org/snapshots//BANANA/dists/stable/InRelease' 'http://localhost:${APTHTTPPORT}/dists/stable/main/source/Sources.xz' localhost:${APTHTTPPORT}_dists_stable_main_source_Sources 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-amd64/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-amd64_Packages 0 'http://localhost:${APTHTTPPORT}/dists/stable/main/binary-all/Packages.xz' localhost:${APTHTTPPORT}_dists_stable_main_binary-all_Packages 0 -'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris $option BANANA -o Acquire::Snapshots::URI::Host::localhost="https://example.org/snapshots/@PATH@/@SNAPSHOTID@/" +'http://localhost:${APTHTTPPORT}/dists/stable/main/i18n/Translation-en.xz' localhost:${APTHTTPPORT}_dists_stable_main_i18n_Translation-en 0 " aptget update --print-uris -S BANANA -o Acquire::Snapshots::URI::Host::localhost="https://example.org/snapshots/@PATH@/@SNAPSHOTID@/" msgmsg "Snapshots: set in the InRelease file" sed -i '/^Origin: / a\ diff --git a/test/integration/test-snapshot-upgrades b/test/integration/test-snapshot-upgrades new file mode 100755 index 0000000..d5e8006 --- /dev/null +++ b/test/integration/test-snapshot-upgrades @@ -0,0 +1,156 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'amd64' + +for T in T1 T2; do + mkdir "aptarchive/${T}" + ln -s ../../incoming "aptarchive/${T}/pool" +done + +buildsimplenativepackage 'awesome' 'amd64' '2' 'stable' 'Depends: libfoo (>= 2)' +buildsimplenativepackage 'libfoo' 'amd64' '2' 'stable' +setupaptarchive --no-update +mv aptarchive/dists aptarchive/T1 +rm incoming/stable.main.pkglist incoming/stable.main.srclist + +buildsimplenativepackage 'awesome' 'amd64' '3' 'stable' 'Depends: libfoo (>= 2)' +setupaptarchive --no-update +mv aptarchive/dists aptarchive/T2 +rm incoming/stable.main.pkglist incoming/stable.main.srclist + +buildsimplenativepackage 'libfoo' 'amd64' '42' 'stable' +buildsimplenativepackage 'awesome' 'amd64' '42' 'stable' +setupaptarchive --no-update + +changetowebserver +sed -i 's/http:/[snapshot=enable] http:/' rootdir/etc/apt/sources.list.d/* +echo "Acquire::Snapshots::URI::Host::localhost \"http://localhost:${APTHTTPPORT}/@SNAPSHOTID@/\";" > rootdir/etc/apt/apt.conf.d/snapshot.conf +testsuccess aptget update --snapshot T1 +testsuccess aptget update --snapshot T2 --no-list-cleanup + +insertinstalledpackage 'awesome' 'amd64' '1' 'Depends: libfoo (>= 1)' +insertinstalledpackage 'libfoo' 'amd64' '1' + +msgmsg 'Snapshotting policy' +testsuccessequal "libfoo: + Installed: 1 + Candidate: 42 + Version table: + 42 500 + 500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status +awesome: + Installed: 1 + Candidate: 42 + Version table: + 42 500 + 500 http://localhost:${APTHTTPPORT} stable/main amd64 Packages + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome +testsuccessequal "libfoo: + Installed: 1 + Candidate: 2 + Version table: + 2 500 + 500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status +awesome: + Installed: 1 + Candidate: 2 + Version table: + 2 500 + 500 http://localhost:${APTHTTPPORT}/T1 stable/main amd64 Packages + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T1 +testsuccessequal "libfoo: + Installed: 1 + Candidate: 1 + Version table: + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status +awesome: + Installed: 1 + Candidate: 3 + Version table: + 3 500 + 500 http://localhost:${APTHTTPPORT}/T2 stable/main amd64 Packages + *** 1 100 + 100 ${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status" apt policy libfoo awesome -S T2 + + +msgmsg 'Snapshotting show' +testsuccessequalgrep() { + local CMP="$1" + local GREP="$2" + shift 2 + testsuccess "$@" + mv rootdir/tmp/testsuccess.output base.output + testsuccessequal "$CMP" grep "$GREP" base.output +} +testsuccessequalgrep 'Version: 42 +Version: 1 +Version: 42 +Version: 1' '^Version: ' aptcache show libfoo awesome +testsuccessequalgrep 'Version: 2 +Version: 1 +Version: 2 +Version: 1' '^Version: ' aptcache show libfoo awesome -S T1 +testsuccessequalgrep 'Version: 1 +Version: 3 +Version: 1' '^Version: ' aptcache show libfoo awesome -S T2 + + +msgmsg 'Snapshotting list' +testsuccessequal 'Listing... +awesome/stable 42 amd64 [upgradable from: 1] +libfoo/stable 42 amd64 [upgradable from: 1]' apt list --upgradeable +testsuccessequal 'Listing... +awesome/stable 2 amd64 [upgradable from: 1] +libfoo/stable 2 amd64 [upgradable from: 1]' apt list --upgradeable -S T1 +testsuccessequal "Listing... +awesome/stable 3 amd64 [upgradable from: 1] +N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradeable -S T2 + + +msgmsg 'Snapshotting upgrade' +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + awesome libfoo +2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst awesome [1] (42 stable [amd64]) +Inst libfoo [1] (42 stable [amd64]) +Conf awesome (42 stable [amd64]) +Conf libfoo (42 stable [amd64])' apt upgrade -s +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + awesome libfoo +2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst libfoo [1] (2 stable [amd64]) +Inst awesome [1] (2 stable [amd64]) +Conf libfoo (2 stable [amd64]) +Conf awesome (2 stable [amd64])' apt upgrade -s -S T1 +testsuccessequal 'Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages have been kept back: + awesome +0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.' apt upgrade -s -S T2 + +msgmsg 'Snapshotting real installs' +testsuccessequalgrep 'Version: 1' '^Version: ' apt show libfoo/now +testsuccess apt install libfoo -S T1 -y +testsuccessequalgrep 'Version: 2' '^Version: ' apt show libfoo/now +testsuccessequalgrep 'Version: 1' '^Version: ' apt show awesome/now +testsuccess apt upgrade -S T2 -y +testsuccessequalgrep 'Version: 3' '^Version: ' apt show awesome/now diff --git a/test/integration/test-solver-recommends-depends b/test/integration/test-solver-recommends-depends new file mode 100755 index 0000000..4b2f912 --- /dev/null +++ b/test/integration/test-solver-recommends-depends @@ -0,0 +1,54 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +allowremovemanual +configarchitecture 'amd64' + +insertpackage 'unstable' 'a' 'all' '2' +insertpackage 'unstable' 'b' 'all' '2' +insertpackage 'unstable' 'x' 'all' '3' 'Depends: xx +Recommends: b' +insertpackage 'unstable' 'xx' 'all' '3' 'Depends: a | b +Recommends: b' +insertpackage 'installed,unstable' 'recommends-and-enhances' 'all' '3' 'Recommends: b +Enhances:b' + +setupaptarchive + +msgmsg "Test that the Enhances does not confuse the Recommends algorithm" +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 + +msgmsg "Test that the Recommends does not influence the Depends" +testsuccessequal "The following additional packages will be installed: + a b +The following NEW packages will be installed: + a b xx +0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. +Inst a (2 unstable [all]) +Inst b (2 unstable [all]) +Inst xx (3 unstable [all]) +Conf a (2 unstable [all]) +Conf b (2 unstable [all]) +Conf xx (3 unstable [all])" apt install -s xx -qq + + +msgmsg "Test that the Recommends in x does not influence the Depends in xx (one level lower)" +testsuccessequal "The following additional packages will be installed: + a b xx +The following NEW packages will be installed: + a b x xx +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Inst a (2 unstable [all]) +Inst b (2 unstable [all]) +Inst xx (3 unstable [all]) +Inst x (3 unstable [all]) +Conf a (2 unstable [all]) +Conf b (2 unstable [all]) +Conf xx (3 unstable [all]) +Conf x (3 unstable [all])" apt install -s x -qq diff --git a/test/integration/test-solver3-alternatives b/test/integration/test-solver3-alternatives new file mode 100755 index 0000000..8a3645f --- /dev/null +++ b/test/integration/test-solver3-alternatives @@ -0,0 +1,32 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'unstable' 'unsat' 'all' '3' 'Depends: a | b' +insertpackage 'unstable' 'a' 'all' '3' 'Depends: aa|ab' +insertpackage 'unstable' 'b' 'all' '3' 'Depends: ba|bb' +insertpackage 'unstable' 'aa' 'all' '3' 'Depends: aax' +insertpackage 'unstable' 'ab' 'all' '3' 'Depends: abx' +insertpackage 'unstable' 'ba' 'all' '3' 'Depends: bay' +insertpackage 'unstable' 'bb' 'all' '3' 'Depends: bby' +setupaptarchive + +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. bb:amd64 is selected for install because: + 1. unsat:amd64=3 is selected for install + 2. unsat:amd64 Depends a | b + [selected b:amd64 for install] + 3. b:amd64 Depends ba | bb + [selected b:amd64] + For context, additional choices that could not be installed: + * In unsat:amd64 Depends a | b: + - a:amd64 is not selected for install + * In b:amd64 Depends ba | bb: + - ba:amd64 is not selected for install + 2. bb:amd64 Depends bby + but none of the choices are installable: + [no choices]" apt install unsat --solver 3.0 diff --git a/test/integration/test-solver3-break-recommends b/test/integration/test-solver3-break-recommends new file mode 100755 index 0000000..88051f5 --- /dev/null +++ b/test/integration/test-solver3-break-recommends @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'installed' 'root' 'all' '1' 'Recommends: a | b' +insertpackage 'installed,unstable' 'a' 'all' '1' +insertpackage 'unstable' 'b' 'all' '1' + +setupaptarchive + +msgmsg "b should not be installed" + +testsuccessequal "Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + a +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv a [1]" aptget remove a -s + +testsuccessequal "Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + a +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv a [1]" apt remove a -s diff --git a/test/integration/test-solver3-dependencies b/test/integration/test-solver3-dependencies new file mode 100755 index 0000000..2aa4c4d --- /dev/null +++ b/test/integration/test-solver3-dependencies @@ -0,0 +1,75 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertinstalledpackage 'replaces' 'all' '2' 'Replaces: replaced (<< 3)' +insertinstalledpackage 'replaced' 'all' '2' + +insertinstalledpackage 'enhances' 'all' '2' 'Enhances: enhanced (<< 3)' +insertinstalledpackage 'enhanced' 'all' '2' + +insertpackage 'unstable' 'replaces' 'all' '3' 'Replaces: replaced (<< 3)' +insertpackage 'unstable' 'enhances' 'all' '3' 'Enhances: enhanced (<< 3)' +insertpackage 'unstable' 'replaced' 'all' '3' +insertpackage 'unstable' 'enhanced' 'all' '3' + +setupaptarchive + +testsuccessequal "Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + enhanced enhances replaced replaces +4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst enhanced [2] (3 unstable [all]) +Inst enhances [2] (3 unstable [all]) +Inst replaced [2] (3 unstable [all]) +Inst replaces [2] (3 unstable [all]) +Conf enhanced (3 unstable [all]) +Conf enhances (3 unstable [all]) +Conf replaced (3 unstable [all]) +Conf replaces (3 unstable [all])" aptget upgrade -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + enhanced enhances replaced replaces +4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst enhanced [2] (3 unstable [all]) +Inst enhances [2] (3 unstable [all]) +Inst replaced [2] (3 unstable [all]) +Inst replaces [2] (3 unstable [all]) +Conf enhanced (3 unstable [all]) +Conf enhances (3 unstable [all]) +Conf replaced (3 unstable [all]) +Conf replaces (3 unstable [all])" apt upgrade -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + enhanced enhances replaced replaces +4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst enhanced [2] (3 unstable [all]) +Inst enhances [2] (3 unstable [all]) +Inst replaced [2] (3 unstable [all]) +Inst replaces [2] (3 unstable [all]) +Conf enhanced (3 unstable [all]) +Conf enhances (3 unstable [all]) +Conf replaced (3 unstable [all]) +Conf replaces (3 unstable [all])" apt dist-upgrade -s + +insertpackage 'testing,now' 'test' 'all' '1' +insertpackage 'unstable' 'test' 'all' '2' +insertpackage 'experimental' 'test' 'all' '3' +insertpackage 'unstable' 'depends-test' 'all' '2' 'Depends: test' +setupaptarchive + +testsuccess apt upgrade depends-test -o Debug::APT::Solver=3 --solver 3.0 --no-strict-pinning -s +cp rootdir/tmp/testsuccess.output solver.log +testsuccess grep 'test:amd64=2 | test:amd64=1 | test:amd64=3' solver.log diff --git a/test/integration/test-solver3-evaluation b/test/integration/test-solver3-evaluation new file mode 100755 index 0000000..f5a10f5 --- /dev/null +++ b/test/integration/test-solver3-evaluation @@ -0,0 +1,218 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertinstalledpackage 'apport' 'all' '3' + +insertpackage 'unstable' 'x' 'all' '3' 'Depends: a | b' +insertpackage 'unstable' 'y' 'all' '3' 'Depends: b | a' +insertpackage 'unstable' 'a' 'all' '3' 'Depends: c' +insertpackage 'unstable' 'b' 'all' '3' 'Source: src' +insertpackage 'unstable' 'c' 'all' '3' 'Source: src' +insertpackage 'unstable' 'unrelated' 'all' '3' + +setupaptarchive + +rm rootdir/etc/apt/apt.conf.d/disable-solver3-context +mkdir rootdir/var/log/apt + +msgmsg "Test 'worse result'" +testsuccess aptget install y x --solver internal -s -o Dir::Apport=var/crash + +testsuccess sed -i "s/^Date:.*/Date: Sun Mar 9 00:08:41 2025/" rootdir/var/crash/apt-edsp.$(id -u).crash + +testsuccessequal "ProblemType: AptSolver +Architecture: amd64 +Date: Sun Mar 9 00:08:41 2025 +Package: apt +Title: Failure: The 3.0 solver produced a worse result +SourcePackage: apt +AptSolverDump: +$(cat rootdir/var/log/apt/edsp.log.zst | base64 | sed 's#^# #')" cat rootdir/var/crash/apt-edsp.$(id -u).crash + +testsuccessequal "Request: EDSP 0.5 +Architecture: amd64 +Architectures: amd64 +Machine-ID: 912e43bd1c1d4ba481f9f8ccab25f9ee +Install: x:amd64 y:amd64 +Solver: internal + +Package: a +Architecture: all +Version: 3 +APT-ID: 2 +Source: a +Source-Version: 3 +Priority: optional +Section: other +Size: 42 +APT-Release: + a=unstable,n=sid,c=main,b=all +APT-Pin: 500 +APT-Candidate: yes +Depends: c + +Package: b +Architecture: all +Version: 3 +APT-ID: 3 +Source: src +Source-Version: 3 +Priority: optional +Section: other +Size: 42 +APT-Release: + a=unstable,n=sid,c=main,b=all +APT-Pin: 500 +APT-Candidate: yes + +Package: c +Architecture: all +Version: 3 +APT-ID: 4 +Source: src +Source-Version: 3 +Priority: optional +Section: other +Size: 42 +APT-Release: + a=unstable,n=sid,c=main,b=all +APT-Pin: 500 +APT-Candidate: yes + +Package: x +Architecture: all +Version: 3 +APT-ID: 0 +Source: x +Source-Version: 3 +Priority: optional +Section: other +Size: 42 +APT-Release: + a=unstable,n=sid,c=main,b=all +APT-Pin: 500 +APT-Candidate: yes +Depends: a | b + +Package: y +Architecture: all +Version: 3 +APT-ID: 1 +Source: y +Source-Version: 3 +Priority: optional +Section: other +Size: 42 +APT-Release: + a=unstable,n=sid,c=main,b=all +APT-Pin: 500 +APT-Candidate: yes +Depends: b | a + +Package: apport +Architecture: all +Version: 3 +APT-ID: 6 +Source: apport +Source-Version: 3 +Priority: optional +Section: other +Installed: yes +APT-Pin: 100 +APT-Candidate: yes +" apthelper cat-file rootdir/var/log/apt/edsp.log.zst + +msgmsg "Test that solver 3.0 explanations are shown" +testfailureequal "Reading package lists... +Building dependency tree... +Package 'c' is not installed, so not removed +Solving dependencies... +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: + a : Depends: c but it is not going to be installed +E: Unable to correct problems, you have held broken packages. +E: The following information from --solver 3.0 may provide additional context: + Unable to satisfy dependencies. Reached two conflicting decisions: + 1. a:amd64=3 is selected for install + 2. a:amd64 Depends c + but none of the choices are installable: + - c:amd64 is not selected for install" apt install -s a c- --solver internal + + +msgmsg "Test for 'did not find a result'" + +rm rootdir/var/crash/apt-edsp.$(id -u).crash + +testsuccessequal "Reading package lists... +Building dependency tree... +Solving dependencies... +Writing error report... +The following additional packages will be installed: + c +The following NEW packages will be installed: + a c +0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst c (3 unstable [all]) +Inst a (3 unstable [all]) +Conf c (3 unstable [all]) +Conf a (3 unstable [all])" aptget install a --solver internal -s -o Dir::Apport=var/crash -o APT::Solver::Install=false + +testsuccess sed -i "s/^Date:.*/Date: Sun Mar 9 00:08:41 2025/" rootdir/var/crash/apt-edsp.$(id -u).crash + +testsuccessequal "ProblemType: AptSolver +Architecture: amd64 +Date: Sun Mar 9 00:08:41 2025 +Package: apt +Title: Failure: The 3.0 solver did not find a result +SourcePackage: apt +ErrorMessage: + Unable to satisfy dependencies. Reached two conflicting decisions: + 1. a:amd64=3 is selected for install + . + 2. a:amd64 Depends c + but none of the choices are installable: + - c:amd64 is not selected for install +AptSolverDump: +$(cat rootdir/var/log/apt/edsp.log.zst | base64 | sed 's#^# #')" cat rootdir/var/crash/apt-edsp.$(id -u).crash + +msgmsg "Test that more upgrades are not better in installs" +# FIXME: This will fail once 3.0 solver tries upgrading by source package. +insertinstalledpackage 'b' 'all' '2' 'Source: src' +insertinstalledpackage 'c' 'all' '2' 'Source: src' + +# No "Writing error report..." +testsuccess rm rootdir/var/crash/apt-edsp.$(id -u).crash +testsuccessequal "Reading package lists... +Building dependency tree... +Solving dependencies... +The following additional packages will be installed: + c +The following packages will be upgraded: + b c +2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst b [2] (3 unstable [all]) +Inst c [2] (3 unstable [all]) +Conf b (3 unstable [all]) +Conf c (3 unstable [all])" apt install --solver internal b -s + +testfailure test -e rootdir/var/crash/apt-edsp.$(id -u).crash + +# Safety check to check that the 3.0 result actually looks worse +testsuccessequal "Reading package lists... +Building dependency tree... +Solving dependencies... +The following packages will be upgraded: + b +1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. +Inst b [2] (3 unstable [all]) +Conf b (3 unstable [all])" apt install --solver 3.0 b -s diff --git a/test/integration/test-solver3-obsoleted-by b/test/integration/test-solver3-obsoleted-by new file mode 100755 index 0000000..dda6b61 --- /dev/null +++ b/test/integration/test-solver3-obsoleted-by @@ -0,0 +1,113 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' +allowremovemanual + +# We need a canary to make it trigger obsolete detection +insertpackage 'installed' 'canary' 'amd64' '1' 'Depends: good | not-yet-built | not-yet-built-all | obsolete | obsolete-all | obsolete-in-experimental | obsolete-reason | obsolete-all-reason | obsolete-in-experimental-reason | local-only | current-version | obsolete-in-downgrade | obsolete-in-downgrade-reason' + +# This package is good, it still exists in the candidate +insertpackage 'installed' 'good' 'amd64' '1' 'Source: good (= 1)' +insertpackage 'unstable' 'good' 'amd64' '2' 'Source: good (= 2)' + +# not-yet-built is not yet obsolete, because it has only been built on i386 +insertpackage 'installed,unstable' 'not-yet-built' 'amd64' '1' 'Source: not-yet-built (= 1)' +insertpackage 'unstable' 'not-yet-built' 'i386' '2' 'Source: not-yet-built (= 2)' + +# not-yet-built is not yet obsolete, because it has only been built on i386 +insertpackage 'installed,unstable' 'not-yet-built-all' 'amd64' '1' 'Source: not-yet-built-all (= 1)' +insertpackage 'unstable' 'not-yet-built-all' 'all' '2' 'Source: not-yet-built-all (= 2)' + +# obsolete is obsolete because obsolete-reason has been built on the same arch and is the source candidate +insertpackage 'installed,unstable' 'obsolete' 'amd64' '1' 'Source: obsolete (= 1)' +insertpackage 'unstable' 'obsolete-reason' 'amd64' '2' 'Source: obsolete (= 2)' + +# obsolete is obsolete because obsolete-reason has been built on the same arch and is the source candidate +insertpackage 'installed,unstable' 'obsolete-all' 'amd64' '1' 'Source: obsolete-all (= 1)' +insertpackage 'unstable' 'obsolete-all-reason' 'amd64' '2' 'Source: obsolete-all (= 2)' + +# obsolete-in-experimental is only obsoleted in experimental, so it is not yet considered obsolete +insertpackage 'installed,unstable' 'obsolete-in-experimental' 'amd64' '1' 'Source: obsolete-in-experimental (= 1)' +insertpackage 'experimental' 'obsolete-in-experimental-reason' 'amd64' '2' 'Source: obsolete-in-experimental (= 2)' + +# local-only only exists in the local install +insertpackage 'installed' 'local-only' 'amd64' '1' 'Source: local-only (= 1)' + +# current-version +insertpackage 'installed,unstable' 'current-version' 'amd64' '1' 'Source: current-version (= 1)' + +# obsolete-in-downgrade is only obsoleted in experimental, so it is not yet considered obsolete +insertpackage 'installed,experimental' 'obsolete-in-downgrade' 'amd64' '2' 'Source: obsolete-in-downgrade (= 2)' +insertpackage 'unstable' 'obsolete-in-downgrade-reason' 'amd64' '1' 'Source: obsolete-in-downgrade (= 1)' + +setupaptarchive + +testobsolete() { + out="$1" + shift + testsuccess $@ -o Debug::APT::Solver=4 -o APT::Solver=3.0 -s + cp rootdir/tmp/testsuccess.output upgrade.output + testsuccessequal "$out" grep "Obsolete:" upgrade.output +} + +# Test with manually installed local-only first, it cannot be obsolete +# We get one obsolete message from the std::any_of check that ignores manual state +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2" aptget dist-upgrade + +testsuccess aptmark auto '*' +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning + +msgmsg "Pinning the installed version down to experimental level means experimental wins" +printf 'Package: obsolete-in-experimental\nPin: release *\nPin-Priority: 1\n' > rootdir/etc/apt/preferences +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning + +msgmsg "Testing no-strict-pinning with negative pins on all packages" +printf 'Package: *\nPin: release *\nPin-Priority: -1\n' > rootdir/etc/apt/preferences +testobsolete "Obsolete: not-yet-built:amd64 - not installable +Obsolete: good:amd64 - not installable +Obsolete: not-yet-built-all:amd64 - not installable +Obsolete: obsolete:amd64 - not installable +Obsolete: obsolete-all:amd64 - not installable +Obsolete: obsolete-in-experimental:amd64 - not installable +Obsolete: obsolete-reason:amd64 - not installable +Obsolete: obsolete-in-experimental-reason:amd64 - not installable +Obsolete: obsolete-all-reason:amd64 - not installable +Obsolete: local-only:amd64 - not installable +Obsolete: current-version:amd64 - not installable +Obsolete: obsolete-in-downgrade:amd64 - not installable +Obsolete: obsolete-in-downgrade-reason:amd64 - not installable" aptget dist-upgrade + +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: obsolete-in-experimental:amd64=1 due to obsolete-in-experimental-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable +Obsolete: obsolete-in-downgrade-reason:amd64=1 due to obsolete-in-downgrade:amd64=2" aptget dist-upgrade --no-strict-pinning + + +msgmsg "Testing that pinning a downgrade does not trigger obsoletes handling" +printf 'Package: downgrade-reason\nPin: release *\nPin-Priority: 1000\n' > rootdir/etc/apt/preferences + +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade +testobsolete "Obsolete: obsolete:amd64=1 due to obsolete-reason:amd64=2 +Obsolete: obsolete-all:amd64=1 due to obsolete-all-reason:amd64=2 +Obsolete: local-only:amd64=1 - not installable" aptget dist-upgrade --no-strict-pinning + + diff --git a/test/integration/test-solver3-show-version-selection b/test/integration/test-solver3-show-version-selection new file mode 100755 index 0000000..c4d23ec --- /dev/null +++ b/test/integration/test-solver3-show-version-selection @@ -0,0 +1,28 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' 's390x' + +insertpackage 'unstable' 'sbuild-build-depends-main-dummy' 's390x' '0.invalid.0' 'Depends: libgstreamer1.0-dev' +insertpackage 'unstable' 'libgstreamer1.0-dev' 's390x' '1.25.90-2' 'Depends: libc6 (>= 2.34)' +insertpackage 'unstable' 'libc6' 's390x' '14.2.0-17' 'Depends: libgcc-s1' +insertpackage 'unstable' 'libgcc-s1' 's390x' '14.2.0-17' 'Multi-Arch: same' +insertpackage 'installed,unstable' 'libgcc-s1' 'amd64' '14.2.0-18' 'Multi-Arch: same' + +setupaptarchive + +testfailuremsg "E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. libc6:s390x is selected for install because: + 1. sbuild-build-depends-main-dummy:s390x=0.invalid.0 is selected for install + 2. sbuild-build-depends-main-dummy:s390x Depends libgstreamer1.0-dev:s390x + 3. libgstreamer1.0-dev:s390x Depends libc6:s390x (>= 2.34) + 2. libc6:s390x Depends libgcc-s1:s390x + but none of the choices are installable: + - libgcc-s1:s390x is not selected for install because: + 1. libgcc-s1:amd64 is selected for install + 2. libgcc-s1:amd64 is available in version 14.2.0-18 + 3. libgcc-s1:s390x Breaks libgcc-s1 (!= 14.2.0-17)" apt install sbuild-build-depends-main-dummy --solver 3.0 + diff --git a/test/integration/test-solver3-similar-depends b/test/integration/test-solver3-similar-depends new file mode 100755 index 0000000..a301b9a --- /dev/null +++ b/test/integration/test-solver3-similar-depends @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'installed' 'a' 'all' '2' 'Depends: a|b' +insertpackage 'unstable' 'a' 'all' '3' 'Depends: a|c' + +setupaptarchive +testsuccess apt install -o debug::apt::solver=3 a -s --solver 3.0 +cp rootdir/tmp/testsuccess.output log +msgmsg "Test that æ|b and a|c are different or groups" +testsuccess grep "Found dependency critical a:amd64=2 -> a:amd64" log +testsuccess grep "Found dependency critical a:amd64=3 -> a:amd64" log + diff --git a/test/integration/test-solver3-suggests-last b/test/integration/test-solver3-suggests-last new file mode 100755 index 0000000..9a280ee --- /dev/null +++ b/test/integration/test-solver3-suggests-last @@ -0,0 +1,26 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertpackage 'installed' 'avahi-daemon' 'all' '1' 'Suggests: avahi-autoipd' +insertpackage 'installed' 'dhcpd-base' 'all' '1' 'Provides: avahi-autoipd' +insertpackage 'unstable' 'avahi-autoipd' 'all' 2 +insertpackage 'unstable' 'dhcpd-base' 'all' '2' + +setupaptarchive + +for command in "aptget upgrade" "aptget dist-upgrade" "apt upgrade" "apt dist-upgrade"; do +testsuccessequal "Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + dhcpd-base +1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst dhcpd-base [1] (2 unstable [all]) +Conf dhcpd-base (2 unstable [all])" $command -s -q +done + diff --git a/test/integration/test-sourceslist-include-exclude b/test/integration/test-sourceslist-include-exclude new file mode 100755 index 0000000..7188b97 --- /dev/null +++ b/test/integration/test-sourceslist-include-exclude @@ -0,0 +1,63 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'i386' 'armel' + +insertpackage 'unstable' 'foo' 'all' '1.0' +insertpackage 'unstable' 'bar' 'all' '1.0' +insertpackage 'unstable' 'baz' 'all' '1.0' + +setupaptarchive + +rm rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.list + +cat > rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.sources << EOF +Types: deb +URIs: file://${TMPWORKINGDIRECTORY}/aptarchive +Suites: unstable +Components: main +Include: foo +EOF + +testsuccess apt update +testsuccessequal "foo/unstable 1.0 all" apt list -qq + +cat > rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.sources << EOF +Types: deb +URIs: file://${TMPWORKINGDIRECTORY}/aptarchive +Suites: unstable +Components: main +Exclude: foo bar +EOF + +testsuccess apt update +testsuccessequal "baz/unstable 1.0 all" apt list -qq + + +cat > rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.sources << EOF +Types: deb +URIs: file://${TMPWORKINGDIRECTORY}/aptarchive +Suites: unstable +Components: main +Exclude: foo , baz +EOF + +testsuccess apt update +testsuccessequal "bar/unstable 1.0 all" apt list -qq + +cat > rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.sources << EOF +Types: deb +URIs: file://${TMPWORKINGDIRECTORY}/aptarchive +Suites: unstable +Components: main +Include: foo +Exclude: foo , baz +EOF + +testfailureequal "E: Both 'Include' and 'Exclude' specified in ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.sources:1 +E: The list of sources could not be read." apt update + diff --git a/test/integration/test-specific-architecture-dependencies b/test/integration/test-specific-architecture-dependencies index 447e407..b9ce155 100755 --- a/test/integration/test-specific-architecture-dependencies +++ b/test/integration/test-specific-architecture-dependencies @@ -4,6 +4,7 @@ set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment +allowremovemanual configarchitecture 'amd64' 'i386' insertpackage 'unstable' 'libc6' 'amd64,i386' '1' 'Multi-Arch: same' @@ -193,6 +194,11 @@ The following NEW packages will be installed: Inst foo-depender (1 unstable [amd64]) Conf foo-depender (1 unstable [amd64])' aptget install foo-depender -s +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. foo-depender:i386=1 is selected for install + 2. foo-depender:i386 Depends foo:i386 + but none of the choices are installable: + [no choices]' aptget install foo-depender:i386 -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -203,7 +209,7 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install foo-depender:i386 -s --solver internal testsuccessequal 'Reading package lists... Building dependency tree... @@ -311,6 +317,11 @@ Remv libold [1] Inst breaker-x64 (1 unstable [amd64]) Conf breaker-x64 (1 unstable [amd64])' aptget install breaker-x64:amd64 -s +testfailuremsg 'E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. depender-x32:amd64=1 is selected for install + 2. depender-x32:amd64 Depends libc6:i386 + but none of the choices are installable: + [no choices]' aptget install depender-x32 -s --solver 3.0 testfailureequal 'Reading package lists... Building dependency tree... Some packages could not be installed. This may mean that you have @@ -321,4 +332,4 @@ 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 +E: Unable to correct problems, you have held broken packages.' aptget install depender-x32 -s --solver internal diff --git a/test/integration/test-suggests-promoted-to-recommends b/test/integration/test-suggests-promoted-to-recommends new file mode 100755 index 0000000..57497f7 --- /dev/null +++ b/test/integration/test-suggests-promoted-to-recommends @@ -0,0 +1,65 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture 'amd64' + +insertinstalledpackage 'oldrec' 'all' '1' +insertinstalledpackage 'oldsug' 'all' '1' +insertinstalledpackage 'instreg' 'all' '1' +insertinstalledpackage 'instsug' 'all' '1' + +insertpackage 'unstable' 'unsatrec' 'all' '2' +insertpackage 'unstable' 'unsatsug' 'all' '2' +insertpackage 'unstable' 'newrec' 'all' '2' +insertpackage 'unstable' 'newsug' 'all' '2' +insertpackage 'unstable' 'promote' 'all' '2' + +insertinstalledpackage 'foo' 'all' '1' 'Recommends: oldrec, instrec, unsatrec +Suggests: oldsug, instsug, unsatsug, promote' +insertpackage 'unstable' 'foo' 'all' '2' 'Recommends: instrec, unsatrec, promote, newrec +Suggests: instsug, unsatsug, newsug' + +setupaptarchive + +testsuccess aptmark auto oldrec instrec oldsug instsug + +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... +Calculating upgrade... +The following packages were automatically installed and are no longer required: + oldrec oldsug +Use 'apt autoremove' to remove them. +The following NEW packages will be installed: + newrec promote +The following packages will be upgraded: + foo +1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst foo [1] (2 unstable [all]) +Inst newrec (2 unstable [all]) +Inst promote (2 unstable [all]) +Conf foo (2 unstable [all]) +Conf newrec (2 unstable [all]) +Conf promote (2 unstable [all])" apt full-upgrade -s + +testsuccessequal "Reading package lists... +Building dependency tree... +Reading state information... +Calculating upgrade... +The following packages were automatically installed and are no longer required: + oldrec oldsug +Use 'apt autoremove' to remove them. +The following NEW packages will be installed: + newrec newsug +The following packages will be upgraded: + foo +1 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +Inst foo [1] (2 unstable [all]) +Inst newrec (2 unstable [all]) +Inst newsug (2 unstable [all]) +Conf foo (2 unstable [all]) +Conf newrec (2 unstable [all]) +Conf newsug (2 unstable [all])" apt full-upgrade -s --install-suggests diff --git a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard index 82e1d61..20d4d0c 100755 --- a/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard +++ b/test/integration/test-ubuntu-bug-1304403-obsolete-priority-standard @@ -6,6 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture 'i386' +allowremovemanual # Regression test for LP: #1304403 # diff --git a/test/integration/test-ubuntu-bug-1974196 b/test/integration/test-ubuntu-bug-1974196 index 7c38723..08dccff 100755 --- a/test/integration/test-ubuntu-bug-1974196 +++ b/test/integration/test-ubuntu-bug-1974196 @@ -20,6 +20,19 @@ noprogress() { "$@" | sed /^Progress/d } +testsuccessequal "Reading package lists... +Building dependency tree... +The following additional packages will be installed: + depends pkg1 +The following packages will be upgraded: + depends pkg0 pkg1 +3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst depends [1] (2 unstable [all]) [] +Inst pkg0 [1] (2 unstable [all]) [] +Inst pkg1 [1] (2 unstable [all]) +Conf depends (2 unstable [all]) +Conf pkg0 (2 unstable [all]) +Conf pkg1 (2 unstable [all])" aptget install pkg0 -s testsuccessequal "Reading package lists... Building dependency tree... Upgrading: depends:arm64 < 1 | 2 @ii umH Ib > due to depends:arm64 Depends on pkg0:arm64 < 1 -> 2 @ii pumU > (= 1) @@ -40,7 +53,7 @@ Inst pkg0 [1] (2 unstable [all]) [] Inst pkg1 [1] (2 unstable [all]) Conf depends (2 unstable [all]) Conf pkg0 (2 unstable [all]) -Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s +Conf pkg1 (2 unstable [all])" aptget install pkg0 -o debug::pkgdepcache::marker=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::AutoInstall=1 -s --solver internal testsuccessequal "Percentage: 0 Message: Start up solver… diff --git a/test/integration/test-ubuntu-bug-2003851-retry-after b/test/integration/test-ubuntu-bug-2003851-retry-after new file mode 100755 index 0000000..492dc27 --- /dev/null +++ b/test/integration/test-ubuntu-bug-2003851-retry-after @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +setupenvironment +configarchitecture 'amd64' + +insertpackage 'jammy,jammy-updates' 'testpkg' 'all' '1' + +setupaptarchive --no-update +changetowebserver + +webserverconfig 'aptwebserver::failrequest' '503' +webserverconfig 'aptwebserver::failrequest::dists/jammy/InRelease' '4' +testwarningequal "Delaying http://localhost:${APTHTTPPORT} jammy InRelease by 1 seconds +Ign:1 http://localhost:${APTHTTPPORT} jammy InRelease + 503 Service Unavailable +Get:2 http://localhost:${APTHTTPPORT} jammy-updates InRelease [1398 B] +Err:1 http://localhost:${APTHTTPPORT} jammy InRelease + 503 Service Unavailable +Get:3 http://localhost:${APTHTTPPORT} jammy-updates/main all Packages [257 B] +Get:4 http://localhost:${APTHTTPPORT} jammy-updates/main Translation-en [235 B] +Reading package lists... +Building dependency tree... +All packages are up to date. +W: Failed to fetch http://localhost:${APTHTTPPORT}/dists/jammy/InRelease 503 Service Unavailable +W: Some index files failed to download. They have been ignored, or old ones used instead." apt update -o acquire::retries=1 -o debug::acquire::retries=1 diff --git a/test/integration/test-ubuntu-bug-2111792-intersecting-dependencies b/test/integration/test-ubuntu-bug-2111792-intersecting-dependencies new file mode 100755 index 0000000..b63991a --- /dev/null +++ b/test/integration/test-ubuntu-bug-2111792-intersecting-dependencies @@ -0,0 +1,233 @@ +#!/bin/sh +# This is the same test as test-bug-961266-hold-means-hold with a chaos actor +# introduced that provides a version of git that satisfies all >> constraints, +# to reproduce the same issue with gpgv and gpgv-from-sq in the Ubuntu bug. +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" + +# This only works with the 3.0 solver. The classic solver does not intersect +# dependencies and will cause the chaos actor to be installed, so force it. +export APT_SOLVER=3.0 + +setupenvironment +configarchitecture 'amd64' 'i386' + +insertinstalledpackage 'git' 'amd64' '1:2.25.1-1' 'Multi-Arch: foreign' +insertinstalledpackage 'git-cvs' 'amd64' '1:2.25.1-1' 'Depends: git (>> 1:2.25.1), git (<< 1:2.25.1-.)' + +insertpackage 'unstable' 'git' 'amd64,i386' '1:2.26.2-1' 'Multi-Arch: foreign' +insertpackage 'unstable' 'git-cvs' 'amd64,i386' '1:2.26.2-1' 'Depends: git (>> 1:2.26.2), git (<< 1:2.26.2-.)' +insertpackage 'unstable' 'git-ng' 'amd64,i386' '1:2.26.2-1' 'Depends: git (>> 1:2.26.2), git (<< 1:2.26.2-.)' +insertpackage 'unstable' 'git-rec-ng' 'amd64,i386' '1:2.26.2-1' 'Recommends: git (>> 1:2.26.2) +Depends: git (<< 1:2.26.2-.)' +insertpackage 'unstable' 'chaos-actor' 'amd64,i386' '1' 'Provides: git (2:1)' + +# Another test case we don't want to merge +insertpackage 'unstable' 'xserver-xorg' 'amd64,i386' '1' 'Depends: xserver-xorg-input-all | xorg-driver-input, xserver-xorg-video-all | xorg-driver-video, xorg-driver-input, xorg-driver-video' +insertpackage 'unstable' 'xserver-xorg-noalt' 'amd64,i386' '1' 'Depends: xorg-driver-input, xorg-driver-video' + + +insertpackage 'unstable' 'xserver-xorg-input-all' 'amd64,i386' '1' 'Provides: xorg-driver-input' +insertpackage 'unstable' 'xserver-xorg-video-all' 'amd64,i386' '1' 'Provides: xorg-driver-video' +insertpackage 'unstable' 'xorgxrdp' 'amd64,i386' '1' 'Provides: xorg-driver-input, xorg-driver-video +Priority: extra' + +setupaptarchive + +msgmsg 'The setup is' 'fine' +UPGRADE='Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages will be upgraded: + git git-cvs +2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Inst git-cvs [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) [] +Inst git [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) +Conf git-cvs (1:2.26.2-1 unstable [amd64]) +Conf git (1:2.26.2-1 unstable [amd64])' +testsuccessequal "$UPGRADE" apt upgrade -s +testsuccessequal "$UPGRADE" aptget upgrade -s +testsuccessequal "$UPGRADE" apt full-upgrade -s +testsuccessequal "$UPGRADE" aptget dist-upgrade -s + +testsuccessequal 'Reading package lists... +Building dependency tree... +The following additional packages will be installed: + git git-cvs +The following NEW packages will be installed: + git-ng +The following packages will be upgraded: + git git-cvs +2 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst git-cvs [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) [] +Inst git [1:2.25.1-1] (1:2.26.2-1 unstable [amd64]) +Inst git-ng (1:2.26.2-1 unstable [amd64]) +Conf git-cvs (1:2.26.2-1 unstable [amd64]) +Conf git (1:2.26.2-1 unstable [amd64]) +Conf git-ng (1:2.26.2-1 unstable [amd64])' apt install git-ng -s + + +msgmsg 'Now mix it up by' 'holding git' +testsuccessequal 'git set on hold.' aptmark hold git +testsuccessequal 'git' aptmark showholds + +NOUPGRADE='Reading package lists... +Building dependency tree... +Calculating upgrade... +The following packages have been kept back: + git git-cvs +0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.' + +testsuccessequal "$NOUPGRADE" apt upgrade -s +testsuccessequal "$NOUPGRADE" apt full-upgrade -s +testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s +testsuccessequal "$NOUPGRADE" aptget upgrade -s + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + but none of the choices are installable: + - git:amd64=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install + 2. git:amd64=1:2.25.1-1 conflicts with other versions of itself + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install as above + 2. git:amd64 Conflicts git:i386' apt install git-ng -s + + +msgmsg 'Now mix it up by' 'holding git-cvs' +testsuccessequal 'Canceled hold on git.' aptmark unhold git +testsuccessequal 'git-cvs set on hold.' aptmark hold git-cvs +testsuccessequal 'git-cvs' aptmark showholds + +testsuccessequal "$NOUPGRADE" apt upgrade -s +testsuccessequal "$NOUPGRADE" apt full-upgrade -s +testsuccessequal "$NOUPGRADE" aptget upgrade -s +testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git:amd64=1:2.26.2-1 is selected as an upgrade because: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + [selected git-ng:amd64] + For context, additional choices that could not be installed: + * In git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.): + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64 is selected for install + 2. git:amd64 Conflicts git:i386 + 2. git:amd64=1:2.26.2-1 is not selected for install because: + 1. git-cvs:amd64=1:2.25.1-1 is selected for install + 2. git-cvs:amd64=1:2.25.1-1 Depends git (> 1:2.25.1) and Depends git (< 1:2.25.1-.) + 3. git:amd64=1:2.25.1-1 conflicts with other versions of itself' apt install git-ng -s + + +msgmsg 'Now mix it up by' 'holding both' +testsuccessequal 'git set on hold.' aptmark hold git +testsuccessequal 'git +git-cvs' aptmark showholds + +testsuccessequal "$NOUPGRADE" apt upgrade -s +testsuccessequal "$NOUPGRADE" apt full-upgrade -s +testsuccessequal "$NOUPGRADE" aptget upgrade -s +testsuccessequal "$NOUPGRADE" aptget dist-upgrade -s + +testfailureequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +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: + git-ng : Depends: git (> 1:2.26.2) +E: Unable to satisfy dependencies. Reached two conflicting decisions: + 1. git-ng:amd64=1:2.26.2-1 is selected for install + 2. git-ng:amd64 Depends git (> 1:2.26.2) and Depends git (< 1:2.26.2-.) + but none of the choices are installable: + - git:amd64=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install + 2. git:amd64=1:2.25.1-1 conflicts with other versions of itself + - git:i386=1:2.26.2-1 is not selected for install because: + 1. git:amd64=1:2.25.1-1 is selected for install as above + 2. git:amd64 Conflicts git:i386' apt install git-ng -s + +# The Recommends: git (>> 1:2.26.2-1) will be left unsatisfied rather than pulling in chaos-actor. +testsuccessequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +Recommended packages: + git +The following NEW packages will be installed: + git-rec-ng +0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. +Inst git-rec-ng (1:2.26.2-1 unstable [amd64]) +Conf git-rec-ng (1:2.26.2-1 unstable [amd64])' apt install git-rec-ng -s + +msgmsg 'Check that we do not merge unrelated things' + +testsuccessequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +The following additional packages will be installed: + xserver-xorg-input-all xserver-xorg-video-all +The following NEW packages will be installed: + xserver-xorg xserver-xorg-input-all xserver-xorg-video-all +0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded. +Inst xserver-xorg-input-all (1 unstable [amd64]) +Inst xserver-xorg-video-all (1 unstable [amd64]) +Inst xserver-xorg (1 unstable [amd64]) +Conf xserver-xorg-input-all (1 unstable [amd64]) +Conf xserver-xorg-video-all (1 unstable [amd64]) +Conf xserver-xorg (1 unstable [amd64])' apt install -s xserver-xorg + +testsuccessequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +The following additional packages will be installed: + xserver-xorg-input-all xserver-xorg-video-all +The following NEW packages will be installed: + xserver-xorg-input-all xserver-xorg-noalt xserver-xorg-video-all +0 upgraded, 3 newly installed, 0 to remove and 2 not upgraded. +Inst xserver-xorg-input-all (1 unstable [amd64]) +Inst xserver-xorg-video-all (1 unstable [amd64]) +Inst xserver-xorg-noalt (1 unstable [amd64]) +Conf xserver-xorg-input-all (1 unstable [amd64]) +Conf xserver-xorg-video-all (1 unstable [amd64]) +Conf xserver-xorg-noalt (1 unstable [amd64])' apt install -s xserver-xorg-noalt + +testsuccessequal 'Reading package lists... +Building dependency tree... +Solving dependencies... +The following NEW packages will be installed: + xorgxrdp xserver-xorg +0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded. +Inst xorgxrdp (1 unstable [amd64]) +Inst xserver-xorg (1 unstable [amd64]) +Conf xorgxrdp (1 unstable [amd64]) +Conf xserver-xorg (1 unstable [amd64])' apt install -s xserver-xorg xorgxrdp diff --git a/test/integration/test-ubuntu-bug-614993 b/test/integration/test-ubuntu-bug-614993 index 542e551..564c5a8 100755 --- a/test/integration/test-ubuntu-bug-614993 +++ b/test/integration/test-ubuntu-bug-614993 @@ -6,14 +6,14 @@ TESTDIR="$(readlink -f "$(dirname "$0")")" setupenvironment configarchitecture "amd64" setupaptarchive +allowremovemanual # test success UPGRADE="Reading package lists... Building dependency tree... The following additional packages will be installed: - libdrm-intel1 libdrm-nouveau1 libdrm-radeon1 libdrm2 libmtdev1 - libutouch-grail1 libx11-xcb1 libxcb-aux0 libxcb-dri2-0 libxfont1 - xserver-common xserver-xorg-core xserver-xorg-input-all + 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 @@ -28,18 +28,13 @@ The following additional packages will be installed: 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 libdrm-radeon1 libdrm2 libxfont1 - xserver-common xserver-xorg xserver-xorg-core xserver-xorg-input-all - xserver-xorg-input-evdev xserver-xorg-input-mouse + 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 @@ -53,9 +48,9 @@ The following packages will be upgraded: 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 -44 upgraded, 5 newly installed, 1 to remove and 0 not upgraded. -Need to get 0 B/5561 kB of archives. -After this operation, 3027 kB disk space will be freed. +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 +testfailureequal "$UPGRADE" aptget install xserver-xorg --trivial-only -o APT::Get::Upgrade-By-Source-Package=0 diff --git a/test/integration/test-unpack-different-version-unpacked b/test/integration/test-unpack-different-version-unpacked index e7da64c..c1063d9 100755 --- a/test/integration/test-unpack-different-version-unpacked +++ b/test/integration/test-unpack-different-version-unpacked @@ -14,8 +14,8 @@ cleanstatus() { 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' +#FIXME(internal): the reported version is wrong, it should be 1, not 2 testsuccessequal 'Reading package lists... Building dependency tree... 0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded. diff --git a/test/interactive-helper/CMakeLists.txt b/test/interactive-helper/CMakeLists.txt index 8e87643..bfca6c8 100644 --- a/test/interactive-helper/CMakeLists.txt +++ b/test/interactive-helper/CMakeLists.txt @@ -14,6 +14,8 @@ add_executable(mthdcat mthdcat.cc) target_link_libraries(mthdcat ${APTPKG_LIB}) add_executable(testdeb testdeb.cc) target_link_libraries(testdeb ${APTPKG_LIB}) +add_executable(testkeep testkeep.cc) +target_link_libraries(testkeep ${APTPKG_LIB}) add_executable(extract-control extract-control.cc) target_link_libraries(extract-control ${APTPKG_LIB}) add_executable(aptwebserver aptwebserver.cc) diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc index a305811..e9882ab 100644 --- a/test/interactive-helper/aptwebserver.cc +++ b/test/interactive-helper/aptwebserver.cc @@ -147,7 +147,7 @@ static void addFileHeaders(std::list &headers, FileFd &data)/*{{{*/ contentTypeSet(headers) == false) { std::string const name = data.Name(); - std::string ext = flExtension(name); + std::string ext{flExtension(name)}; if (name.empty() == false && ext.empty() == false && name != ext) { std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); @@ -744,6 +744,7 @@ static void * handleClient(int const client, size_t const id) /*{{{*/ for (::Configuration::Item *I = Overwrite->Child; I != NULL; I = I->Next) { regex_t *pattern = new regex_t; + DEFER([&] { regfree(pattern); }); int const res = regcomp(pattern, I->Tag.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB); if (res != 0) { @@ -754,7 +755,7 @@ static void * handleClient(int const client, size_t const id) /*{{{*/ } if (regexec(pattern, filename.c_str(), 0, 0, 0) == 0) { - filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", flNotDir(filename)); + filename = _config->Find("aptwebserver::overwrite::" + I->Tag + "::filename", std::string{flNotDir(filename)}); if (filename.find("/") == std::string::npos) { auto directory = _config->Find("aptwebserver::overwrite::" + I->Tag + "::directory", flNotFile(filename)); @@ -764,20 +765,24 @@ static void * handleClient(int const client, size_t const id) /*{{{*/ filename.erase(0,1); if (filename.empty()) filename = "./"; - regfree(pattern); break; } - regfree(pattern); } } // automatic retry can be tested with this { int failrequests = _config->FindI("aptwebserver::failrequest::" + filename, 0); + int retryafter = _config->FindI("aptwebserver::failrequest::retryafter", 0); if (failrequests != 0) { --failrequests; _config->Set(("aptwebserver::failrequest::" + filename).c_str(), failrequests); + if (retryafter != 0) + { + std::string retryafter_hdr = "Retry-After: " + std::to_string(retryafter); + headers.push_back(retryafter_hdr); + } sendError(log, client, _config->FindI("aptwebserver::failrequest", 400), *m, sendContent, "Server is configured to fail this file.", headers); continue; } diff --git a/test/interactive-helper/mthdcat.cc b/test/interactive-helper/mthdcat.cc index 2961b20..8826faa 100644 --- a/test/interactive-helper/mthdcat.cc +++ b/test/interactive-helper/mthdcat.cc @@ -3,13 +3,14 @@ the file ends */ #include +#include #include int main() { - char Buffer[4096]; - + char Buffer[APT_BUFFER_SIZE]; + while (1) { int Res = read(STDIN_FILENO,Buffer,sizeof(Buffer)); diff --git a/test/interactive-helper/teestream.h b/test/interactive-helper/teestream.h index 058717a..511c6da 100644 --- a/test/interactive-helper/teestream.h +++ b/test/interactive-helper/teestream.h @@ -19,13 +19,13 @@ template std::basic_streambuf * const sb2) : s1(sb1), s2(sb2) {} protected: - virtual std::streamsize xsputn(const CharT* s, std::streamsize c) APT_OVERRIDE + virtual std::streamsize xsputn(const CharT* s, std::streamsize c) 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 + int_type overflow(int_type ch = Traits::eof()) override { auto const eof = Traits::eof(); if (Traits::eq_int_type(ch, Traits::eof()) == true) @@ -35,12 +35,12 @@ template 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 + void imbue(const std::locale& loc) override { s1->pubimbue(loc); s2->pubimbue(loc); } - virtual int sync() APT_OVERRIDE + int sync() override { auto const r1 = s1->pubsync(); auto const r2 = s2->pubsync(); diff --git a/test/interactive-helper/testdeb.cc b/test/interactive-helper/testdeb.cc index 0bb24a5..2037618 100644 --- a/test/interactive-helper/testdeb.cc +++ b/test/interactive-helper/testdeb.cc @@ -13,7 +13,7 @@ class NullStream : public pkgDirStream { public: - virtual bool DoItem(Item &/*Itm*/, int &/*Fd*/) APT_OVERRIDE {return true;}; + bool DoItem(Item &/*Itm*/, int &/*Fd*/) override {return true;}; }; static bool Test(const char *File) diff --git a/test/interactive-helper/testkeep.cc b/test/interactive-helper/testkeep.cc new file mode 100644 index 0000000..f65f432 --- /dev/null +++ b/test/interactive-helper/testkeep.cc @@ -0,0 +1,57 @@ +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +static bool test(const char *name, bool hold) +{ + pkgCacheFile cache; + if (not cache.Open()) + return false; + + for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg) + std::cout << "A: " << APT::PrettyPkg(cache, Pkg) << std::endl; + + cache->MarkDelete(cache->FindPkg(name)); + if (hold) + cache->MarkProtected(cache->FindPkg(name)); + + for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg) + std::cout << "B: " << APT::PrettyPkg(cache, Pkg) << std::endl; + + pkgProblemResolver resolve(cache); + bool res = resolve.ResolveByKeep(); + + for (auto Pkg = cache->PkgBegin(); Pkg.end() == false; ++Pkg) + std::cout << "C: " << APT::PrettyPkg(cache, Pkg) << std::endl; + + return res; +} + +int main(int argc, const char *argv[]) +{ + if (argc != 2 && argc != 3) + { + return _error->Error("Expected one argument"); + goto err; + } + if (not pkgInitConfig(*_config)) + goto err; + if (not pkgInitSystem(*_config, _system)) + goto err; + if (not test(argv[1], argc > 2 && strcmp(argv[2], "--hold") == 0)) + goto err; + + return 0; +err: + _error->DumpErrors(); + return 1; +} + diff --git a/test/libapt/acqprogress_test.cc b/test/libapt/acqprogress_test.cc index d4596c8..16b17c3 100644 --- a/test/libapt/acqprogress_test.cc +++ b/test/libapt/acqprogress_test.cc @@ -4,7 +4,7 @@ #include #include #include -#include +#include "common.h" #include #include @@ -13,8 +13,8 @@ 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(); } + [[nodiscard]] std::string DescURI() const override { return ""; } + [[nodiscard]] HashStringList GetExpectedHashes() const override { return {}; } }; diff --git a/test/libapt/assert_pubkeyalgo_test.cc b/test/libapt/assert_pubkeyalgo_test.cc new file mode 100644 index 0000000..88a070b --- /dev/null +++ b/test/libapt/assert_pubkeyalgo_test.cc @@ -0,0 +1,56 @@ +#include + +#include +#include + +#include "common.h" + +TEST(AssertPubKeyAlgo_Test, test) +{ + EXPECT_TRUE(IsAssertedPubKeyAlgo("rsa2048", ">=rsa2048")); + _error->DumpErrors(); + EXPECT_TRUE(_error->empty()); + + EXPECT_TRUE(IsAssertedPubKeyAlgo("rsa2048", "another,>=rsa2048")); + EXPECT_TRUE(_error->empty()); + + EXPECT_FALSE(IsAssertedPubKeyAlgo("rsa2048", ">=rsa2049")); + EXPECT_TRUE(_error->empty()); + + EXPECT_TRUE(IsAssertedPubKeyAlgo("ed25519", ">=rsa2048,ed25519")); + EXPECT_TRUE(_error->empty()); +} + +TEST(AssertPubKeyAlgo_Test, CanOnlyCompareRSA) +{ + std::string msg; + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ">=ed25519")); + EXPECT_TRUE(_error->PopMessage(msg)); + EXPECT_EQ("Unrecognized public key specification '>=ed25519' in option >=ed25519", msg); + EXPECT_TRUE(_error->empty()); +} + +TEST(AssertPubKeyAlgo_Test, EmptyOption) +{ + std::string msg; + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", "")); + EXPECT_TRUE(_error->empty()); + + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ",")); + EXPECT_TRUE(_error->PopMessage(msg)); + EXPECT_EQ("Empty item in public key assertion string option ,", msg); + EXPECT_TRUE(_error->empty()); + + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", "moo,")); + EXPECT_TRUE(_error->empty()); + + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", "moo,,")); + EXPECT_TRUE(_error->PopMessage(msg)); + EXPECT_EQ("Empty item in public key assertion string option moo,,", msg); + EXPECT_TRUE(_error->empty()); + + EXPECT_FALSE(IsAssertedPubKeyAlgo("ed25519", ",moo")); + EXPECT_TRUE(_error->PopMessage(msg)); + EXPECT_EQ("Empty item in public key assertion string option ,moo", msg); + EXPECT_TRUE(_error->empty()); +} diff --git a/test/libapt/authconf_test.cc b/test/libapt/authconf_test.cc index 3a7b149..b301b8b 100644 --- a/test/libapt/authconf_test.cc +++ b/test/libapt/authconf_test.cc @@ -7,7 +7,7 @@ #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/cachefilter_test.cc b/test/libapt/cachefilter_test.cc index 08812e0..3e24010 100644 --- a/test/libapt/cachefilter_test.cc +++ b/test/libapt/cachefilter_test.cc @@ -5,7 +5,7 @@ #include -#include +#include "common.h" TEST(CacheFilterTest, ArchitectureSpecification) { diff --git a/test/libapt/cdrom_test.cc b/test/libapt/cdrom_test.cc index 364971e..4c43f19 100644 --- a/test/libapt/cdrom_test.cc +++ b/test/libapt/cdrom_test.cc @@ -9,7 +9,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/cdromfindpackages_test.cc b/test/libapt/cdromfindpackages_test.cc index 9e13c1d..6d65867 100644 --- a/test/libapt/cdromfindpackages_test.cc +++ b/test/libapt/cdromfindpackages_test.cc @@ -10,7 +10,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/commandline_test.cc b/test/libapt/commandline_test.cc index cde80b4..035d698 100644 --- a/test/libapt/commandline_test.cc +++ b/test/libapt/commandline_test.cc @@ -4,7 +4,7 @@ #include #include -#include +#include "common.h" class CLT: public CommandLine { public: diff --git a/test/libapt/common.h b/test/libapt/common.h new file mode 100644 index 0000000..d69711d --- /dev/null +++ b/test/libapt/common.h @@ -0,0 +1,11 @@ +/* + * GTest is a horribly broken library needing lots of diagnostic overrides, + * do them here. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdouble-promotion" +#pragma GCC diagnostic ignored "-Wsign-promo" +#pragma GCC diagnostic ignored "-Wsign-compare" +#include +#pragma GCC diagnostic pop + diff --git a/test/libapt/compareversion_test.cc b/test/libapt/compareversion_test.cc index 0fe32cf..c8b9e41 100644 --- a/test/libapt/compareversion_test.cc +++ b/test/libapt/compareversion_test.cc @@ -28,7 +28,7 @@ #include #include -#include +#include "common.h" using namespace std; diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc index 4d297a9..37bc5ff 100644 --- a/test/libapt/configuration_test.cc +++ b/test/libapt/configuration_test.cc @@ -6,7 +6,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" @@ -230,3 +230,35 @@ List::Option2 { "Multi"; EXPECT_TRUE(Cnf.FindB("Trailing")); EXPECT_FALSE(Cnf.Exists("Commented::Out")); } + +TEST(ConfigurationTest, Color) +{ + _config->Clear(); + _config->Set("APT::Color::Neutral", "\x1B[N"); + _config->Set("APT::Color::Green", "\x1B[G"); + // This is escaped for extra fun + _config->Set("APT::Color::Bold", "\\x1B[B"); + _config->Set("APT::Color::BoldGreen", "bold green"); + _config->Set("APT::Color::BoldGreenRef", "boldgreen"); + _config->Set("APT::Color::BoldGreenNeutral", "boldgreen neutral"); + _config->Set("APT::Color::BoldGreenRefNeutral", "boldgreenref neutral"); + + EXPECT_EQ("", APT::Configuration::color("bold")); + EXPECT_EQ("", APT::Configuration::color("green")); + EXPECT_EQ("content", APT::Configuration::color("green", "content")); + EXPECT_EQ("", APT::Configuration::color("boldgreen")); + EXPECT_EQ("", APT::Configuration::color("boldgreenref")); + EXPECT_EQ("", APT::Configuration::color("boldgreenneutral")); + EXPECT_EQ("", APT::Configuration::color("boldgreenrefneutral")); + + _config->Set("APT::Color", "true"); + EXPECT_EQ("\x1B[B", APT::Configuration::color("bold")); + EXPECT_EQ("\x1B[G", APT::Configuration::color("green")); + EXPECT_EQ("\x1B[Gcontent\x1B[N", APT::Configuration::color("green", "content")); + EXPECT_EQ("\x1B[B\x1B[G", APT::Configuration::color("boldgreen")); + EXPECT_EQ("\x1B[B\x1B[G", APT::Configuration::color("boldgreenref")); + EXPECT_EQ("\x1B[B\x1B[G\x1B[N", APT::Configuration::color("boldgreenneutral")); + EXPECT_EQ("\x1B[B\x1B[G\x1B[N", APT::Configuration::color("boldgreenrefneutral")); + // Reset for other tests + _config->Clear(); +} diff --git a/test/libapt/extracttar_test.cc b/test/libapt/extracttar_test.cc index 246aea7..bf3a3e3 100644 --- a/test/libapt/extracttar_test.cc +++ b/test/libapt/extracttar_test.cc @@ -7,16 +7,16 @@ #include #include "assert.h" -#include +#include "common.h" class Stream : public pkgDirStream { public: int count; Stream () { count = 0; } - bool DoItem(Item &Itm,int &Fd) APT_OVERRIDE { (void)Itm; (void)Fd; count++; return true; } - bool Fail(Item &Itm,int Fd) APT_OVERRIDE { (void)Itm; (void)Fd; return true; } - bool FinishedFile(Item &Itm,int Fd) APT_OVERRIDE { (void)Itm; (void)Fd; return true; } + bool DoItem(Item &Itm,int &Fd) override { (void)Itm; (void)Fd; count++; return true; } + bool Fail(Item &Itm,int Fd) override { (void)Itm; (void)Fd; return true; } + bool FinishedFile(Item &Itm,int Fd) override { (void)Itm; (void)Fd; return true; } ~Stream() {} }; diff --git a/test/libapt/file-helpers.cc b/test/libapt/file-helpers.cc index bb7052b..541dea1 100644 --- a/test/libapt/file-helpers.cc +++ b/test/libapt/file-helpers.cc @@ -9,7 +9,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/fileutl_test.cc b/test/libapt/fileutl_test.cc index da772df..2badf54 100644 --- a/test/libapt/fileutl_test.cc +++ b/test/libapt/fileutl_test.cc @@ -12,7 +12,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" @@ -288,7 +288,7 @@ TEST(FileUtlTest, Popen) OpenFds = Glob("/proc/self/fd/*"); // output something - const char* Args[10] = {"/bin/echo", "meepmeep", NULL}; + const char* Args[10] = {"echo", "meepmeep", NULL}; EXPECT_TRUE(Popen(Args, Fd, Child, FileFd::ReadOnly)); EXPECT_TRUE(Fd.Read(buf, sizeof(buf)-1, &n)); buf[n] = 0; diff --git a/test/libapt/getarchitectures_test.cc b/test/libapt/getarchitectures_test.cc index 4f76722..a4ccf67 100644 --- a/test/libapt/getarchitectures_test.cc +++ b/test/libapt/getarchitectures_test.cc @@ -6,7 +6,7 @@ #include #include -#include +#include "common.h" TEST(ArchitecturesTest,SimpleLists) { diff --git a/test/libapt/getlanguages_test.cc b/test/libapt/getlanguages_test.cc index 7146c5a..941a152 100644 --- a/test/libapt/getlanguages_test.cc +++ b/test/libapt/getlanguages_test.cc @@ -14,7 +14,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc index f002355..d48f366 100644 --- a/test/libapt/getlistoffilesindir_test.cc +++ b/test/libapt/getlistoffilesindir_test.cc @@ -7,7 +7,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc index 42e8355..d6ef074 100644 --- a/test/libapt/globalerror_test.cc +++ b/test/libapt/globalerror_test.cc @@ -7,7 +7,7 @@ #include #include -#include +#include "common.h" TEST(GlobalErrorTest,BasicDiscard) { diff --git a/test/libapt/gtest_runner.cc b/test/libapt/gtest_runner.cc index 09fc55d..d0f81e2 100644 --- a/test/libapt/gtest_runner.cc +++ b/test/libapt/gtest_runner.cc @@ -5,7 +5,7 @@ #include #include -#include +#include "common.h" int main(int argc, char **argv) { ::testing::InitGoogleTest(&argc, argv); diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc index 901150e..48d52ac 100644 --- a/test/libapt/hashsums_test.cc +++ b/test/libapt/hashsums_test.cc @@ -9,7 +9,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/indexcopytosourcelist_test.cc b/test/libapt/indexcopytosourcelist_test.cc index 7dbe973..f112ae9 100644 --- a/test/libapt/indexcopytosourcelist_test.cc +++ b/test/libapt/indexcopytosourcelist_test.cc @@ -7,7 +7,7 @@ #include #include -#include +#include "common.h" class NoCopy : private IndexCopy { public: @@ -15,10 +15,10 @@ class NoCopy : private IndexCopy { 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; } + bool GetFile(std::string &/*Filename*/, unsigned long long &/*Size*/) override { return false; } + bool RewriteEntry(FileFd & /*Target*/, std::string const &/*File*/) override { return false; } + const char *GetFileName() override { return nullptr; } + const char *Type() override { return nullptr; } }; diff --git a/test/libapt/install_progress_test.cc b/test/libapt/install_progress_test.cc index 68101af..43c461e 100644 --- a/test/libapt/install_progress_test.cc +++ b/test/libapt/install_progress_test.cc @@ -2,14 +2,16 @@ #include +#include #include -#include +#include "common.h" TEST(InstallProgressTest, FancyGetTextProgressStr) { APT::Progress::PackageManagerFancy p; + char *originalLocale = setlocale(LC_ALL, "C"); EXPECT_EQ(60u, p.GetTextProgressStr(0.5, 60).size()); EXPECT_EQ("[#.]", p.GetTextProgressStr(0.5, 4)); EXPECT_EQ("[..........]", p.GetTextProgressStr(0.0, 12)); @@ -22,4 +24,22 @@ TEST(InstallProgressTest, FancyGetTextProgressStr) // deal with incorrect inputs gracefully (or should we die instead?) EXPECT_EQ("[..........]", p.GetTextProgressStr(-1.0, 12)); EXPECT_EQ("[##########]", p.GetTextProgressStr(2.0, 12)); + + setlocale(LC_ALL, "C.UTF-8"); + + 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.4, 12)); + EXPECT_EQ("[████▉ ]", p.GetTextProgressStr(0.4999, 12)); + EXPECT_EQ("[█████ ]", p.GetTextProgressStr(0.5000, 12)); + EXPECT_EQ("[█████ ]", p.GetTextProgressStr(0.5001, 12)); + EXPECT_EQ("[█████████ ]", p.GetTextProgressStr(0.9001, 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)); + + setlocale(LC_ALL, originalLocale); } diff --git a/test/libapt/json_test.cc b/test/libapt/json_test.cc index ee8f3ce..6ab13a3 100644 --- a/test/libapt/json_test.cc +++ b/test/libapt/json_test.cc @@ -1,7 +1,7 @@ #include #include "../../apt-private/private-cachefile.cc" #include "../../apt-private/private-json-hooks.cc" -#include +#include "common.h" #include TEST(JsonTest, JsonString) diff --git a/test/libapt/openmaybeclearsignedfile_test.cc b/test/libapt/openmaybeclearsignedfile_test.cc index 4db8967..3979d85 100644 --- a/test/libapt/openmaybeclearsignedfile_test.cc +++ b/test/libapt/openmaybeclearsignedfile_test.cc @@ -6,7 +6,7 @@ #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc index f641c8c..296750b 100644 --- a/test/libapt/parsedepends_test.cc +++ b/test/libapt/parsedepends_test.cc @@ -7,7 +7,7 @@ #include #include -#include +#include "common.h" static void parseDependency(bool const StripMultiArch, bool const ParseArchFlags, bool const ParseRestrictionsList, std::string Arch) { @@ -278,3 +278,88 @@ TEST(ParseDependsTest, Everything) if (runner < 8) goto test; // this is the prove: tests are really evil ;) } + +TEST(ParseDependsTest, SpaceHate) +{ + auto const *const Depends = "no(=1), some(<<1),some (<<1),some( <<1),some(<< 1),some(<<1 ),some(<<1) ,last (=1)"; + const char* const End = Depends + strlen(Depends); + + const char* Start = Depends; + std::string Package; + std::string Version; + unsigned int Op = 29; + + Start = debListParser::ParseDepends(Start, End, Package, Version, Op); + EXPECT_NE(nullptr, Start); + EXPECT_EQ("no", Package); + EXPECT_EQ("1", Version); + EXPECT_EQ(pkgCache::Dep::Equals, Op); + + for (int i = 0; i < 6; ++i) + { + SCOPED_TRACE(i); + Start = debListParser::ParseDepends(Start, End, Package, Version, Op); + EXPECT_NE(nullptr, Start); + EXPECT_EQ("some", Package); + EXPECT_EQ("1", Version); + EXPECT_EQ(pkgCache::Dep::Less, Op); + } + + Start = debListParser::ParseDepends(Start, End, Package, Version, Op); + EXPECT_EQ(End, Start); + EXPECT_EQ("last", Package); + EXPECT_EQ("1", Version); + EXPECT_EQ(pkgCache::Dep::Equals, Op); +} + +static void ArchLimitSpaceTesting(char const * const Depends) +{ + SCOPED_TRACE(Depends); + _config->Set("APT::Architecture", "amd64"); + const char* const End = Depends + strlen(Depends); + const char* Start = Depends; + std::string Package; + std::string Version; + unsigned int Op = 29; + + Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64"); + EXPECT_NE(nullptr, Start); + EXPECT_EQ("foobar", Package); + EXPECT_EQ("", Version); + EXPECT_EQ(pkgCache::Dep::NoOp, Op); + + Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64"); + EXPECT_NE(nullptr, Start); + EXPECT_EQ("", Package); + EXPECT_EQ("", Version); + EXPECT_EQ(pkgCache::Dep::NoOp, Op); + + Start = debListParser::ParseDepends(Start, End, Package, Version, Op, true, false, true, "amd64"); + EXPECT_EQ(End, Start); + EXPECT_EQ("baz", Package); + EXPECT_EQ("", Version); + EXPECT_EQ(pkgCache::Dep::NoOp, Op); +} +TEST(ParseDependsTest, ArchLimitSpaceNormal) +{ + ArchLimitSpaceTesting("foobar [i386 armhf armel amd64], blah [!arm64 !x32 !amd64], baz"); +} +TEST(ParseDependsTest, ArchLimitSpaceLove) +{ + ArchLimitSpaceTesting("foobar [ i386 armhf armel amd64 ] , blah [ !arm64 !x32 !amd64 ] , baz"); +} +TEST(ParseDependsTest, ArchLimitSpaceNoLove) +{ + ArchLimitSpaceTesting("foobar[i386 armhf armel amd64],blah[!arm64 !x32 !amd64],baz"); +} +TEST(ParseDependsTest, ArchLimitBadSyntax) +{ + std::string Package; + std::string Version; + unsigned int Op = 29; + for (auto const * const Depends : { "foobar [! amd64]", "foobar []", "foobar [ ]" }) + { + SCOPED_TRACE(Depends); + EXPECT_EQ(nullptr, debListParser::ParseDepends(Depends, Depends + strlen(Depends), Package, Version, Op, true, false, true, "amd64")); + } +} diff --git a/test/libapt/pattern_test.cc b/test/libapt/pattern_test.cc index 55bc4bd..75afead 100644 --- a/test/libapt/pattern_test.cc +++ b/test/libapt/pattern_test.cc @@ -10,7 +10,7 @@ #include #include -#include +#include "common.h" using namespace APT::Internal; diff --git a/test/libapt/priority_test.cc b/test/libapt/priority_test.cc index af7932a..5570340 100644 --- a/test/libapt/priority_test.cc +++ b/test/libapt/priority_test.cc @@ -1,6 +1,6 @@ #include #include -#include +#include "common.h" #include using std::string; diff --git a/test/libapt/sourcelist_test.cc b/test/libapt/sourcelist_test.cc index f6a1a91..9046b91 100644 --- a/test/libapt/sourcelist_test.cc +++ b/test/libapt/sourcelist_test.cc @@ -8,7 +8,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/srvrecs_test.cc b/test/libapt/srvrecs_test.cc index f042579..c20f945 100644 --- a/test/libapt/srvrecs_test.cc +++ b/test/libapt/srvrecs_test.cc @@ -7,7 +7,7 @@ #include #include -#include +#include "common.h" TEST(SrvRecTest, PopFromSrvRecs) { diff --git a/test/libapt/stringview_test.cc b/test/libapt/stringview_test.cc deleted file mode 100644 index 9cfaa3b..0000000 --- a/test/libapt/stringview_test.cc +++ /dev/null @@ -1,95 +0,0 @@ - -#include -#include -#include - -#include - -#include - -TEST(StringViewTest,EmptyString) -{ - constexpr APT::StringView defString; - static_assert( 0 == defString.length(), "def right size"); - - APT::StringView strString{std::string{}}; - EXPECT_EQ(0u, 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(0u, strString.length()); - - const APT::StringView charaString{""}; - EXPECT_EQ(0u, 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(3u, 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(3u, 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(3u, charp2String.length()); - EXPECT_EQ(0, charp2String.to_string().compare(0, charp2String.length(), charp2String.data(), 3)); - free(charp2); - - const APT::StringView charaString{"foo"}; - EXPECT_EQ(3u, 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)); - - EXPECT_EQ(defString.to_string().find("l"), defString.find("l")); - EXPECT_EQ(defString.to_string().find("ll"), defString.find("ll")); - EXPECT_EQ(defString.to_string().find("lo"), defString.find("lo")); - EXPECT_EQ(defString.to_string().find("ll", 1), defString.find("ll", 1)); - EXPECT_EQ(defString.to_string().find("ll", 6), defString.find("ll", 6)); - EXPECT_EQ(defString.to_string().find("or"), defString.find("or")); - EXPECT_EQ(defString.to_string().find("od"), defString.find("od")); -} - -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 index 469de44..9320f8f 100644 --- a/test/libapt/strutil_test.cc +++ b/test/libapt/strutil_test.cc @@ -1,12 +1,11 @@ #include #include -#include #include #include #include #include -#include +#include "common.h" #include "file-helpers.h" @@ -180,6 +179,24 @@ TEST(StrUtilTest,Base64Encode) EXPECT_EQ("/A==", Base64Encode("\xfc")); EXPECT_EQ("//8=", Base64Encode("\xff\xff")); } +TEST(StrUtilTest,Base64Decode) +{ + EXPECT_EQ(Base64Decode("QWxhZGRpbjpvcGVuIHNlc2FtZQ=="), "Aladdin:open sesame"); + EXPECT_EQ(Base64Decode("cGxlYXN1cmUu"), "pleasure."); + EXPECT_EQ(Base64Decode("bGVhc3VyZS4="), "leasure."); + EXPECT_EQ(Base64Decode("ZWFzdXJlLg=="), "easure."); + EXPECT_EQ(Base64Decode("YXN1cmUu"), "asure."); + EXPECT_EQ(Base64Decode("c3VyZS4="), "sure."); + EXPECT_EQ(Base64Decode("dXJlLg=="), "ure."); + EXPECT_EQ(Base64Decode("cmUu"), "re."); + EXPECT_EQ(Base64Decode("ZS4="), "e."); + EXPECT_EQ(Base64Decode("Lg=="), "."); + EXPECT_EQ(Base64Decode(""), ""); + EXPECT_EQ(Base64Decode("IA=="), "\x20"); + EXPECT_EQ(Base64Decode("/w=="), "\xff"); + EXPECT_EQ(Base64Decode("/A=="), "\xfc"); + EXPECT_EQ(Base64Decode("//8="), "\xff\xff"); +} static void ReadMessagesTestWithNewLine(char const * const nl, char const * const ab) { SCOPED_TRACE(SubstVar(SubstVar(nl, "\n", "n"), "\r", "r") + " # " + ab); @@ -259,7 +276,7 @@ TEST(StrUtilTest,QuoteString) EXPECT_EQ("Eltville-Erbach", DeQuoteString(QuoteString("Eltville-Erbach", ""))); } -static void EXPECT_STRTONUM(APT::StringView const str, bool const success, unsigned long const expected, unsigned const base) +static void EXPECT_STRTONUM(std::string_view const str, bool const success, unsigned long const expected, unsigned const base) { SCOPED_TRACE(std::string(str.data(), str.length())); SCOPED_TRACE(base); @@ -319,7 +336,8 @@ 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); diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc index 51a574f..1dad5fe 100644 --- a/test/libapt/tagfile_test.cc +++ b/test/libapt/tagfile_test.cc @@ -9,7 +9,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/tagsection_test.cc b/test/libapt/tagsection_test.cc index 80cecca..28156f7 100644 --- a/test/libapt/tagsection_test.cc +++ b/test/libapt/tagsection_test.cc @@ -6,7 +6,7 @@ #include #include -#include +#include "common.h" #include "file-helpers.h" diff --git a/test/libapt/teestream_test.cc b/test/libapt/teestream_test.cc index a897e08..da85b70 100644 --- a/test/libapt/teestream_test.cc +++ b/test/libapt/teestream_test.cc @@ -5,7 +5,7 @@ #include #include -#include +#include "common.h" TEST(TeeStreamTest,TwoStringSinks) { diff --git a/test/libapt/uri_test.cc b/test/libapt/uri_test.cc index 519de49..dfdff1b 100644 --- a/test/libapt/uri_test.cc +++ b/test/libapt/uri_test.cc @@ -2,7 +2,7 @@ #include #include #include -#include +#include "common.h" #include TEST(URITest, BasicHTTP) diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index f6d8869..987f7ba 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -1,7 +1,8 @@ # 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) + OUTPUT_VARIABLE CURRENT_VENDOR_OUT OUTPUT_STRIP_TRAILING_WHITESPACE + COMMAND_ERROR_IS_FATAL ANY) set(CURRENT_VENDOR "${CURRENT_VENDOR_OUT}" CACHE STRING "Select the system vendor") message(STATUS "Detected vendor: ${CURRENT_VENDOR_OUT}") @@ -11,8 +12,15 @@ endif() # Handle sources.list example if (WITH_DOC OR WITH_DOC_EXAMPLES) -add_vendor_file(OUTPUT sources.list - INPUT "${CURRENT_VENDOR}/sources.list.in" +if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${CURRENT_VENDOR}/${CURRENT_VENDOR}.sources.in") + set(sources_in "${CURRENT_VENDOR}/${CURRENT_VENDOR}.sources.in") + set(sources_out "${CURRENT_VENDOR}.sources") +else() + set(sources_in "${CURRENT_VENDOR}/sources.list.in") + set(sources_out "sources.list") +endif() +add_vendor_file(OUTPUT ${sources_out} + INPUT "${sources_in}" MODE 644 VARIABLES sourceslist-list-format debian-stable-codename @@ -20,7 +28,7 @@ add_vendor_file(OUTPUT sources.list debian-testing-codename ubuntu-codename current-codename) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sources.list +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${sources_out} DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples) endif() diff --git a/vendor/README b/vendor/README index 6846c84..3b344d5 100644 --- a/vendor/README +++ b/vendor/README @@ -2,10 +2,10 @@ 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! +The provided information is used in documentation like man pages 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 @@ -39,8 +39,7 @@ by opening a bug in the Debian BTS against apt with a patch attached. 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 keyring-package setting is used as a dependency for apt. The field current-codename is optional and can be used in sources.list.in. diff --git a/vendor/blankon/apt-vendor.ent b/vendor/blankon/apt-vendor.ent index ea7625f..a2d0d64 100644 --- a/vendor/blankon/apt-vendor.ent +++ b/vendor/blankon/apt-vendor.ent @@ -1,10 +1,6 @@ blankon-keyring"> -/usr/share/keyrings/blankon-archive-keyring.gpg"> -/usr/share/keyrings/blankon-archive-removed-keys.gpg"> - - debian-archive-keyring"> - - - - - + +Components: main contrib non-free non-free-firmware +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg"> diff --git a/vendor/debian/debian.sources.in b/vendor/debian/debian.sources.in new file mode 100644 index 0000000..c7b8232 --- /dev/null +++ b/vendor/debian/debian.sources.in @@ -0,0 +1,36 @@ +## Debian distribution repository +## +## The following settings can be adjusted to configure which packages to use from Debian. +## Mirror your choices (except for URIs and Suites) in the security section below to +## ensure timely security updates. +## +## Types: Append deb-src to enable the fetching of source package. +## URIs: A URL to the repository (you may add multiple URLs) +## Suites: The following additional suites can be configured +## -updates - Urgent bug fix updates produced after the final release of the +## distribution. +## -backports - software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Debian security team. +## Components: Aside from main, the following components can be added to the list +## contrib - Free software that may require non-free software to run. +## non-free-firmware - Firmware that is non-free +## non-free - Software that is not under a free license. There may be restrictions +## on use or modification. +## +## See the sources.list(5) manual page for further settings. +Types: deb +URIs: http://deb.debian.org/debian +Suites: &debian-stable-codename; &debian-stable-codename;-updates +Components: main contrib non-free non-free-firmware +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg + +## Debian security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://deb.debian.org/debian-security +Suites: &debian-stable-codename;-security +Components: main contrib non-free non-free-firmware +Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg diff --git a/vendor/debian/sources.list.in b/vendor/debian/sources.list.in deleted file mode 100644 index 8f83dfd..0000000 --- a/vendor/debian/sources.list.in +++ /dev/null @@ -1,8 +0,0 @@ -# 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://deb.debian.org/debian &debian-stable-codename;-updates main contrib non-free -#deb-src http://deb.debian.org/debian-security &debian-stable-codename;-security main contrib non-free diff --git a/vendor/deepin/apt-vendor.ent b/vendor/deepin/apt-vendor.ent deleted file mode 100644 index 85b2745..0000000 --- a/vendor/deepin/apt-vendor.ent +++ /dev/null @@ -1,13 +0,0 @@ - - -deepin-keyring"> - - - - - - - diff --git a/vendor/deepin/sources.list.in b/vendor/deepin/sources.list.in deleted file mode 100644 index 952097e..0000000 --- a/vendor/deepin/sources.list.in +++ /dev/null @@ -1,6 +0,0 @@ -# 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://community-packages.deepin.com/beige &beige; main community commercial diff --git a/vendor/getinfo b/vendor/getinfo index aa1954e..0a2dcf3 100755 --- a/vendor/getinfo +++ b/vendor/getinfo @@ -4,19 +4,6 @@ BASEDIR="$(readlink -f "$(dirname $0)")" getcurrent() { - # for some reason, in uos/deepin's automatic package system, - # /etc/dpkg/origins/default may link to /etc/dpkg/origins/debian. - # This should be removed in the future. - if [ -f /etc/dpkg/origins/deepin ]; then - if grep -isq 'UOS' /etc/os-release > /dev/null; then - echo uos - return 0 - fi - if grep -isq 'Deepin' /etc/os-release > /dev/null; then - echo deepin - return 0 - fi - fi # 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 | LC_ALL=C sort)" @@ -74,10 +61,10 @@ getfield() { } case "$1" in -debian-stable-codename|debian-oldstable-codename|debian-testing-codename|ubuntu-codename|deepin-codename) +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) +sourceslist-list-format|keyring-package|current-codename) exec $0 --vendor $CURRENT_VENDOR 'vendor' "$@" ;; vendor) diff --git a/vendor/procursus/apt-vendor.ent b/vendor/procursus/apt-vendor.ent index 0dd1d7a..32d9fef 100644 --- a/vendor/procursus/apt-vendor.ent +++ b/vendor/procursus/apt-vendor.ent @@ -1,10 +1,6 @@ procursus-keyring"> - - - - diff --git a/vendor/raspbian/apt-vendor.ent b/vendor/raspbian/apt-vendor.ent index 96d9fb7..e3b9603 100644 --- a/vendor/raspbian/apt-vendor.ent +++ b/vendor/raspbian/apt-vendor.ent @@ -1,10 +1,6 @@ raspbian-archive-keyring"> -/usr/share/keyrings/raspbian-archive-keyring.gpg"> -/usr/share/keyrings/raspbian-archive-removed-keys.gpg"> - - valve-archive-keyring"> -/usr/share/keyrings/valve-archive-keyring.gpg"> -/usr/share/keyrings/valve-archive-removed-keys.gpg"> - - ubuntu-keyring"> -/usr/share/keyrings/ubuntu-archive-keyring.gpg"> -/usr/share/keyrings/ubuntu-archive-removed-keys.gpg"> - - - + +Components: main restricted +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg"> diff --git a/vendor/ubuntu/apt.conf-01-vendor-ubuntu b/vendor/ubuntu/apt.conf-01-vendor-ubuntu index 30d25a7..6479779 100644 --- a/vendor/ubuntu/apt.conf-01-vendor-ubuntu +++ b/vendor/ubuntu/apt.conf-01-vendor-ubuntu @@ -1,2 +1,9 @@ Acquire::Changelogs::AlwaysOnline "true"; Acquire::http::User-Agent-Non-Interactive "true"; + +// Enable the new solver by default for our commands +binary::apt::APT::Solver "3.0"; +binary::apt-get::APT::Solver "3.0"; +// Allow apt-get to remove manually installed packages for the +// first phase. +binary::apt-get::APT::Solver::RemoveManual "true"; diff --git a/vendor/ubuntu/sources.list.in b/vendor/ubuntu/sources.list.in deleted file mode 100644 index 00db2f8..0000000 --- a/vendor/ubuntu/sources.list.in +++ /dev/null @@ -1,10 +0,0 @@ -# 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 diff --git a/vendor/ubuntu/ubuntu.sources.in b/vendor/ubuntu/ubuntu.sources.in new file mode 100644 index 0000000..0bf527e --- /dev/null +++ b/vendor/ubuntu/ubuntu.sources.in @@ -0,0 +1,44 @@ +# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to +# newer versions of the distribution. + +## Ubuntu distribution repository +## +## The following settings can be adjusted to configure which packages to use from Ubuntu. +## Mirror your choices (except for URIs and Suites) in the security section below to +## ensure timely security updates. +## +## Types: Append deb-src to enable the fetching of source package. +## URIs: A URL to the repository (you may add multiple URLs) +## Suites: The following additional suites can be configured +## -updates - Major bug fix updates produced after the final release of the +## distribution. +## -backports - software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Ubuntu security team. +## Components: Aside from main, the following components can be added to the list +## restricted - Software that may not be under a free license, or protected by patents. +## universe - Community maintained packages. Software in this repository receives maintenance +## from volunteers in the Ubuntu community, or a 10 year security maintenance +## commitment from Canonical when an Ubuntu Pro subscription is attached. +## multiverse - Community maintained of restricted. Software from this repository is +## ENTIRELY UNSUPPORTED by the Ubuntu team, and may not be under a free +## licence. Please satisfy yourself as to your rights to use the software. +## Also, please note that software in multiverse WILL NOT receive any +## review or updates from the Ubuntu security team. +## +## See the sources.list(5) manual page for further settings. +Types: deb +URIs: http://archive.ubuntu.com/ubuntu/ +Suites: &ubuntu-codename; &ubuntu-codename;-updates &ubuntu-codename;-backports +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg + +## Ubuntu security updates. Aside from URIs and Suites, +## this should mirror your choices in the previous section. +Types: deb +URIs: http://security.ubuntu.com/ubuntu/ +Suites: &ubuntu-codename;-security +Components: main universe restricted multiverse +Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg diff --git a/vendor/uos/apt-vendor.ent b/vendor/uos/apt-vendor.ent deleted file mode 100644 index a40f596..0000000 --- a/vendor/uos/apt-vendor.ent +++ /dev/null @@ -1,7 +0,0 @@ - - -deepin-keyring"> - - - - diff --git a/vendor/uos/sources.list.in b/vendor/uos/sources.list.in deleted file mode 100644 index 69fce28..0000000 --- a/vendor/uos/sources.list.in +++ /dev/null @@ -1,2 +0,0 @@ -+# See sources.list(5) manpage for more information -+# Remember that CD-ROMs, DVDs and such are managed through the apt-cdrom tool.