ค้นหาแพ็คเกจที่ติดตั้งจากที่เก็บ


15

ฉันพยายามค้นหาแพ็คเกจที่ฉันติดตั้งจากที่เก็บโดยใช้คำสั่งเทอร์มินัล

ฉันพบโพสต์ที่บอกว่าฉันสามารถใช้ได้aptitude search "?origin (<repository>) ?installed"แต่ฉันไม่สามารถทำงานได้ ฉันพยายามค้นหาแพ็คเกจที่มาจาก ppa: ubuntu-wine / ppa และไม่ได้ทำสิ่งใดกับสิ่งเหล่านี้:

aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/) ?installed"
aptitude search "?origin (http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu/ raring/main) ?installed"

มันจะดีถ้าฉันได้อะไรที่ทำงานร่วมกับ PPAs

คำตอบ:


12

ในวงเล็บคุณควรใช้ชื่อของที่เก็บเท่านั้นไม่ใช่ URI หรืออย่างอื่น ตัวอย่างเช่นในกรณีของคุณ:

aptitude search "?origin (ubuntu-wine) ?installed"

รันapt-cache policyเพื่อดูที่เก็บและชื่อ (หรือที่รู้จักว่าต้นกำเนิดo) ของที่เก็บเหล่านั้น

$ apt-cache policy | grep wine
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main i386 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=i386
 500 http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu xenial/main amd64 Packages
     release v=16.04,o=LP-PPA-ubuntu-wine,a=xenial,n=xenial,l=Wine Team PPA,c=main,b=amd64

ตั้งแต่สตริงการค้นหาเป็นรูปแบบการจับคู่ regex ที่ใดก็ได้ในสตริง, คุณสามารถใช้ substring สะดวกเช่นหรือแม้เพียงแค่ubuntu-winewine

ดูเพิ่มเติม: ฉันจะรับรายการที่เก็บและ PPAs ทั้งหมดจากบรรทัดคำสั่งไปยังสคริปต์การติดตั้งได้อย่างไร


1
ขอบคุณที่ทำให้คำสั่งใช้งานได้และทำให้ฉันได้รับสิ่งที่ฉันกำลังมองหา
Enkouyami

นี่ไม่ใช่รายการแพ็คเกจสำหรับฉัน: aptitude search "?origin (multiverse) ?installed"- ควรหรือไม่ (เปิดใช้งาน "ลิขสิทธิ์")
Volker Siegel

@VolkerSiegel ไม่ใช่ แต่ใช้aptitude search "?section (multiverse) ?installed"แทน
jarno

5

นี่คือสคริปต์ Bash ที่ฉันเขียนเพื่อแสดงแพ็คเกจที่ติดตั้งมาจากต้นกำเนิดต่าง ๆ ยกเว้น Ubuntu มันใช้dpkg -lรูปแบบผลลัพธ์ทั่วไป มันทำงานได้เร็วกว่าaptitudeโซลูชัน

#!/bin/bash

# Print packages installed from different origins.
# Exclude standard Ubuntu repositories.

