2009年12月17日 星期四

幾個套件管理小技巧

1. 由指定的套件庫安裝套件:
zypper in --from [套件庫] [套件1] [套件2] ...


2. 您可以同時安裝與移除套件,例如:
zypper in oxim -scim
正在載入套件庫資料...
讀取已安裝的套件...
正在解決套件相依性...

將會安裝下列新的套件:
oxim oxim-filters oxim-setup

下列套件將會被移除:
mlterm-scim scim scim-bridge scim-bridge-gtk scim-bridge-qt scim-chewing
scim-input-pad scim-m17n scim-pinyin scim-qtimm scim-tables scim-tables-zh

3 新套件將被安裝, 12 將移除.
全部下載大小: 2.3 MiB。 完成操作後,將釋出 17.7 MiB。
要繼續嗎? [y/n/p/?] (y):


3. 鎖定套件(已安裝者維持該版本,未安裝者維持不安裝),例如:
zypper al scim


4. 套件庫自動重新整理頻率
如果每次執行 zypper 都要重新整理(因為您某些套件庫設了'自動重新整理')
(注意預設用 1 Click Install 安裝的都會自動重新整理)
您可以設定
/etc/zypp/zypp.conf
repo.refresh.delay = 1440

(請將前面的 ## 去掉)
單位為分鐘(min),這裡設定最短一天重新整理一次
若您常進行套件搜尋(zypper se)時很有用

5. YaST 套件管理模組 (sw_single) 完成提示
在 11.2,當您完成套件安裝或移除時,套件管理員會自動關閉
如果您希望像以前一樣,會問您要不要再安裝或移除些什麼
請修改
/etc/sysconfig/yast2
PKGMGR_ACTION_AT_EXIT="summary"

這樣一來,當您安裝或移除軟體後,會出現摘要視窗
若要再安裝移除些什麼就按'上一步',或按'完成'來退出
寄件者 openSUSE 11.2


6. 如果您常心中掛記著更新
您乾脆:
停用 update applet,
停用所有套件庫的自動重新整理
zypper mr -R --all

隨時想檢查更新就手動執行
zypper ref; zypper up


7. 調整或禁用 vendor(不建議使用)
11.2 的 zypper 新增了檢查 Vendor (供應商)的功能
您可以用
rpm -qi [已安裝套件名稱] | grep Vendor

rpm -pqi [rpm 檔] | grep Vendor

來檢查 Vendor
預設 zypper up 是不會去變更 Vendor
所以以前(11.1 或更早版本)先加入 Packman 套件庫,然後 zypper up 會將套件升級為 Packman 的套件
現在則不會
現在有 zypper dup 這個命令
這個命令會儘量升級到最新版而不管 Vendor
而且將不屬於任何套件庫的套件都移除
通常用在整個系統升級(例如 11.1 -> 11.2,或升級 KDE)
我會儘量避免使用
但,相反的也是有些好處,例如要升級到 KDE 4 的最新版本若失敗了
只要移除該套件庫,再進行 zypper dup
又會'升級'回原來的版本
檢查 Vendor 可以增進系統的穩定,尤其當您的套件庫眾多,裏面又有重複套件時
這功能是很重要的
若您真的要更改
設定檔在 /etc/zypp/zypp.conf
solver.allowVendorChange = true

或新增一個 /etc/zypp/vendors.d 目錄
裏面放置文字檔(自行取名?)
[main]

vendors = nvidia,suse,opensuse

這會將裏面的 vendor 都視為同一個,那自然不會有變更 vendor 的問題
聲明:本人皆未測試(也不想試)

8. 最後安裝的套件
移除孤兒套件(無用的套件),是下一版 zypper 的目標
目前您可以用下面 rpm 指令來查詢最後安裝的(10個)套件
rpm -qa --last | head -n10

例如我裝了 betaradio 後不合用
zypper in betaradio
將會安裝下列新的套件:
betaradio gstreamer-0_10-ffmpeg gstreamer-0_10-plugins-ugly libsidplay1

但移除時
zypper rm betaradio
下列套件將會被移除:
betaradio

卻只移除一個
您可以用這指令來察看最後安裝的套件資訊及時間
rpm -qa --last | head -n10
betaradio-0.1.2-13.1 西元2009年12月17日 (週四) 23時11分04秒
gstreamer-0_10-plugins-ugly-0.10.12-2.4 西元2009年12月17日 (週四) 23時11分02秒
gstreamer-0_10-ffmpeg-0.10.9-999.pm.1000.1 西元2009年12月17日 (週四) 23時10分52秒
libsidplay1-1.36.59-137.2 西元2009年12月17日 (週四) 23時10分21秒
chromium-4.0.273.0-1.1 西元2009年12月17日 (週四) 22時40分02秒
v8-2.0.4.0-1.1 西元2009年12月17日 (週四) 22時39分03秒
pyxml-0.8.4-199.3.1 西元2009年12月17日 (週四) 22時37分24秒
k3b-codecs-1.69.0-40.pm.43.13 西元2009年12月17日 (週四) 21時28分21秒
readline-doc-6.0-18.4.1 西元2009年12月17日 (週四) 21時28分19秒
bash-doc-4.0-18.4.1 西元2009年12月17日 (週四) 21時28分14秒

來決定要移除哪些套件,就決定是你了...
 rpm -e betaradio gstreamer-0_10-plugins-ugly gstreamer-0_10-ffmpeg libsidplay1


9. 有關 zypper 的用法,您可以
man zypper

(英文版),或
zypper --help

(有中文翻譯)

10. 如果您覺得 zypper --help 的翻譯不完整
可以由 trunk 中取得較完整的翻譯
mkdir po
cd po
svn checkout https://svn.berlios.de/svnroot/repos/opensuse-i18n/trunk/lcn/zh_TW/po .
msgfmt zypper.zh_TW.po -o zypper.mo
sudo cp zypper.mo /usr/share/locale/zh_TW/LC_MESSAGES/

沒有留言: