Packages In, Packages Out, and Still Packages Left Behind

今天因為 project 的原因, 想裝起 Joomla ! 來試試看. 但是 Joomla ! 的網站上好像暫時停止 download 以及 demo film 的下載, 原因不明. 想說好吧, 不然就用 Mandriva 內建的 Joomla packages 裝好了. 結果剛勾選完, 驚訝的發現居然相關的需安裝 packages 包含 Joomla 總共高達 36 個 @@


雖然說裡面包含了 Apache 跟 PHP 相關的 packages, 但是重點是我之前系統中並不需要安裝這些, 這些是由於 Joomla ! 的需要才有相依性安裝的.

藉著這個機會剛好想嘗試一下很久以前就發現的問題 : Package Manager 好像都沒在紀錄 package installation dependency 的, 因此想移除某 software 時也一併移除之前因為相關性才裝的 software, 好像無法透過 package manager 的幫助達成.

所以裝完 Joomla ! 後, 又故意把他移除試試看. 果然, Mandriva 內建的 package manager (RPMDrake) 只會偵測到 Joomla ! 相關的兩個 packages.


而在移除過後, 再度選擇裝回去, 就會發現現在只需要裝兩個 packages 了. ( 就是剛剛移除的 Joomla ! 相關 packages. )


這個結果意味著, 在 Joomla ! 被安裝時, 因為相依幸而被安裝的其他 packages ( Package In ), 在 Joomla ! 要被移除時 ( Package Out ), 並不會自動地被移除, 或是詢問使用者是否要一併移除. 然後就這樣留在系統中, 成為不知哪時才會被用到或是被更新的 useless packages ( Packages Left Behind ).

事實上要紀錄 package 被安裝時的 dependency associations 應該不是難事, 甚至當你要移除某個 packages 時, package manager 也會提醒你此 package 目前被哪些 packages 所依賴, 如果移除可能會出現問題. 顯見這些 dependency 資訊應該已經有被紀錄起來, 為何在 remove package 時, 卻不提醒使用者一併移除可能之後不會用到的 packages 呢 ?

我能想到的主要原因只有一個. 因為整個系統嚴格上來說並不受 package manager 管轄, 所以當面臨移除的指令時, package manager 並無從知道是否之前因為 dependency 而安裝的其他 softwares, 在 package manager 管轄之外, 被其他經由使用者自行安裝的 packages 所利用, 這樣的 dependency association 目前是無法經由 package manager 所紀錄的. 因此 package manager 無法在殘缺的 dependency association information 底下, 確保 package 的移除不會出現問題.

然而不用 package manager, 靠管理者更難做到上述的 package dependency analysis. 是否有更好的方法, 可以 statically or dynamically 對於整個 system 內的 package dependency 作分析, 進而蒐集相關資訊, 使得管理者可以在 remove package 時, 很清楚的知道應該把哪些 packages 也一定移除嗎 ?

0 意見:

Designed by Posicionamiento Web | Modified by seLain | Bloggerized by GosuBlogger | Blue Business Blogger