portmaster

portmaster 是一套 FreeBSD 下的套件升級工具,已經用了一陣子... (參考二月時「portmaster」這篇文章)

這次從 portmaster -BDuw 換成 portmaster -BDtuw 了。

隨便舉個例子,以 cs-metaPort 為例,假設這個 port 有三個 dependency packages,分別為 cs-basicSoftware、cs-wwwSoftware、cs-securitySoftware,而這三個 dependency packages 下面又有一卡車的 dependency packages...

使用 portmaster -BDuw cs-metaPort 會先檢查 cs-{basicSoftware,wwwSoftware,securitySoftware} 是否有新版,如果只有 cs-basicSofteare 有新版,才會繼續遞迴下去...

但如果用 portmaster -BDtuw cs-metaPort,則是一開始會用 all-depends-list 列出所有的 packages 檢查。

可以依照不同的情況使用...

在 FreeBSD 上裝 FFmpeg

去年六月的時候搞了一個 FFmpeg ports (參考「FFmpeg 的 FreeBSD ports」),但是因為 x264 改 function call,所以那個 SVN 版本不能用了...

大概一個月前試著 checkout ffmpeg 新版下來更新,發現有錯誤訊息,因為當時忙就沒有試著找 bug,剛好這兩天有空,就花了一些時間 trace 問題,發現是沒有定義 __BSD_VISIBLE 的問題造成的,暫時先用 #define __BSD_VISIBLE 1 的方式解掉...

這次的版本是 r18864,把 libavdevice/bktr.clibavdevice/oss_audio.clibavformat/udp.c 三個檔案最前面加上上面說的 define 就會過了。

晚點有時間再把 port 整理出來,更新 http://wiki.gslin.org/ffmpeg 這邊...

MySQL 5.0 整合

MySQL 5.0 有分 community branch (奇數號,像是 5.0.77) 與 enterprise branch (偶數號,像是 5.0.78),現在兩者合併了:「The quiet end of the community-enterprise split」,bzr log 在這:「Merge community up to enterprise, thus ending the community-server
adventure.
」。

之後 MySQL 5.0 就不會分成 Community 版本與 Enterprise 版本,修 bug 的時候也只要注意一個版本就可以了。

用 XtraBackup 產生 slave

Percona 的 Vadim 示範如何用 XtraBackup 產生一份 slave 需要的資料:「Btw xtrabackup is not only backup..」。

方法是用 xtrabackup 將資料以 tar 格式輸出到 stdout,透過 pipe + ssh 直接寫入預定要當 slave 的 server,所以這個方法不用擔心原本的 master server 空間不足的問題。

WordPress exporter

之前在「WordPress 的 exporter」這篇提到 WordPress 的匯出程式很糟。最後我是直接把用不到的欄位用 preg_replace() 幹掉,避免 XML library 因為語法錯誤而無法匯入。

雖然暫時解決了,不過還是看看目前的進度,發現有計劃要以 XML library 改寫,但是沒人跳下去寫:「make export/import output valid xml and parse xml using simplexml」,這個計畫大概是遙遙無期... XD

FreeBSD 7.2-RELEASE

FreeBSD 7.2-RELEASE 在前幾天順利放出來了,正式的公告在「FreeBSD 7.2-RELEASE Announcement」這裡可以看到,與 FreeBSD 7.1 主要的差異在「FreeBSD 7.2-RELEASE Release Notes」可以查到。

對我最主要的差異應該是 amd64 平台上 kernel virtual address space 拉高到 6GB,用 FreeBSD ZFS 不需要再調整 vm 參數了,預設的大小就夠用。

不過,大概是太準時的關係,libc 有個蠻嚴重的 bug 沒有在 release 前被找到:(參考「FreeBSD 7.2-RELEASE Errata」)

[20090504] A lock handling error has been found in interaction between malloc(3) implementation and threading library. When a multi-threaded process calls the fork(2) system call in a thread and the malloc(3) function in another thread, it can cause a deadlock in the child process. An Errata Notice to fix this problem is planned after the release.

當一個 thread 在 fork(),另一個在 malloc(),產生出來的 child process 會 deadlock...

不曉得會不會如同 delphij & lwhsu 講的,出 7.2.1-RELEASE 修正這個 bug...

FreeBSD ZFS 自動產生 Snapshot 工具

FreeBSDZFS 可以用,最早的時是自己寫 script 產生 snapshot,並且自動 rotate,現在則是用 sysutils/zfs-snapshot-mgmt 做到...

設定檔是 YAML 格式,裡面的數字大多都是以分鐘為單位 (不是秒,曾經搞錯,過了一個禮拜才發現...),由於有 sample config 可以看,這邊就不提了。

除此以外要注意的是,在產生 snapshot 時是以 GMT 時間為準,但命名 snapshot name 時卻是以是以當地時間為準,所以可能會看到八個小時的差異 (如果系統有設定 timezone),基本上不用太在意。如果真的在意,可以用 offset 這個參數調整。

*BSD 出新版...

看到 lwhsuPlurk 上提到最近 *BSD 都在出新版,發現不只是 NetBSDOpenBSD,連 DragonFlyBSD 最近也出新版,而下禮拜 FreeBSD 7.2 也要 release... (不知道會 delay 多久)

Update:FreeBSD 7.2-RELEASE 釋出了。

可能要玩 NetBSD,如果他的 lock mechanism 改的比 FreeBSD 好的話...