顯示具有 debian 標籤的文章。 顯示所有文章
顯示具有 debian 標籤的文章。 顯示所有文章

2008年5月20日 星期二

Mac OS X Terminal tip

leopard terminal use xterm-color as default, but conflict with linux when ssh. The backspace act as delete(kill word at right not left). Mac OS hint provide a good solution, Copy /usr/share/terminfo/78/xterm-color on mac to ~/.terminfo/x/ on linux box. Not affect linux default setting. It saves my emacs in screen environment :D

 
 

2008年4月5日 星期六

debian package hyperlink

If writing <a href=”apt:package_name”>package_name</a> in html, On click the hyperlink, debian will install it.

2008年2月10日 星期日

vim tab 功能

今天逛 Cornelius 時偶然發現 Vim tab 的功能,是 7.0 開始加入的新功能,使用感覺相當方便,基本用法如下:
:tabe filename 在新標籤頁打開一個檔案
:tabc 關閉標籤頁
:tabo 關閉其他標籤頁
:tabn 下一個標籤頁 或是 gt, C-PageDown
:tabp 上一個標籤頁 或是 gT, C-PageUp
:tabr 第一個標籤頁
:tabl 最後一個標籤頁
:tabs 顯示所有標籤頁
:tabm [N] 移動到第N順位
還可以 :set tabline 來定義 tab 顯示方式

2008年2月7日 星期四

dos2unix

因為有個 js 檔是從 windows 上來的,要更換換行字尾,遍尋不到 dos2unix,這裡寫到和我一樣的遭遇,google 排名還滿前面,看來許多人都有同樣需求?需要的套件是 sysutils。

2008年1月6日 星期日

aptitude tutorial

aptitude 是 sarge 之後建議的套件管理器, etch 之後應該是預設的,同時支援指令介面和文字 cursor 介面,是基於 apt-get 的模式發展的,我想他是想解決 apt 相關指令太過繁瑣的問題吧,另外也加上了自動解除不被相依套件的功能,以及 mutt-like 正規式搜尋的支援,後者還頗為重要,我想這是使 .deb 系統領先 .rpm 系統的關鍵(註:yum 管理器可以支援 shell 的 pattern 查詢,apt-cache 不支援任何 pattern),他也相容 dselect,可以說把 debian 之前的所有套件管理方式都包含進來,使用 aptitude 也一段時間了,不過最近才弄清楚他的特性。

Review

首先,回顧一下 apt 套件管理器運作的方法,這在 aptitude 中也是一樣的,利用 /etc/apt/source.list 內指定的套件庫來源,aptitude 可以取得這些伺服器上準備好的套件列表,當然是有註記相依性在裡面,使用者只要指定要安裝的套件,aptitude 便會下載所有相依套件,交給 dpkg 解壓縮,配置到正確位置,和 apt 不同的是 aptitude 會將未被指定安裝,但相依性上需要而安裝的套件標記一個 A (Append),表示是個附加套件,當使用者移除當初指定安裝的套件時,如果附加套件沒有被其他套件相依,aptitude 便會移除他。

Interactive Interface

接下來來實際使用一下,先看比較簡單的互動式介面,在 shell 下直接輸入 aptitude 就可以得到文字 cursor 的介面。

這裡使用了樹狀的分類,主分類分成七個,只要用方向鍵移動就可以瀏覽套件庫:
1.資安更新 security update:這裡列出已經安裝且有更新的套件
2.新套件 new package:列出這次套件庫中的新套件,也就是之前不曾出現過的套件,按下 f 會將這些套件歸類為已知而不再出現在這裡,直到下次有新增套件才會羅列在此
3.已安裝套件 installed package:列出已經安裝的套件,而且都已經是最新版的
4.未安裝套件 not installed package:列出還未安裝的套件
5.過期的和自行建立的套件 obsolete and locally created packages:已安裝的套件但沒有出現在套件庫的
6.虛擬套件 virtual package:虛擬套件指的是一個邏輯上的套件名稱,這些套件實際上會由其他套件提供,例如 mail-transport-agent 由 postfix, sendmail, exim 來提供
7.作業 task:有點類似 deselect,利用預定義的方式安裝特定任務套件,還可以利用 .aptitude 檔案對任務進行瀏覽和安裝

文字 cursor 介面使用方式非常直覺,進入後第一件是就是按下 u 來更新套件庫資訊,利用 Ctrl-t 來選擇上方選單標定套件要進行的動作,最後按下 g 就可以得到想要的效果,如果嫌太麻煩,選單旁邊還有標示快速鍵,其中有許多快速鍵是支援 vi 模式的,例如按下 / 就可查詢,查詢完按 n 可以跳到下一個符合項目,上下方向鍵也是,其中最重要的當然是標定哪些套件要安裝/移除的快速鍵,分別是 + 和 - ,標定好狀態後按下 g,就會執行更動。常用的快速鍵列表有:

