Belirli bir depodan kurulu olan paketleri yetenekli bul


Yanıtlar:


17

Özelliği kullanarak, kararlı dalın dışındaki yüklü paketleri aramak için şunları kullanabilirsiniz:

aptitude search "?narrow(?installed,?not(?archive(stable)))"

Paket adlarının yanı sıra sürümleri (ve açıklamaların yerine) görmek için bu komutu -Faşağıdaki gibi ( kısa seçeneği ) biçimiyle birlikte kullanabilirsiniz .

aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"

Daha fazla format için lütfen kılavuz sayfasına bakınız (burada boşuna seçenekler bulunur ).

Bu, örneğin Squeeze dışında bir paket kurduysanız Debian'da işe yarar (örneğin, çalıştırarak apt-get install -t sid package-name.

Yüklü bir paketin nereden geldiğine bakabilirsiniz apt-cache policy, kullanım aşağıdaki gibidir:

apt-cache policy <package-name>

Örneğin, benim python-numpy paketim şu çıktıyı veriyor:

$ LANG=C apt-cache policy python-numpy
python-numpy:
  Installed: 1:1.6.2-1
  Candidate: 1:1.6.2-1.2
  Version table:
     1:1.7.0-1 0
          1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
     1:1.6.2-1.2 0
        500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
 *** 1:1.6.2-1 0
        100 /var/lib/dpkg/status
     1:1.4.1-5 0
        990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
        990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages

Bu, şu anki sid / main şubesinin ardında bir versiyon olduğum anlamına geliyor, bu yüzden eski bir sid versiyonum var. Kararlı olana sahip 1.4.1-5değilim, çünkü henüz var ve şu an da varım 1.6.2-1.

Gönderim sırasında bu paket zaten güncellendi:)


Tercih ediyorum ?any-version(), çünkü ~narrow(pat1, pat2)aynı ?any-version(pat1 pat2)ve ?any-version(pat1 pat2 pat3)aptal görünmeden destekliyor .
— Robert Siemer

18

Yetenek ve bir düzine deneme sayfasını okuduktan sonra nihayet şunu anladım:

aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'

veya eşdeğer) :

aptitude search '~S ~i (!~Atesting ~Aunstable)'

Herhangi bir havuzun dengesiz arşivlerinden yüklenen paketleri arayacaktır . Paketleri varsayılan arşivinizden filtrelemeniz gerekir (yukarıdaki örnekte test edilir).

Www.debian-multimedia.org/unstable adresinden yüklenen paketleri filtrelemek istiyorsanız:

aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))

