Yükseltmeden Önerilen depoya nasıl geri dönebilirim?


Yanıtlar:


24

Burada yerel olarak kurulu paketlerden geri dönmenin, önerilen ve paketleri kararlı + güncelleme kanalına geri götürmenin daha genel bir yolu var. Diğer cevaplar doğru olsa ve benzer şekilde çalışsa da, bunun daha şık bir yaklaşım olduğunu düşünüyorum.

  1. Emin olun girdilerini kaldırıldı -proposedya -backportsda içinde /etc/apt/sources.listve /etc/apt/sources.list.d/*dosyalar.
  2. Bir apt-Preferences dosyası ekleyin, örneğin /etc/apt/preferences.d/99-back-to-stable-updatesiçeren ( preciseburada ( sürümünüzle değiştirin):

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    > 1000'in bu sabitlenmesi, o kanaldan gelen paketlerde indirgemeyi zorlar -proposedve -backportskanallardaki <0 önceliği de ek paketleri kaldırır.

  3. Şimdi koş

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Önerilen çözümü size uygun olanı inceleyin ve uygun olduğunu düşünüyorsanız, kabul edin. Neden ve hangi sürüme düşürüleceğini kontrol etmeniz gerekiyorsa, apt-cache policy packagenamehangi sürümlerin kullanılabilir olduğunu ve kurulum için hangi kararın uygun olduğunu görmek için bunu kontrol edin .

  4. /etc/apt/preferences.d/99-back-to-stable-updatesArtık gerekli olmadığından dosyayı tekrar kaldırın .

5 yıldan daha uzun bir süre önce görevine sonmlind vermek için yapılan bu ilham için Ubuntu forumlarına teşekkürler - bugün bana çok iyi yardımcı oldu.


Sanırım Debian ile de çalışması gerekiyor. Ne yazık ki, benim için hiçbir şey yapmaz: /
Michael

@Michael 1) Debian, kamuya açık resmi depolar kavramına sahip değil. 2) Bu site Ubuntu hakkında, Debian ile ilgili değil. Unix.SE hakkında yeni bir soru sormanızı öneririm .
gertvdijk

Bu çözüm aynı zamanda 'xenial' versiyonu ile çalıştı! (Tabii ki, dosyada xenial ile kesin değiştirdikten sonra) Çok teşekkürler!
morhook

4

Bu sayfa , Apt sabitlemenin 1000'den daha yüksek pin önceliklerinin paket düşürmeye neden olabileceği gerçeğinden yararlanarak tüm bir depodan indirgemek için kullanılabileceğini göstermektedir .

Öyleyse, çözümlerden biri, natty-proposeddepodakiler dışındaki tüm paket dosyalarının varsayılan önceliklerini 1000'e kadar geçici olarak artırmak olabilir :

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

(Not: Bu yöntem , sürüm alanları virgül içeren paket dosyalarının önceliğini arttırmaz . Bu soruya bakın .)

Bunu yaptıktan sonra, apt-get --simulate upgradebaşarılı bir düşüş oranı tespiti için test etmek için kullanılabilir. Doğru düşüşlerin tespit edildiğini onayladıktan sonra sudo apt-get upgrade, düşüşün gerçekleştirilmesi için gereken her şey olmalıdır.

Düşüş tamamlandığında, Sürüm Öncesi güncellemeleri (natty-önerilen) depoyu devre dışı bırakmak için Yazılım Kaynakları'nı kullanın , ardından geçici öncelik artışını kaldırın:

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

Son olarak, çalışan tüm programların indirgenmiş sürümleri olması için yeniden başlatın.


1
İlginç bir çözüm, muhtemelen benimkinden daha iyi ve daha genel. Bu arada, indirgenmiş paketlerin sayısı aynıdır ve her iki yaklaşımın doğruluğunu teyit eder.
enzotib

2

Aşağıdakilerden daha basit bir çözüm bulamıyorum. Yine de birisinin daha iyi bir cevap almasını umuyorum.

Düşürmeyi çalıştırabilen aşağıdaki komut dosyası

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

Adı verilen awkkomut dosyası get-prev-pkg-versaşağıdaki gibidir

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

Komut dosyasını çalıştırırken, önerilen repo henüz devre dışı bırakılmamalıydı.

Her iki komut dosyasında da yürütülebilir biti ayarlamayı unutmayın.

Bu yaklaşımla ilgili bir sorun, indirilen tüm paketlerin manuel olarak yüklenmesinin (ayrıca otomatik olarak kurulanların) ortaya çıkmasıdır.

Güvende olmak --simulateiçin apt-get, bash betiğinin sonuna seçeneği ekleyin .


2

Tüm paketleri natty'den önerilmiş olana geri döndürmek gerekmeyebilir: çoğu paket yine de natty güncellemeleri aracılığıyla yakında aynı sürümlere güncellenir.

Bir pakette sorun yaşarsanız, bir pakete darent hediyeler yöntemini kullanarak geri döndürebilirsiniz (devre dışı bıraktıktan sonra) veya kullanabilirsiniz sudo aptitude install packagename/natty. Fakat daha önemlisi, pakete karşı bir hata yazmalısınız. Çok az insan aslında natty tarafından önerilen testleri test ediyor ve eğer gerilemeler (= yeni problemler) meydana gelirse, kesinlikle rapor edilmelidir. Aksi halde, tüm ubuntu kullanıcıları için güncellemelerle sonuçlanabilirler. Eğer herhangi bir sorun yaşarsanız, lütfen bildirin.


1

Sinaptik olarak, teklif edilen deposu devre dışı bırakabilir ve kaynaklarını güncelleyebilirsiniz. Ardından, güncellenen paketlerin hepsinin yerel olarak yüklendiğini göreceksiniz (artık depolarda bulunmadıkları için).

Şimdi bu paketleri "düşürmek" zorunda kalacaksınız. Birer birer seçin ve üst menüden şunu seçin:

package > force version

(veya Control + E)

Uygun seçenekler içeren bir menü görünecektir. Her paket için daha düşük sürüm numarasını seçerdim. Bir hata yaparsanız ve normal depolarda daha yeni bir sürüm varsa, daha sonraki bir güncellemede çözülecektir.

Hızlı bir çözüm, önerilen depoya işaret eden purge-ppa komutunu kullanmak olacaktır, ancak onlarla çalışıp çalışmadığını bilmiyorum, yalnızca harici ppa'ları ve düşürme paketlerini resmi ubuntu sürümlerine temizlemek için kullandım. Bu durumda bunu yapmanızı tavsiye etmem, belki de güvenli bir yöntem olup olmadığını bilen birileri ...


Son paragraf sadece spekülasyondur ve bu nedenle soru üzerine yorum yapılmalı veya uygun şekilde araştırılmalıdır.
Karl Richter

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.