Create command to add "multiverse" and "-backports" to apt sources

Bug #997371 reported by Eric Hammond on 2012-05-09
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
Wishlist
Robert Roth

Bug Description

Based on a discussion at UDS-Q a simple command is desired to be able to add/enable "multiverse" and/or "-backports" in the apt repositories on a system.

Background: Right now, it is trivial to add a PPA to the apt sources using the apt-add-repository command. For example, I can tell somebody on IRC/email/blog to run these commands:

    sudo apt-add-repository ppa:awstools-dev/awstools &&
    sudo apt-get update &&
    sudo apt-get install elbcli

Presto! They have the correct package installed and this works on a number of different Ubuntu releases.

Unfortunately, it is much more common to point people to the more popular "multiverse" (and occasionally "-backports") sections of the standard apt repositories, but it is much more difficult to describe how to enable these.

For example, to install the ec2-api-tools currently available in multiverse, I have to provide non-standard and confusing instructions like:

    # Enable "multiverse" in your apt sources using something like
    sudo perl -pi -e \
      'next if /-backports/; s/^# (deb.* multiverse)$/$1/' /etc/apt/sources.list
    # unless you're on an older version of Ubuntu which has a different sources.list
    # format, in which case you might need to use something like:
    sudo perl -pi -e 's%(universe)$%$1 multiverse%' /etc/apt/sources.list
    # then
    sudo apt-get update &&
    sudo apt-get install ec2-api-tools

I would much rather be able to simply say something like:

    sudo apt-add-source multiverse &&
    sudo apt-get update &&
    sudo apt-get install ec2-api-tools

