Tìm những gói được cài đặt từ một kho lưu trữ


15

Tôi đang cố gắng tìm những gói tôi đã cài đặt từ kho lưu trữ bằng cách sử dụng các lệnh đầu cuối.

Tôi tìm thấy một bài viết ở đâu đó nói rằng tôi có thể sử dụng aptitude search "?origin (<repository>) ?installed", nhưng tôi không thể làm cho nó hoạt động. Tôi đã thử tìm kiếm một gói đến từ ppa: ubfox-Wine / ppa và không có gì với những thứ này:

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"

Sẽ thật tuyệt nếu tôi có thể có được thứ gì đó hoạt động với PPA.

Câu trả lời:


12

Trong ngoặc, bạn chỉ nên sử dụng tên của kho lưu trữ, không phải URI hoặc cái gì khác. Ví dụ trong trường hợp của bạn:

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

Chạy apt-cache policyđể xem các kho lưu trữ và tên (còn gọi là nguồn gốc o) của những cái đó:

$ 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

Vì chuỗi tìm kiếm là một mẫu regex khớp với bất kỳ vị trí nào trong chuỗi, bạn có thể sử dụng một chuỗi con thuận tiện như ubuntu-wine, hoặc thậm chí chỉ wine.

Xem thêm: Làm cách nào tôi có thể nhận danh sách tất cả các kho lưu trữ và PPA từ dòng lệnh thành tập lệnh cài đặt?


1
Cảm ơn, điều đó làm cho lệnh hoạt động và nó đã cho tôi những gì tôi đang tìm kiếm.
Enkouyami

Điều này không liệt kê các gói cho tôi: aptitude search "?origin (multiverse) ?installed"- không nên sao? ("đa vũ trụ" được bật)
Volker Siegel

@VolkerSiegel không, nhưng sử dụng aptitude search "?section (multiverse) ?installed", thay vào đó.
jarno

5

Đây là tập lệnh Bash tôi đã viết để hiển thị các gói được cài đặt từ các nguồn gốc khác nhau, ngoại trừ Ubuntu. Nó sử dụng dpkg -lđịnh dạng đầu ra phổ biến . Nó hoạt động nhanh hơn aptitudecác giải pháp.

#!/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

Lưu ý rằng cũng có thể có các gói được cài đặt không có nguồn gốc như vậy, xem phần này để tìm chúng.


1

Từ dòng lệnh Nếu bạn muốn làm phương tiện

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

ví dụ: Tất cả đều có các gói từ 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:~$ 

Tín dụng ở đây


Tôi đã gặp lỗi này: bash: awk: Không có tệp hoặc thư mục như vậy
Enkouyami

@Enkouyami whats ls của / var / lib / apt / list /
rɑːdʒɑ

Đây là một liên kết đến những gì tôi đã nhận được pastebin.com/AmiH9E9n
Enkouyami

@Enkouyami xin lỗi, ý tôi là lệnh bạn đã nhập
rɑːdʒɑ

1
@Enkouyami Ok này không phải về lệnh, vị trí. làm như awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*haguichi*webupd8team*Packages
rɑːdʒɑ

1

Sau đó, bạn có thể sử dụng trình quản lý Y-PPA. Mở thiết bị đầu cuối của bạn và gõ:

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

Sau đó mở dấu gạch ngang Unity của bạn và tìm kiếm bằng Y -PPA và sau đó mở Biểu tượng.

nhập mô tả hình ảnh ở đây

Nhấp vào quản lý PPA như trong hình và sau đó chọn một PPA và nó sẽ cung cấp cho bạn các chi tiết về PPA và các gói của nó.


Bạn có thể cung cấp một số hướng dẫn để sử dụng trình quản lý Y-PPA không?
Seth

@ Vì bạn của tôi. làm xong.
rdʒɑ

Tôi đang tìm kiếm một giải pháp dòng lệnh.
Enkouyami

Giải pháp này không phải là dòng lệnh cũng không trả lời câu hỏi chính - làm thế nào để liệt kê các gói được cài đặt từ một repo nhất định? Nó chỉ hiển thị TẤT CẢ các gói có sẵn từ một PPA.
Viacheslav Rodionov

1

Nguồn gốc không phải là URL của kho lưu trữ. Để tìm Nguồn gốc của kho lưu trữ, hãy tìm tệp /var/lib/apt/lists/kết thúc bằng Bản phát hành.

Ví dụ

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

Sẽ hiển thị:

Origin: Dropbox.com

Vì vậy, aptitude search "?origin(dropbox.com) ?installed"sẽ hiển thị cho tôi gói cài đặt từ kho lưu trữ dropbox.


Đây không phải là những gì tôi đang tìm kiếm.
Enkouyami

Bạn có thể cần phải thoát một số ký tự trong tên gốc, nếu chúng đặc biệt trong biểu thức chính quy.
jarno

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.