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

Bug #997371 reported by Eric Hammond
This bug affects 1 person
Affects Status Importance Assigned to Milestone
software-properties (Ubuntu)
Fix Released
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
SourcePackage: apt
UpgradeStatus: No upgrade log present (probably fresh install)

Related branches

CVE References

Revision history for this message
Eric Hammond (esh) wrote :
Eric Hammond (esh)
description: updated
affects: ubuntu → apt (Ubuntu)
Robert Roth (evfool)
Changed in apt (Ubuntu):
importance: Undecided → Wishlist
status: New → Confirmed
Revision history for this message
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)
Revision history for this message
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
Revision history for this message
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
Revision history for this message
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?

Revision history for this message
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 :).

Revision history for this message
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.

Revision history for this message
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
Revision history for this message
Eric Hammond (esh) wrote :

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

Revision history for this message
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
Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.