一、套件管理系統簡介

1.什麼是套件管理系統

套件管理系統是用來管理電腦上的軟體,如安裝、升級、移除及設定軟體的工具程式組合

2.為什麼需要套件管理系統

土法鍊鋼安裝程式的方法:
  • 取得及下載原始程式碼 (source code)
  • 將原始程式碼解開
  • 編譯程式
  • 安裝
舉例來說:
$ wget http://demo.site/demo.tar.gz
$ tar zxvf demo.tar.gz
$ cd demo
$ ./configure
$ make
$ make install
缺點:
  • 編譯程式花費時間且並不是每個人都懂得如何去編譯程式
  • 即使是下載原始碼回來自行編譯,一樣是有套件相依性的問題需要解決
    (如我要自行編譯安裝 gimp 套件,必須先安裝 gtk 套件,而安裝 gtk 套件之前,可能又得先安裝 glib, xorg-x11 等相關套件)
  • 自行安裝的套件,如何得知其版本及倒底安裝了哪些檔案?這些安裝的檔案又是安裝在哪個目錄底下?日後又該如何進行升級或移除的動作?
因此,除非有需要必須自行修補程式碼並重新編譯程式,否則,可以盡量利用現成的套件管理系統來安裝別人已經預先編譯好的 Binary 程式,既省時、省事又方便
同時,透過套件管理系統,它除了可以幫我們處理套件相依性的問題外,套件管理系統本身也有資料庫系統,可以記載每個套件的名稱、描述、版本資訊、提供的廠商等相關資訊,方便使用者日後的查詢及維護

3.套件管理系統的功能

  • 可以驗證檔案的正確性 (Verification of file checksums)
  • 可以檢查套件的數位簽章 (Checking fo digital signatuures)
  • 提供簡單及方便的套件安裝、升級及移除等功能
  • 套件相依性問題的處理 (Dependency)
  • 套件更新檢查,方便將系統保持在最新、最安全的狀態,包含錯誤修正及安全更新等等 (bug fixes and security updates)
  • 套件的群組分類,方便使用者查詢、安裝及維護套件
Top

四、檔案庫 (Repository)
底下是我所收集的一些常用或有用的 Repositories: (盡可能以國內的站台為主)

1.Ubuntu APT Repositories

# Ubuntu 6.06 LTS (Binary) (Source)
deb http://tw.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu dapper main restricted universe multiverse

# Ubuntu 6.06 LTS 更新 (Binary) (Source)
deb http://tw.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu dapper-updates main restricted universe multiverse

# Ubuntu 6.06 LTS 回移套件 (Binary) (Source)
deb http://tw.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu dapper-backports main restricted universe multiverse

# Ubuntu 6.06 LTS Proposed (Binary) (Source)
deb http://tw.archive.ubuntu.com/ubuntu dapper-proposed main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu dapper-proposed main restricted universe multiverse

# Ubuntu 6.06 LTS 安全性更新 (Binary) (Source)
deb http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted universe multiverse

# APT.UBTW
deb http://apt.ubuntu.org.tw ubtw/
deb http://apt.ubuntu.org.tw ubtw-dapper/
#deb http://apt.ubuntu.org.tw ubtw-testing/
#deb http://apt.ubuntu.org.tw ubtw-ppc/

# Dapper Commercial
deb http://archive.canonical.com/ubuntu dapper-commercial main
deb-src http://archive.canonical.com/ubuntu dapper-commercial main

# Xgl + Compiz
deb http://xgl.compiz.info/ dapper main
deb-src http://xgl.compiz.info/ dapper main
deb http://www.beerorkid.com/compiz/ dapper main
deb-src http://www.beerorkid.com/compiz/ dapper main

# AIGLX + Compiz
deb http://xgl.compiz.info/ dapper aiglx
deb-src http://xgl.compiz.info/ dapper aiglx

# PLF
#deb http://packages.freecontrib.org/ubuntu/plf/ dapper free non-free
#deb-src http://packages.freecontrib.org/ubuntu/plf/ dapper free non-free

