From Newzilla Wiki
這裡將會作為 FreeBSD 麻瓜教育的 Tips
環境設定
- /usr/share/examples 和 /usr/local/share/examples 常有各種程式的設定檔範例,不看可惜唷!
ports 管理
一般
- 沒事就去 /usr/ports 底下更新 ports:
make update
make fetchindex
- 建議裝 portupgrade 來管理,在上述動作做完之後:
portsdb -u
- 可以考慮把這些步驟放進 crontab 以定期更新。
- 養成好習慣,想要升級某 port 之前,先看看 /usr/ports/UPDATING 的說明。
- ports make install 國內篇: 如何讓自己的 /usr/ports/ make install 在國內搞定,不要沒事出國比賽呢?請記得修改 /etc/make.conf。從 /etc/defaults/make.conf 當中複製兩個完整的段落(#MASTER_SITE_BACKUP?= 與 #MASTER_SITE_OVERRIDE?=),unmark 它們,然後再將路徑改成國內 freebsd 伺服主機的路徑。例如:ftp://ftp.tw.freebsd.org/pub/distfiles/${DIST-SUBDIR}/ ,這樣應該就可以免出國了。[((ilya))]
- ports/misc/my-workstation: 一般人都會有自已常用到的應用程式(對我來說就是 rxvt,mlterm,emacs,gimp,gqview,mplayer,mpg123),每次都要到不同的 ports 目錄去一個個 make install 也很花精神。可以參考 ports/misc/instant-workstation ,自已做一份自已的的 meta ports。[gugod]
portupgrade
- sysutils/portupgrade: 這是用來管理 ports 套件的好東西. 我的習慣是先以 portupgrade -nv \"*\" | ports 對所有的 ports 檢查一遍, 然後以 grep -i upgrading ports | less 來看有哪些要更新, 再手動更新. 有些像是 OpenOffice.org 這種肯定編不起來的, 自然就略過不編. 一般的更新是以 portupgrade -v ports_name 來更新, 或是 portupgrade -v \"p5-*\" 使用萬用字元, 可將所有 Perl 模組都更新. [plasma]
- portupgrade part II: 像是要從 FreeBSD 系統內建的 Perl 5, 要換到 Perl 5.6 或 Perl 5.8 時, 全部的 p5-* 模組必須重編, 才能繼續使用. 在升級完 ports 裡的 perl 後 (請記得使用 use.perl port), 可以使用 portupgrade -Ofv \"p5-*\" 將所有己安裝的 Perl 模組強制重新安裝一遍. 其它不是以 p5- 開頭的, 就只能麻煩看官自己動手找出來了. [plasma] 或著學別人這樣用 portupgrade -Ofv `pkg_info -R perl-5.8.5 |tail +4; /usr/local/lib/perl5/site_perl/5.8.5 -type f -print0 | xargs -0 pkg_which -fv | sed -e '/: ?/d' -e 's/.*: //' | sort -u` 來大翻搜也行。(注意你的perl版本可能不是5.8.5...改就是了) [Keith]
- portupgrade part III: 有些程式有分 stable 與 devel 兩種版本. 要是本來安裝的是 stable, 但是後來想用 devel 版的, 要如何處理? 以 mozilla 為例, 我們可以使用 portupgrade -fv -o www/mozilla-devel mozilla, 就可以改換成 mozilla-devel. [plasma]
- portupgrade part IV: 安裝新的套件時 (例如 devel/mozilla), 可以下 portupgrade -N devel/mozilla. [plasma]
- portupgrade part V: 其實很簡單,可是可能被忽略。portupgrade -m 可以讓你指定 Make 時候的參數 [hcchien]
- portupgrade part VI: 常常很多時候,其實 ports 裡面的東西都有 binary 了,那你就可以用 portupgrade -P 來要求使用 package。
- 如果 portupgrade 執行失敗,出現 ruby 的 coredump 什麼的,多半是 /var/db/pkg/pkgdb.db 壞了,砍掉之後 portsdb -u 重建吧!
portdowngrade
- 如果新版反而出了問題,至少還可以降級還原回去,以 p5-test-MockObject 為例,我想從 1.01 降回 1.00:
portdowngrade p5-Test-MockObject -s :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
UTF-8
- 如果 /usr/share/locale 裡面沒有 *.UTF-8,請安裝 misc/utf8locale。
Perl 模組
- 如何移除已安裝的 CPAN Module:pkg_delete /bsdpan/*
- 如何自行安裝 CPAN Module:wget,perl Makefile.PL(產生 make file),make install clean 即可。
- 建議使用 CPANPLUS 取代 CPAN。最大的好處是可以找到方法拿掉那些礙眼的 bsdpan-*。怎麼說呢?因為沒辦法用 portupgrade 來維誰 bsdpan-*,所以乾脆 rm -rf /var/db/pkg/bsdpan-* (可不是 pkg_delete 喔!),之後想要移除 Perl 模組,就改用 CPANPLUS 的 uninstall 功能吧!
- RTx-Foundry 與某些 mod_perl2 相關模組還不相容,請用以下版本:
- mod_perl2-1.99r18_1
- p5-CGI.pm-3.07,1
- p5-HTML-Mason-1.28_2
- p5-libapreq2-2.04r03
Subversion
- 建議不要再使用 BerkeleyDB 作為 repository 的儲存格式。編譯時加入 WITHOUT_BDB=yes 這個參數吧!
MySQL
- 最佳化
- 編譯時加入 BUILD_STATIC=yes 和 BUILD_OPTIMIZED=yes 這兩個參數
- 參考 /usr/local/share/mysql/my-*.cnf ,按照機器的記憶體大小決定要使用那一個,修改之後複製為 /etc/my.cnf 。
- 預設位置在 /var/db/mysql 常會碰到空間不足的情況,要嘛就下參數改路徑,但這樣你升級時就要記得做這件事;像我這種記性不好的人,就 ln 一下或是 mount_nullfs 一下吧!
- 字元集
- 編譯時加入 WITH_XCHARSET=all 這個參數
Apache
- VirtualHost 的設定,建議分離出來,然後在 /usr/local/etc/apache/httpd.conf 裡使用 Include 載入。例如,把 virtual host 的設定檔寫在 /usr/local/etc/apache/vhosts/foo.conf 裡,然後在 httpd.conf 裡寫
Include /usr/local/etc/apache/vhosts/*.conf
X Window
- 別再用 XFree86 了,如果你的 FreeBSD 版本不是最新的,檢查一下 /etc/make.conf ,有沒有這一行的話就加上去:
X_WINDOW_SYSTEM=xorg
- kldload: 其實有些東西如果不編在 kernel,也可以利用 kldload 完成。例如我的 sound card,是用 snd_ich 這個 module,所以就可以直接 load 這個檔案。只是比較簡單的方式就是在 /boot/loader.conf 加上 snd_ich_load=\"YES\",以後開機就可以直接 load 進來,也就可以愉快的播放音樂了! :) ....... [hcchien]
- xfontsel: 其實很多地方都會用到字型的設定,尤其當你想把 BSD 當成日常生活的機器時。有了 Xwindow,人生才是彩色的。但是你到底有甚麼字型可以用? 到怎麼設定? 這實在都有點小複雜。不過其實有 xcontsel 這個工具可以使用。你只要在 terminal 下打 xfontsel,就會有一個小視窗。裡面會有你現在可以用的字型,還包括這個字型的相關參數。當你選好之後就選起來,系統會把設定放在剪貼簿裡,你再到設定檔中,貼上這個設定就可以了! ........ [hcchien]
- toshiba 蝴蝶鍵: 這個檔案是讓 FreeBSD 進入你的生活很重要的一環 (不像把 FreeBSD 當 Server,你只需要 putty 或其他 ssh client)。現在很多時候,你只要把 XFree86 裝起來,跑 xf86cfg 就可以幫你設好大部份的東西。再不濟,就上網找其他人的 config 檔案,直接拿來用就可以了。我現在用的 Toshiba dynabook SS/S1 因為有神奇的蝴蝶鍵,所以設定上比較麻煩一點, 要在 mouse 的 device 設定中加上 Option \"Buttons\" \"5\",然後設定 Optio \"Emulate3Buttons\"。在 gugod 的 L2 上還有 Option \"Emulate3Timeout\" \"50\",不過在我的檔案加上這行之後,蝴蝶鍵就爛了。........ [hcchien]
- xdm: 當你裝完機,設定好 Xwindow 之後,也許會去 /etc/ttys 中修改設定,把 xdm 啟動。讓以後電腦開機就會跑去開 Xwindow。可是我卻遇過 Xwindow 設定正常,用 startx 跑起來非常順利,一進 xdm 就進入奇怪的 refresh 狀況。經過測試,發現要在 XFree86Config 裡面的 Screen section 裡面加上 DefaultDepth 才能正常運作。 ......... [hcchien]
- gdm: Gnome的login畫面 ... 記得要選預設語言!如果要換gdm的面板的話執行 gdmsetup 就可以選擇了 [Thieftwo]
- 既然想把 FreeBSD 當 desktop,那麼很多人都會想玩 terminal 的透底,也就是讓底圖呈現在 terminal 上。就以我常用的 rxvt 來說,其實只需要在 .Xdefault 裡面關於 rxvt 的部份用 rxvt.inheritPixmap: true 來進行就可以了! .....[hcchien] 透明底色其實不是那麼的有用 .... [mjhsieh]我覺得一點用都沒有…[zonble] 用Eterm吧,可以調透明的程度,rxvt只能調有或沒有....[csardas]
- rxvt.inheritPixmap: true 可以放在 ~/.Xresources, 但跟 .Xdefaults 同樣的會有必須重跑 X11 的困擾,解決方法是改完後用 xrdb -merge ~/.Xresources 就可以了,此法在 Apple X11.app 也管用。[mjhsieh]
- cdcontrol: 要聽 audio-cd 嗎?原來什麼 xmms 等軟體都不用安裝,只需要系統內建的 cdcontrol 就成了。把 audio-cd 塞進你的光碟機,然後下 cdcontrol -f device (也就是你的光碟機所在,如 /dev/acd0c) 即可。很快樂吧。挑前後軌等動作也都可以指令解決哦。另外,如果嫌聲音實在太小的話,也可以下 mixer vol 100 的指令,轟死自己的耳朵。 (以上其實都是 gugod 指導的) [deadhead] 補充:mixer 指令調的是「音效卡」的音量,但 cdcontrol 在放 cd 時並不會經過音效卡,它是直接下指令給 CDROM 的 (CDROM 都會有「Play」的功能),所以不會經過音效卡,除非在硬體上它們有訊號線接起來。所以音量的調整請記得用 cdcontrol 的指令去調[gugod]
- phoenix menu: 前一陣子因為 phoenix 的「斜體字」讓人相當困擾,終於在某 package upgrade 之後解決,但是隨之而來的卻是 phoenix menu 的字全部擠在一團,雖然沒有甚麼影響,但是看了實在礙眼。最後終於發現設定原來是在 ~/.gtkrc。所以把字型部份改成 fontset = \"-*-arial unicode ms-*-r-*-*-12-*-*-*-*-*-iso8859-1, -*-arial unicode ms-*-*-*-*-12-*-*-*-*-*-big5-*\" } 之後就有了漂亮的 menu 了。 [((hcchien))]