ฉันจะตรวจสอบว่ามีการติดตั้งแพคเกจ (ไม่มีสิทธิ์ superuser) ได้อย่างไร?


56

ที่มหาวิทยาลัยของเราเราสามารถติดตั้งแพคเกจ Ubuntu ได้เกือบทุกอันที่เราต้องการ แต่เราไม่ใช่ตัวเราที่ยอดเยี่ยม (เราต้องขอแพ็คเกจที่กำลังติดตั้ง)

สำหรับห้องสมุดบางแห่งอาจไม่ง่ายเลยที่จะทราบว่าติดตั้งแพคเกจไว้แล้วหรือไม่ มีวิธี / คำสั่งง่ายๆในการตรวจสอบสิ่งนี้หรือไม่?

คำตอบ:


56
apt-cache policy <package name>

7
สิ่งสำคัญคือต้องรู้ว่ารองรับการเติมแท็บในชื่อแพ็คเกจ ดังนั้นจึงค่อนข้างมีประโยชน์แม้ว่าคุณจะไม่ทราบชื่อแพคเกจที่แน่นอน
Javier Rivera

ความอัปยศที่ยังคงมีสถานะ 0 แม้ว่าแพคเกจจะไม่ปรากฏ dpkg -sทำอย่างไร: askubuntu.com/a/1108801/52975
Ciro Santilli 事件改造中心中心法轮功六四事件

ด้วยมิตรapt : apt policy <package name>หรือapt show <package name>สำหรับข้อมูลเพิ่มเติม
Pablo A

18

ฉันมักจะใช้สิ่งนี้จากบรรทัดคำสั่ง:

dpkg -l | grep mysql

ดังนั้นข้างต้นขอให้ dpkg แสดงรายการแพคเกจที่ติดตั้งทั้งหมดแล้วฉัน grep เฉพาะผู้ที่มี mysql ในชื่อ


3
dpkg -l "*mysql*"ยังใช้งานได้และไม่ซ่อนบรรทัดคำอธิบายในเอาต์พุต
Philipp Wendler

dpkg -l "*mysql*"(หรือdpkg -l '*mysql*') ทำให้การจัดรูปแบบพิเศษของเอาต์พุตเพื่อให้พอดีกับแต่ละแพ็กเกจในหนึ่งบรรทัดของหน้าต่างเทอร์มินัล (grep ไม่ได้) และแบบฟอร์มนี้ช่วยให้คุณสามารถเลือกรูปแบบไวด์การ์ด (คำนำหน้าหรือคำต่อท้าย) และใช้สัญลักษณ์แทนได้เลย (เทียบกับ grep) แต่ grep ให้สีที่ดี .. ))
vstepaniuk

7

อีกหนึ่งตัวแปรที่ใช้ความถนัดในครั้งนี้:

aptitude show <package>

การทำให้แท็บสมบูรณ์ใช้งานได้ที่นี่เช่นกัน


6

คุณสามารถใช้ dselect มันให้การเข้าถึงที่ไม่ใช่แบบอ่านอย่างเดียว

นอกจากนี้ยังdpkg -s <package name>ให้รายละเอียดมากมายเกี่ยวกับแพ็คเกจ เช่น"

userme:~$ dpkg-query -s sl
Package: sl
Status: unknown ok not-installed
Priority: optional
Section: games

สิ่งนี้ยังมีให้อีกเช่นdpkg -sกัน และในทางกลับกันdpkg-query -lทำงานได้ดีเช่นกันdpkg -lหรือdpkg --list
belacqua

4

คุณอาจใช้dpkg-query -s <package> 2>/dev/null | grep -q ^"Status: install ok installed"$ ในสคริปต์เนื่องจากมันจะส่งคืนรหัสทางออก 1 หากยัง<package>ไม่ได้ติดตั้งและ 0 หาก<package>ติดตั้งไว้


4
โปรดระวัง : หากdpkg -sส่งคืน0หมายความว่าไม่ได้หมายความว่าแพคเกจนั้นได้รับการติดตั้งอย่างสมบูรณ์ / ถูกต้อง dpkg -sผลตอบแทนเช่นกัน0ถ้าแพคเกจอยู่ในhalf-configuredหรืออยู่ในconfig-filesสถานะ (และฉันเดาด้วยhalf-installedแต่ฉันไม่ได้ตรวจสอบว่า) ดู [หน้าคนของdpkg( manpages.ubuntu.com/manpages/oneiric/man1/dpkg.1.html ) เพื่อดูสถานะ "ไม่สมบูรณ์" เพิ่มเติม
Ignitor

1
@ ผู้อุปถัมภ์จุดดี คำตอบของฉันผิด แพ็คเกจสามารถลบออกได้ แต่ไม่สามารถลบได้ ดังนั้นฉันคิดว่าคุณต้องตรวจสอบผลลัพธ์เพื่อตรวจสอบว่ามีการติดตั้งแพคเกจหรือไม่
jarno

2
ฉันแก้ไขคำตอบ ตอนนี้มันขึ้นอยู่กับผลลัพธ์ของ dpkg-query ฉันไม่รู้ว่าโซลูชันนี้พกพาได้อย่างไร ตัวอย่างเช่นข้อความอาจแสดงเป็นภาษาอื่นในบางระบบ?
jarno

2

วิธีที่ง่ายกว่า:

ขณะนี้มีapt listคำสั่งที่แสดงรายการแพ็คเกจที่ติดตั้ง คุณยังสามารถค้นหาแพ็คเกจที่ต้องการได้ด้วย

apt list <package>

ดูman aptข้อมูลเพิ่มเติม


1
และapt showสำหรับรายละเอียดเพิ่มเติม
wjandrea

0

dpkg -s การใช้งานแบบเป็นโปรแกรม

ฉันชอบdpkg -sเนื่องจากออกจากสถานะ1หากไม่มีแพ็คเกจใดติดตั้งอยู่ทำให้ง่ายต่อการทำให้เป็นอัตโนมัติ:

pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
  sudo apt-get install $pkgs
fi

ดูสิ่งนี้ด้วย:

ทดสอบบน Ubuntu 18.10


0

ตัวอย่างการใช้ค่าเฉพาะเป็น var ในเชลล์สคริปต์ (เช่นtest.sh)

#!/bin/sh
PACKAGE="${1}"
INSTALLED=$(dpkg -l | grep ${PACKAGE} >/dev/null && echo "yes" || echo "no")

echo "${PACKAGE} is installed ... ${INSTALLED}"

ทำให้ปฏิบัติการและเริ่มต้นด้วย:

test.sh openssh-server

หรือทำสิ่งที่คุณต้องการในสคริปต์ของคุณ


0

คุณต้องตรวจสอบสถานะที่พิมพ์โดยdpkg -lตัวอย่าง:

$ dpkg -l firefox-esr vim winff
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                 Version                 Architecture            Description
+++-====================================-=======================-=======================-=============================================================================
hi  firefox-esr                          52.9.0esr+build2-0ubunt amd64                   Safe and easy web browser from Mozilla
ii  vim                                  2:8.1.1198-0york0~14.04 amd64                   Vi IMproved - enhanced vi editor
rc  winff                                1.5.3-3                 all                     graphical video and audio batch converter using ffmpeg or avconv

ทั้งที่นี่vimและfirefox-esrติดตั้งแล้วดังนั้นคุณสามารถพิมพ์:

$ dpkg -l firefox-esr | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l vim | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is installed.
$ dpkg -l winff | grep -q ^.i && echo This package is installed. || echo This package is NOT installed.
This package is NOT installed.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.