# Automatix
#deb http://automatix.czessi.net/packages dapper stable
#deb-src http://automatix.czessi.net/packages dapper stable

# Opera
deb http://deb.opera.com/opera etch non-free

# Picasa
deb http://dl.google.com/linux/deb/ stable non-free

# Skype
deb http://download.skype.com/linux/repos/debian/ stable non-free

# Morgoth Backports
deb http://morgoth.free.fr/ubuntu dapper-backports main
deb-src http://morgoth.free.fr/ubuntu dapper-backports main

# Candyz
deb http://cle.linux.org.tw/candyz/Ubuntu i386/
#deb http://cle.linux.org.tw/candyz/Ubuntu ppc/

# calno
#deb http://www.calno.com unstable main
#deb-src http://www.calno.com unstable main

# LISTEN
#deb http://theli.free.fr/packages/dapper/ ./

# Gaim
#deb http://people.ubuntu.com/~seb128/deb ./
#deb-src http://people.ubuntu.com/~seb128/deb ./

# Asher
#deb http://asher256-repository.tuxfamily.org dapper main dupdate french
#deb http://asher256-repository.tuxfamily.org ubuntu main dupdate french

# NetworkManager
#deb http://www.linux2go.dk/ubuntu dapper main
#deb-src http://www.linux2go.dk/ubuntu dapper main

2.Fedora Core 5 YUM Repositories

# Fedora Core 5 - i386
baseurl = ftp://cle.linux.org.tw/pub/fedora/core/5/i386/

# Fedora Extras 5 - i386
baseurl = ftp://cle.linux.org.tw/pub/fedora/extras/5/i386/

# Fedora Core 5 Updates - i386
baseurl = ftp://cle.linux.org.tw/pub/fedora/core/updates/5/i386/

# CLE for FC5 - i386
baseurl = ftp://cle.linux.org.tw/pub/fedora/cle/5/i386/

# Livna for FC5 - i386
baseurl = ftp://cle.linux.org.tw/pub/livna/5/i386/

# Planet CCRMA for FC5 - i386
baseurl = http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/5/i386

# Freshrpms for FC5 - i386
baseurl = ftp://cle.linux.org.tw/pub/freshrpms/ayo/fedora/linux/5/i386/freshrpms/

# Dries for FC5 - i386
baseurl = http://apt.sw.be/dries/fedora/fc5/i386/dries/RPMS/

# ATrpms Stable for FC5 - i386
baseurl = http://dl.atrpms.net/fc5-i386/atrpms/stable/

# Google Stable - i386
baseurl = http://dl.google.com/linux/rpm/stable/i386

# XGL + Compiz for FC5 - i386
baseurl = http://users.telenet.be/quenta/5/i386/

# AIGLX for FC5 - i386
baseurl = http://download.fedora.redhat.com/pub/fedora/projects/aiglx/i386/

# illawarra Sam-Xgl for FC5 - i386
baseurl = http://www.illawarra.org/linux/FC5

3.SuSE 10.1 SMART Repositories

[main]
type = yast2
name = SuSE 10.1(main) - inst-source
priority = 90
baseurl = ftp://ftp.cs.pu.edu.tw/Linux/OpenSuse/distribution/SL-10.1/inst-source

[extras]
type = yast2
name = SuSE 10.1(extras) - non-oss-inst-source
priority = 90
baseurl = ftp://ftp.cs.pu.edu.tw/Linux/OpenSuse/distribution/SL-10.1/non-oss-inst-source

[update]
type = rpm-md
name = SuSE 10.1 Updates
priority = 99
baseurl = ftp://ftp.cs.pu.edu.tw/Linux/SuSE/suse/update/10.1/

[compiz-quinn]
type = rpm-md
name = XGL + Compiz-Quinn for SuSE 10.1
priority = 10
baseurl = http://software.opensuse.org/download/Compiz-Quinn/SUSE_Linux_10.1

[packman]
type = rpm-md
name = Packman for SuSE 10.1
priority = 10
baseurl = http://packman.mirrors.skynet.be/pub/packman/suse/10.1/

