Tüm paketleri belirli bir depodan nasıl kaldırabilirim?


30

10.04'ten 10.10'a kadar sorunsuz bir yükseltme için, varsayılan depolarda olmayan tüm paketleri kaldırmak istiyorum (örn. Krom PPA ve üçüncü taraf depoları). Bu paketleri bulmanın ve kaldırmanın en kolay yolu (tercihen CLI) nedir?

Düzenleme: Bu soru PPA'larla sınırlı değil, aynı zamanda x2go depom var, bu yüzden belirli bir havuza ait paketleri kaldırmak için genel bir komut arıyorum. PPA'lar için, PPA'ların nasıl kaldırılabileceği sorusunun büyük cevapları vardır.


Tüm harici paketleri kaldırmak isteyenler için, tüm
PPA'ları

Yanıtlar:


12

Bu komut dosyası, tüm paketleri belirli bir sunucudan / daldan listeleyebilir (bildirilen iki değişkeni değiştirerek):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ($2 == server && $3 == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

Belirli bir sunucudan gelmeyen tüm paketleri, şubeden bağımsız olarak listelemeniz gerekiyorsa, sondan sonraki satırı ile değiştirin:

nextline == 1 { nextline = 0; if ($2 != server) print pkg }

1
Tam olarak aradığım şeyi değil, bu komut dosyası yalnızca belirli bir depo girişindeki tüm paketleri görüntüler. Değiştirerek $2 == server && $3 == branchtarafından $2 != server, sorum cevaplanır. Lütfen cevabınıza koyun :) ( branch=satır kaldırılabilir) Not: tüm paketlerin tek bir depo sunucusundan geldiği varsayılmaktadır.
Lekensteyn

1
Bu komut dosyası (son yorumuma göre biraz değiştirilmiş) beklendiği gibi çalışıyor. libvpx0Paket krom günlük ESAîla hem ana repo mevcuttu. Dan depoları çıkardıktan sonra /etc/apt/sources.list.d, hala bir sol over paket vardı: libvpx0. Bu aşağıdaki gibi "tamir": bağımlılıkları göz ardı dpkg ile kütüphane kaldırın: sudo dpkg --ignore-depends=libvpx0 --remove libvpx0. Sonra, ana repo tekrar yükleyin: sudo apt-get install libvpx0.
Lekensteyn

1
@Lekensteyn: Muhtemelen çalışmalarınızı kısaltabilirdiniz sudo apt-get install libvpx0=$version_string, iki mevcut pakette farklı sürüm dizgileri olduğunu varsayalım.
enzotib

Gerçekten, bu da mümkündü ve belki de daha iyiydi.
Lekensteyn