Düzenleme: “Arşiv”, “kaynak” vb Release. Depo dosyasından düşülür . Ne yazık ki, tüm araçlar bu satırlara bakamaz ve onlar için farklı sözdizimi kullanırlar. Bu dosyaları olarak bulabilirsiniz /var/lib/apt/lists/*Release. Ya da sadece apt-cache policygenel bakış için yazın. apt-cache çıkış biçimini değiştirdi: daha sonraki sürümlerde apt_preferences stilini kullanın.

  • Suite:veya Archive:(eski isim!)
    • yetenek araması: ?archive(___)veya~A___
    • yetenek biçimi: %t
    • apt_preferences: release a=___
    • Örnekler Ubuntu: natty-backports, trusty-security,stable
  • Origin:
    • yetenek araması: ?origin(___)veya~O___
    • yetenek biçimi: n / a
    • apt_preferences: release o=___
    • Ubuntu örnekler: Canonical, Google, Inc., LP-PPA-dockbar-main,Ubuntu
  • diğer tüm çizgiler
    • yetenek: n / a

15

Mevcut depolarınızın her biri için kaynak kodunu ( o = Debian gibi) inceleyin :

apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq

Ardından, belirli bir kaynaktan gelen (ya da olmayan) paketleri arayın:

aptitude search "?installed?origin(Debian)"
aptitude search "?installed?not(?origin(Debian))"

Bu, bir güvenlik denetimi için uygun değildir , çünkü kendi kaynak bilgisini sağlamak için her bir depoya dayanır, ancak birden fazla depoda bulunan paketlerin kökenini gidermede yardımcı olabilir.


2
Kişisel aptitude searchdesenler iyi değildir. - “Bir versiyonun kurulduğu paketleri ve Debian'da başka bir versiyonun var olduğunu” veya “bazı versiyonların kurulu olduğunu ve bu paketin en az bir versiyonunun Debian olmayan versiyonunda mevcut” şeklinde seçtiklerini söylediler. - Aradığımız şey “kurulu sürüm Debian'dan (ya da değil)”. Bu ?narrow()veya ile yapılmalı ?any-version().
— Robert Siemer

Onaylanmış. Ben yükledim nemo-filerollergelen linuxmint, ancak var Debianda. Böylece listede görünüyor, çünkü yüklü ve Debian'ın bir yerinde var.
— Boldewyn

6

Bütünlüğü sağlamak için: Ubuntu sistemlerinde bu görev için Synaptic'i de kullanabilirsiniz. Sol sütunda paketleri kökenlerine göre filtreleyebilirsiniz.


Bunu yapmaya çalışıyordum ve bu SU yayınını Google üzerinden buldum, Synaptic’i gözden kaçırdığıma inanamıyorum, teşekkürler!
— David Claridge

Ben / o yeterli cevap w iki gün sonra kabul etti ve bu, dikkatinizi kaymış olabilir @RobertSiemer önce diğer cevapların hiçbirinde. Bırakılan çözüldü, çünkü bunu kabul benim problem. Ayrıca daha sonraki tüm cevapları da geri aldım , ama, afedersiniz, asla kabullenme durumunu değiştirmedim. Ayrıca, bu sitenin SSS’sinde, bu hamleden herhangi bir itibar kazanmadığımı ve aslında başka birinin cevabını kabul etmediğim için 2 tekrar kaybettiğimi de not edeceksiniz . Bu nedenle, lütfen birisinin kararlarını kamuya açık olarak değerlendirmeden önce bir adım geriye gidin ve olası nedenleri yeniden düşünün.
— Boldewyn

2

Bunu buldum:

aptitude search "?origin (<repository>) ?installed"

Ayrıca "yetenek arama" tarafından desteklenen arama terimlerinin bir listesini bulabilirsiniz burada .


Bunu neden çalıştırman gerekiyor sudo? Bana öyle geliyor ki, aynı zamanda onu root olarak çalıştırmadan da çalışıyor.
— Andre Holzner,

— Sudo

@ İsimsiz cevap üzerine yorum yaptığım gibi, bu istenen etkiye sahip değil.
— Robert Siemer

2

İlk olarak, / var / lib / apt / list'deki ilgilenilen havuz için uygun dosyaları bulun. Bunu programlı bir şekilde yapmak mümkün olmalı, ama buna ihtiyacım olmadı.

Google chrome'u örnek olarak kullanarak şunu deneyin:

SEARCH_PATTERN=dl.google.com_linux_chrome  # adjust to suit your needs

for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
    if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
    then
        echo ${PKG}
    fi
done

ve çıktıyı alıyorum:

google-chrome-stable

Paket kuruluysa, dpkg -s 0 döndürür, aksi takdirde sıfır döndürür. Gelecekteki referans amaçları için, çıktı

grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages

oldu

Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable

... bu yetenek kullanıyor mu?
— Robert Siemer

2
@RobertSiemer Nasıl alakalı? Makul bir İngilizce komutu varsayarsak soru, yetenekle kurulan paketlerin kaynağının nasıl bulunacağıdır . Çözümün yetenek kullanması şartı yoktur.
— Auspex

@Apepex, aksi halde inanıyorum. - Merak etme, İngilizce komutum birkaç yıl önce “makul” seviyesini aştı.
— Robert Siemer

2
Görünüşe göre hayır ...
— Auspex

2
@Apepex: Beni kışkırtmaya mı çalışıyorsun? Bunun tersi doğrudur: soru, yetenekle kurulan paketler için değil, yetenek temelinde bir çözüm istiyor.
— Robert Siemer

0

Diğer cevaplar aslında yanlıştır, çünkü parametresi ?archive()normal bir ifadedir. Böylece ?archive(stable)hem stableve hem de eşleşir unstable. Dışlamak stableiçin, regex desenini tutturmanız gerekir:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^stable$")))'

Birden fazla depoları hariç tutmak için:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^(xenial|xenial-updates)$")))'

Ayrıca bazı paketler örneğin birden çok veri havuzunda ait olduğuna dikkat xenial-security,xenial-updates. ?archive()regex şablonunu her depoya karşı ayrı ayrı değerlendirir, böylece diğer depolara ait olsa bile, ?archive("^xenial-updates$")ait olduğu paketlerle eşleşir xenial-updates.

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.