發表文章

目前顯示的是有「Debian」標籤的文章

如何在 Debian 建置 NodeJS + Express 環境

截至目前為止,只有 Debian Sid(unstable) 提供 Nodejs 和 Express 套件可讓使用者直接安裝。但是,在 Server 的環境之下,一般都使用 Debian 5.0/6.0 (Lenny/Squeeze) 穩定版的系統,因此沒有套件可以直接安裝,唯一的方法就是自己下載編譯 Nodejs。還好自己手動安裝的過程並不困難,幾個步驟就可以完成。 安裝 Nodejs 更新系統並安裝編譯 Nodejs 所需的套件: sudo apt-get update sudo apt-get install git-core curl build-essential openssl libssl-dev 從 Git Repository 下載 Nodejs 原始碼: git clone https://github.com/joyent/node.git 進入 Nodejs 原始碼目錄,並切選擇我們要的版本(截至本文,0.6.6 是最新版): cd node git checkout v0.6.6 # Note: 可以使用 git tag 看到 Nodejs 所有的版本列表 編譯並安裝 Nodejs (預設會裝到 /usr/local/lib/node): ./configure make sudo make install 如果安裝過程中沒有任何問題,就可以使用 node 指令查看 Nodejs 的版本了: node -v 手動設定公用的 Nodejs Module 路徑: echo "NODE_PATH=/usr/local/lib/node_modules" >> .bashrc # Note: 如果想讓所有 Server 上的 user 都套用設定,可以放在 /etc/profile 安裝 Express Web Framework 使用 npm 安裝 express(使用 -g 選項會安裝到公用的目錄 /usr/local/lib/node_modules): sudo npm install express -g Express 通常預設使用 jade template engine,也需要手動安裝: sudo npm install jade -g 安裝完...

ibus-chewing 單純注音模式 - OSDC.tw 2011 Lightening Talk

為了注音輸入法,您是否長久以來也仍在使用 SCIM?每次裝好 Linux 的第一件事就是刪除系統預設輸入法,我們彷彿是外星人一般,一點都沒享有人權。感謝 OSDC.tw 2011(活動期間 3/26 ~ 3/27) 提供好吃的食物和舒適的場地,在活動這兩天筆者花了一點功夫做 patch,修掉了 ibus-chewing 單純注音模式的一些 Bugs,現在基本上 ibus-chewing 單純注音模式已經可用,我們可以丟掉 SCIM + 爛注音 Table 了! 以下是 Lightening Talk 的簡報檔: 後記 由於簡報格式的關係,暫時無法轉成 PDF 輸入,所以目前使用錄影的方式公開,待轉檔程式開發完成再來釋出 PDF 檔。

用 apt-get 節省系統開發和評估的時間

使用 Debian 系統(包括 Ubuntu)的人,應該早就熟於使用 apt-get 去安裝、移除或更新系統,其無痛和方便的操作,帶給 Debian 家族很大的優勢。而對於研發人員而言,我們比較在乎的是如何取得各套件的程式碼,更在乎的是能在『不出錯』的情況下將取得的程式碼完整編譯通過。 你可能碰到過一種情況,辛辛苦苦從各程式的專案首頁去抓回 Source Code 後,卻怎麼也無法在自己的電腦上編譯,單純點的情況是相依性問題,複雜點則是在不同系統上的相容問題,更誇張的是根本不清楚下載回來的 Source Code 是不是『真的沒問題』。相信很多人早已浪費過不少生命在這些麻煩問題上,導致開發效率低落,不過以上問題,卻在 Debian 裡相當容易解決,因為 apt-get 提供了一系列選項,讓我們輕易從下載原始碼、解決相依性問題、到確保通過編譯一次搞定。 # 下載套件原始程式碼: apt-get source <package> # 安裝該套件編譯過程必要的東西 apt-get build-dep <package> 從 apt-get 下載回來的程式碼,會在自動解開時將該 Package Maintainer 所做的 Patch 一併打進程式碼,以此方法解決系統相容性問題,這邊用 lxterminal package 為例,粗字部份就是在解壓縮時上的 patch: $ apt-get source lxterminal 正在讀取套件清單... 完成 正在重建相依關係 正在讀取狀態資料... 完成 NOTICE: 'lxterminal' packaging is maintained in the 'Git' version control system at: git://git.debian.org/git/collab-maint/lxterminal.git 需要下載 293kB 的原始套件檔。 下載:1 http://ftp.tw.debian.org/debian/ sid/main lxterminal 0.1.8-2 (dsc) [1,372B] 下載:2 http://ftp.tw.debian.org/debian/ sid/main lxterminal 0....

Debian Sid nfs-kernel-server 1.2.1-1 重大問題