F10:和 Ctrl-t 一樣顯示 menu
Enter 觀看套件內容
q 離開這個頁面,在主頁面按下會離開 aptitude
?:幫助頁面
f:清除新套件標記,也就是將新套件這個分類內的套件都標示為已知的套件
u:更新套件庫資訊

/ 搜尋
\ 反向搜尋 (這項在 debian reference 內寫錯)

g 執行所有套件異動
+ 將套件標記為新安裝或更新
- 將套件標記為要移除,此選項會保留組態檔
_ 將套件標記為清除,包含組態檔也刪除
= 將套件標記為固定
: 在此次執行期間鎖定該套件

U 將所有可升級套件標記為升級
C 觀看套件變更紀錄
L 將套件標示為重新安裝
R 將套件標示為重新配置


Command Line Interface

不過對於習慣在文字介面下過活的人,上述方法未免太痛苦了:D,aptitude 提供的強大 command line,可以讓你更快速達到目的,而且和 apt 系列指令基本上相容,具官方說法,aptitude 和 apt-get 管理不同資料庫來維護相依性,實際上使用,apt-get 和 aptitude 可以看到彼此安裝的套件。

aptitude 的命令形式為 aptitude action [argument],如 aptitude update,使用 update 這個 action 指示更新最近套件列表,可用的 action 為:

update 從來源處更新套件列表
upgrade 更新所有資安更新
dist-upgrade 更新所有版本更新

search pattern1 [pattern2...] 搜尋滿足樣式的套件
show package1 [package2...] 顯示套件資訊
changelog 顯示套件更改紀錄

install package1 [package2...] 安裝套件
reinstall package1 [package2...] 再次安裝套件
remove package1 [package2...] 移除套件
purge package1 [package2...] 清除套件

download 下載套件的 .deb 檔案
clean 刪除已下載的套件檔案
autoclean 刪除舊的已下載的套件檔案

hold 將套件標示為保持狀態
unhold 取消對一套件的保持命令

markauto 將套件標記為自動安裝
unmarkauto 將套件標記為手動安裝

forbid-version 禁止升級特定的套件版本
forget-new 將新套件辨識為已知套件

可用的 argument 請自行參閱 aptitude -h 所顯示的內容,可最為命令時的輔助用。

另外在搜尋中有些判斷語句可以作為輔助
~ahold 代表標示為保持現狀的套件
~b 為損壞套件
~g 無用的套件
~c 未清除的套件
~n{text}名稱中含有{text}的套件
~d{text} 描述中含有{text}的套件
~m{maintainer} 由指定維護者維護的套件
~V{version} 版本號{version}的套件

這在清潔系統時非常有用,例如,可以下

# aptitude purge ~g

這樣的命令,就會清除系統內所有無用的套件,這個功能在 deborphan 套件內也有提供且更為強大,但 aptitude 這樣的整合提供了很高的便利性。

文字介面的彈性不只於此,在互動式介面中可以用的標記這裡全都可以用,例如,可以下這樣的命令

# aptitude install A+ B- C_ D=

這樣便代表了安裝A,移除B,清除C,保持D,僅用一行便可以完成。

Tag Definition

無論利用 aptitude 瀏覽套件庫或是使用文字介面查詢,可以看到每個套件前面標示有一些 tag,標示套件目前的狀況或種類:
p 已清除或未安裝的
v 虛擬套件
B 損壞
u 已由 dpkg 解開
C 配置到一半的的
H 安裝到一半的的
c 移除 (remove) 但尚未清除 (purge) 組態的
i 已經安裝的
E 內部錯誤的

moo


OK,寫程式總是要來點樂趣,可是寫這種套件管理程式哪有什麼樂趣可言,又是正規式又是相依性的,那...作者到底在哪裡找樂趣呢?如果你仔細瞧瞧 aptitude -h 所顯示的幫助頁面,會發現在最後一行有個 "這個 aptitude 沒有超級牛力 (This aptitude does not have Super Cow Powers.)",如果你有用過 apt-get,那還會發現 apt-get -h 所顯示的幫助頁面最後一行有個 "這個 apt 有著超級牛力 (This APT has Super Cow Powers.)",什麼是超級牛力呢?嘿嘿,超級牛力是 debian 系統中一股神秘的力量喔~。請試著鍵入

