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.