Hangi paketlerin varsayılan depolardan yüklenmediğini kontrol etmem gerekiyordu. Komut apt-cache policy $(dpkg -l | awk '/^ii/{print $2}') > policy.txt; awk '!/^ /{pkg=$1}check{print pkg, $2;check=0}/\*\*\*/{check=1} ' policy.txt | grep -v archive.ubuntuiyi bir başlangıçtır ( grep -vbelirli PPA'ları hariç tutmak için daha fazlasını ekleyin ). Herhangi bir depoda bilinmeyen paket sürümleri olarak gösterilir /var/lib/dpkg/status.
Lekensteyn

22

Ppa-tahliyeyiPpa-purge'ı yükleyin kontrol et .

Kullanımı:

ppa-purge -purge <nameofppa> [-s hostserver]

Ana bilgisayar sunucusu varsayılan olarak ppa.launchpad.net.

İşte başvuru için ppa-purgekomutManpage simgesi için manpage bağlantı .


Veya evren deposundaki ppa-tasfiye üzerinde birçok hata düzeltmesi ve iyileştirme olan ppa-tasfiye şubemi kullanabilirsin. Daha fazla bilgi için buraya bakınız .
jarno

18

İçin Çok aptitudeAmaçlı Böceği Aşmakppa-purge

Normalde Vadim Rutkovsky ve Takkat gelmiş açıkladı , koşu ppa-purgevarsayılan sözdizimi ile düzgün zaman diğer yapılandırılmış yazılım kaynaklarda sağlamasıyla sürümleri bunları geçersiz kılınması, bir PPA tarafından sağlanan tüm paketleri kaldırmak için etkili bir yoldur.

Bununla birlikte, Takkat'ın işaret ettiği gibi, hata 831768 , çok yaylı paketleri (64 bit sistemlerde kurulu olan 32 bit paketler gibi) ppa-purgekaldırmak için düzgün çalışmasını önler . Bunun nedeni , çok parçalı paketlerdeki çakışan bağımlılıkları kaldıramadığıdır (hatanın nedeni budur) ve varsayılan davranışı paketleri düşürmek için kullanmaktır .aptitudeppa-purgeaptitude

Neyse ki, arka uç olarak tercih etmesini sağlayan bayrağı ppa-purgekabul -iediyor . apt-getaptitudeHata raporunda belgelendiği gibi, kullanarak apt-getelle çağırma için etkili bir alternatiftir aptitudeböylece çalışan ppa-purgeile -ibayrak gerektiğini multiarch paketleri de dahil olmak üzere bir PPA tarafından sağlanan tüm paketler, geçersiz kılınması / kaldırılması için etkili bir çözüm olabilir .

Nasıl yapılır

İşte sözdizimi:

sudo ppa-purge -i ppa:ppaowner/ppaname

Her zamanki gibi ( -ibayrak kullanılmadığında da aynı):

  • ppaowner PPA'nın sahibi ile değiştirilir.
  • /ppanameİsteğe bağlı. Varsa ppaname, PPA'nın adıyla değiştirilir. Değilse, varsayılan olarak ppa.

Örneğin , ben herhalde kararsız qBittorrent derlemelerini için PPA otomatik versiyonu benim diğer yazılım kaynaklar aracılığıyla kullanılabilir olursa olsun hiç qBittorrent downgrading, yüklü ve ben tamamen kaldırmak istediğini kullanarak apt-getyerine perde arkasındaaptitude . Sonra koşardım:

sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

Belgelendirildiği Yer

Bazı nedenlerden dolayı, birkaç kullanışlı seçenek ppa-purgede dahil olmak üzere kılavuz sayfasında belgelenmemiştir -i. Ancak koşarak onlar hakkında bilgi alabilirsiniz ppa-purge -h(ya da sadece ppa-purgetartışmasız):

ek@Del:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

"Uygunluk üzerine apt-get tercihini tersine çevirme" biraz şifreli. Bakarak kaynak kodunun ilgili parçasına ( ppa-purgebiz varsayılan davranış olduğunu bu aracı tercih olduğunu görebilirsiniz sonuçta sadece bir kabuk) aptitudeiçin apt-get, ve -ibayrak bu tercihi tersine çevirir.


Ppa-purge'i en son denediğimde, PPA'lardan silinmiş paketleri çıkarmadı. Hala durum bu mu?
Lekensteyn

Evet @Lekensteyn, ben inanıyorum da durum ppa-purgeolacaktır değil kaldırmak veya artık PPA tarafından sağlanmaktadır düşürme paketleri ediliyor "tasfiye". Ancak, daha yetkili veya iyi belgelenmiş bir cevap almak için, bu konuda ayrı bir soru göndermek isteyebilirsiniz.
Eliah Kagan

Depo Launchpad'de barındırılan bir PPA değilse de, standart dışı diğer depolar ise, ppa-tasfiye çalışacak mı?
Anwar

1
@Anwar İşe yararsa olumlu değilim, ama bunun yerine tam depo URL'sini belirterek deneyebilmelisiniz ppa:username/path. Ayrıca, temizleme işlemine başlamadan önce PPA ENABLED olmalıdır, komut dosyası kaldırılacak paketlerin listesini güncelledikten hemen sonra devre dışı bıraksa bile, zaten devre dışı bırakılmış PPA'ları "bulamaz".
dragon788

1
@Lekensteyn, bir PPA'dan aptitude search ~o(ya da bir tanesi üzerinden kapatılmış dpkg -i) takılmış olan bir şeyi temizlemeniz gerekiyorsa, kurulum kaynağı olmayan artık paketleri bulmayı deneyebilirsiniz .
dragon788

6

İşte bunu yapmanın GUI yolları. Umarım CLI'yi tercih etmeyenlere yardımcı olur. Adımlar basit ve takip etmesi kolaydır.

  1. Sinaptik paket yöneticisini açın . Takılı değilse, aşağıdakileri yükleyin:

    sudo apt-get install synaptic
    
  2. Açıldığında sol taraftaki Origin butonuna tıklayın. Sol üst taraftaki tüm depoları listeler. Paketlerin kaldırılacağı depoyu seçin. Bu havuz altındaki tüm paketleri listeleyecektir. Kurulu paketleri göstermek için ilk alanı i, e S veya Kurulu Versiyon alanına tıklayın.

  3. Şimdi kaldırılacak tüm paketleri seçin.

    Kaldırma için işaretlemek için ipuçları:

    1. Önce ilk paketi Shiftseçin, ardından tuşu basılı tutun ve hepsini seçmek için son paketi tekrar seçin. Ardından kare kutuya sağ tıklayın ve kaldırma için işareti veya tam kaldırma için işareti seçin .

    2. veya Herhangi bir paketi seçin ve tümünü seçmek için Ctrl+ tuşuna basın A. Ardından kare kutuya sağ tıklayın ve kaldırma için işareti veya tam kaldırma için işareti seçin.

Bu kadar. Herhangi bir sorun olmadan kaldırır. Daha net hale getirmek için görüntüyü de ekledim. Umarım yardımcı olur. :)