# aptitude moo

有東西嗎?那...再多加個 -v 進去看看。
哈哈,你肚子痛了嗎?那...再多加幾個 v 看看XD。

Reference Document


[1] aptitude 簡明手冊
[2] debian reference
[3] aptitude user manual
第[2],[3]項在 debian 上分別為 debian-reference-zh-tw, aptitude-doc-en 這兩個套件

後記


寫這篇大概寫了我五六個小時不只,剛開始寫真的沒想到會寫這麼久阿。我可以了解 Rails 聖經作者 Dave Thomas 說 "我每寫一本書,就發誓這是最後一本了" 的心情:D

2008年1月5日 星期六

debian 上的 apache2 manual

適才偶然發現了 debian 上的一個 apache 小秘密,還頗有趣的。

事實上,debian 上的軟體很多都有提供 xxx-doc 這樣的文件套件,安裝位置都在 /usr/share/doc/ 底下,apache2 也不例外,預設上 /etc/apache2/site-available/default 這個 site configure file 是有 alias /doc /usr/share/doc 這樣的配置,所以雖然我有裝了apache2-doc,一直以來我也都是連到 http://mymachine/doc/ 來看的。不過 apache2-doc 提供的 html doc 就是特別奇怪,連結都連結不好,所以我都會重新配置檔案,copy 一份 en 的到特定資料夾,這樣才會比較正常。

但沒想到這份文件其實提供了一個 configure 在 /etc/apache/conf.d/apache2-doc,cat 一下這個檔案,會發現裡面寫好了 /manual 這個 alias 並且做了一些 redirection 來符合文件內的超連結。所以其實連到 http://mymachine/manual/ 就可以正常觀看。

我只能說......真是服了XD。

2007年12月29日 星期六

gem update on debian

日前升級了 debian 上的 gem,隨即發生無法使用的狀況,檢查之後發現,debian 內建的 rubygems 套件安裝位置在 /var/lib/gems/,而gem 原生的安裝位置在 /usr/lib/ruby/gems/,因此升級後會發生找不到正確 gems 的狀況。

因為 gems 的目錄配置方式不符合 FHS,debian 在 3.x 就一直遲遲不發佈 rubygems 套件,即使目前 4.x 發佈了,在目錄的相容性上問題也很多。

目前看來要安裝 gems 又不用通過官方安裝包條件的最好方法就是,先安裝內建的 rubygems,執行 gem update --system 之後,會得到一個 /usr/bin/gem1.8,然後移除 rubygems 和 libgems-ruby1.8,最後將 /usr/bin/gem1.8 重新命名成 /usr/bin/gem,就可以得到原生的 gem。

2007年11月27日 星期二

example ruby

今天在我的 Debian 上面裝了 ruby 來嚐鮮,感覺相當有趣,就如同作者所希望的 ruby 這顆紅寶石給人輕快簡單的感覺,相較於 perl 這個穩重的珍珠,各有所擅。

要建制一個 Rail application 的環境需要下的指令有
sudo aptitude install ruby ri rdoc irb rubygem

這還會自動安裝 libreadline 等等 lib
其中
  • ri 可以用來查詢 module
  • irb 是 interactive ruby
  • rubygem 是 ruby 的 package management framework,安裝完後有 gem 指令可用
  • rdoc 可以用來生成 doc

然後再下
sudo gem install rails --include-dependencies

就可安裝 Rails,不過還未包含 Mongrel 伺服器,等等再研究須不需要現在安裝

2007年11月5日 星期一

/usr/share/doc

/usr/share/doc 下文章還真是豐富,網海挖寶,卻不知身在寶山中,把 /etc/apache2/site-enabled/000-default 中 /usr/share/doc 允許網域開放就可以很方便的到處閱讀了。

2007年10月31日 星期三

etch 下 tasksel 的相依套件

aptitude show 了一下,tasksel 不知不覺偷偷地以 aptitude 為後端了

Depends: debconf (>= 0.5) | debconf-2.0, debconf (>= 1.5.5) | cdebconf (>= 0.106), liblocale-gettext-perl, aptitude (>= 0.2.15-1), tasksel-data

看來以後一切都會以 aptitude 為底了

2007年10月25日 星期四

debian 下使用 make menuconfig 需要套件

目前測試需要套件為

gcc, binutils, modutils, libncurses5, libncurses5-dev

這樣才能啟動 make menuconfig

其中 gcc, binutils 可置換成 build-essential

不曉得是不是可以更少 :p,下次測看看

2007年10月19日 星期五

ADSL 安裝 Debian Etch