對於長期開發 Embedded System 的人,Debian 真的是太方便了,可以毫不費力的開發多種平台,又可隨自己高興而輕鬆升級該平台上的各種套件,不再只能死板板停留在該平台的官方 BSP 和 Toolchian(有些 Toolchain 充滿了 Bugs,常讓人求生不得求死不能),完全跳出過去 Embedded System 軟體版本總是太老舊的框框。無論缺什麼東西,輕鬆的幾行 apt-cross 指令,就可以確保 corss-compile 的順利,甚至,新版的 GCC compiler 都任君選用。 開發 Embedded System,最常用到的就是 NFS,在最近的 Debian Sid 中,套件『 nfs-kernel-server 1.2.1-1 』有重大問題(Grave Bug),會讓 NFS 無法順利啟動: $ /etc/init.d/nfs-kernel-server start Exporting directories for NFS kernel daemon.... Starting NFS kernel daemon: nfsd mountd failed! 目前已有人回報此 Bug 至官方(可參閱: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562910 ),在尚無解的情況下,可先 Downgrade 先恢復 NFS 的功能,畢竟工作可不能停: $ wget http://ftp.tw.debian.org/debian/pool/main/n/nfs-utils/nfs-kernel-server_1.2.0-4.1_i386.deb $ dpkg -i nfs-kernel-server_1.2.0-4.1_i386.deb 該版本是從 Debian Testing 抓回來的舊版套件,在替換後 NFS 就可恢復正常運作。

心得分享 - 重灌 100 次也會很開心的 Linux

圖片
這次受 [ ICOS2009(International Conference on Open Source) ] 之邀,很榮幸於研討會當天給予了一場 Talk - 『重灌 100 次也會很開心的 Linux』,該議程是將最近手頭正在做的 Open Source Project 做一次具體而微的整理,全程以生命苦短為出發點,用 Linux Distribution 引領人生意義,探討人性之苦痛。 議程簡報可於此下載: http://people.linux.org.tw/~fred/slides/100linux.pdf [PDF] 粗略估計,多數電腦依賴者的一生之中,將有超過一年以上之時間不眠不休浪費在重灌以及更新系統。但在取人錢財的系統廠商不供應免費生前契約的前提之下,何苦賠了性命與之軟體生命周期博鬥?因此,藉由實作一個新的 Linux Distribution,以確保三至五分鐘之內重灌一套全功能的 Linux 系統,便是一個能造福人群的出發點。 有感,Mandice Project 便是在人之生命與軟體壽命之自我衝突中被建構起來的 Linux Distribution,以 Emdebian Grip 為基礎,其相容於 Ubuntu 與 Debian,僅 700MB 之硬碟使用大小而不縮減任何功能,忠於使用者以追求更漂亮且簡單易用的介面,且永遠不必再做大版本號的系統更新,以終生線上更新機制,徹底擺脫『六個月,版本加一號,系統死一次』之現代 Linux 摩爾定律的悲哀。 Mandice Screenshots: 整合 Google Chrome 之展示 Support Adobe Flash Player (展示開心農場) MSN 即時通訊軟體 網路管理 內建所有目前 Linux 所支援的驅動程式(展示 3D 運算) 多媒體功能(展示 PPStream) OpenOffice 文書處理 此外,更因為相容於 Ubuntu,有許多軟體可以直接安裝,操作如使用 Ubuntu 一般。使用者不必重新適應新的環境。而 Mandice 將 100% 相容於 Debian Sid,可以完全取用 Debian 體系下的所有支援。 後記 原計劃於短暫之議程時間內當場表演安裝一百次 Mandice Linux,但因技術上出了問題而作罷,更完整的 Mandice 安裝程式將於近期內釋出...

如何回報 Debian Bug?

Debian 對 e-mail 的依賴度相當高,所以大多數 Debian 社群的協作,沒有什麼 Web-based 的系統,一切都使用 e-mail 處理居多,當然,bug report 也是使用 e-mail 來處裡。雖然大家的信件都寄到同一個信箱,但只要遵照格式來寫信,Debian 有一套自動處理的機制,依然會將信轉到負責的 Debian 維護者(Maintainer)手中。至於格式細節可以閱讀官方文件『 How to report a bug in Debian using reportbug 』,內文中有些範例可以參考。 雖然官方文件洋洋灑灑寫了很多篇幅,實際上,一個最簡單的 bug report 信件大致長這個樣子(以昨天回報的 totem-gstreamer bug 為例): Package: totem-gstreamer Version: 2.26.3-1 The core of totem-gstreamer is very simple and small, package size is about 2,056K without compression. But if we'd like to install totem-gstreamer successfully, it must use more than 24MB of disk space. The problem is that gnome-icon-theme which is dependency of totem-gstreamer needs 22MB disk space at least, and also gnome-icon-theme cannot be replaced with other icons packages for totem-gstreamer. Actually, the most icons in the gnome-icon-theme are not needed by totem. It should be replaceable and allows us to use other icon theme package. 然後可以將信寄到 Debian Bug Tracking System <submit@bugs.de...

