unsigned long Size = Cache.Head().PackageCount;
memset(Scores,0,sizeof(*Scores)*Size);
+ // Important Required Standard Optional Extra
+ signed short PrioMap[] = {
+ 0,
+ _config->FindI("pkgProblemResolver::Scores::Important",3),
+ _config->FindI("pkgProblemResolver::Scores::Required",2),
+ _config->FindI("pkgProblemResolver::Scores::Standard",1),
+ _config->FindI("pkgProblemResolver::Scores::Optional",-1),
+ _config->FindI("pkgProblemResolver::Scores::Extra",-2)
+ };
+ signed short PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100);
+ signed short PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1);
+ signed short PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1);
++ signed short PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1);
+ signed short AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000);
+ signed short AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000);
+
+ if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
+ clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl
+ << " Important => " << PrioMap[1] << endl
+ << " Required => " << PrioMap[2] << endl
+ << " Standard => " << PrioMap[3] << endl
+ << " Optional => " << PrioMap[4] << endl
+ << " Extra => " << PrioMap[5] << endl
+ << " Essentials => " << PrioEssentials << endl
+ << " InstalledAndNotObsolete => " << PrioInstalledAndNotObsolete << endl
+ << " Depends => " << PrioDepends << endl
++ << " Recommends => " << PrioRecommends << endl
+ << " AddProtected => " << AddProtected << endl
+ << " AddEssential => " << AddEssential << endl;
+
// Generate the base scores for a package based on its properties
for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++)
{
for (pkgCache::DepIterator D = Cache[I].InstVerIter(Cache).DependsList(); D.end() == false; D++)
{
- if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends)
- Scores[D.TargetPkg()->ID]+= PrioDepends;
+ if (D->Type == pkgCache::Dep::Depends ||
- D->Type == pkgCache::Dep::PreDepends ||
- D->Type == pkgCache::Dep::Recommends)
- Scores[D.TargetPkg()->ID]++;
++ D->Type == pkgCache::Dep::PreDepends)
++ Scores[D.TargetPkg()->ID] += PrioDepends;
++ else if (D->Type == pkgCache::Dep::Recommends)
++ Scores[D.TargetPkg()->ID] += PrioRecommends;
}
}
interval="$2"
if [ $interval -eq 0 ]; then
- debug_echo "check_stamp: interval=0."
++ debug_echo "check_stamp: interval=0"
+ # treat as no time has passed
return 1
fi
if [ ! -f $stamp ]; then
- debug_echo "check_stamp: missing time stamp file: $stamp."
+ update_stamp $stamp
++ debug_echo "check_stamp: missing time stamp file: $stamp"
+ # treat as enough time has passed
return 0
fi
# compare midnight today to midnight the day the stamp was updated
- stamp=$(date -r $stamp '+%s')
+ stamp_file="$stamp"
+ stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null)
+ if [ "$?" != "0" ]; then
+ # Due to some timezones returning 'invalid date' for midnight on
+ # certain dates (eg America/Sao_Paulo), if date returns with error
+ # remove the stamp file and return 0. See coreutils bug:
+ # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html
+ rm -f "$stamp_file"
+ return 0
+ fi
+
+ now=$(date --date=$(date --iso-8601) +%s 2>/dev/null)
+ if [ "$?" != "0" ]; then
+ # As above, due to some timezones returning 'invalid date' for midnight
+ # on certain dates (eg America/Sao_Paulo), if date returns with error
+ # return 0.
+ return 0
+ fi
+
delta=$(($now-$stamp))
- # intervall is in days,
+ # intervall is in days, convert to sec.
interval=$(($interval*60*60*24))
- #echo "stampfile: $1"
- #echo "interval=$interval, now=$now, stamp=$stamp, delta=$delta"
+ debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)"
+ # remove timestamps a day (or more) in the future and force re-check
+ if [ $stamp -gt $(($now+86400)) ]; then
+ echo "WARNING: file $stamp_file has a timestamp in the future: $stamp"
+ rm -f "$stamp_file"
+ return 0
+ fi
+
if [ $delta -ge $interval ]; then
return 0
fi
sleep $TIME
}
- # main
- if ! which apt-config >/dev/null; then
+ debug_echo()
+ {
+ # Display message if $VERBOSE >= 1
+ if [ "$VERBOSE" -ge 1 ]; then
+ echo $1 1>&2
+ fi
+ }
+
-# main
++
++# ----------------- main ----------------
+
+ # check apt-config exstance
+ if ! which apt-config >/dev/null ; then
exit 0
fi
- debug_echo "exit: system on main power."
+ # Set VERBOSE mode from apt-config (or inherit from environment)
+ eval $(apt-config shell VERBOSE APT::Periodic::Verbose)
+ if [ -z "$VERBOSE" ]; then
+ VERBOSE="0"
+ fi
+ if [ "$VERBOSE" -le 2 ]; then
+ # quiet for 0,1,2
+ XSTDOUT=">/dev/null"
+ XSTDERR="2>/dev/null"
+ XAPTOPT="-qq"
+ XUUPOPT=""
+ else
+ XSTDOUT=""
+ XSTDERR=""
+ XAPTOPT=""
+ XUUPOPT="-d"
+ fi
+ if [ "$VERBOSE" -ge 3 ]; then
+ # trace output
+ set -x
+ fi
+
+ # laptop check, on_ac_power returns:
+ # 0 (true) System is on main power
+ # 1 (false) System is not on main power
+ # 255 (false) Power status could not be determined
+ # Desktop systems always return 255 it seems
+ if which on_ac_power >/dev/null; then
+ on_ac_power
+ POWER=$?
+ if [ $POWER -eq 1 ]; then
- debug_echo "exit: power status ($POWER) undetermined."
- exit 0
++ debug_echo "exit: system NOT on main power."
+ exit 0
+ elif [ $POWER -ne 0 ]; then
-if which apt-get >/dev/null && ! eval apt-get check $XAPTOPT $XSTDERR ; then
++ debug_echo "power status ($POWER) undetermined."
+ fi
+ debug_echo "system is on main power."
+ fi
+
+ # check if we can lock the cache and if the cache is clean
-if [ $BackupLevel -le 1 ]; then BackupLevel=2 ; fi
++if which apt-get >/dev/null && ! apt-get check $XAPTOPT $XSTDERR ; then
+ debug_echo "error encountered in cron job with \"apt-get check\"."
+ exit 0
+ fi
+ # No need to check for apt-get below
+
+ # Global current time in seconds since 1970-01-01 00:00:00 UTC
+ now=$(date +%s)
+
+ # Set default values and normalize
+ Dir="/"
+ eval $(apt-config shell Dir Dir)
+ Dir=${Dir%/}
+
+ CacheDir="var/cache/apt/"
+ eval $(apt-config shell CacheDir Dir::Cache)
+ CacheDir=${CacheDir%/}
+ if [ -z "$CacheDir" ]; then
+ debug_echo "practically empty Dir::Cache, exiting"
+ exit 0
+ fi
+
+ CacheArchive="archives/"
+ eval $(apt-config shell CacheArchive Dir::Cache::Archives)
+ CacheArchive=${CacheArchive%/}
+ if [ -z "$CacheArchive" ]; then
+ debug_echo "practically empty Dir::Cache::archives, exiting"
+ exit 0
+ fi
+
+ BackupArchiveInterval=0
+ eval $(apt-config shell BackupArchiveInterval APT::Periodic::BackupArchiveInterval)
+
+ BackupLevel=3
+ eval $(apt-config shell BackupLevel APT::Periodic::BackupLevel)
- echo "practically empty Dir::Cache::Backup, exiting" 1>&2
- exit 0
++if [ $BackupLevel -le 1 ]; then
++ BackupLevel=2 ;
++fi
+
+ CacheBackup="backup/"
+ eval $(apt-config shell CacheBackup Dir::Cache::Backup)
+ CacheBackup=${CacheBackup%/}
+ if [ -z "$CacheBackup" ]; then
++ echo "empty Dir::Cache::Backup, using default" 1>&2
++ CacheBackup="backup/"
+ fi
+
+ # Support old Archive for compatibility.
+ # Document only Periodic for all controling parameters of this script.
+ MaxAge=0
+ eval $(apt-config shell MaxAge APT::Archives::MaxAge)
+ eval $(apt-config shell MaxAge APT::Periodic::MaxAge)
+
+ MinAge=2
+ eval $(apt-config shell MinAge APT::Archives::MinAge)
+ eval $(apt-config shell MinAge APT::Periodic::MinAge)
+
+ MaxSize=0
+ eval $(apt-config shell MaxSize APT::Archives::MaxSize)
+ eval $(apt-config shell MaxSize APT::Periodic::MaxSize)
+
UpdateInterval=0
+ eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists)
+
DownloadUpgradeableInterval=0
- eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
- AutocleanInterval=$DownloadUpgradeableInterval
- eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
+ eval $(apt-config shell DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
+
UnattendedUpgradeInterval=0
eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
exit 0
fi
- # laptop check, on_ac_power returns:
- # 0 (true) System is on mains power
- # 1 (false) System is not on mains power
- # 255 (false) Power status could not be determined
- # Desktop systems always return 255 it seems
- if which on_ac_power >/dev/null; then
- on_ac_power
- if [ $? -eq 1 ]; then
- exit 0
- fi
- fi
-
+# sleep random amount of time to avoid hitting the
+# mirrors at the same time
+random_sleep
- # check if we can access the cache
- if ! apt-get check -q -q 2>/dev/null; then
- # wait random amount of time before retrying
- random_sleep
- # check again
- if ! apt-get check -q -q 2>/dev/null; then
- echo "$0: could not lock the APT cache while performing daily cron job. "
- echo "Is another package manager working?"
- exit 1
+ # backup after n-days if archive contents changed.
+ # (This uses hardlink to save disk space)
+ BACKUP_ARCHIVE_STAMP=/var/lib/apt/periodic/backup-archive-stamp
+ if check_stamp $BACKUP_ARCHIVE_STAMP $BackupArchiveInterval; then
+ if [ $({(cd $Cache 2>/dev/null; find . -name "*.deb"); (cd $Back0 2>/dev/null;find . -name "*.deb") ;}| sort|uniq -u|wc -l) -ne 0 ]; then
+ mkdir -p $Back
+ rm -rf $Back$((${BackupLevel}-1))
+ for y in $(seq $((${BackupLevel}-1)) -1 1); do
+ eval BackY=${Back}$y
+ eval BackZ=${Back}$(($y-1))
+ if [ -e $BackZ ]; then mv -f $BackZ $BackY ; fi
+ done
+ cp -la $Cache $Back ; mv -f $BackX $Back0
+ update_stamp $BACKUP_ARCHIVE_STAMP
+ debug_echo "backup with hardlinks. (success)"
+ else
+
+ debug_echo "skip backup since same content."
fi
+ else
+ debug_echo "skip backup since too new."
fi
- UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
- if check_stamp $UPDATE_STAMP $UpdateInterval; then
- if apt-get -qq update 2>/dev/null; then
- if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then
- dbus-send --system / app.apt.dbus.updated boolean:true
- fi
- update_stamp $UPDATE_STAMP
- fi
+ # package archive contnts removal by package age
+ if [ $MaxAge -ne 0 ] && [ $MinAge -ne 0 ]; then
+ find $Cache -name "*.deb" \( -mtime +$MaxAge -and -ctime +$MaxAge \) -and -not \( -mtime -$MinAge -or -ctime -$MinAge \) -print0 | xargs -r -0 rm -f
+ debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge and ctime>$MinAge and mtime>$MinAge"
+ elif [ $MaxAge -ne 0 ]; then
+ find $Cache -name "*.deb" -ctime +$MaxAge -and -mtime +$MaxAge -print0 | xargs -r -0 rm -f
+ debug_echo "aged: ctime <$MaxAge and mtime <$MaxAge only"
+ else
+ debug_echo "skip aging since MaxAge is 0"
fi
+
+ # package archive contnts removal down to $MaxSize
+ if [ $MaxSize -ne 0 ]; then
+
+ MinAgeSec=$(($MinAge*24*60*60))
+
+ # reverse-sort by mtime
+ for file in $(ls -rt $Cache/*.deb 2>/dev/null); do
+ du=$(du -m -s $Cache)
+ size=${du%%/*}
+ # check if the cache is small enough
+ if [ $size -lt $MaxSize ]; then
+ debug_echo "end remove by archive size: size=$size < $MaxSize"
+ break
+ fi
+
+ # check for MinAge in second of the file
+ if [ $MinAgeSec -ne 0 ]; then
+ # check both ctime and mtime
+ mtime=$(stat -c %Y $file)
+ ctime=$(stat -c %Z $file)
+ if [ $mtime -gt $ctime ]; then
+ delta=$(($now-$mtime))
+ else
+ delta=$(($now-$ctime))
+ fi
+ if [ $delta -le $MinAgeSec ]; then
+ debug_echo "skip remove by archive size: $file, delta=$delta < $MinAgeSec"
+ else
+ # delete oldest file
+ debug_echo "remove by archive size: $file, delta=$delta >= $MinAgeSec (sec), size=$size >= $MaxSize"
+ rm -f $file
+ fi
+ fi
- DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp
- if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then
- apt-get -qq -d dist-upgrade 2>/dev/null
- update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
+ done
fi
- UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
- if check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
- unattended-upgrade
- update_stamp $UPGRADE_STAMP
+ # update package lists
+ UPDATE_STAMP=/var/lib/apt/periodic/update-stamp
+ if check_stamp $UPDATE_STAMP $UpdateInterval; then
+ if eval apt-get $XAPTOPT -y update $XSTDERR; then
+ debug_echo "download updated metadata (success)."
+ if which dbus-send >/dev/null && pidof dbus-daemon >/dev/null; then
+ if dbus-send --system / app.apt.dbus.updated boolean:true ; then
+ debug_echo "send dbus signal (success)"
+ else
+ debug_echo "send dbus signal (error)"
+ fi
+ else
+ debug_echo "dbus signal not send (command not available)"
+ fi
+ update_stamp $UPDATE_STAMP
+ # download all upgradeable packages if it is requested
+ DOWNLOAD_UPGRADEABLE_STAMP=/var/lib/apt/periodic/download-upgradeable-stamp
+ if check_stamp $DOWNLOAD_UPGRADEABLE_STAMP $DownloadUpgradeableInterval; then
+ if eval apt-get $XAPTOPT -y -d dist-upgrade $XSTDERR; then
+ update_stamp $DOWNLOAD_UPGRADEABLE_STAMP
+ debug_echo "download upgradable (success)."
+ # auto upgrade all upgradeable packages
+ UPGRADE_STAMP=/var/lib/apt/periodic/upgrade-stamp
+ if which unattended-upgrade >/dev/null && check_stamp $UPGRADE_STAMP $UnattendedUpgradeInterval; then
+ if unattended-upgrade $XUUPOPT; then
+ update_stamp $UPGRADE_STAMP
+ debug_echo "unattended-upgrade (success)."
+ else
+ debug_echo "unattended-upgrade (error)."
+ fi
+ else
+ debug_echo "unattended-upgrade (not run)."
+ fi
+ else
+ debug_echo "download upgradable (error)."
+ fi
+ else
+ debug_echo "download upgradable (not run)."
+ fi
+ else
+ debug_echo "download updated metadata (error)."
+ fi
+ else
+ debug_echo "download updated metadata (not run)."
fi
+ # autoclean package archive
AUTOCLEAN_STAMP=/var/lib/apt/periodic/autoclean-stamp
if check_stamp $AUTOCLEAN_STAMP $AutocleanInterval; then
- apt-get -qq autoclean
- update_stamp $AUTOCLEAN_STAMP
+ if apt-get $XAPTOPT -y autoclean $XSTDERR; then
+ debug_echo "autoclean (success)."
+ update_stamp $AUTOCLEAN_STAMP
+ else
+ debug_echo "autoclean (error)."
+ fi
+ else
+ debug_echo "autoclean (not run)."
fi
- # check cache size
- check_size_constraints
+ #
+ # vim: set sts=4 ai :
+ #
+
-apt (0.7.21) UNRELEASED; urgency=low
+apt (0.7.22) UNRELEASED; urgency=low
- [ Osamu Aoki ]
- * Updated cron script to support backups by hardlinks and
- verbose levels. All features turned off by default.
- * Added more error handlings. Closes: #438803, #462734, #454989,
- * Refactored condition structure to make download and upgrade performed
- if only previous steps succeeded. Closes: #341970
- * Documented all cron script related configuration items in
- configure-index.
+ [ Christian Perrier ]
+ * Documentation translations:
+ - Fix a typo in apt-get(8) French translation. Closes: #525043
+ Thanks to Guillaume Delacour for spotting it.
+ - Updated apt.conf(5) manpgae French translation.
+ Thanks to Aurélien Couderc.
+ * Translations:
+ - fr.po
+ - sk.po. Closes: #525857
+ - ru.po. Closes: #526816
+ - eu.po. Closes: #528985
+ - zh_CN.po. Closes: #531390
+ - fr.po
+ - it.po. Closes: #531758
+ - ca.po. Closes: #531921
+ - de.po. Closes: #536430
+ * Added translations
+ - ast.po (Asturian by Marcos Alvareez Costales).
+ Closes: #529007, #529730, #535328
+
+ [ David Kalnischkies ]
+ * [ABI break] support '#' in apt.conf and /etc/apt/preferences
+ (closes: #189866)
+ * [ABI break] Allow pinning by codename (closes: #97564)
+ * support running "--simulate" as user
+ * add depth information to the debug output and show what depends
+ type triggers a autoinst (closes: #458389)
+ * add Debug::pkgDepCache::Marker with more detailed debug output
+ (closes: #87520)
+ * add Debug::pkgProblemResolver::ShowScores and make the scores
+ adjustable
+ * do not write state file in simulate mode (closes: #433007)
+ * add hook for auto-install (closes: #470035)
+ * support IsAutoInstallOk in the resolver too
+ * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work
+ correctly when downloading from multiple sites (Closes: #534752)
[ Michael Vogt ]
- * apt-pkg/deb/dpkgpm.cc:
- - provide DPkg::Chroot-Directory config option (useful for testing)
-
- -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 May 2009 17:51:42 +0200
-
- [ Michael Vogt ]
+ * honor the dpkg hold state in AutoInstOk (closes: #64141)
+ * debian/apt.cron.daily:
+ - if the timestamp is too far in the future, delete it
+ * apt-pkg/acquire.cc:
+ - make the max pipeline depth of the acquire queue configurable
+ via Acquire::Max-Pipeline-Depth
+ * apt-pkg/deb/dpkgpm.cc:
+ - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
+ (off by default)
+ - send "dpkg-exec" message on the status fd when dpkg is run
++ - provide DPkg::Chroot-Directory config option (useful for testing)
++ - fix potential hang when in a backgroud process group
+ * apt-pkg/algorithms.cc:
+ - consider recommends when making the scores for the problem
+ resolver
+ * apt-pkg/acquire-worker.cc:
+ - show error details of failed methods
+ * apt-pkg/contrib/fileutl.cc:
+ - if a process aborts with signal, show signal number
+ * methods/http.cc:
+ - ignore SIGPIPE, we deal with EPIPE from write in
+ HttpMethod::ServerDie() (LP: #385144)
- * doc/makefile:
- - add examples/apt-https-method-example.conf
+ * apt-pkg/indexcopy.cc:
+ - support having CDs with no Packages file (just a Packages.gz)
+ by not forcing a verification on non-existing files
+ (LP: #255545)
+ - remove the gettext from a string that consists entirely
+ of variables (LP: #56792)
- * apt-pkg/deb/dpkgpm.cc:
- - fix potential hang when in a backgroud process group
+ * apt-pkg/cacheiterators.h:
+ - add missing checks for Owner == 0 in end()
- * methods/gpgv.cc:
+ * apt-pkg/indexrecords.cc:
+ - fix some i18n issues
+ * apt-pkg/contrib/strutl.h:
+ - add new strprintf() function to make i18n strings easier
- * cmdline/apt-get.cc:
- - fix "apt-get source pkg=ver" if binary name != source name
- and show a message (LP: #202219)
- - fix "apt-get source pkg" if there is a binary package and
- a source package of the same name but from different
- packages (LP: #330103)
+ - fix compiler warning
- * apt-pkg/contrib/strutl.cc:
- - fix TimeToStr i18n (LP: #289807)
- * [ABI break] merge support for http redirects, thanks to
- Jeff Licquia and Anthony Towns
- * [ABI break] use int for the package IDs (thanks to Steve Cotton)
- * apt-pkg/pkgcache.cc:
- - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
- state (LP: #322955)
- * methods/https.cc:
- - add Acquire::https::AllowRedirect support
- * methods/gpgv.cc:
- - properly check for expired and revoked keys (closes: #433091)
+ * apt-pkg/deb/debsystem.cc:
+ - make strings i18n able
- * Clarify the --help for 'purge' (LP: #243948)
+ * fix problematic use of tolower() when calculating the version
+ hash by using locale independant tolower_ascii() function.
+ Thanks to M. Vefa Bicakci (LP: #80248)
+ * build fixes for g++-4.4
+ * cmdline/apt-mark:
+ - add "showauto" option to show automatically installed packages
++ * document --install-recommends and --no-install-recommends
++ (thanks to Dereck Wonnacott, LP: #126180)
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/configuration.cc: Fix a small memory leak in
+ ReadConfigFile.
+ * Introduce support for the Enhances field. (Closes: #137583)
+ * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512)
+ * configure-index: document Dir::Etc::SourceParts and some other options
+ (Closes: #459605)
+ * Remove Eugene V. Lyubimkin from uploaders as requested.
+ * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc:
+ - Support reading until EOF if Size=0 to match behaviour of
+ SHA1Summation and SHA256Summation
+
++ [ Osamu Aoki ]
++ * Updated cron script to support backups by hardlinks and
++ verbose levels. All features turned off by default.
++ * Added more error handlings. Closes: #438803, #462734, #454989,
++ * Refactored condition structure to make download and upgrade performed
++ if only previous steps succeeded. Closes: #341970
++ * Documented all cron script related configuration items in
++ configure-index.
+
+ [ Dereck Wonnacott ]
+ * apt-ftparchive might write corrupt Release files (LP: #46439)
+ * Apply --important option to apt-cache depends (LP: #16947)
+
+
++
+ -- Julian Andres Klode <jak@debian.org> Fri, 03 Jul 2009 08:27:35 +0200
+
+apt (0.7.21) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Translations:
+ - bg.po. Closes: #513211
+ - zh_TW.po. Closes: #513311
+ - nb.po. Closes: #513843
+ - fr.po. Closes: #520430
+ - sv.po. Closes: #518070
+ - sk.po. Closes: #520403
+ - it.po. Closes: #522222
+ - sk.po. Closes: #520403
+
+ [ Jamie Strandboge ]
+ * apt.cron.daily: catch invalid dates due to DST time changes
+ in the stamp files
+
+ [ Michael Vogt ]
+ * methods/gpgv.cc:
+ - properly check for expired and revoked keys (closes: #433091)
+ * apt-pkg/contrib/strutl.cc:
+ - fix TimeToStr i18n (LP: #289807)
+ * [ABI break] merge support for http redirects, thanks to
+ Jeff Licquia and Anthony Towns
+ * [ABI break] use int for the package IDs (thanks to Steve Cotton)
+ * apt-pkg/pkgcache.cc:
+ - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
+ state (LP: #322955)
+ * methods/https.cc:
+ - add Acquire::https::AllowRedirect support
+ * Clarify the --help for 'purge' (LP: #243948)
+ * cmdline/apt-get.cc
+ - fix "apt-get source pkg" if there is a binary package and
+ a source package of the same name but from different
+ packages (LP: #330103)
+
[ Colin Watson ]
* cmdline/acqprogress.cc:
- Call pkgAcquireStatus::Pulse even if quiet, so that we still get
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2009-06-30 14:09+0200\n"
-"POT-Creation-Date: 2008-05-22 16:56+0200\n"
++"POT-Creation-Date: 2009-07-21 15:49+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
--#: cmdline/apt-cache.cc:143
++#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr ""
--#: cmdline/apt-cache.cc:183 cmdline/apt-cache.cc:552 cmdline/apt-cache.cc:640
--#: cmdline/apt-cache.cc:796 cmdline/apt-cache.cc:1018
--#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
++#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:644
++#: cmdline/apt-cache.cc:800 cmdline/apt-cache.cc:1022
++#: cmdline/apt-cache.cc:1423 cmdline/apt-cache.cc:1575
#, c-format
msgid "Unable to locate package %s"
msgstr ""
--#: cmdline/apt-cache.cc:247
++#: cmdline/apt-cache.cc:245
msgid "Total package names: "
msgstr ""
--#: cmdline/apt-cache.cc:287
++#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr ""
--#: cmdline/apt-cache.cc:288
++#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr ""
--#: cmdline/apt-cache.cc:289
++#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr ""
--#: cmdline/apt-cache.cc:290
++#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr ""
--#: cmdline/apt-cache.cc:291
++#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr ""
--#: cmdline/apt-cache.cc:293
++#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr ""
--#: cmdline/apt-cache.cc:295
++#: cmdline/apt-cache.cc:293
msgid "Total distinct descriptions: "
msgstr ""
--#: cmdline/apt-cache.cc:297
++#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr ""
--#: cmdline/apt-cache.cc:300
++#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr ""
--#: cmdline/apt-cache.cc:302
++#: cmdline/apt-cache.cc:300
msgid "Total Desc/File relations: "
msgstr ""
--#: cmdline/apt-cache.cc:304
++#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr ""
--#: cmdline/apt-cache.cc:316
++#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr ""
--#: cmdline/apt-cache.cc:330
++#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr ""
--#: cmdline/apt-cache.cc:335
++#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr ""
--#: cmdline/apt-cache.cc:343
++#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr ""
--#: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218
++#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1222
#, c-format
msgid "Package file %s is out of sync."
msgstr ""
--#: cmdline/apt-cache.cc:1293
++#: cmdline/apt-cache.cc:1297
msgid "You must give exactly one pattern"
msgstr ""
--#: cmdline/apt-cache.cc:1447
++#: cmdline/apt-cache.cc:1451
msgid "No packages found"
msgstr ""
--#: cmdline/apt-cache.cc:1524
++#: cmdline/apt-cache.cc:1528
msgid "Package files:"
msgstr ""
--#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
++#: cmdline/apt-cache.cc:1535 cmdline/apt-cache.cc:1622
msgid "Cache is out of sync, can't x-ref a package file"
msgstr ""
--#: cmdline/apt-cache.cc:1532
--#, c-format
--msgid "%4i %s\n"
--msgstr ""
--
#. Show any packages have explicit pins
--#: cmdline/apt-cache.cc:1544
++#: cmdline/apt-cache.cc:1549
msgid "Pinned packages:"
msgstr ""
--#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
++#: cmdline/apt-cache.cc:1561 cmdline/apt-cache.cc:1602
msgid "(not found)"
msgstr ""
#. Installed version
--#: cmdline/apt-cache.cc:1577
++#: cmdline/apt-cache.cc:1582
msgid " Installed: "
msgstr ""
--#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
++#: cmdline/apt-cache.cc:1584 cmdline/apt-cache.cc:1592
msgid "(none)"
msgstr ""
#. Candidate Version
--#: cmdline/apt-cache.cc:1584
++#: cmdline/apt-cache.cc:1589
msgid " Candidate: "
msgstr ""
--#: cmdline/apt-cache.cc:1594
++#: cmdline/apt-cache.cc:1599
msgid " Package pin: "
msgstr ""
#. Show the priority tables
--#: cmdline/apt-cache.cc:1603
++#: cmdline/apt-cache.cc:1608
msgid " Version table:"
msgstr ""
--#: cmdline/apt-cache.cc:1618
++#: cmdline/apt-cache.cc:1623
#, c-format
msgid " %4i %s\n"
msgstr ""
--#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
++#: cmdline/apt-cache.cc:1719 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2571 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2586 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s compiled on %s %s\n"
msgstr ""
--#: cmdline/apt-cache.cc:1721
++#: cmdline/apt-cache.cc:1726
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
msgid "Do you want to continue [Y/n]? "
msgstr ""
- #: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1400
-#: cmdline/apt-get.cc:984 cmdline/apt-get.cc:2214 apt-pkg/algorithms.cc:1344
++#: cmdline/apt-get.cc:987 cmdline/apt-get.cc:2227 apt-pkg/algorithms.cc:1407
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
msgid "File %s/%s overwrites the one in the package %s"
msgstr ""
-#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:821
+#: apt-inst/extract.cc:464 apt-pkg/contrib/configuration.cc:822
#: apt-pkg/contrib/cdromutl.cc:150 apt-pkg/sourcelist.cc:320
--#: apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34
++#: apt-pkg/acquire.cc:419 apt-pkg/clean.cc:34 apt-pkg/policy.cc:268
#, c-format
msgid "Unable to read %s"
msgstr ""
msgid "Server closed the connection"
msgstr ""
- #: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:538 methods/rsh.cc:190
-#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:536 methods/rsh.cc:190
++#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:541 methods/rsh.cc:190
msgid "Read error"
msgstr ""
msgid "Protocol corruption"
msgstr ""
- #: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:577 methods/rsh.cc:232
-#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:575 methods/rsh.cc:232
++#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:580 methods/rsh.cc:232
msgid "Write error"
msgstr ""
msgid "Unable to stat the mount point %s"
msgstr ""
-#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424 apt-pkg/clean.cc:40
+#: apt-pkg/contrib/cdromutl.cc:146 apt-pkg/contrib/cdromutl.cc:180
- #: apt-pkg/acquire.cc:424 apt-pkg/acquire.cc:449 apt-pkg/clean.cc:40
++#: apt-pkg/acquire.cc:425 apt-pkg/acquire.cc:450 apt-pkg/clean.cc:40
#, c-format
msgid "Unable to change to %s"
msgstr ""
msgid "Waited for %s but it wasn't there"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:454
-#: apt-pkg/contrib/fileutl.cc:452
++#: apt-pkg/contrib/fileutl.cc:455
#, c-format
msgid "Sub-process %s received a segmentation fault."
msgstr ""
-#: apt-pkg/contrib/fileutl.cc:455
+#: apt-pkg/contrib/fileutl.cc:457
+#, c-format
++msgid "Sub-process %s received signal %u."
++msgstr ""
++
++#: apt-pkg/contrib/fileutl.cc:460
+ #, c-format
msgid "Sub-process %s returned an error code (%u)"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:459
-#: apt-pkg/contrib/fileutl.cc:457
++#: apt-pkg/contrib/fileutl.cc:462
#, c-format
msgid "Sub-process %s exited unexpectedly"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:503
-#: apt-pkg/contrib/fileutl.cc:501
++#: apt-pkg/contrib/fileutl.cc:506
#, c-format
msgid "Could not open file %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:559
-#: apt-pkg/contrib/fileutl.cc:557
++#: apt-pkg/contrib/fileutl.cc:562
#, c-format
msgid "read, still have %lu to read but none left"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:589
-#: apt-pkg/contrib/fileutl.cc:587
++#: apt-pkg/contrib/fileutl.cc:592
#, c-format
msgid "write, still have %lu to write but couldn't"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:664
-#: apt-pkg/contrib/fileutl.cc:662
++#: apt-pkg/contrib/fileutl.cc:667
msgid "Problem closing the file"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:670
-#: apt-pkg/contrib/fileutl.cc:668
++#: apt-pkg/contrib/fileutl.cc:673
msgid "Problem unlinking the file"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:681
-#: apt-pkg/contrib/fileutl.cc:679
++#: apt-pkg/contrib/fileutl.cc:684
msgid "Problem syncing the file"
msgstr ""
"The package %s needs to be reinstalled, but I can't find an archive for it."
msgstr ""
- #: apt-pkg/algorithms.cc:1147
-#: apt-pkg/algorithms.cc:1106
++#: apt-pkg/algorithms.cc:1154
msgid ""
"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
"held packages."
msgstr ""
- #: apt-pkg/algorithms.cc:1149
-#: apt-pkg/algorithms.cc:1108
++#: apt-pkg/algorithms.cc:1156
msgid "Unable to correct problems, you have held broken packages."
msgstr ""
- #: apt-pkg/algorithms.cc:1426 apt-pkg/algorithms.cc:1428
-#: apt-pkg/algorithms.cc:1370 apt-pkg/algorithms.cc:1372
++#: apt-pkg/algorithms.cc:1433 apt-pkg/algorithms.cc:1435
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
--#: apt-pkg/acquire.cc:59
++#: apt-pkg/acquire.cc:60
#, c-format
msgid "Lists directory %spartial is missing."
msgstr ""
--#: apt-pkg/acquire.cc:63
++#: apt-pkg/acquire.cc:64
#, c-format
msgid "Archive directory %spartial is missing."
msgstr ""
#. only show the ETA if it makes sense
#. two days
- #: apt-pkg/acquire.cc:828
-#: apt-pkg/acquire.cc:827
++#: apt-pkg/acquire.cc:829
#, c-format
msgid "Retrieving file %li of %li (%s remaining)"
msgstr ""
- #: apt-pkg/acquire.cc:830
-#: apt-pkg/acquire.cc:829
++#: apt-pkg/acquire.cc:831
#, c-format
msgid "Retrieving file %li of %li"
msgstr ""
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
--#: apt-pkg/init.cc:124
++#: apt-pkg/init.cc:125
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr ""
--#: apt-pkg/init.cc:140
++#: apt-pkg/init.cc:141
msgid "Unable to determine a suitable packaging system type"
msgstr ""
msgid "You may want to run apt-get update to correct these problems"
msgstr ""
- #: apt-pkg/policy.cc:281
-#: apt-pkg/policy.cc:267
--msgid "Invalid record in the preferences file, no Package header"
++#: apt-pkg/policy.cc:329
++#, c-format
++msgid "Invalid record in the preferences file %s, no Package header"
msgstr ""
- #: apt-pkg/policy.cc:303
-#: apt-pkg/policy.cc:289
++#: apt-pkg/policy.cc:351
#, c-format
msgid "Did not understand pin type %s"
msgstr ""
- #: apt-pkg/policy.cc:311
-#: apt-pkg/policy.cc:297
++#: apt-pkg/policy.cc:359
msgid "No priority (or zero) specified for pin"
msgstr ""
msgid "Size mismatch"
msgstr ""
++#: apt-pkg/indexrecords.cc:40
++#, c-format
++msgid "Unable to parse Release file %s"
++msgstr ""
++
++#: apt-pkg/indexrecords.cc:47
++#, c-format
++msgid "No sections in Release file %s"
++msgstr ""
++
++#: apt-pkg/indexrecords.cc:81
++#, c-format
++msgid "No Hash entry in Release file %s"
++msgstr ""
++
#: apt-pkg/vendorlist.cc:66
#, c-format
msgid "Vendor block %s contains no fingerprint"
"zu signatures\n"
msgstr ""
++#: apt-pkg/cdrom.cc:689
++msgid ""
++"Unable to locate any package files, perhaps this is not a Debian Disc or the "
++"wrong architecture?"
++msgstr ""
++
#: apt-pkg/cdrom.cc:715
#, c-format
msgid "Found label '%s'\n"
msgid "Source list entries for this disc are:\n"
msgstr ""
--#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:823
++#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:833
#, c-format
msgid "Wrote %i records.\n"
msgstr ""
--#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:825
++#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr ""
--#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:828
++#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr ""
--#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:831
++#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:841
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
-#: apt-pkg/deb/dpkgpm.cc:486
+#: apt-pkg/deb/dpkgpm.cc:49
#, c-format
-msgid "Directory '%s' missing"
+msgid "Installing %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:612
-#: apt-pkg/deb/dpkgpm.cc:569
++#: apt-pkg/deb/dpkgpm.cc:50 apt-pkg/deb/dpkgpm.cc:642
#, c-format
-msgid "Preparing %s"
+msgid "Configuring %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:627
-#: apt-pkg/deb/dpkgpm.cc:570
++#: apt-pkg/deb/dpkgpm.cc:51 apt-pkg/deb/dpkgpm.cc:649
#, c-format
-msgid "Unpacking %s"
+msgid "Removing %s"
msgstr ""
-#: apt-pkg/deb/dpkgpm.cc:575
+#: apt-pkg/deb/dpkgpm.cc:52
#, c-format
-msgid "Preparing to configure %s"
+msgid "Running post-installation trigger %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:521
-#: apt-pkg/deb/dpkgpm.cc:576 apt-pkg/deb/dpkgpm.cc:605
++#: apt-pkg/deb/dpkgpm.cc:546
#, c-format
-msgid "Configuring %s"
+msgid "Directory '%s' missing"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:605
-#: apt-pkg/deb/dpkgpm.cc:578 apt-pkg/deb/dpkgpm.cc:579
++#: apt-pkg/deb/dpkgpm.cc:635
#, c-format
-msgid "Processing triggers for %s"
+msgid "Preparing %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:606
-#: apt-pkg/deb/dpkgpm.cc:581
++#: apt-pkg/deb/dpkgpm.cc:636
#, c-format
-msgid "Installed %s"
+msgid "Unpacking %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:611
-#: apt-pkg/deb/dpkgpm.cc:586 apt-pkg/deb/dpkgpm.cc:588
-#: apt-pkg/deb/dpkgpm.cc:589
++#: apt-pkg/deb/dpkgpm.cc:641
#, c-format
-msgid "Preparing for removal of %s"
+msgid "Preparing to configure %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:614 apt-pkg/deb/dpkgpm.cc:615
- #, c-format
- msgid "Processing triggers for %s"
- msgstr ""
-
- #: apt-pkg/deb/dpkgpm.cc:617
-#: apt-pkg/deb/dpkgpm.cc:591 apt-pkg/deb/dpkgpm.cc:606
++#: apt-pkg/deb/dpkgpm.cc:643
#, c-format
-msgid "Removing %s"
+msgid "Installed %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:622 apt-pkg/deb/dpkgpm.cc:624
- #: apt-pkg/deb/dpkgpm.cc:625
-#: apt-pkg/deb/dpkgpm.cc:592
++#: apt-pkg/deb/dpkgpm.cc:648
+#, c-format
+msgid "Preparing for removal of %s"
+msgstr ""
+
- #: apt-pkg/deb/dpkgpm.cc:628
++#: apt-pkg/deb/dpkgpm.cc:650
#, c-format
msgid "Removed %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:633
-#: apt-pkg/deb/dpkgpm.cc:597
++#: apt-pkg/deb/dpkgpm.cc:655
#, c-format
msgid "Preparing to completely remove %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:634
-#: apt-pkg/deb/dpkgpm.cc:598
++#: apt-pkg/deb/dpkgpm.cc:656
#, c-format
msgid "Completely removed %s"
msgstr ""
- #: apt-pkg/deb/dpkgpm.cc:789
-#. populate the "processing" map
-#: apt-pkg/deb/dpkgpm.cc:604
++#: apt-pkg/deb/dpkgpm.cc:820
+msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
+msgstr ""
+
++#: apt-pkg/deb/dpkgpm.cc:848
++msgid "Running dpkg"
++msgstr ""
++
++#: apt-pkg/deb/debsystem.cc:70
+ #, c-format
-msgid "Installing %s"
++msgid ""
++"Unable to lock the administration directory (%s), is another process using "
++"it?"
+ msgstr ""
+
-#: apt-pkg/deb/dpkgpm.cc:607
++#: apt-pkg/deb/debsystem.cc:73
+ #, c-format
-msgid "Triggering %s"
++msgid "Unable to lock the administration directory (%s), are you root?"
+ msgstr ""
+
-#: apt-pkg/deb/dpkgpm.cc:756
-msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n"
++#: apt-pkg/deb/debsystem.cc:82
++msgid ""
++"dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct "
++"the problem. "
++msgstr ""
++
+#: apt-pkg/deb/debsystem.cc:100
+msgid "Not locked"
msgstr ""
#: methods/rred.cc:219