Bir yükseltme işleminden sonra PPA'ları / repoları yeniden etkinleştirmenin en iyi yolu nedir?


Yanıtlar:


28

/etc/apt/sources.list.d/Dizindeki dosyalardaki satırları açarak hepsini tek tek eklemeniz / yeniden etkinleştirmeniz gerekir .

Her ne kadar yükseltme zamanı, bir paketin daha yeni bir sürümünü elde etmek için kullanıyorsanız, ilk etapta PPA'ya ihtiyacınız varsa yeniden değerlendirmek için iyi bir zamandır.


8

Önde gelen karma karakterini sources.list.d, yükseltme sırasında devre dışı bırakılmış olan tüm dosyalardan kaldıran bir bash betiği yazdım .

Aşağıdaki kod raringkaynakları yükseltmek içindir saucy.

Soneki saklamak istiyorsanız # disabled on upgrade to ...,

for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*disabled on upgrade to.*\)/\1/g' $f;done

soneki silmek istiyorsanız # disabled on upgrade to ...,

for f in /etc/apt/sources.list.d/*.list; do sudo sed -i 's/raring/saucy/g' $f; sudo sed -i 's/^# \(.*\) # disabled on upgrade to.*/\1/g' $f;done

4

İşte, sürümleri geçerli sürümde ayarlarken bu kaynakları bulmak ve etkinleştirmek için Python APT API'sini kullanan bir python betiği:

#! /usr/bin/python3

import aptsources.sourceslist as sl
import lsb_release

codename = lsb_release.get_distro_information()['CODENAME']
sources = sl.SourcesList()

for source in sources.list:
    if source.comment.lower().find("disabled on upgrade") >= 0:
        source.dist = codename
        source.set_enabled(True)
        print(source)
sources.save()

Onsuz çalıştırırsanız sudo, değişiklikleri kaydedemez, ancak hangi kaynakların etkinleştirileceğini gösterir. sudoDeğişiklikleri kaydetmek için ile çalıştırın .


Bu, örneğin '# deb cran.rstudio.com/bin/linux/ubuntu artful /' ile '# deb cran.rstudio.com/bin/linux/ubuntu biyonik' yerine geçiyor mu? Bunu yapmazsanız ne olurdu (önünüzdeki cevabın yaptığı gibi)?
Jeffrey Benjamin Brown

@JeffreyBenjaminBrown yapar ve değiştirmezseniz, bağımlılıkların tatmin edilemeyeceği olabilir.
muru

"Artful" kelimesinin (17.10 kod adı) "yükseltme sırasında devre dışı bırakıldı ..." şeklinde yorumlanan satırların bazılarında "biyonik" ile değiştirildiğini, diğerlerinin ise olmadığını gördüm. Ben sadece "devre dışı" yorum ile tüm satırları uncommented ve apt ilerledi (her ne sebeple gcc yeniden yüklemek zorunda kaldım). Ve bir sürü üçüncü taraf repo kullanıyorum - 13 dosya sources.list.dve üç yabancı sources.list. Bu şimdi Ubuntu'nun otomatik olarak ilgilendiği bir şey olabilir mi?
Jeffrey Benjamin Brown

@JeffreyBenjaminBrown Muhtemelen, son zamanlarda yükseltme yapmadım (genellikle yeni kurulumlar), bu yüzden bilmiyorum.
muru

1
Bu benim 19.10 için apt kaynaklarımı kırmış görünüyor
Dreamcat4

1

Özellikle bir yükseltme işleminden sonra PPA'ları hem etkinleştirmek (yeniden etkinleştirmek) hem de devre dışı bırakmak için birkaç komut dosyası oluşturdum. İşte buradalar:

PPA komut dosyasını yeniden etkinleştir

#! /bin/bash
# PPA re-enable script
# Use: ppa-reenable source.list
# to reenable a PPA without its source line
# Use: ppa-reenable src source.list
# to reenable a PPA with its source line

mod=1
file="$1"
if [ $1 == "src" ]; then mod=""; file="$2"; fi;
sudo sed -i "${mod}s/^# \(.*\) \(disabled on upgrade.*\)\?/\1/" "$file"

PPA komut dosyasını devre dışı bırak

#! /bin/bash
# PPA disable script
# Use: ppa-disable source.list
# to disable the PPA completely
# Use: ppa-disable src source.list
# to disable the source of the PPA only

file="${1}"
mod=""
# If its only needed to disable the source
if [ $1 = "src" ]; then mod="2"; file="${2}"; fi;

# If source line is disabled, don't comment it out
second="`sed -n 2p \"$file\"`"
second="${second:0:1}"
if ( [ $second == "#" ] && [ $mod != "2" ] ); then
    mod="1"
fi

sudo sed -i "${mod}s/^/# /" "$file"

sudoEvinizde bin dizininde bu komut dosyasını saklayabilirsiniz böylece dahildir

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.