19

I want to add a repository to apt-get (without potentially messing up /etc/apt/sources.list) through the user of a script. This script may run multiple times so I can't just append the entry each time. Is there any way I can add a single file in a directory with entries?

I know you can do this for yum, but I'm not sure if it's possible for apt-get. Please let me know if I need to add more info.

1
  • If you double click on /etc/apt/sources.list, it opens a GUI interface with a wizard for adding repositories. There is a checkbox where you can enable and disable entries (e.g., to allow use of a new entry only when updating some "foreign" repository software), and entries can be deleted. It also creates a backup called sources.list.save in the same directory. If you want extra protection, you can always make a copy of the original file yourself before changing it. So there isn't much risk of messing up the file if you are going the script route just for that reason.
    – fixer1234
    Jan 31, 2015 at 5:16

4 Answers 4

20

You can place files in /etc/apt/sources.list.d. This is described in the man page for sources.list (type man sources.list). The man page says:

Older SOURCES.LIST.D

The /etc/apt/sources.list.d directory provides a way to add sources.list entries in separate files. The format is the same as for the regular sources.list file. File names need to end with .list and may only contain letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) characters. Otherwise they will be silently ignored.

UPDATE:

2016 SOURCES.LIST.D

The /etc/apt/sources.list.d directory provides a way to add sources.list entries in separate files. Two different file formats are allowed as described in the next two sections. Filenames need to have either the extension .list or .sources depending on the contained format. The filenames may only contain letters (a-z and A-Z), digits (0-9), underscore (_), hyphen (-) and period (.) characters. Otherwise APT will print a notice that it has ignored a file, unless that file matches a pattern in the Dir::Ignore-Files-Silently configuration list - in which case it will be silently ignored.

0
8

You could try:

add-apt-repository <REPOSITORY LINE>

The repository line would just be what you would append to the sources.list or a PPA repository. Check out the manpage here, or execute:

man add-apt-repository
2
  • 1
    From a quick look at the man file for add-apt-repository it looks like it simply appends the line to the sources.list file, it doens't mention if it checks, so this is just the same as "echo line >> sources.list" which I already had. Thanks for responding though.
    – Daisetsu
    Jan 24, 2011 at 21:20
  • 2
    @Daisetsu I know it does, I thought you just felt uncomfortable manually editing the file! Must've misunderstood! Great you got an answer that worked for you though!
    – Pylsa
    Jan 24, 2011 at 21:33
1

I (thought that I) needed to add a ppa repo to a crunchbang, (debian) install:
(N.B. "raring" is the ubuntu version that matched the version of debian that I was using) so I did:

sudo su -

# you can call the file anything that you want, but it has to end with .list to be a valid for apt-get
echo 'deb http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu/ raring main'>> /etc/apt/sources.list.d/boot-repair.list

# get the keys for that repo so that apt can verify the signed .deb files
wget http://ppa.launchpad.net/yannubuntu/boot-repair/ubuntu/dists/raring/Release.gpg
apt-key add Release.gpg
#gpg --search-keys 60D8DA0B

apt-get update

Most of this is explained on the boot-repair page, (though in the end testdisk and then Gparted were what I actually needed to restore a lost partition and a corrupted MBR.) This probably isn't The Debian way (TM) but it worked for me.

Some debian repos are the "old style" and then you only need a line like:

deb http://repo.alexx.net/apt/ /
# the trailing slash needs to be there

add-apt-repository is good if you have it, but that seems to be more ubuntu.

0

add-apt-repository has a third form (besides PPA URLs and full apt lines), which enables distribution components:

sudo add-apt-repository universe
sudo add-apt-repository contrib

This was introduced in 12.10 (Quantal).

1
  • 1
    it shows Error: 'contrib' invalid using Ubuntu 16.04 Nov 26, 2016 at 7:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .