Sunucumda bir paket olup olmadığını nasıl kontrol ederim?


174

Geçenlerde Ubuntu Server edition 13.10 (Saucy Salamander) yükledim. Ama biraz sorunla karşılaştım.

Kurulumun sonunda, OpenSSH sunucusu ve sanal makine ana bilgisayarı gibi sizden isteyip istemediğiniz birkaç ekstra paket talep eder. İşte bakıyorum ne:

Resim tanımını buraya girin

Şimdi, benim sorunum "sanal makine ana bilgisayarı" onay kutusunu işaretleyip denetlemediğimi hatırlamam. Sunucumda ilgili paketlerin olup olmadığını nasıl kontrol ederim?

Sanal makine ana bilgisayarıyla hangi paketler gelir?


1
$ apt-cache policy <package-name>, örneğin$ apt-cache policy dillo
Daniel

Yanıtlar:


230

Seçenekli tüm dpkg komutları hakkında bilgi mi arıyorsunuz? Aşağıdaki linkten bir okuma var.

Debian tabanlı Linux Sunucularını Yönetmek için 15 dpkg komutu

Tüm Kurulu Paketleri Listelemek İçin

Burada "daha az", mevcut terminal penceresinde açılan yeni bir tampondaki paketler listesinde gezinmek için kullanılan basit bir metin okuyucudur. Liste diğer terminal komutları ve çıkışlarıyla karıştırılmayacaktır. Terminal istemine dönmek için 'q' ye basın. Daha fazla bilgi için "az adam" konusuna bakın.

dpkg -l | less

Bir paketin kurulu olup olmadığını kontrol etmek için:

dpkg -l {package_name}
dpkg -l vlc

Paketin kurulu olup olmadığını kontrol etmek için (örneğin, vlc). Takılıysa, paketi başlatın:

dpkg -l | grep vlc

Paketin kurulu olduğu yeri göster. "-S" (büyük S) "arama" anlamına gelir

sudo dpkg -S {package_name}
sudo dpkg -S skype

Grep'i aramak için kullanmak için:

dpkg -l | grep {keywords}
dpkg -l | grep pdf

1
Bu ve dpkg-query -l "
packagename

4
dpkg -l packagenamePaket tam olarak kurulmamış olsa bile 0 çıkış koduyla geri dönebileceği için çıkış koduna bağlı olmayın - bkz: github.com/bitrise-io/bitrise/issues/433
Viktor Benei

dpkg -l | cut -d " " -f 3 | grep "^vlc"ile başlayan bütün paket isimlerini göstermek içinvlc
anatoly techtonik

Bilginize, bu doğrudan paket dpkg ile ilişkili olmadığı için meta paketleri için çalışmaz. Yanıtınız sorulan gibi soruyu cevaplıyor.
mtalexan

34

kullanım dpkg

Bu komut debian paket yöneticisidir.

Tüm kurulu paketleri listeleyebilirsiniz.

dpkg -l

Belirli bir paketle ilgili ayrıntıları görebilirsiniz.

dpkg -p packagename

Ve yüklü olup olmadığını öğrenmek için,

dpkg -s packagename | grep Status

Hangi paketle istediğiniz yazılımı içerdiğini öğrenebilirsiniz.

apt-cache search name*  

Senin durumunda, istediğin paket adını bulmak için bu komutu kullanmalısın.

apt-cache search virtual machine host 

29

apt -qq list PACKAGE PAKET'in kurulu olup olmadığını kontrol etmek için de kullanılabilir.

Eğer kurulursa, ( [installed]satırın sonunda ile) gibi bir şey yazdıracak :

$ apt -qq list awscli
awscli/stable,now 1.4.2-1 all [installed]

Takılı değilse, çıktı:

$ apt -qq list awscli
awscli/stable 1.4.2-1 all

1
Joker için paket adının sonuna bir yıldız ekleyebilirsiniz.
Brannon

3
Ayrıca gerçekte kurulu olan eşleşmeleri sınırlamak için bu komut için --installed seçeneğini kullanabilirsiniz.
mtalexan

2
Ne -qqiçin? Aynı şekilde onsuz çalışıyor gibi görünüyor ve bu seçenek kılavuzda yokman apt
Gabriel Staples

3
@GabrielStaples apt listKomut henüz tam olarak belgelenmemiş gibi görünüyor . 16.04'teki bazı hızlı testler, bunun seçenekle -qeş anlamlı olduğunu gösteriyor --quiet. Birincisi -q, "Tamamlandı" kelimesinin yazdırılmasını önler. İkincisi de "Liste ..." nin yazdırılmasını önler.
Anthony Geoghegan

14

Sadece dpkg-query komutuyla ve pipo olmadan paket kurulumunu kontrol etmenin bir yolunu buldum.

Sorumlu oyun kitabı için bir görev yazarken böyle bir çözüm aradım.

Böylece, böyle bir şey yapabilirsiniz:

/usr/bin/dpkg-query --show --showformat='${db:Status-Status}\n' '<your package name>'

Bu şeyi yapmanın başka bir yolu.


Ansible'da bulunan borular shellmodül ile birlikte kullanılabilir .
sjas,

4

Tasksel 'Görev adları' olarak görünmüyordpkg veya aptsorgular olarak yeni bir cevap yazıyorum . Yani diğer cevaplar eksik (veya yanlış).

"Hatırlayamıyorum 'sanal makine ana bilgisayarı' onay kutusunu işaretlemişsem .."

Yeniden çalıştırdıktan sonra adında bir yıldız işareti olup olmadığını kontrol edin sudo tasksel.
(veya eğer çalışıyorsa ' ben ' tasksel --list-tasks).

Bunu görmüyorsanız, muhtemelen 'görevsel meta paketi ' kurulmamış demektir.


“.. Sunucumun karşılık gelen paketleri olup olmadığını nasıl kontrol ederim?”

Sanal Makine Sunucusu görev paketinin altında nelerin yüklü olduğunu bulmak istiyorsanız:

tasksel --list-tasks

(senin durumunda tasksel --list-tasks | grep virtyeterli)

Bu, uygun görev adını ve kurulup kurulmadığına dair bir gösterge verir .

Senin durumunda bu görev adı virt-host.


"Sanal makine ana bilgisayarıyla hangi paketler geliyor?"

Son komuttan, görev görev adını bulun.
Bir sonraki komut için bu gereklidir:

tasksel --task-packages virt-host

Bu, adı oluşturan bireysel Tasksel meta paketini ('' ’ile belirtilir) listeler.
Senin durumunda bu virt-host^.

Uygun bir meta-isim bulduktan sonra apt kullanabilirsiniz:

 apt show virt-host^ | grep "Package:"

(veya apt-cache show ...eğer apt showçalışmaz.)

Bu, verilen meta paketi oluşturan tüm paketleri gösterecektir.

Sonra:

 dpkg -l {each individual pkg name listed above}

Bu, tek tek paketin kurulup kurulmadığını size söyleyecektir (2. harfle not edilen: 'i' durumu yüklü demektir). Bunu, görev / meta paketi altında listelenen tüm paketler için yapın.

Bu, orijinal soruları cevaplamalıdır.

Yan not: /usr/share/tasksel/descs/ubuntu-tasks.desc, Tasksel meta paketlerinin açıklamalarını da içerir. Eğer: grep "virt" /usr/share/tasksel/descs/ubuntu-tasks.descUygun APT meta paket adını gösterir. (Senin durumunda bu ubuntu-virt-server). aptBu meta-isimle komutları da kullanabilirsiniz .

Görev paketlerini kaldırmak istiyorsanız, bu yabani otlara biraz karışır. Lütfen https://askubuntu.com/a/88897/169878 adresine veya oradaki herhangi bir sayıda diğer cevaba bakın.

Lütfen "meta" apt paketlerinin Tasksel paket adları ile eşleşmediğini unutmayın. Daha fazla bilgi için lütfen Tasksel Topluluk Sayfasına bakın.


1
Her iki soru da doğru cevaplandı. Oy vermediysen, bir sebep ver ya da neden olmadığını söyle.
bshea

3

Taskel ( sudo apt-get install taskselzaten yoksa) kullanın ve çalıştırın tasksel --list-tasks.

taskel, görevlerin bir listesini yazdıracak ve iyüklü uolan her görevin yanında ve yüklenmemiş her görevin yanında da olacak.

Görevi yüklemek istiyorsanız, kullanın tasksel install <task>. Aradığınız görevin adı virt-host.

Yazılım seçim öğelerine "görevler" denir.


Bana görevin adını söylediğin için teşekkürler, bu benim sorunlarımdan biriydi, hangi paketi arayacağından emin değildi.
D.Z

2

Birisi ilgileniyorsa, bir paket veya uygulama listesinden otomatik olarak yükleyebileceğiniz ya da daha önce kurulu olup olmadıklarını kontrol edebileceğiniz küçük bir komut dosyası oluşturdum:

#!/bin/bash
apt -qq list YOUR_LIST_GOES_HERE | grep -v "installed" | awk -F/ '{print $1}' > /root/list.txt
packages=$(cat /root/list.txt)
grep -q '[^[:space:]]' < /root/list.txt
CHECK_LIST=$?
if [[ $CHECK_LIST -eq 1 ]]; then
echo "Your packages are already installed"
else
echo "Installing packages"
apt-get  install -y $packages
fi

Umarım birine yardımcı olur.


2

Basit çözüm:

Şimdi apt listkurulu paketleri listeleyen bir komut var. Ayrıca belirli bir paket için arama yapabilirsiniz.

apt list <package>

Daha man aptfazla bilgi için bkz . Tam paket adını bilmiyorsanız, apt searchilgili paketlerin bir listesini görmek için ardından bir kısmını kullanabilirsiniz .

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.