For the time being you can use the following diff. arm() is deprecated in Twisted 2.1 and as I've got not much Python experience I failed to adapt apt_proxy.py to the Twisted changes.
Beware that this will most probably only work for the case when there is no error and fail if anything goes wrong while downloading from the external Debian mirror. If this happens you can try to work around by doing "apt-get clean" and installing/upgrading anew. This is the Deferred api as present in current Twisted: http://twistedmatrix.com/documents/current/api/twisted.internet.defer.Deferred.html#arm. Evil hack (no cure to the python-twisted incompatibility) to /usr/lib/python2.3/site-packages/apt_proxy/apt_proxy.py until a real Python programmer adapts apt-proxy: --- apt_proxy.py 2005-08-19 19:15:20.000000000 +0200 +++ apt_proxy.py.new 2006-01-23 13:48:24.000000000 +0100 @@ -819,7 +819,7 @@ d = self.ftpclient.queueStringCommand('SIZE ' + self.remote_file) d.addCallbacks(apFtpSizeFinish, apFtpSizeFinish, (self, 0), None, (self, 1), None) - d.arm() + #d.arm() def ftpFetchList(self): "If ftpFetchSize didn't work try to get the size with a list command." @@ -839,7 +839,7 @@ d.addCallbacks(apFtpListFinish, apFtpListFinish, (filelist, self, 0), None, (filelist, self, 1), None) - d.arm() + #d.arm() def ftpFetchFile(self): "And finally, we ask for the file." @@ -851,7 +851,7 @@ d.addCallbacks(apFtpFetchFinish, apFtpFetchFinish, (http.OK, "good", self), None, (http.NOT_FOUND, "fail", self), None) - d.arm() + #d.arm() def dataReceived(self, data): self.setResponseCode(http.OK) @@ -1486,7 +1486,7 @@ d.addCallbacks(fetch_real, fetch_real, (dummyFetcher, 1, running,), None, (dummyFetcher, 0, running,), None) - d.arm() + #d.arm() return None def simplify_path(self, old_path): @@ -1574,7 +1574,7 @@ verifier.deferred.addCallbacks(file_ok, deferred.errback, (deferred, self), None, None, None) - verifier.deferred.arm() + #verifier.deferred.arm() else: deferred.errback()