我想卸載 libreoffice。該程式由大約三打模組組成。理想情況下,可以透過以下方式刪除它們:
aptitude remove libreoffice3.6* libreoffice-debian-menus libobasis3.6-*
但這失敗了
Couldn't find any package whose name or description matched "libreoffice3.6*"
ETC。
如何按模式刪除一組套件?
PS:我也對 usedpkg
或 的答案感到高興apt
答案1
使用
apt-get
orapt
, (notaptitude
),並使用錨定正規表示式。在正規表示式中,
.
表示任何字符,並且*
表示零次或多次。因此該表達式libreoffice.*
會匹配任何包含字串libreoffice
、後跟任意數量字元的套件名稱。您必須使用^
(符合字串的開頭)或$
(符合字串的結尾)或兩者來錨定正規表示式,否則,APT 將無法識別正規表示式。用單引號將正規表示式引起來,以避免 shell 解釋星號。
例子:
若要刪除名稱以 開頭的所有套件libreoffice
,請執行:
sudo apt remove '^libreoffice.*$'
答案2
另一個選擇是:
dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 echo
這將列出所有匹配的包libreoffice
。當您確認它們都是您想要刪除的內容時,請執行以下命令...慎用:
dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 sudo apt-get purge -y
想法:
- 讓系統列出所有已安裝的軟體包
- 過濾以僅顯示匹配的內容
libreoffice
- 過濾以僅顯示具有包名稱的列
- 對每個包執行 purge 指令
答案3
Aptitude 支援全域模式,還有另一個非常酷的匹配,如下所示:
aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus
這將匹配名稱中包含並且已安裝的任何軟體包libreoffice
(3.6
這就是~i
.
答案4
當您需要刪除許多具有相同前綴的檔案時,我發現大括號擴充非常方便:
sudo apt remove libreoffice-l10n-{bg,ca,cs,da,de,en-za,es,fr,hu,id,ja,ko,nb,nl,pl,pt,ru,sv,th,tr,uk,vi,zh-cn,zh-tw}
我用這個命令刪除了所有我從不使用的語言包。是的,使用正規表示式,您可以決定保留哪一個,並刪除其他的。不管怎樣,我喜歡這個,因為它很容易記住,而且它也適用於許多 bash 指令。