(I don't care about the name of the tool. I just want it to be easy to provide in instructions.)

In addition to "multiverse" it would be nice to support "-backports" and perhaps "partner".

Ideally, this would be available for all active Ubuntu releases, but getting it in going forward would be a good start.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: apt 0.8.16~exp12ubuntu10
ProcVersionSignature: User Name 3.2.0-23.36-virtual 3.2.14
Uname: Linux 3.2.0-23-virtual x86_64
ApportVersion: 2.0.1-0ubuntu5
Architecture: amd64
Date: Wed May 9 21:50:13 2012
Ec2AMI: ami-a29943cb
Ec2AMIManifest: (unknown)
Ec2AvailabilityZone: us-east-1a
Ec2InstanceType: m1.small
Ec2Kernel: aki-825ea7eb
Ec2Ramdisk: unavailable
ProcEnviron:
 TERM=xterm
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SourcePackage: apt
UpgradeStatus: No upgrade log present (probably fresh install)

Related branches

CVE References

Eric Hammond (esh) wrote :
Eric Hammond (esh) on 2012-05-09
description: updated
affects: ubuntu → apt (Ubuntu)
Robert Roth (evfool) on 2012-05-10
Changed in apt (Ubuntu):
importance: Undecided → Wishlist
status: New → Confirmed
Robert Roth (evfool) wrote :

Reassigned to software-properties as that is where the apt-add-repository command is, and it seems to make sense to have them in the same place.

affects: apt (Ubuntu) → software-properties (Ubuntu)
Robert Roth (evfool) wrote :

software-properties already supports what you are asking for:
sudo software-properties-gtk --enable-component multiverse
sudo software-properties-gtk --enable-component backports
Is this what you need?

Changed in software-properties (Ubuntu):
status: Confirmed → Incomplete
Eric Hammond (esh) wrote :

Thanks for the tip!

software-properties-gtk is nice for a desktop system, but on an Ubuntu server (e.g., EC2 instances) it is not installed by default.

On a fresh Ubuntu 12.04 LTS Precise server I would need to give the following extra instructions:

  sudo apt-get update &&
  sudo apt-get install software-properties-gtk &&
  sudo software-properties-gtk --enable-component multiverse &&
  sudo apt-get update &&
  sudo apt-get install ...

This package pulls in:

  apt-xapian-index dbus-x11 defoma docbook-xml esound-clients esound-common
  fontconfig fontconfig-config gamin gconf2 gconf2-common ghostscript gksu
  gnome-keyring gnome-mime-data gsfonts gvfs gvfs-backends hicolor-icon-theme
  indicator-application launchpad-integration libappindicator0 libarchive1
  libart-2.0-2 libasound2 libatasmart4 libatk1.0-0 libatk1.0-data
  libaudiofile0 libavahi-client3 libavahi-common-data libavahi-common3
  libavahi-glib1 libbluetooth3 libbonobo2-0 libbonobo2-common libbonoboui2-0
  libbonoboui2-common libcairo-perl libcairo2 libcdio-cdda0 libcdio-paranoia0
  libcdio10 libcups2 libcupsimage2 libdatrie1 libdbusmenu-glib1
  libdbusmenu-gtk1 libdirectfb-1.2-0 libesd0 libexif12 libfontconfig1
  libfontenc1 libgail18 libgamin0 libgconf2-4 libgcr0 libgdu0 libgksu2-0
  libglade2-0 libglib-perl libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl
  libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0
  libgnomecanvas2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0
  libgnomevfs2-common libgnomevfs2-extra libgomp1 libgp11-0 libgphoto2-2
  libgphoto2-port0 libgs8 libgtk2-perl libgtk2.0-0 libgtk2.0-bin
  libgtk2.0-common libgtop2-7 libgtop2-common libgudev-1.0-0 libgvfscommon0
  libice6 libidl0 libimobiledevice0 libindicator0 libjasper1 libjpeg62
  libjson-glib-1.0-0 liblaunchpad-integration1 liblcms1 libltdl7 liblzma1
  libmagickcore2 libmagickwand2 libntfs10 libopenobex1 liborbit2
  libpam-gnome-keyring libpango-perl libpango1.0-0 libpango1.0-common
  libpaper-utils libpaper1 libpixman-1-0 libplist1 libpolkit-agent-1-0
  libpolkit-backend-1-0 libproxy0 librarian0 libsgutils2-2 libsm6 libsmbclient
  libsoup-gnome2.4-1 libsoup2.4-1 libstartup-notification0 libsysfs2
  libtalloc2 libthai-data libthai0 libtiff4 libts-0.0-0 libusb-1.0-0
  libusbmuxd1 libvte-common libvte9 libwbclient0 libxcb-atom1 libxcb-aux0
  libxcb-event1 libxcb-render-util0 libxcb-render0 libxcomposite1 libxcursor1
  libxdamage1 libxfixes3 libxfont1 libxft2 libxi6 libxinerama1 libxrandr2
  libxrender1 libxt6 mtools ntfsprogs obex-data-server policykit-1
  policykit-1-gnome psfontmgr python-cairo python-debian python-glade2
  python-gtk2 python-xapian rarian-compat scrollkeeper sgml-data
  shared-mime-info synaptic tsconf ttf-dejavu-core udisks usbmuxd
  x-ttcidfont-conf x11-common xfonts-encodings xfonts-utils

which seems like a lot just to change a few lines in a text file.

I believe it is worth reducing this to just one command that is pre-installed on any basic Ubuntu system. Adding multiverse is an extremely common action (especially with AWS users) that should be easy to point folks to.

Changed in software-properties (Ubuntu):
status: Incomplete → Confirmed
Robert Roth (evfool) wrote :

Ok, you're right, this won't work for a server system. So I assume you have python-software-properties installed even on a server, as you have apt-add-repo provided by that package, so the tool required should be in python-software-properties, and have the same functionality as software-properties-gtk --enable-component backports/multiverse/etc. Would this be OK?

Robert Roth (evfool) wrote :

Could you please test this little app I have created for this purposes. apt-add-source multiverse adds multiverse, apt-add-source -r multiverse removes multiverse from your sources list. If it works, I'll propose a merge, and you might get it in python-software-properties next time :).

Eric Hammond (esh) wrote :

Robert: The program works for multiverse on Lucid, Oneiric, Precise, though it only adds "deb" and not "deb-src" on Lucid.

Robert Roth (evfool) wrote :

There are multiple deb-src not added reports open (#399771, #301602), so the issue must be coming from there, as I have just used the methods of the existing software-properties code. Anyway, I will propose a merge for this tool, as you have reported it basically works, and will take a look at the deb-src issue a bit later. Thanks for your feedback, I hope the tool will come handy.

Changed in software-properties (Ubuntu):
assignee: nobody → Robert Roth (evfool)
status: Confirmed → In Progress
Eric Hammond (esh) wrote :

evfool: Agreed. deb-src is not critical for the most common uses.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package software-properties - 0.92

---------------
software-properties (0.92) quantal; urgency=low

  [ Robert Roth ]
  * lp:~evfool/software-properties/lp1030970 :
    - Fixed the source code checkbox and the submit statistics
      checkbox labels to be left-aligned instead of centered.
  * lp:~evfool/software-properties/lp997371:
    - support enabling a component via "apt-add-repository componentname"
      (e.g. "apt-add-repository multiverse") LP: #997371

  [ Mathieu Trudel-Lapierre ]
  * Reinstate pycurl to use for getting PPA information from Launchpad, since
    it can actually verify SSL certificates with python2. Also set
    LAUNCHPAD_PPA_CERT so that it's a valid path to the system CA certificates
    bundle to use for urllib and pycurl. (LP: #1036839)
    - CVE-2012-0955

  [ Gabor Kelemen ]
  * lp:~kelemeng/software-properties/bug1035544:
    - fix a bunch of missing i18n strings (LP: #1035544)

  [ Michael Vogt ]
  * lp:~mvo/software-properties/remove-popcon:
    - remove the "statistics" page as this is no longer used
      (LP: #1025436)
 -- Michael Vogt <email address hidden> Mon, 27 Aug 2012 09:56:47 +0200

Changed in software-properties (Ubuntu):
status: In Progress → Fix Released
Scott Moser (smoser) wrote :

Just to be clear, the subject of this bug says 'add multiverse and -backports', but only multiverse was added.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers