2009年1月12日 星期一
my old classmate's note
日期: Wed Feb 28 15:07:50 1996
標題: 一件很有趣的事....
記得很久很久以前,
(嗯!十足的說故事的口吻!)
k中有一位訓育組長張x華的,
有一天呢,
小弟我去訓育組找他請公假,
正好有工友伯伯送郵件給他,
他也不疑有他,
就當著我的面打開了,
結果,
那裡面裝著是兩本書,
書名好像是叫做什麼的(年代久遠,記不大得了)
啊!對了!
好像叫做什麼床上兵法什麼的,
當時我眼尖,瞄到了一點點,
我就說了一句"組長...."
他就很心虛地把抽屜拉開,
把那兩本書給塞了進去,
同時四處張望一下(還好那時鐘錶不在),
並問我說,"什麼事,什麼事?"
我當然就回答說"沒事,沒事!組長,我是來請公假的!"
說完就遞了一疊公假單上去給他,
他連看也沒看就咚咚咚地拼命蓋章,
(那一疊當中還有三張空白的公假單呢!
這一點學聯會前副會長鄭原真可以為証,.
那可惡的鄭原真後來還把我那三張留做紀念的空白公假單給A走了!)
組長還跟我說"要早去早回啊!知道嗎?"
我回了一句"知道!!謝謝組長!"就落跑了!
從此以後呢,我請公假就再也無往不利了!
嗯....這是很久以前的事了,
專辦舞會的愛樂社倒了!
訓育組長也由張國華、李興源....一直換下來了,
只有鐘錶還依然"滴答、滴答"地走著,
真是令人懷念不已啊!
嗯....謹把這一則故事寫下來留做紀念!
771007沈智強
old article: Debian 的套件管理工具 apt
Debian 底層使用工具 dpkg, 上層使用工具 apt 來管理其套件。
由 ycheng 所建立。 最後修改時間為 2002-10-29 19:34:48。
DEBIAN 套件管理
作者:鄭原真, Jan, 2002.
介紹
許多 Linux 發行版本都有各自的套件管理系統,最常見的便是由 Redhat 所起用的 RPM。Debian 採用了他自己的套件管理系統,並且提供了功能強大的 APT (Advanced Package Tool),可以幫助您解決套件安裝或是移除過程中,相當棘手的相依性問題。
Package (套件) 是甚麼 ?
DEB:DEB 是 DEBIAN/Linux 的套件名稱。Debian 是一個完全由社群推動而成的一個 Linux 發行版本。
DEB:那麼 Package 是甚麼 ? Package (套件) 是一由一組檔案,包含程式、程式庫、資料檔案以及文件所組成的一個集合。根據套件安裝後的功能,大約可以分成幾個類別:
* 程式套件:例如 DEB 套件
* 程式庫套件:
* 文件套件:
* 其他套件:
在沒有套件管理程式之前,我們只能全手動逐一安裝各個程式;安裝之後若要移除套件,只能各憑本領。若是要升級套件,則需要先移除舊版本套件後再安裝新版本套件。若是移除不完整,且恰巧遇上新舊版本程式互相衝突的情形,則後果無法預知。
有了套件管理程式之後,上述所有問題皆可一併解決。
套件檔案相關資訊
DEB
套件的命名:以 perl-doc_5.6.1-5_all.deb 為例,perl-doc 為套件名稱,5.6.1 為套件原始版本,5 為套件發行版本,all 表示本套件是給所有的 CPU 所使用的套件。在 all 這個欄位,其他的值如 i386 表示該套件是給 i386 系列 CPU 使用,或是 alpha 表示該套件是編譯給 alpha 系列 CPU 所執行的程式。
一個套件檔案內所包含的資料有
* 套件建立的時間,敘述資訊等。
* 所要安裝的檔案。
* 各個檔案安裝後所在的目錄,檔案擁有者,權限設定,..., 檔案大小。
使用套件管理系統:
DEB 套件的管理全部都是經過指令 dpkg 來對套件進行安裝,移除,升級等動作。
安裝套件:
安裝 DEB套件指令:
dpkg -i (or -install) options file1.deb ... fileN.deb
範例:下列指令將把 bash 安裝在你的系統上面
dpkg -i bash_2.05-7_i386.deb
安裝過程失敗常見的狀況:
1. 該套件已經安裝,不能再次安裝
2. 安裝該套件之前,需要先安裝其他套件 (通常稱為 dependency 問題)。 解決方法便是將所需要的相關套件先行安裝。
典型的 dependency 關係:安裝 libxxx-dev 之前通常需要先安裝 libxxx。
3. 所要安裝的套件與現有套件間有衝突 (conflict) 不能安裝該套件。在單一個發行版本中通常是不會有這種情形, 但若你因為需要安裝來自不同發行版本的套件時,便容易會有這樣的情形。
移除套件:
移除 DEB 套件指令
dpkg -r (or --remove) pkg1 ... pkgN
移除套件 pkg1 ... pkgN,但對於有將設定檔分開的套件,則並不移除設定檔。
dpkg --purge pkg1 ... pkgN
移除套件 pkg1 ... pkgN, 含設定檔案等。
查詢套件的資訊
範例
dpkg -l
列出所有已安裝套件名稱
rpm -q info
查詢套件 info 是否安裝 ?
dpkg -S /usr/bin/info
查詢包含檔案 /usr/bin/info 的套件為何 ?
dpkg -L info
查詢套件 info 所所安裝的所有檔案
APT (Advanced Package Tool)
apt 是由 Debian 所發展的強大套件維護工具。其後端程式便是 dpkg。apt 程式可以很自動的處理套件的版本一致性問題,套件的升級,移除等等。
使用方法:
1. 使用 apt-setup 來設定 /etc/apt/sources.list檔案。或是手動設定 /etc/apt/sources.list。
2. 執行 apt-get update。這一個指令的功能在於,將 ftp 或是 http 網站上面的套件索引下載。這樣我們就可以經由在硬碟上的索引來判斷那個套件需要升級獲釋安裝一個套件時需要配合安裝另一個套件。
3. 安裝新套件:
apt-get install 套件名稱
例如
apt-get install bash
apt 便會自動依照 /etc/apt/sources.list 內的資訊,找到最新版本的 bash 套件,並進行下載及安裝。
4. 移除套件:
apt-get remove 套件名稱
例如:
apt-get remove lynx
5. 升級系統套件:
apt-get upgrade
將系統所有套件進行升級動作,通常在 apt-get update 之後執行 apt-get upgrade。
apt-get dist-upgrade
將所有系統套件進行升級,與 apt-get upgrade 不同之處,在於 "apt-get dist-upgrade" 會進行較進一步的演算法來處理套件之衝突的關係,並在維持系統套件整合的情形下,進行套件升級。
apt-get --simulate upgrade (與 apt-get -s upgrade 一樣)
加上 --simulate 之後,apt-get 將會列出 apt-get upgrade 指令過程中所有將會執行的動作。這樣我們可以在進行系統升級前,瞭解哪些程式將會被升級,並評估是否要進行升級的動作。
另外,也支援參數 -d 或寫為 --download-only,意思是說,只下載而不進行安裝的動作。
6. 刪除系統暫存的 deb 檔案:
apt-get clean
經過 apt-get 下載並安裝過的 DEB 檔案,會存放在目錄 "/var/cache/apt/archives/" 下面,而不會自動刪除。 apt-get clean 會將所有 deb 檔案刪除。
apt-get autoclean
與 apt-get clean 不同之處在於,apt-get autoclean 只會刪除目錄 "/var/cache/apt/archives/" 下以經過期版本的 DEB 檔案。例如在該目錄下有 bash_2.05-4_i386.deb 與檔案 bash_2.05-7_i386.deb,目前系統安裝的是版本 -7 的 bash 套件(也是最新版本套件),則 apt-get autoclean 會將 -4 的 bash 套件檔案從硬碟刪除刪除。
7. 找尋某個尚未安裝的套件的資訊:
apt-cache search 某個關鍵字
例如:
apt-cache search java
會將所有套件相關資訊中,有 java 字眼的全部顯示出來。
apt-cache show bash
會將套件 bash 的所有資訊顯示出來,不管 bash 套件是否安裝在系統內。
系統安全的維護
請連線到 http://www.debian.org/security/index.en.html,在該頁面上有說明關於 Debian 對於系統安全修正的處理策略。該策略中最重要的部分,在於 Debian 明確表示,所有系統安全的修正檔案將會在第一時間內放到一個固定的地方。您只需要把該地方的敘述放到 /etc/apt/source.list 即可。
放在 Crontab 裡面每天跑
每天自動把系統升級到最新版本 !!
這個想法當然是很令人高興。理想上,Debian 套件管理軟體的確可以做到這樣的功能。為什麼呢?
其實套件自動升級,是一件奇妙的事。尤其對於自由軟體/開放源碼這一類的軟體系統來說。簡單來說,大約有下列幾點:
1. 舊版本程式的正常工作的功能,新版本不一定正常。
2. 新版本程式的設定檔,格式/放置的位置與新版不一樣。
其中第一個問題是任何系統都可能遇到的。即便是使用商業軟體,假設你使用了該軟體一個很少人使用的的功能,而新版軟體恰恰好該功能程式沒修改好,所以安裝了新版本軟體,反而你安裝一個工作不正常的軟體。所以,若是一個非常重要的線上系統,
Debian 的套件在升級時,如果發現是在對系統作升級的動作,則有一個固定的地方可以放入一個將設定檔轉換格式的程式。所以,假設系統中安裝了 Apache,有一天 Apache 出了新版本,也有了 Debian 的套件了,這時候我們當然希望系統可以自動安裝新版本。但是萬一新版的 Apache 與舊版的的 Apache 的設定不同時,便需要人手動去修該設定。
在我的系統的 cron 放了一個這樣的檔案:
#! /bin/bash
apt-get update
apt-get -y -d dist-upgrade
apt-get -s dist-upgrade
這樣我每天就可以經由 cron log 來決定何時需要升級哪些檔案。
Hi,大家好,
我是鄭原真,目前專業是自由軟W體系統/網頁相關程式設計。
大家有時候都喜歡把微軟作為假想敵(包括我自己也是),所以我想在這裡做一個平衡簡說,內容是這樣:
-
微軟也有功勞.
-
微軟是做了些我們不喜歡的事,但其他人做的壞事也不少.
-
我們對於微軟的要求應該要公平.
微軟有功:
如果沒有微軟,我們可能硬體只能買 Apple 一家,台灣無法有這麼多做 PC 的工廠,產業也不會那樣進步. 是微軟將電腦使用的門檻一再降低。
是微軟讓電腦變成我們生活的一部分,而不只是技術人員手中的強大工具。
Linux 之類的自由軟體/開放源碼軟體由於試起於技術人員,技術人員 對於圖形介面的需求比較低,所以 Linux 這一類的系統在過去並不平易近人。這幾年已經努力改善中。
其他壞人:
這個部份或許需要 Apple 來補充,據說微軟現在做過的所有封閉系統的做法,蘋果電腦當年幾乎都做過. 我相信也有很多其他公司都做過。我們應該要記得,我們反對的是微軟那一類的作法,不是針對一家公司。只是微軟樹大招風,所以我們喜歡提它。
公平的要求:
在自由軟體/開放源碼的世界中,有一個人叫 Richard Stallman 通常在光譜中是被認為是純白的一端 (黑與白) 他對於微軟意見,在他的一篇文章中有提到,我之前有翻譯. 譯得不好 (不是客氣話,我現在也很想重譯) 網址在: http://www.linuxfab.cx/indexColumnData.php?CID=68&FIRSTHIT=1
原文網址:
http://www.gnu.org/philosophy/microsoft-antitrust.html
該文中對於微軟的三個要求是:
-
命令微軟公布所有關於軟體元件介面、 通訊協定以及檔案格式的完整說明文件。
-
命令微軟只能在答辯(defense)的情況下使用其專利權,在軟體的領域。
-
命令微軟不得給予任何電腦硬體可以執行微軟 Windows 的認證,除非該電腦的硬體規格書已經被公開了, 這樣的話每一個程式設計師才可以在相同的硬體平台上實做軟體。
蘋果系統的好正也凸顯蘋果公司的壞。不過我原來以為「封閉系統」、「昂貴售價」是蘋 果公司一貫的雅痞堅持,看了《i蘋果》(Apple: The Inside Story ofIntrigue, Egomania, and Business Blunders)這本書以後才知道不是這一回事----。蘋果內部的決策系統實在是太紊亂了,而且在嬉皮工程師與不懂電腦的商業管理經理階層間一直格格 不入,無法充分溝通,喪失了很多轉變成「開放系統」的良好契機。
其實開放的好處是顯而易見的,有一些蘋果的工程師是贊成開放的,但說不過管理階層,管理階層強調的是壟斷、高獲利。所以蘋果算是特例,而不是典型的例子,蘋果的工程師大概是嬉皮過頭了,太愛玩了,不然早就可以請不太懂電腦的管理階層換人做做看的。
還有「開放」對於某些托拉斯來說不見得是一種道德良心的發現,很多時候反而是公司處 於劣勢或倒閉之前的放手一搏,是屬於戰略遊戲之一,像是蘋果1996年左右的「Clone」計畫(硬體規格開放授權),Netscape的Mozilla 計畫等。如果公司又回復正常呢?相信他們還是會回復封閉系統的,蘋果已經回復封閉了,Netscape想來也沒這麼有良心只是在等待機會。
蘋果公司後來的生存策略很有趣,卻很諷刺,就是要微軟投資他、養他,這樣全世界至少還有另外一個作業系統活著,微軟就不怕被控告壟斷了,你看現在蘋果活得好好的,Jobs還意氣風發呢,誰知道幕後是這樣笑中帶淚。君不見現在麥金塔系統安裝好以後,IE與Outlook Express也是大放送自動出現在蘋果桌面上,Netscape的蹤影早就不見了。不過以權力基礎來看,大公司實在沒什麼好同情的,成也好,敗也好,罵也好,不罵也好,大公司從來不會為任何弱勢、邊緣的民眾著想的。
而我自己站在「作者」的立場來看,只要不免費開放源碼的其實都是壞人,智慧是屬於整 個生物+Cyborg界的,是共有的、流動的、分散的財產,怎麼可能單單屬於作者或者某個擁有版權的托拉斯。譬如從事數位影像創作的 人,Photoshop這個小cyborg沒有參與你的創作過程嗎?你從來沒有利用過他的任何命令、特效罐頭嗎?
那Open、Close命令又算什麼?這些命令、特效罐頭的背後有多少行程式碼?你 隨便弄弄影像套用幾個命令就會這麼漂亮嗎?如果是這樣的話,你要不要和Photoshop這個存在你的電腦上的cyborg一起分享你的作品的版權?如果 不要的話,你是不是正在掩蓋共同創作、共同貢獻的事實?
智慧財產權、專利權是資本主義社會裡頭才有的概念,是為版權、專利擁有者(絕大多數 的情況不是作者)服務的,也是從來不會為任何弱勢、邊緣的作者、使用者著想的。版權是極為殘酷不仁的、血腥的,是讓多少良心的作者生靈塗炭的,不要再提 了。放棄版權,會讓作者活得更好。