[guru]
type = rpm-md
name = Guru for SuSE 10.1
priority = 1
baseurl = http://ftp.skynet.be/pub/suser-guru/rpm/10.1/RPMS/

[suser-jengelh]
type = rpm-md
name = suser-jengelh for SuSE 10.1
baseurl = ftp://ftp4.gwdg.de/pub/linux/misc/suser-jengelh/SUSE-10.1/

[jarpack]
type = rpm-md
name = JArpack for SuSE 10.1
baseurl = http://jarpack.com/suse/10.1/RPMS/

[lab-project]
type = yast
name = LAB-Project for SuSE 10.1
baseurl = http://www.lab-project.net/files/suse/10.1/

[usr-local-bin.org]
type = yast
name = usr-local-bin.org for SuSE 10.1
baseurl = ftp://ftp.gwdg.de/pub/linux/usr-local-bin/10.1

[mozilla]
type =  rpm-md
name = Latest Mozilla.org packages for SuSE 10.1
baseurl = ftp://ftp.suse.com/pub/projects/mozilla/10.1

[kde]
type = rpm-md
name = Latest KDE applications for SuSE 10.1
baseurl = http://software.opensuse.org/download/KDE:/Backports/SUSE_Linux_10.1

Top

五、其他的套件管理系統

1.klik

  • klik is a system for software download in Linux.
  • It uses one .cmg file per application.
  • klik is integrated with web browsers on the user's computer.
  • 使用 klik:// 的 URL 格式
http://en.wikipedia.org/wiki/Klik_%28packaging%29
http://klik.atekon.de/

2.Autopackage

  • Autopackage makes software installation on Linux easy.
  • Software distributed using Autopackage can be installed on multiple Linux distributions and integrate well into the desktop environment.
  • 使用 .package 檔案來安裝 ( .package 檔實際上是可執行的 bash scripts)
http://en.wikipedia.org/wiki/Autopackage
http://autopackage.org/

3.EPM

  • EPM is a free UNIX software/file packaging program that generates distribution archives from a list of files.
http://www.easysw.com/epm/

4.Conary

  • Conary is an open source package management system which focuses on installing packages through automated dependency resolution against distributed online repositories.
  • Foresight Linux and rPath Linux 在使用的
  • Conary recipes are the counterpart to RPM's spec files. They control how a set of sources get compiled and how those sources get turned into packages.
http://wiki.conary.com/wiki/Conary

5.ZENworks Management Daemon (zmd)

  • 一個集中式的佈署管理系統
http://en.opensuse.org/Zmd
http://www.novell.com/products/zenworks/linuxmanagement/index.html

6.Checkinstall

  • 用 checkinstall 來取代 make install
  • CheckInstall 會產生一個 Slackware, RPM 或 Debian 相容的套件並用 Slackware 的 installpkg, "rpm -i" 或 "dpkg -i" 來安裝套件,因此,您可以使用 pkgtool, rpm 或 dpkg 來查詢或移除
http://asic-linux.com.mx/~izto/checkinstall/

Top

六、實例

1.Ubuntu 6.06 with APT (Synaptic)

登入系統後,到選單的 "系統"-"管理"-"Synaptic 套件管理程式" 來啟動 synaptic 程式
0.png

然後進到選單中的 "設定"-"套件庫"
1.png

在這裡您可以新增、移除及編輯 "套件來源" (即 Repository),若網路已經通了,可以把 "CD disk" 的來源取消掉,直透過網路安裝即可,可以不用去放入光碟片或換片等等
2.png

選取一個套件來源,按下 "編輯" 即可編輯內容
2a.png

如果想使用更多的套件,除了 "官方支援" 外,也可以把 "版權受限制"、"協力維護軟體(Universe)" 及 "非自由軟體(Multiverse)" 都勾選起來
3.png

按下 "新增" 則可以新增加一個套件來源,若您要新增的不是官方的套件來源(Updates Backports Security-Updates Proposed 等),則可以按下 "自訂"
4.png