Emdebian - 快速建構你的嵌入式系統

圖片
毫無疑問,目前『 Debian 』已經成為當今最龐大的 Linux 體系之一,包括目前最為人所知的 Ubuntu,其表皮之下都是 Debian 的骨。Debian 支援超過十一種以上的硬體架構,包括了 i386/IA-32、m68k、sparc、Alpha、PowerPC、ARM、MIPS、hppa、IA-64、s390、AMD64,還有更多計劃支援但仍在移植中的平台,如:ppc64、SuperH、armeb、m32r、AVR32等。要用 Debian 打造任何一種硬體平台上的作業系統,可說是輕而易舉,甚至不必撰寫一行 Code 或學習使用 cross-compiler,只要會用 debootstrap 和 apt-get。 但是,除了傳統 x86 和幾個特定平台外,大多數的硬體架構都是用於嵌入式應用,其硬體資源相對較低,若將 x86 完整的系統移植過去,似乎沒有多大價值,軟體甚至可能因硬體限制(CPU、Memory、Storage)而無法使用。 因此,『 Emdebian (Embedded Debian) 』計畫誕生,該計畫首要目標是建構最小化的 Debian System,更進一步因應需求而打造出最輕量的嵌入式系統,並保留 Debian 的套件管理結構和特性。目前, Emdebian 分兩種版本: Emdebian Grip - A smaller Debian-compatible distro 一個小型的 Debian distro,但完全與官方 Debian 保持相容性,這意味著仍然可以在這系統上直接安裝官方 Debian 的東西(包括 Stable、Unstable、Testing 等版本)。其改進了 apt 的工具程式,使基礎系統更輕量化,更進一步將許多套件重新打包,減少平時很少用到的系統文件和相依性。 目前 Grip 所支援的硬體平台有 arm, armel, i386, amd64, powerpc, mips, mipsel。 Emdebian Crush - An ultimately small, cross-built, Debian. 這是針對高要求嵌入式系統所特別開發的版本,為了能真正使用在嵌入式系統,引入了 Busybox 等輕量化的工具程式,捨棄許多原本 Debian 系統內的累贅。目前 Crush 只有支援 ARM 架構,且...

arm 和 armel 的差異

在 Debian 5.0 Lenny Release 後,出現了一個新的名詞『armel』,可以在許多 ARM toolchain packages 身上看到,而 armel 顧名思義就是針對 ARM Architecture 的實作,但與古老的『arm』最大不同在於『armel』的移植是新的 ARM EABI ,對一些新的 ARM processor 特性有著更好的實作改進和支援,像是更動 Floating point、Stack alignment 等部份。 此外,因為 armel 參照著新的 EABI Spec 去更良好支援一些新 ARM processor 的特性,對於選用 CPU 也有些考量和建議。尤其是 Thumb interworking 的 16-bits Thumb/32-bits ARM instructions 混用機制,就因為只有 ARMv4t 以上的處理器才有這樣的特性,所以就建議最少要使用 ARMv4t 以上的 Processor,也因為這樣, Debian 的 armel toochain 的 GCC 預設會編譯出目標為 armv4t 的程式。 順帶一提,『 emdebian (Emedded Debian) 』一個 Debian Linux 的 Embedded 版本計劃,因為以 Debian 5.0 Lenney 為基礎,因此也有了『armel』這新的支援。 更多新的 ARM EABI 細節和說明,可以在 Debian 的官方 Wiki 上找到解答: http://wiki.debian.org/ArmEabiPort

Why so serious? 不正經的重新包裝 deb

要好好的包個 Debian package 其實是一件大工程,除了注意事項能彙整成冊之外,如何好好設定 package 的相依性和說明文件更是一個不小的挑戰。所以,一個包得差勁的 Debian package,很有可能造成系統大亂,甚至讓系統承受不必要的額外負擔,這就是為什麼 Debian Maintainer 們會如此受人敬重的原因。 不過有的時候,我們並沒有要維護一個 project ,也沒有要上傳一個 package 到嚴肅的 Debian official repos,只是純粹想惡搞或是貪圖方便而包一個自用的 deb。我們也許不用、也不想顧慮太多細節,因為可能只是簡單的將現有的 package 拆開,加入幾個自定的檔案再包回去。這樣的需求,大致上可以這樣做: # 建立一個新資料夾 mkdir mydeb # 解開 package 的 DEBIAN 控制文件到新資料夾的 DEBIAN dpkg-deb -e mydeb.deb mydeb/DEBIAN # 解開 package 的檔案到新資料夾 dpkg-deb -x mydev.deb mydeb # 處理或惡搞完成以後再次包裝起來 dpkg-deb -b mydeb mydeb_new.deb 這樣修改和包裝 deb 非常的不正規,品質上也不合格,不過既然包出來的 package 只是自己私下用用,Why so serious?