比較 pkg_rmleaves , emerge –depclean , apt-get autoremov
Posted: Tue Dec 16, 2008 8:10 pm
假設一個情況,我裝了A軟體,他depend on A1,A2,A3。如果我要砍掉A軟體,A1,A2,A3不會被砍掉。因為有一種可能是其他軟體depend到它,這時候就需要用一些工具來幫你把它移除。
BSD的作法:BSD把套件管理的資料放在/var/db/pkg裡面,pkg_rmleaves去掃裡面沒有被depend到的軟體,然後提問你要不要砍掉它。這樣的作法好處是只要軟體相依性,不需要額外負擔。缺點就是,它必須一個一個問你。就算今天你手動裝了bash,你下 pkg_rmleaves它還是會問你要不要砍掉bash。所以管理者必須知道什麼東西是它手動裝過的。
Linux的作法:Gentoo Linux的系統包含了system,kernel和world,當你裝了一個軟體,它就會被加到world的depend下。比方說你裝了A軟體,它 depend on A1,A2,A3。但是只有A會被加到world,好處就是如果A被砍掉,你下depclean會把A1,A2,A3砍掉。如果你裝了一個bash,在 BSD的情況它可能不會被其他人depend,所以變成該被砍掉的leaf,但是在Gentoo的情況下,他是被world depend到的,所以不會被砍掉。好處就是你可以很簡單的做到你要做的事情。缺點就是需要額外的實作,還有,當你可以輕鬆砍掉很多東西的時候,你比較不會一個一個仔細去看你砍了甚麼。XD
BSD的作法:BSD把套件管理的資料放在/var/db/pkg裡面,pkg_rmleaves去掃裡面沒有被depend到的軟體,然後提問你要不要砍掉它。這樣的作法好處是只要軟體相依性,不需要額外負擔。缺點就是,它必須一個一個問你。就算今天你手動裝了bash,你下 pkg_rmleaves它還是會問你要不要砍掉bash。所以管理者必須知道什麼東西是它手動裝過的。
Linux的作法:Gentoo Linux的系統包含了system,kernel和world,當你裝了一個軟體,它就會被加到world的depend下。比方說你裝了A軟體,它 depend on A1,A2,A3。但是只有A會被加到world,好處就是如果A被砍掉,你下depclean會把A1,A2,A3砍掉。如果你裝了一個bash,在 BSD的情況它可能不會被其他人depend,所以變成該被砍掉的leaf,但是在Gentoo的情況下,他是被world depend到的,所以不會被砍掉。好處就是你可以很簡單的做到你要做的事情。缺點就是需要額外的實作,還有,當你可以輕鬆砍掉很多東西的時候,你比較不會一個一個仔細去看你砍了甚麼。XD