görüntü


5

En azından onları bulmak için, PPA'ları devre dışı bırakarak başlayın ve koşun apt-get update. Ardından yükleyin apt-show-versions. Çalıştırmak apt-show-versions | grep 'No available'size yapılandırılmış depolarınızda bulunamayacağınız tüm kurulu paketlerin bir listesini verecektir. Bazı komut satırı sihirbazları ile muhtemelen sadece paket adlarını çıkarabilir ve onları aşağıdakilere aktarabilirsiniz apt-get remove:

 for i in `apt-show-versions | grep 'No available' | cut -d' ' -f 1` ; do  sudo apt-get remove -y $i ; done

Bunun, gelen listeden geçip apt-show-versionsbirer birer silineceğini unutmayın . Ne bulduğuna bağlı olarak, bu bağımlılıklar nedeniyle istenmeyen bir şeyi kaldırabilir, bu yüzden önce kontrol et.


Kulağa hoş geliyor, bir deneyeceğim.
Lekensteyn

3
Yükseltme işleminin kendisi de PPA'ları otomatik olarak devre dışı bırakacaktır, ancak devam etmeyeceğinden ve tüm kalan paketleri kaldıracağından emin değilim.
Jorge Castro

@Jorge: Gerçekten de PPA'ların devre dışı bırakıldığını (yorum yapılmadığını) fark ettim, ancak paketleri çıkarmıyor. Paketlerin Ubuntu havuzlarından yeni bir sürüm çıkarılmadan önce dosyaların üzerine yazılmasının daha iyi olacağını düşünüyorum.
Lekensteyn

Bunu henüz test ettim ve ana depolardan gelen paketler ile bir PPA arasında bir ayrım yapmıyor. Benim durumumda, libvpx0krom günlük PPA paketiydi. @ enzotib'in cevabı bu paketi gösterdi.
Lekensteyn

apt-show-versionsKök olmayan olarak çalıştırıyorsanız , sudo apt-show-versions -iönbelleğini güncellemesi ve yeni kaldırılan depolar / PPA'lardaki değişiklikleri görmesi gerekir (aksi takdirde yalnızca bir cron.daily işi aracılığıyla güncellendi)
Xen2050,

0

Ppa-purge kullanımını zor buldum.

Sistem altında Synaptic Paket Yöneticisi'ni açın, ardından Ayarlar, Depolar'ı seçin.

İstemediklerinizi kaldırın.

Bitti!


4
Bu yalnızca paket kaynaklarını kaldırır, paketi bu kaynaklardan kaldırmaz.
Lekensteyn
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.