參考 Debian 安裝手冊

http://www.debian.org/releases/stable/i386/apds05.html.zh_CN

Only one line --- boot: modules=ppp-udeb

真是越來越懶了阿,Etch 之後 Debian 已經完全進入懶人包狀態,要怎麼懶就怎麼懶XD

2007年10月14日 星期日

debian 安裝手冊

今天無意間翻到這個

http://d-i.alioth.debian.org/manual/zh_TW.i386/index.html

debian 安裝手冊阿,不過也翻得有點不完全

2007年8月14日 星期二

架設 svn server

今天為了安裝老闆的 trac plugin,順便就架了一個 svn server 來看看,晚點 ccca 的 dormnet 專案可能也會用到,正好來試用一番。

多虧了這兩篇詳盡的文章,好像還不太難搞定,接下來只要 svk 再熟一點,我像就可以真的自己用他來開發專案了。

Tsung's Blog: Debian Linux 架設 Subversion(SVN)
Asho's Blog: 在Debian下安裝SVN(subversion)

一個暑假下來,學到了一些東西,雖不算多,也算有了進展,不過不甚了解,何以老闆會叫我做這些我不太擅長的東西呢?這樣對他來說付錢不見得比較划算呀!

2007年8月3日 星期五

debian kernel handbook

新版的 kernel handbook

http://kernel-handbook.alioth.debian.org/

下次有空來 trace 一下
倒是還沒有在 debian 上編譯核心過 XD

2007年7月27日 星期五

萬惡的 perl GD 和 Authen::Captcha module

原來是需要 libgd2-xpm-dev 這個套件,快記下來免得忘記了

2007年7月22日 星期日

logrotate 問題再起

繼上次 debian 4.0r0 的 logrotate 壓縮了 apache 的日誌後,她又出問題了,安裝了 mysql 後 crond 每隔幾天就會寄出一封信警告我它沒辦法執行 logrotate,信的內容長成這樣:
/etc/cron.daily/logrotate:
error: error running shared postrotate script for /var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log
run-parts: /etc/cron.daily/logrotate exited with return code 1

google 後暫時也找不出解法,懷疑是目錄權限的問題造成的,雖然 /etc/cron.daily/ 下的 script 應該是 root 在執行才對,暫時先把 /var/log/mysql 的權限改成所有人皆可執行,如果還是不行再說吧。

2007年7月19日 星期四

install svk on debian

如果要從 cpan 安裝的話會發現缺少 SVN::Core,但並不是 cpan 裡面搜尋到的那個 SVN::Core,而是要安裝附屬於 SVN 的 library,在 debian 裡面分別是 libsvn-perl,libsvn-simple-perl,libsvn-mirror-perl,用 aptitude install 安裝三個套件後在進入 cpan command line 下 install SVK,就會順利完成安裝。

也可以用套件安裝,會簡單很多,一行 aptitude install svk 就結束了。不過我在用 cpan 安裝完後才發現有這個套件,來不及了:p,不過從 cpan 裝的好處是更新快,不用等 debian打包新的套件,也是不錯的選擇。

以目前 aptitude show svk 的內容來看該套件只有到 1.08-2 版,cpan 上的則已經到 2.0.0.1,如果兩個版號是相對應的,那麼 cpan 上的版本看來快很多了:)。

2007年7月14日 星期六

修復留言板

今天終於把光電營網站的留言板修復了,因為對 debian 的套件名稱還不太熟,一直找不到 GD lib 的套件,也就不能用 cpan 安裝 GD 和 Authen::Captcha,花了一點時間終於找到要安裝 libgd2-xpm 這個套件,這樣會同時支援 xpm,而且這套件會把 cpan 裡 GD 需要的 libjpeg、libfreetype、libpng、zlib、libxpm 都一起安裝了,這樣就省去很多麻煩,接下來就可以進 cpan 一舉把 GD 和 Authen::Captcha 編譯完成,到這裡就大功告成,等過幾天再來重寫那隻留言板。

2007年6月23日 星期六

debian 下 webalizer 日誌問題

在 Debian 4.0r0 下處理掉 webalizer 編碼問題後,後來又發現日誌分析只能維持幾天,檢查了一下發現 /var/log/apache2/ 下的舊日誌都被壓縮了,當然沒辦法分析,要更改循環日誌機制才能處理掉,方法如下;

$ sudo vi /etc/logrotate.d/apache2

將 weekly 註解掉改成 monthly,這樣就會一個月才換一次日誌,再把 compress 註解掉,避免壓縮舊日誌檔,就可儲存離開。

不過舊日誌就這樣沒了...