grep -H '^Origin:' /var/lib/apt/lists/*Release | grep -v ' Ubuntu$' | sort -u \
| while read -r line; do
    origin=${line#* }    
    echo $origin:

    list=${line%%:*}
    sed -rn 's/^Package: (.*)$/\1/p' ${list%_*Release}*Packages | sort -u \
    | xargs dpkg -l 2>/dev/null | grep '^.i '
    echo
 done

โปรดทราบว่าอาจมีการติดตั้งแพ็กเกจที่ไม่มีแหล่งกำเนิดดังกล่าวให้ดูที่สิ่งนี้เพื่อค้นหา


1

จากบรรทัดคำสั่งหากคุณต้องการทำหมายถึง

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*PPA-FIRST-PART*PPA-SECOND-PART*Packages

ตัวอย่างเช่น: ทั้งหมดมีแพ็คเกจจาก noobslab

 jai@frank-Jai:~$ awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*noobslab*Packages

python-logilab-common
synapse
ubuntuone-client
python-ubuntuone-storageprotocol
ubuntuone-client-gnome
python-ubuntuone-client
lives
libweed0
libweed-dev
lives-data
converseen
minitube
libsyncdaemon-1.0-1
libsyncdaemon-1.0-dev
ubuntu-sso-client
python-ubuntuone-devtools
ubuntuone-dev-tools
ubuntuone-control-panel
python-ubuntuone-control-panel
synapse-dbg
gir1.2-syncdaemon-1.0
libweed-dbg
lives-dbg
umplayer
umplayer-translations
libgranite-dev
deepin-software-center
ubuntuone-control-panel-qt
python-dirspec
rhythmbox-ubuntuone
python-ubuntu-sso-client
ubuntu-sso-client-qt
python-ubuntu-sso-client.tests
granite-demo
ubuntuone-client-proxy
python-oauthlib
slidewall
python3-dirspec
python3-oauthlib
ubuntuone-client-data
libgranite1
libgranite1-dbg
gir1.2-granite-1.0
libgranite-common
curlew
fbmessenger
open-as-administrator
indicator-synapse
indicator-synapse-dbg
wallpaper-manager
awoken-icon-theme
malys-uniblack
malys-uniblue
malys-ex
acyl-icons
nitrux-icons
piratunbu-icons
azenis-green-icons
nouvegnome-color
nouvegnome-gray
hi-lights-icons
matrilineare
zoncolor-icons
royal-linux-icons
elementary-icons
myhumanity
myelementary
glass-icons
osx-nostalgie
sky-blue-cinnamon
sky-blue-gnome
sky-blue-unity
wine-blue-remix
lubuntubox
windows7-icons
appleart-icons
magical-lights-icons
colored-plastic-icons
numix-utouch-icon-theme
ubudao-style
artnet-icons
high-delight-icons
snow-sabre-icons
trevilla-icons
aery-icons
ambiance-blue
zukitwo
gnomishbeige-theme
salience-theme
zukiwi
gnomishgray
delorean-dark
smoothly-theme
ambiance-ds-blue
ambiance-lime
gnomishdark
zukitwo-cupertino-gs
mediterranean-theme
elementaryish
borderline
boje
wow-2
zoncolor-themes
omg-suite
simplex
leopard-steel
dorian-theme
daylight
adwaita-elements
uncomplicated
trevilla-jmhzonedark
trevilla-dark
trevilla-white
trevilla-whiteblue
trevilla-whiteorange
trevilla-white2
ambiancep-set
ambiance-crunchy
trevilla-gray
siva-series-gtk
cobibird
elegant-brit
mac-ithemes-noobslab
mac-icons-noobslab
ubuntu-touch-themes
windows8-theme
bigfootblue-cinnamon
windows8-cinnamon
eliza1-cinnamon
bigfootred-cinnamon
plus1-theme
futura
blo-theme
darkair-theme
plane-gtk3
deepin-gtk-theme
nokto-theme
numix-theme
neptune-theme
trevilla-themes
jai@frank-Jai:~$ 

เครดิตไปที่นี่


ฉันได้รับข้อผิดพลาดนี้: bash: awk: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Enkouyami

@Enkouyami คืออะไร ls of / var / lib / apt / list /
rɑːdʒɑ

นี่คือลิงค์ไปยังสิ่งที่ฉันได้รับpastebin.com/AmiH9E9n
Enkouyami

@Enkouyami อุ๊ปส์ฉันหมายถึงคำสั่งที่คุณป้อน
rɑːdʒɑ

1
@Enkouyami ตกลงสิ่งนี้โดยไม่เกี่ยวกับคำสั่งการจัดวาง ทำตาม awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*haguichi*webupd8team*Packages
rɑːdʒɑ

1

จากนั้นคุณสามารถใช้ตัวจัดการ Y-PPA เปิดเทอร์มินัลของคุณและพิมพ์:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

จากนั้นเปิดเส้นประ Unity ของคุณและค้นหาด้วย Y -PPA แล้วเปิดไอคอน

ป้อนคำอธิบายรูปภาพที่นี่

คลิกที่จัดการ PPA ตามที่แสดงในภาพจากนั้นเลือกหนึ่ง PPA และมันจะให้รายละเอียดของ PPA และแพ็คเกจของมัน


คุณสามารถให้คำแนะนำสำหรับการใช้ตัวจัดการ Y-PPA ได้ไหม?
เซ

@Seth เพื่อนของฉัน เสร็จแล้ว
rɑːdʒɑ

ฉันกำลังมองหาโซลูชันบรรทัดคำสั่ง
Enkouyami

วิธีแก้ปัญหานี้ไม่ใช่ทั้งบรรทัดคำสั่งและไม่ตอบคำถามหลัก - จะแสดงรายการแพ็คเกจที่ติดตั้งจาก repo ที่ระบุได้อย่างไร แสดงเฉพาะแพ็คเกจทั้งหมดที่มีจาก PPA
Viacheslav Rodionov

1

Origin ไม่ใช่ URL ของที่เก็บ ในการค้นหา Origin of repository ให้ค้นหาไฟล์ที่/var/lib/apt/lists/ลงท้ายด้วย Release

ตัวอย่างเช่น

grep "Origin" /var/lib/apt/lists/linux.dropbox.com_debian_dists_wheezy_Release

จะแสดง:

Origin: Dropbox.com

ดังนั้นaptitude search "?origin(dropbox.com) ?installed"จะแสดงให้ฉันเห็นแพคเกจที่ติดตั้งจากพื้นที่เก็บข้อมูล Dropbox


นี่ไม่ใช่สิ่งที่ฉันกำลังมองหา
Enkouyami

คุณอาจต้องหลีกเลี่ยงอักขระบางตัวในชื่อต้นกำเนิดหากอักขระพิเศษในนิพจน์ทั่วไป
jarno

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.