++apt (0.7.22.3) UNRELEASED; urgency=low
++
++ [ Eugene V. Lyubimkin ]
++ * methods/{http,https,ftp}, doc/apt.conf.5.xml:
++ - Changed and unified the code that determines which proxy to use. Now
++ 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority,
++ and '{http,ftp}_proxy' environment variables are used only if options
++ mentioned above are not specified.
++ (Closes: #445985, #157759, #320184, #365880, #479617)
++
++ -- Michael Vogt <mvo@debian.org> Wed, 19 Aug 2009 11:14:15 +0200
++
+apt (0.7.22.2) unstable; urgency=low
+
+ * debian/apt.cron.daily:
+ - Make sure that VERBOSE is always set (Closes: #539366)
+ - Script can be disabled by APT::Periodic::Enable=0 (Closes: #485476)
+ - Support using debdelta to download packages (Closes: #532079)
+
+ -- Julian Andres Klode <jak@debian.org> Thu, 06 Aug 2009 12:17:19 +0200
+
+apt (0.7.22.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * cmdline/apt-get.cc:
+ - honor APT::Get::Only-Source properly in FindSrc() (thanks to
+ Martin Pitt for reporting the problem), also Closes: #535362.
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/mmap.cc:
+ - Fix FTBFS on GNU/kFreeBSD by disabling DynamicMMap::Grow() on
+ non-Linux architectures as it uses mremap (Closes: #539742).
+ * apt-pkg/sourcelist.cc:
+ - Only warn about missing sources.list if there is no sources.list.d
+ and vice versa as only one of them is needed (Closes: #539731).
+ * debian/control:
+ - Add myself to Uploaders.
+ - Increase Standards-Version to 3.8.2.0.
+
+ -- Julian Andres Klode <jak@debian.org> Mon, 03 Aug 2009 12:48:31 +0200
+
+apt (0.7.22) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Documentation translations:
+ - Fix a typo in apt-get(8) French translation. Closes: #525043
+ Thanks to Guillaume Delacour for spotting it.
+ - Updated apt.conf(5) manpgae French translation.
+ Thanks to Aurélien Couderc.
+ * Translations:
+ - fr.po
+ - sk.po. Closes: #525857
+ - ru.po. Closes: #526816
+ - eu.po. Closes: #528985
+ - zh_CN.po. Closes: #531390
+ - fr.po
+ - it.po. Closes: #531758
+ - ca.po. Closes: #531921
+ - de.po. Closes: #536430
+ * Added translations
+ - ast.po (Asturian by Marcos Alvareez Costales).
+ Closes: #529007, #529730, #535328
+
+ [ David Kalnischkies ]
+ * [ABI break] support '#' in apt.conf and /etc/apt/preferences
+ (closes: #189866)
+ * [ABI break] Allow pinning by codename (closes: #97564)
+ * support running "--simulate" as user
+ * add depth information to the debug output and show what depends
+ type triggers a autoinst (closes: #458389)
+ * add Debug::pkgDepCache::Marker with more detailed debug output
+ (closes: #87520)
+ * add Debug::pkgProblemResolver::ShowScores and make the scores
+ adjustable
+ * do not write state file in simulate mode (closes: #433007)
+ * add hook for MarkInstall and MarkDelete (closes: #470035)
+ * fix typo in apt-pkg/acquire.cc which prevents Dl-Limit to work
+ correctly when downloading from multiple sites (Closes: #534752)
+ * add the various foldmarkers in apt-pkg & cmdline (no code change)
+ * versions with a pin of -1 shouldn't be a candidate (Closes: #355237)
+ * prefer mmap as memory allocator in MMap instead of a static char
+ array which can (at least in theory) grow dynamic
+ * eliminate (hopefully all) segfaults in pkgcachegen.cc and mmap.cc
+ which can arise if cache doesn't fit into the mmap (Closes: #535218)
+ * display warnings instead of errors if the parts dirs doesn't exist
+
+ [ Michael Vogt ]
+ * honor the dpkg hold state in new Marker hooks (closes: #64141)
+ * debian/apt.cron.daily:
+ - if the timestamp is too far in the future, delete it
+ * apt-pkg/acquire.cc:
+ - make the max pipeline depth of the acquire queue configurable
+ via Acquire::Max-Pipeline-Depth
+ * apt-pkg/deb/dpkgpm.cc:
+ - add Dpkg::UseIoNice boolean option to run dpkg with ionice -c3
+ (off by default)
+ - send "dpkg-exec" message on the status fd when dpkg is run
+ - provide DPkg::Chroot-Directory config option (useful for testing)
+ - fix potential hang when in a 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)
+ * Only run Download-Upgradable and Unattended-Upgrades if the initial
+ update was successful Closes: #341970
+ * apt-pkg/indexcopy.cc:
+ - support having CDs with no Packages file (just a Packages.gz)
+ by not forcing a verification on non-existing files
+ (LP: #255545)
+ - remove the gettext from a string that consists entirely
+ of variables (LP: #56792)
+ * apt-pkg/cacheiterators.h:
+ - add missing checks for Owner == 0 in end()
+ * apt-pkg/indexrecords.cc:
+ - fix some i18n issues
+ * apt-pkg/contrib/strutl.h:
+ - add new strprintf() function to make i18n strings easier
+ - fix compiler warning
+ * apt-pkg/deb/debsystem.cc:
+ - make strings i18n able
+ * fix problematic use of tolower() when calculating the version
+ hash by using locale 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)
+ * doc/apt.conf.5.xml:
+ - merged patch from Aurélien Couderc to improve the text
+ (thanks!)
+ * [ABI] merged the libudev-dlopen branch, this allows to pass
+ "apt-udev-auto" to Acquire::Cdrom::mount and the cdrom method will
+ dynamically find/mount the cdrom device (if libhal is available)
+
+ [ Julian Andres Klode ]
+ * apt-pkg/contrib/configuration.cc: Fix a small memory leak in
+ ReadConfigFile.
+ * Introduce support for the Enhances field. (Closes: #137583)
+ * Support /etc/apt/preferences.d, by adding ReadPinDir() (Closes: #535512)
+ * configure-index: document Dir::Etc::SourceParts and some other options
+ (Closes: #459605)
+ * Remove Eugene V. Lyubimkin from uploaders as requested.
+ * apt-pkg/contrib/hashes.cc, apt-pkg/contrib/md5.cc:
+ - Support reading until EOF if Size=0 to match behaviour of
+ SHA1Summation and SHA256Summation
+
+ [ Osamu Aoki ]
+ * Updated cron script to support backups by hardlinks and
+ verbose levels. All features turned off by default.
+ * Added more error handlings. Closes: #438803, #462734, #454989
+ * Documented all cron script related configuration items in
+ configure-index.
+
+ [ Dereck Wonnacott ]
+ * apt-ftparchive might write corrupt Release files (LP: #46439)
+ * Apply --important option to apt-cache depends (LP: #16947)
+
+ [ Otavio Salvador ]
+ * Apply patch from Sami Liedes <sliedes@cc.hut.fi> to reduce the
+ number of times we call progress bar updating and debugging
+ configuration settings.
+ * Apply patch from Sami Liedes <sliedes@cc.hut.fi> to avoid unecessary
+ temporary allocations.
+
+ -- Michael Vogt <mvo@debian.org> Wed, 29 Jul 2009 19:16:22 +0200
+
+apt (0.7.21) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Translations:
+ - bg.po. Closes: #513211
+ - zh_TW.po. Closes: #513311
+ - nb.po. Closes: #513843
+ - fr.po. Closes: #520430
+ - sv.po. Closes: #518070
+ - sk.po. Closes: #520403
+ - it.po. Closes: #522222
+ - sk.po. Closes: #520403
+
+ [ Jamie Strandboge ]
+ * apt.cron.daily: catch invalid dates due to DST time changes
+ in the stamp files
+
+ [ Michael Vogt ]
+ * methods/gpgv.cc:
+ - properly check for expired and revoked keys (closes: #433091)
+ * apt-pkg/contrib/strutl.cc:
+ - fix TimeToStr i18n (LP: #289807)
+ * [ABI break] merge support for http redirects, thanks to
+ Jeff Licquia and Anthony Towns
+ * [ABI break] use int for the package IDs (thanks to Steve Cotton)
+ * apt-pkg/pkgcache.cc:
+ - do not run "dpkg --configure pkg" if pkg is in trigger-awaited
+ state (LP: #322955)
+ * methods/https.cc:
+ - add Acquire::https::AllowRedirect support
+ * Clarify the --help for 'purge' (LP: #243948)
+ * cmdline/apt-get.cc
+ - fix "apt-get source pkg" if there is a binary package and
+ a source package of the same name but from different
+ packages (LP: #330103)
+
+ [ Colin Watson ]
+ * cmdline/acqprogress.cc:
+ - Call pkgAcquireStatus::Pulse even if quiet, so that we still get
+ dlstatus messages on the status-fd (LP: #290234).
+
+ -- Michael Vogt <mvo@debian.org> Tue, 14 Apr 2009 14:12:51 +0200
+
+apt (0.7.20.2) unstable; urgency=medium
+
+ [ Eugene V. Lyubimkin ]
+ * Urgency set to medium due to RC bug fix.
+ * doc/apt.ent, apt-get.8.xml:
+ - Fix invalid XML entities. (Closes: #514402)
+
+ -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Sat, 07 Feb 2009 16:48:21 +0200
+
+apt (0.7.20.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/pkgcachegen.cc:
+ - fix apt-cache search for localized description
+ (closes: #512110)
+
+ [ Christian Perrier ]
+ * Translations:
+ - fr.po: fix spelling error to "défectueux". Thanks to Thomas Péteul.
+
+ -- Michael Vogt <mvo@debian.org> Tue, 20 Jan 2009 09:35:05 +0100
+
apt (0.7.20) unstable; urgency=low
[ Eugene V. Lyubimkin ]
* buildlib/config.{sub,guess}:
- Renewed. This fixes lintian errors.
* doc/apt.conf.5.xml, debian/apt-transport-https:
- - Documented briefly 'APT::https' group of options. (Closes: #507398)
+ - Documented briefly 'Acquire::https' group of options. (Closes: #507398)
- Applied patch from Daniel Burrows to document 'Debug' group of options.
(Closes: #457265)
- Mentioned 'APT::Periodic' and 'APT::Archives' groups of options.
(Closes: #438559)
- Mentioned '/* ... */' comments. (Closes: #507601)
- * methods/{http,https,ftp}, doc/apt.conf.5.xml:
- - Changed and unified the code that determines which proxy to use. Now
- 'Acquire::{http,ftp}::Proxy[::<host>]' options have the highest priority,
- and '{http,ftp}_proxy' environment variables are used only if options
- mentioned above are not specified.
- (Closes: #445985, #157759, #320184, #365880, #479617)
+ * doc/examples/sources.list:
+ - Removed obsolete commented non-us deb-src entry, replaced it with
+ 'deb-src security.debian.org' one. (Closes: #411298)
+ * apt-pkg/contrib/mmap.cc:
+ - Added instruction how to work around MMap error in MMap error message.
+ (Closes: #385674, 436028)
* COPYING:
- Actualized. Removed obsolete Qt section, added GPLv2 clause.
(Closes: #440049, #509337)
* Translations:
- Finnish updated. Closes: #508449
- Galician updated. Closes: #509151
-
- -- Eugene V. Lyubimkin <jackyf.devel@gmail.com> Mon, 15 Dec 2008 23:48:46 +0200
-
-apt (0.7.20~exp2) unstable; urgency=low
-
- [ Eugene V. Lyubimkin ]
- * doc/examples/sources.list:
- - Removed obsolete commented non-us deb-src entry, replaced it with
- 'deb-src security.debian.org' one. (Closes: #411298)
- * apt-pkg/contrib/mmap.cc:
- - Added instruction how to work around MMap error in MMap error message.
- (Closes: #385674, 436028)
-
- [ Christian Perrier ]
- * Translations:
+ - Catalan updated. Closes: #509375
+ - Vietnamese updated. Closes: #509422
+ - Traditional Chinese added. Closes: #510664
- French corrected (remove awful use of first person)
- -- Michael Vogt <mvo@debian.org> Tue, 02 Dec 2008 20:30:14 +0100
+ -- Michael Vogt <mvo@debian.org> Mon, 05 Jan 2009 08:59:20 +0100
apt (0.7.19) unstable; urgency=low
is a request to install only one package and it is not installable.
(Closes: #419521)
-
[ Michael Vogt ]
- fix SIGHUP handling (closes: #463030)
</programlisting></informalexample>
<para>with newlines placed to make it more readable. Lists can be created by
- opening a scope and including a single word enclosed in quotes followed by a
+ opening a scope and including a single string enclosed in quotes followed by a
semicolon. Multiple entries can be included, each separated by a semicolon.</para>
<informalexample><programlisting>
<para>Two specials are allowed, <literal>#include</literal> and <literal>#clear</literal>
<literal>#include</literal> will include the given file, unless the filename
ends in a slash, then the whole directory is included.
- <literal>#clear</literal> is used to erase a list of names.</para>
+ <literal>#clear</literal> is used to erase a part of the configuration tree. The
+ specified element and all its descendents are erased.</para>
<para>All of the APT tools take a -o option which allows an arbitrary configuration
directive to be specified on the command line. The syntax is a full option
<varlistentry><term>Default-Release</term>
<listitem><para>Default release to install packages from if more than one
- version available. Contains release name or release version. Examples: 'stable', 'testing', 'unstable', '4.0', '5.0*'. Release codenames ('etch', 'lenny' etc.) are not allowed now. See also &apt-preferences;.</para></listitem>
+ version available. Contains release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'lenny', 'squeeze', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
</varlistentry>
<varlistentry><term>Ignore-Hold</term>
<variablelist>
<varlistentry><term>PDiffs</term>
- <listitem><para>Try do download deltas called <literal>PDiffs</literal> for
+ <listitem><para>Try to download deltas called <literal>PDiffs</literal> for
Packages or Sources files instead of downloading whole ones. True
by default.</para></listitem>
</varlistentry>
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. The <envar>http_proxy</envar> environment variable
- will override all settings.</para>
+ meaning to use no proxies. If no one of the above settings is specified,
+ <envar>http_proxy</envar> environment variable
+ will be used.</para>
<para>Three settings are provided for cache control with HTTP/1.1 compliant
proxy caches. <literal>No-Cache</literal> tells the proxy to not use its cached
</para></listitem></varlistentry>
<varlistentry><term>ftp</term>
- <listitem><para>FTP URIs; ftp::Proxy is the default proxy server to use. It is in the
- standard form of <literal>ftp://[[user][:pass]@]host[:port]/</literal> and is
- overridden by the <envar>ftp_proxy</envar> environment variable. To use a ftp
+ <listitem><para>FTP URIs; ftp::Proxy is the default ftp proxy to use. 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 a 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
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><literal>Debug::pkgDepCache::Marker</literal></term>
+ <listitem>
+ <para>
+ Generate debug messages describing which package is marked
+ as keep/install/remove while the ProblemResolver does his work.
+ Each addition or deletion may trigger additional actions;
+ they are shown indented two additional space 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 version as the installed.
+ <literal>section</literal> is the name of the section the package appears in.
+ </para>
+ </listitem>
+ </varlistentry>
+
<!-- Question: why doesn't this do anything? The code says it should. -->
<varlistentry>
<term><literal>Debug::pkgInitConfig</literal></term>
<listitem>
<para>
- Dump the default configuration to standard output on
+ Dump the default configuration to standard error on
startup.
</para>
</listitem>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><literal>Debug::pkgProblemResolver::ShowScores</literal></term>
+ <listitem>
+ <para>
+ Display a list of all installed packages with their calculated score
+ used by the pkgProblemResolver. The description of the package
+ is the same as described in <literal>Debug::pkgDepCache::Marker</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term><literal>Debug::sourceList</literal></term>
</listitem>
</varlistentry>
+<!-- 2009/07/11 Currently used nowhere. The corresponding code
+is commented.
<varlistentry>
<term><literal>Debug::Vendor</literal></term>
</para>
</listitem>
</varlistentry>
+-->
</variablelist>
</refsect1>
#include <errno.h>
#include <string.h>
#include <iostream>
+#include <map>
#include <apti18n.h>
// Internet stuff
time_t HttpMethod::FailTime = 0;
unsigned long PipelineDepth = 10;
unsigned long TimeOut = 120;
+bool AllowRedirect = false;
bool Debug = false;
URI Proxy;
Persistent = true;
// Determine the proxy setting
- if (getenv("http_proxy") == 0)
+ string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host);
+ if (!SpecificProxy.empty())
{
- string DefProxy = _config->Find("Acquire::http::Proxy");
- string SpecificProxy = _config->Find("Acquire::http::Proxy::" + ServerName.Host);
- if (SpecificProxy.empty() == false)
- {
- if (SpecificProxy == "DIRECT")
- Proxy = "";
- else
- Proxy = SpecificProxy;
- }
- else
- Proxy = DefProxy;
+ if (SpecificProxy == "DIRECT")
+ Proxy = "";
+ else
+ Proxy = SpecificProxy;
}
else
- Proxy = getenv("http_proxy");
+ {
+ string DefProxy = _config->Find("Acquire::http::Proxy");
+ if (!DefProxy.empty())
+ {
+ Proxy = DefProxy;
+ }
+ else
+ {
+ char* result = getenv("http_proxy");
+ Proxy = result ? result : "";
+ }
+ }
// Parse no_proxy, a , separated list of domains
if (getenv("no_proxy") != 0)
return true;
}
+ if (stringcasecmp(Tag,"Location:") == 0)
+ {
+ Location = Val;
+ return true;
+ }
+
return true;
}
/*}}}*/
1 - IMS hit
3 - Unrecoverable error
4 - Error with error content page
- 5 - Unrecoverable non-server error (close the connection) */
+ 5 - Unrecoverable non-server error (close the connection)
+ 6 - Try again with a new or changed URI
+ */
int HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv)
{
// Not Modified
return 1;
}
+ /* Redirect
+ *
+ * Note that it is only OK for us to treat all redirection the same
+ * because we *always* use GET, not other HTTP methods. There are
+ * three redirection codes for which it is not appropriate that we
+ * redirect. Pass on those codes so the error handling kicks in.
+ */
+ if (AllowRedirect
+ && (Srv->Result > 300 && Srv->Result < 400)
+ && (Srv->Result != 300 // Multiple Choices
+ && Srv->Result != 304 // Not Modified
+ && Srv->Result != 306)) // (Not part of HTTP/1.1, reserved)
+ {
+ if (!Srv->Location.empty())
+ {
+ NextURI = Srv->Location;
+ return 6;
+ }
+ /* else pass through for error message */
+ }
+
/* We have a reply we dont handle. This should indicate a perm server
failure */
if (Srv->Result < 200 || Srv->Result >= 300)
if (pkgAcqMethod::Configuration(Message) == false)
return false;
+ AllowRedirect = _config->FindB("Acquire::http::AllowRedirect",true);
TimeOut = _config->FindI("Acquire::http::Timeout",TimeOut);
PipelineDepth = _config->FindI("Acquire::http::Pipeline-Depth",
PipelineDepth);
/* */
int HttpMethod::Loop()
{
+ typedef vector<string> StringVector;
+ typedef vector<string>::iterator StringVectorIterator;
+ map<string, StringVector> Redirected;
+
signal(SIGTERM,SigTerm);
signal(SIGINT,SigTerm);
break;
}
+ // Try again with a new URL
+ case 6:
+ {
+ // Clear rest of response if there is content
+ if (Server->HaveContent)
+ {
+ File = new FileFd("/dev/null",FileFd::WriteExists);
+ Server->RunData();
+ delete File;
+ File = 0;
+ }
+
+ /* Detect redirect loops. No more redirects are allowed
+ after the same URI is seen twice in a queue item. */
+ StringVector &R = Redirected[Queue->DestFile];
+ bool StopRedirects = false;
+ if (R.size() == 0)
+ R.push_back(Queue->Uri);
+ else if (R[0] == "STOP" || R.size() > 10)
+ StopRedirects = true;
+ else
+ {
+ for (StringVectorIterator I = R.begin(); I != R.end(); I++)
+ if (Queue->Uri == *I)
+ {
+ R[0] = "STOP";
+ break;
+ }
+
+ R.push_back(Queue->Uri);
+ }
+
+ if (StopRedirects == false)
+ Redirect(NextURI);
+ else
+ Fail();
+
+ break;
+ }
+
default:
Fail(_("Internal error"));
break;
int main()
{
setlocale(LC_ALL, "");
+ // ignore SIGPIPE, this can happen on write() if the socket
+ // closes the connection (this is dealt with via ServerDie())
+ signal(SIGPIPE, SIG_IGN);
HttpMethod Mth;
-
return Mth.Loop();
}