ฉันจะรับรายการแพ็คเกจ RPM ทั้งหมดที่ติดตั้งบนระบบของฉันจาก repo เฉพาะ (เช่น "epel") ได้อย่างไร
ฉันจะรับรายการแพ็คเกจ RPM ทั้งหมดที่ติดตั้งบนระบบของฉันจาก repo เฉพาะ (เช่น "epel") ได้อย่างไร
คำตอบ:
yum list installed | grep @epel
dnf list installed | grep @epel
จาก RHEL6 ดังที่แนะนำไว้ในคำตอบของ stackoverflow นี้มีวิธีการที่ละเอียดยิ่งขึ้นในการทำสิ่งนี้ด้วยyumdb
:
yumdb search from_repo REPOID*
repoid นั้นใช้ไวลด์การ์ด
หากเรากำลังจะโกงและส่งออกท่อเราก็สามารถสร้างเอฟเฟกต์สวย ๆ ได้เช่นกัน นี่คือหนึ่งในการใช้awk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
ใช้egrep
หรือgrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
หากต้องการแสดงรายการแพ็กเกจที่มีอยู่ทั้งหมดในที่เก็บข้อมูลที่ระบุให้ทำ:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
เนื่องจากตาม-q
ตัวเลือกman page นั้นเป็นไปเพื่อความเข้ากันได้ rpmquery ไม่ได้ทำอะไรเลย
-qa
ล้มเหลวจริง ฉันไม่สามารถโหวตความคิดเห็นได้เนื่องจากการลบ upvote ก่อนหน้านี้ :( ฉันกำลังอัปเดตคำตอบเพื่อสะท้อนความเห็นนั้น
dnf repo-pkgs <repoid> list installed
คำสั่งดังกล่าวใช้DNF to list <repoid>
แพคเกจติดตั้งจาก หมายเหตุเป็นเพียงนามแฝงของrepo-pkgs
repository-packages
จากman
หน้า:
man dnf | grep "repository-packages.*list.*installed" -A 1
อ่านเพิ่มเติม:
man dnf
Grepping yum output เป็นวิธีที่ชัดเจนที่สุด:
yum list installed | grep @epel
อย่างไรก็ตามคุณไม่สามารถแสดงคุณสมบัติของแพ็คเกจเพิ่มเติมและเป็นการยากที่จะแยกวิเคราะห์ด้วยสคริปต์ เครื่องมือrepoquery
จากแพ็คเกจyum-utils
เป็นเครื่องมือ แต่ไม่ได้ติดตั้งตามค่าเริ่มต้น
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
และตัวอย่างที่ซับซ้อนมากขึ้น:
repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
yum repo-pkgs <repoid> list installed
สามารถนำมาใช้เพื่อดึงข้อมูลเดียวกับyumdb search from_repo <repoid>
แต่ในรูปแบบที่แตกต่างกัน
# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
Treat a repo. as a group of packages, so we can install/remove all of them
aliases: repo-packages, repository-pkgs, repository-packages
ตัวอย่างepel
ผลลัพธ์:
# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
from_repo = epel
supervisor-3.1.4-1.el7.noarch
from_repo = epel
# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64 2.2.0-1.el7 @epel
supervisor.noarch 3.1.4-1.el7 @epel
คุณสามารถตรวจสอบVendor
ส่วนหัวของ rpms ที่ติดตั้ง
ตัวอย่างนี้แสดงรายการแพ็กเกจทั้งหมดจากที่เก็บVideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
เห็นได้ชัดว่าคุณต้องตรวจสอบว่าVendor
ส่วนหัวของพื้นที่เก็บข้อมูลของคุณไม่ซ้ำกันในที่เก็บที่แตกต่างกัน
สำหรับผู้ที่ต้องการหาที่เก็บที่ขาดหายไป:
yum list installed | awk '{print $3}' | sort | uniq
สิ่งนี้จะส่งคืนที่เก็บทั้งหมดที่คุณติดตั้งแพ็กเกจ