touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #67808
[Bug 1429285] Re: feature request: apt-get update --if-necessary
$ echo "now: $(TZ=GMT date)"; wget -S -q http://azure.archive.ubuntu.com/ubuntu/dists/vivid/Release -O /dev/null
now: Fri Apr 3 14:37:31 GMT 2015
HTTP/1.1 200 OK
Date: Fri, 03 Apr 2015 14:37:31 GMT
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Fri, 03 Apr 2015 14:28:00 GMT
ETag: "34f32-512d2c15bbc00"
Accept-Ranges: bytes
Content-Length: 216882
Cache-Control: max-age=1228, proxy-revalidate
Expires: Fri, 03 Apr 2015 14:58:00 GMT
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
So the 'Expires' is most definitely in the future. This one is
currently 21 minutes in the future.
I didn't say that the solutions I pointed to were complete, but the fact
that people are attempting to solve the problem (and doing so
incorrectly) should indicate a need for a good solution.
It would seem possible for apt to go through the sources.list
(+sources.list.d/*) and figure out what it was going to download. It
could decide based on previously stored headers or a global default "5
minutes" or a per-mirror default if it should bother. Of course it
would make sense to have the ability to force.
running 'apt-get update' on a system does take real time. On a cloud instance with a on-network mirror:
% TIMEFORMAT='real=%3lR user=%3lU sys=%3lS' bash -c 'for i in $(seq 1 10); do printf "%-3s " $i ; time apt-get update -q >/dev/null; done'
1 real=0m3.987s user=0m3.628s sys=0m0.244s
2 real=0m4.052s user=0m3.688s sys=0m0.220s
3 real=0m3.980s user=0m3.656s sys=0m0.204s
4 real=0m4.077s user=0m3.676s sys=0m0.272s
5 real=0m4.068s user=0m3.732s sys=0m0.228s
6 real=0m4.052s user=0m3.688s sys=0m0.236s
7 real=0m4.201s user=0m3.812s sys=0m0.248s
8 real=0m4.247s user=0m3.852s sys=0m0.252s
9 real=0m4.059s user=0m3.688s sys=0m0.256s
10 real=0m4.064s user=0m3.680s sys=0m0.252s
It just seems reasonable to me, that operations 2->10 could take .002
seconds.
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1429285
Title:
feature request: apt-get update --if-necessary
Status in apt package in Ubuntu:
New
Bug description:
In many cases (juju, lxc containers .. ) we find ourselves in the
position of not knowing if the apt-cache has been udpated recently.
So, you either risk not doing it, or do it and it takes some time and
generates load.
so long story short, you always run 'apt-get update' which is quite often
unnecessary.
Would it be possible to add (or is there now) something like
'--if-necessary' or '--if-necessary=5m'. I could imagine that that would
look at /var/lib/apt/lists and check timestamps on files for each url that
/etc/apt/sources.list[.d/*] would hit. If nothing was needed and
reasonably recent, then it would not do the update.
There exist other solutions to this like:
https://coderwall.com/p/0xtstw/doing-an-apt-get-update-in-ansible-only-if-a-condition-is-met
https://blog.kumina.nl/2010/11/puppet-tipstricks-running-apt-get-update-only-when-needed/
It'd be nice if we had a sane way to say:
update if you need to, otherwise don't waste time and resources
ProblemType: Bug
DistroRelease: Ubuntu 15.04
Package: apt 1.0.9.3ubuntu1
ProcVersionSignature: Ubuntu 3.19.0-7.7-generic 3.19.0
Uname: Linux 3.19.0-7-generic x86_64
ApportVersion: 2.16.2-0ubuntu1
Architecture: amd64
CurrentDesktop: Unity
Date: Fri Mar 6 17:06:22 2015
EcryptfsInUse: Yes
InstallationDate: Installed on 2015-01-02 (63 days ago)
InstallationMedia: Ubuntu 15.04 "Vivid Vervet" - Alpha amd64 (20150101)
SourcePackage: apt
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1429285/+subscriptions
References