如下圖,則是新增一個 Ubuntu Taiwan(ubtw) 套件來源
5.png

下圖則是新增一個 Xgl + Compiz 的套件來源
6.png

有些套件來源所提供的套件,是有經過 gpg key sign 過的,因此,您就需要下載套件來源提供者的 gpg key 來匯入,有經過 gpg key sign 過的套件,經過驗證後,可以增加安全性
下圖則是我去下載 Xgl + Compiz 套件來源所提供的 gpg key,按右鍵把檔案存在桌面上
7.png

先切換到 "認證" 的畫面,按下 "匯入金鑰"
8.png

選取剛剛所存的 gpg key 檔案,按下 "確定" 後即完成匯入的動作
9.png

凡有編輯或新增過套件來源,記得一下要 "重新載入",這樣才能安裝所編輯或新增過的套件來源中的套件
a.png

按下 "重新載入" 後,系統就會去下載相關所需的套件資訊
b.png

接下來按下 "標記所有升級" 來將所有可供升級的套件標記為要升級的狀態
c.png

若有可供更新的套件,就會列出來
d.png

按下 "套用" 後就會開始進行下載及安裝
e.png

套用變更的畫面,按下 "套用" 後就會實際開始進行下載及安裝的動作
f.png

另外,您也可以使用 "搜尋" 的方式來尋找要安裝的套件,如下圖即是搜尋 "compiz" 相關的套件
g.png

想要安裝套件,對著該套件按下滑鼠右鍵,選擇 "標記為安裝" 即可
h.png

若有相依性的問題,系統會自動幫您處理好
i.png

重覆套件標記的動作,把要安裝的套件都標記好後,最後再按下 "套用" 即可
j.png

同樣的,要移除套件,對著該套件按下滑鼠右鍵,選擇 "標記為刪除" 即可,"標記為徹底刪除" 則是會把一些相關的設定檔案都徹底移除掉
k.png

重覆選取好要移除的套件後,最後再按下 "套用" 即可
l.png

在 Ubuntu 底下,預設是使用 APT 套件管理系統,透過 Synaptic 這個前端的 GUI 程式來管理套件
然而,即使你是使用 Fedora 系列,一樣也是可以使用 APT4RPM 的套件管理系統,一樣可以透過 Synaptic 這個前端的 GUI 程式來管理套件,跟在 Ubuntu 底下操作的方式都是一樣的

2.FC5 with YUM (Pirut Yumex)

在 FC5 底下預設是沒有安裝 Yumex 的,雖然預設有 Pirut 可以使用,但 Pirut 目前還很陽春,功能有限,並沒有像 Yumex 那樣功能齊全,因此,我們可以先利用 Pirut 來安裝 Yumex 套件,之後就可以改用 Yumex 了
登入系統後,先到選單去執行 "應用程式"-"新增/移除軟體",這樣就會啟動 Pirut 程式
20.png

在等了一段時間後,終於出現了 Pirut 的畫面
21.png

您可以切換到 "List" 的檢視模式下,找到 "yumex" 套件後,將其勾選起來,然後按下 "套用" 即可進行下載及安裝
22.png

或是使用 "搜尋" 的方式尋找 "yumex" 相關的套件,然後勾選最新的版本,最後再按下 "套用" 即可
23.png

按下 "套用" 後的畫面,再按下 "繼續" 開始實際的下載及安裝動作
24.png

安裝好 Yumex 後,您可以在選單的 "應用程式"-"系統工具" 中找到 "Yumex 延伸程式"
25.png

啟動 Yumex 時的畫面,初始化儲存庫可以要等一段時間
26.png

初始化完成後,若有可供更新的套件,就會列出來,勾選要更新的套件後,再按下右下角的 "加入至佇列"
27.png

切換到 "佇列" 的檢視畫面,確定無誤後再按下 "進程佇列" 即可
28.png

按下 "確定" 就會開始進行下載及安裝的動作
29.png

