如果 container 內沒有你需要的工具怎麼辦?
那就會需要用到套件管理系統啦!
一般來說 Linux 目前就分兩個主流,
一種是 debian 類的(deb),另一種是 Redhat 類的(rpm)。
Deb 系列的 Distribution 大概有:
Debian, Ubuntu, Xandros, Linspire…等
Rpm 系列的 Distribution 大概有:
Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE …等
在早期還沒有套件管理系統的時候,
大部份的工具都要從原始碼編譯,
也不是說這樣有什麼不好…只不過有工具整合畢竟是比較方便,也比較不會出什麼錯誤。
而這樣的套件管理系統也是有分高階跟低階。
所謂高階就是像 debian 的 apt-get,或是 CentOS 的 yum,而低階就是直接安裝 *.deb 檔 或是 *.rpm 檔。
兩者的差異就在於,高階的會自動幫你將相依的套件找出來,一併安裝,而低階的則要自行留意囉。
高階的使用方式大概有以下幾種:
特別留意如果要最新的軟體版本,最好先下完 update 再下 install,才不會發生找不到套件或是裝到太舊的版本的問題。
低階的部份也是有安裝:
dpkg --install *.deb
rpm -i *.rpm
不過比較有用的應該是可以看到目前已經裝了多少套件的指令:
dpkg --list
rpm -qa
可是…有時候你會遇到 Base Image 不包含以上兩種套件工具,比方說 alpine 系列的,就會要使用到它特有的 apk(Alpine package kit) 了,比方說沒有 curl 的時候就可以 apk add curl … 其餘的再自行參考 apk 的 help 囉。
還有一種狀況是 image 本身就有提供一個很多工具的軟體叫 busybox,那就可以不用安裝套件,直接透過它含有的功能來達到你想執行的程式囉。