Oh I'm well aware and have discussed this a couple of times.

We have since switched to deb822 sources, and the regression potential
for adding support for legacy source options is quite high.

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python-apt in Ubuntu.
https://bugs.launchpad.net/bugs/2070432

Title:
  aptsources: Legitimate entries are set to invalid when options are
  present

Status in python-apt package in Ubuntu:
  New

Bug description:
  [Impact]

  Ubuntu Release Upgrader uses python-apt for apt operations, including
  parsing and making sure the sources.list file is sensible.

  Options are placed in square brackets [] after the initial deb as key
  value pairs.

  e.g.

  deb [lang=en] http://archive.ubuntu.com/ubuntu focal main restricted

  sets the lang option.

  If you look at man sources.list(5), there are a number of options supported:
  * arch
  * lang
  * target
  * pdiffs
  * by-hash
  * allow-insecure
  * trusted
  * signed-by
  * check-valid-until
  * valid-until-min
  * check-date
  * date-max-future
  * inrelease-path
  * snapshot

  Currently, only arch and trusted are the only ones implemented:

  https://git.launchpad.net/ubuntu/+source/python-
  apt/tree/aptsources/sourceslist.py?h=applied/ubuntu/focal-updates#n202

      def parse(self, line):
  ...
          if pieces[1].strip()[0] == "[":
              options = pieces.pop(1).strip("[]").split()
              for option in options:
                  try:
                      key, value = option.split("=", 1)
                  except Exception:
                      self.invalid = True
                  else:
                      if key == "arch":
                          self.architectures = value.split(",")
                      elif key == "trusted":
                          self.trusted = apt_pkg.string_to_bool(value)
                      else:
                          self.invalid = True

  Usage of any others causes entries to be set invalid, and Ubuntu
  Release Upgrader then requires you to set new entries before it can
  proceed.

  This is a problem when used with an internal aptly mirror, using
  signed-by.

  The error seen on do-release-upgrade is:

  No valid mirror found

  While scanning your repository information no mirror entry for the 
  upgrade was found. This can happen if you run an internal mirror or 
  if the mirror information is out of date. 

  Do you want to rewrite your 'sources.list' file anyway? If you choose 
  'Yes' here it will update all 'focal' to 'jammy' entries. 
  If you select 'No' the upgrade will cancel.

  [Testcase]

  Simply set any supported option at all to sources.list:

  e.g.

  $ sudo sed -i "s/deb/deb [lang=en]/g" /etc/apt/sources.list

  and run:

  #!/bin/python3

  from aptsources.sourceslist import SourcesList, SourceEntry

  source = SourcesList()
  for entry in source.list:
      if (entry.invalid == False and entry.disabled == False):
          print(entry.uri + ' ' + entry.dist + ' ' + entry.comps[0])
          
  You will get no output at all.

  We would expect output like:

  http://archive.ubuntu.com/ubuntu focal main
  http://archive.ubuntu.com/ubuntu focal-updates main
  http://archive.ubuntu.com/ubuntu focal universe
  http://archive.ubuntu.com/ubuntu focal-updates universe
  http://archive.ubuntu.com/ubuntu focal multiverse
  http://archive.ubuntu.com/ubuntu focal-updates multiverse
  http://archive.ubuntu.com/ubuntu focal-backports main
  http://security.ubuntu.com/ubuntu focal-security main
  http://security.ubuntu.com/ubuntu focal-security universe
  http://security.ubuntu.com/ubuntu focal-security multiverse

  [Other info]

  This seems to have been the case since 2011, and no one has really hit
  it.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-apt/+bug/2070432/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to