Wie aktualisiere ich /etc/apt/sources.list automatisch mit Quell-URIs unter Ubuntu 16.04?

10

Der folgende Befehl hat unter Ubuntu 15.10 einwandfrei funktioniert:

sudo apt-get build-dep emacs24

Unter Ubuntu 16.04 wird beim Ausführen jedoch der folgende Fehler angezeigt:

Reading package lists... Done
E: You must put some 'source' URIs in your sources.list

In 15.10 wurden alle Zeilen (ungefähr 10 in der Anzahl) mit deb-srcin nicht /etc/apt/sources.listkommentiert, während in 16.04 die entsprechenden Zeilen auskommentiert wurden. Zum Beispiel sind hier 4 Zeilen aus meiner aktuellen sources.list:

## Major bug fix updates produced after the final release of the
## distribution.
deb http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
# deb-src http://no.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

Was ist der Grund für diese Änderung?

Als nächstes möchte ich vermeiden, /etc/apt/sources.listjedes Mal manuell zu bearbeiten, wenn ich Ubuntu neu installiere. Wie kann dies (Kommentieren der deb-srcZeilen) automatisch erfolgen?

Håkon Hægland
quelle
Der Grund ist wahrscheinlich, dass es für die meisten Benutzer nutzlos ist, Zeit / Bandbreite zu verschwenden, um die Datenbank der verfügbaren Quellpakete jedes Mal zu aktualisieren. Über die GUI, in der Sie die verwendeten Repositorys konfigurieren, können Sie diese Zeilen einfach deaktivieren / aktivieren (kommentieren / kommentieren). Es gibt auch einige sedSkripte.
Januar
Das python3-software-propertiesPaket kann nützlich sein, um auch ein Python-Skript zu schreiben.
Januar
@ JanC Danke, ich habe mein eigenes Skript geschrieben. Siehe Antwort unten.
Håkon Hægland
Nur CLI-Version: askubuntu.com/questions/496549/…
Ciro Santilli 5 病毒 审查. 事件 5

Antworten:

9

Öffnen Sie Software & Updates und aktivieren Sie "Quellcode".

Gunnar Hjalmarsson
quelle
13
Nutzlos, wenn Ihr Ubuntu ein Server mit nur Shell ist
Wojciech Zylinski
12

Ich hatte das gleiche Problem bei einer Serverinstallation von Ubuntu 16.04, also keine GUI. Ich brauchte nur ein paar sedBefehle.

sudo sed -i -- 's/#deb-src/deb-src/g' /etc/apt/sources.list && sudo sed -i -- 's/# deb-src/deb-src/g' /etc/apt/sources.list

Dann sudo apt-get updateund weiter.

Tobi
quelle
2

Hier ist ein (derzeit nicht getestetes) Bash-Skript, mit dem deb-srcZeilen in Kommentaren auskommentiert werden können sources.list:

tempdir=$(mktemp -d)
cd "$tempdir"
source_file=/etc/apt/sources.list
new_file=sources.list.new
perl -pE 's/^#\s+(deb-src)/$1/' "$source_file" > "$new_file"
sudo cp "$new_file" "$source_file"
sudo apt-get update
Håkon Hægland
quelle
Kein Skript erforderlich. Bitte sehen Sie meine Antwort.
Gunnar Hjalmarsson
1

Einfachere Lösung, die das macht, was die anderen prägnanter gepostet haben:

sudo perl -p -i -n -e "s/# *deb-src/deb-src/"  /etc/apt/sources.list

Hauptunterschiede: Perl verfügt über die Option -i inplace, mit der Dateien an Ort und Stelle geändert werden können. Ich habe kein Suffix für Sicherungsdateien hinzugefügt, da ich nicht wollte, dass die Sicherungsdateien versehentlich als Datendateien behandelt werden. Und "*" behandelt optionales Leerzeichen. "perl -p -n -e" ist meistens dasselbe wie "sed -e", achten Sie jedoch auf gierige Regex-Übereinstimmungen.

Es hat die gleichen Einschränkungen wie die anderen: Es aktiviert Quellen, auch wenn das Original nicht aktiviert war (dh Partner), und es funktioniert nicht unter /etc/apt/sources.list.d. Im Folgenden wird auch /etc/apt/sources.list.d* verarbeitet, es wird jedoch zuerst ein Backup erstellt.

(cd /etc/apt/; sudo tar cvf sources.list.tar sources.list sources.list.d);  for i in /etc/apt/sources.list /etc/apt/sources.list.d/*; do sudo perl -p -i -n -e "s/# *deb-src/deb-src/" $i; done
Whitis
quelle