Ubuntu 16.04'te /etc/apt/sources.list dosyasını kaynak URI'lerle otomatik olarak nasıl güncelleyebilirim?


10

Aşağıdaki komut Ubuntu 15.10'da iyi çalıştı:

sudo apt-get build-dep emacs24

Ancak, Ubuntu 16.04'te çalıştırırken aşağıdaki hatayı alıyorum:

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

İle 15.10 tüm hatlar (yaklaşık 10 sayısı cinsinden) olarak deb-srciçerisinde /etc/apt/sources.listburada uncommented, oysa 16.04 karşılık gelen hatları burada açıklanır. Örneğin, şu anki akımımdan 4 satır var 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

Bu değişikliğin nedeni nedir?

Sonra, /etc/apt/sources.listUbuntu'nun her yeniden kurulumunu yaptığımda manuel olarak düzenlemekten kaçınmak istiyorum . Bu ( deb-srcçizgileri kaldırmadan ) otomatik olarak nasıl yapılabilir?


Bunun nedeni muhtemelen çoğu kullanıcı için kullanılabilir kaynak paketlerinin veritabanını her seferinde güncellemek için gereksiz zaman / bant genişliği kaybıdır. Kullanılan depoları yapılandırdığınız GUI'den, bu satırları kolayca devre dışı bırakabilir / etkinleştirebilirsiniz (yorum / uncomment). Ayrıca bazı sedsenaryolar var.
JanC

python3-software-propertiesPaketi çok Python senaryo yazmaya yararlı olabilir.
JanC

@JanC Teşekkürler, kendi senaryomu yazdım. Aşağıdaki cevaba bakınız.
Håkon Hægland

Yanıtlar:



12

Ben aynı sorun Ubuntu 16.04 bir sunucu yüklemesinde, bu yüzden hiçbir GUI vardı. Tek ihtiyacým olan birkaç sedkomuttu.

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

Sonra sudo apt-get updatedevam edin.


2

İşte deb-srcsatırları açmak için kullanılabilecek (şu anda denenmemiş) bir Bash betiği 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

Senaryoya gerek yok. Lütfen cevabımı görün.
Gunnar Hjalmarsson

1

diğerlerinin daha özlü yayınladıklarını yapan daha basit bir çözüm:

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

Anahtar ayrımlar: Perl, dosyaları yerinde değiştiren -i inplace seçeneğine sahiptir; Yedekleme dosyalarına veri dosyası olarak davranılmasını istemediğim için yedekleme dosyaları için bir sonek eklemedim. Ve "*" isteğe bağlı boşlukla ilgilenir. "perl -p -n -e" çoğunlukla "sed -e" ile aynıdır, ancak açgözlü regex eşleşmesine dikkat edin.

Diğerleriyle aynı sınırlamalara sahiptir: orijinal etkin olmasa bile (yani ortaklar) kaynakları etkinleştirir ve /etc/apt/sources.list.d üzerinde çalışmaz. Aşağıdakiler ayrıca /etc/apt/sources.list.d* 'yi de işleyecektir, ancak önce bir yedek oluşturur.

(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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.