Shell:如何將所有相關軟體包卸載到特定軟體包? / 烏班圖

Shell:如何將所有相關軟體包卸載到特定軟體包? / 烏班圖

最近,我要求我的託管提供者重新加載作業系統,假設Ubuntu 12.04 64 bit minimal最小安裝了所需的最少軟體包,但我意識到mysql 已安裝,因此,因為我不需要它,所以我想卸載與其相關的所有軟體包。

我所做的是:

$ sudo apt-get --purge remove mysql-client
$ sudo apt-get --purge remove mysql-server

但是我仍然在尋找 mysql 二進位和文件

$ whereis mysql
mysql: /usr/bin/mysql /etc/mysql /usr/bin/X11/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

我在想類似的事情

$ dpkg -s mysql*

但這沒有幫助。

有什麼建議嗎?

答案1

為什麼你這麼確定不需要它?也許其他軟體包依賴它,它不僅僅用於設定 mysql 伺服器,例如某些程式使用它來管理其內部資料庫。

現在,要回答您的問題,第一步確實是找出哪個套件安裝了這些檔案:

$ dpkg -S /usr/bin/mysql
mysql-client-core-5.5: /usr/bin/mysql

這是 Ubuntu 14.04 虛擬機器的輸出,您的版本可能不同,但適用相同的原則。

基本上,您刪除的兩個包都是元包指向其他包。因此,當您刪除它們時,您只刪除了虛擬軟體包,而不是隨它們一起安裝的所有內容。若要刪除與 mysql 相關的所有內容,請執行以下命令:

sudo apt-get remove --purge mysql-*

答案2

如果您想使用apt-get remove特定套件中包含的文件,您可以執行以下操作:

apt-get remove $(dpkg  -S /usr/bin/mysql | cut -d ':' -f 1)

(將/usr/bin/mysql, 替換為您要刪除的任何檔案)

使用此功能,apt-get仍然會詢問您是否真的要刪除該軟體包(dpkg 找到的),有時您在看到軟體包名稱後意識到您不希望這樣做

相關內容