切換到 "儲存庫" 的檢視畫面,在這裡可以管理您的 Repositories
有勾選的表示 "Enabled",沒勾選的表示是 "Disabled" 的
2a.png

選擇某個儲存庫,按下滑鼠右鍵即可新增、編輯或移除該儲存庫
2b.png

編輯儲存庫的畫面
2c.png

新增儲存庫的畫面,輸入儲存庫的名稱
2d.png

編輯儲存庫的內容,下圖為加入 CLE for FC5 儲存庫的畫面
2f.png

加入完成並啟用的畫面
2g.png

3.SuSE 10.1 with Smart (Smart GUI)

用 SuSE 內建的 YaST2 來安裝、移除程式是一件很痛苦的事,速度比 Yum 還要慢 (我實在沒那個耐性)
而上網找過資料後,幾乎都推薦改用 Smart Package Manager 來管理 SuSE 上的套件
因此,在這裡我就以 SuSE 10.1 為例來說明使用使用 Smart Package Manager,同樣的,在 Fedora 及 Ubuntu 底下,您一樣也可以使用 Smart Package Manager 來取代 APT or YUM
- 在 Ubuntu 底下,請安裝 smartpm 這個套件
- 在 Fedora 底下則請安裝 smart 及 smart-gui 這兩個套件
除了 Ubuntu Fedora SuSE 以外,其他如 Slackware Mandriva 等 Distribution 都可以使用 Smart Package Manager

在登入 SuSE 系統後,可以把安裝光碟拿出來,裡面已經包含有 smart 及 smart-gui 兩個套件了
建議開個終端機直接下指令 "rpm -i smart-xxx.rpm smart-gui-xxx.rpm" 來安裝會比較快
在光碟機的 suse/i586 目錄底下,可以找到 smart 相關套件
30.png

按下滑鼠右鍵,選擇 '以 "檔案管理程式" 開啟'
31.png

然後按下 "使用 YaST 安裝套件" 依序把 smart 及 smart-gui 給裝起來,請耐心慢慢等 (真的要等好久)
32.png

順利安裝好 smart 及 smart-gui 後,在選單的 "應用程式"-"系統"-"組態" 裡可以找到 "智慧型" (即 Smart)
33.png

開啟 Smart 後,先到選單 "Edit"-"Channels" 來新增及移除 Channels (即 Repositories)
34.png

選取某個 Channel 後,可以按下 "屬性" 來編輯該 Channel
35.png

編輯 Channel 的畫面
36.png

按下 "新增" 則可以新增 Channel,下圖是新增 Channel 的畫面,Method 請選擇 "Provide channel information" 來自行選擇 Channel 的 Type
37.png

下圖為選擇 Channel Type 的畫面,如果是 Yum Repository 請選擇 "RPM MetaData" 這個 Type
38.png

編輯 Channel,下圖為加入 Xgl + Compiz-Quinn 這個 Channel 的畫面,您也可以指定 "Priority",當有好幾個 Channels 同時都有提供同樣版本的套件時,那麼 Priority 越高的那個 Channel 會優先安裝
39.png

同樣的,凡是在新增、移除 Channel 後,別忘記一定要先執行 "Update Channels" 的動作
3a.png

下圖為下載套件相關資訊的畫面
3b.png

按下 "Upgrade all packages" 來將所有可供升級的套件標記起來
3c.png

可供升級套件的列表畫面,按下確定後開始進行下載及安裝的動作
3d.png

要移除套件,先選取該套件後按滑鼠右鍵,選取 "Remove" 來標記為要移除
3e.png

要安裝套件,一樣先選取該套件後按滑鼠右鍵,選取 "Install" 來標記為要安裝
3f.png

要安裝或移除的套件都選取標記好後,最後再按下 "Apply marked changes" 即可
3g.png

實際執行安裝及移除的畫面
3h.png

當然,您也可以使用 "Search" 的功能來搜尋要安裝或移除的套件
3i.png

從選單的 "View"-"Tree Style" 裡,也可以選擇各種不同的檢視方式,方便來尋找自己所要的套件
3j.png

Top