Linux中的軟件大部分是零碎的,其粒度比windows的小很多,軟件之間的依賴關(guān)系很強烈,下面是自己的一些理解:
一、Linux中的軟件依賴
Linux中的軟件依賴關(guān)系成一顆拓?fù)錁浣Y(jié)構(gòu),比如A直接或間接依賴B,那么B就不可能直接或間接依賴A。試想從時間上A、B必然有一個先出現(xiàn),而先出現(xiàn)的不可能依賴于后出現(xiàn)的;并且如果A與B互相依賴則就是“雞與蛋”的問題,因此必然有一個先出現(xiàn)而另一個依賴于先者。
二、Linux的軟件安裝與卸載
(1)安裝軟件A必須率先安裝A依賴的所有軟件;卸載軟件A則必須率先卸載依賴A的所有軟件。如下圖:
a\
b\
c\
b,c依賴于a,那么安裝b或c都先要確保a的存在;同時卸載a必須確保b和c都已經(jīng)被卸載。
(2)卸載A不代表同時卸載A所依賴的所有無用軟件,比如:B<--A,卸載A以后B就沒用了(因為沒有其他軟件再依賴B了),Linux默認(rèn)不卸載B,但可以使用特殊的參數(shù)讓系統(tǒng)這么做。
在Ubuntu下,apt-get remove就是一般的卸載,而apt-get autoremove則是同時卸載其所依賴的無用軟件
--------------------------------
autoremove的偽代碼:
autoremove_soft(entity x) {
remove x;
for each p in x->parent {
p->child_num--;
if(p->child_num == 0)
autoremove_soft(p);
}
}
----------------------------------
sudo apt-get autoclean 清理舊版本的軟件緩存
sudo apt-get clean 清理所有軟件緩存
sudo apt-get remove softname1 softname2 ...
sudo apt-get --purge remove softname1 softname2 ...(同時清除配置)
sudo apt-get autoremove 刪除系統(tǒng)不再使用的孤立軟件