← Back to team overview

touch-packages team mailing list archive

[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