FreeBSD 使用新的 pkgng 套件管理系統

pkgng 意思是 Next Generation (下一代)的套件管理系統,將用來取代原有的 pkg_* 系列指令。
主要的指令只有一個,就是 pkg。

新的 FreeBSD 將會預設使用 pkgng 來運作,所以是時候來練習一下了。
要在現有的 8.x 或 9.x 使用的話,步驟如下:

  • 安裝 ports-mgmt/pkg
  • 執行 pkg2ng 進行轉換
  • 增加 WITH_PKGNG=yes 到 /etc/make.conf
  • 設定 repository,在 /usr/local/etc/pkg/repos/FreeBSD.conf 加入以下內容:

這樣就可以了。

pkgng 依然與原有的 pkg_* 系列指令保有很好的相容性,只要將原有指令的底線拿掉就可以了。
例如 pkg_version -v 現在可以用 pkg version -v 來取代,其它依此類推。

試用了一下以後,覺得這個新系統用起來很方便,也改進了一些小缺點,例如剛安裝完新的東西不用再 rehash 就能用了。
因為是直接安裝編譯好的 binary 檔,所以速度也很不錯。當然要用 ports 依然是可以的,沒有問題。

不過新系統還是有些需要注意的地方,原本在 ports config 裡面設定的選項可能會壞掉。例如 php 如果要安裝 apache module,就需要另外安裝 mod_php5,直接使用 pkg upgrade 會把原本的 php module 給刪掉,造成 apache 無法啟動。另外 svn 附帶的 mod_dav_svn 則是只能由 ports 來安裝編譯,目前(2014/4/15)還沒有找到 pkgng 相對應的安裝方法。

詳細的指令用法可以參考 https://wiki.freebsd.org/pkgng#the_pkg_command

FreeBSD 使用 vsftpd 的亂碼問題

這是一個困擾我已久的問題,使用 FileZilla 去連 ftp 時偶爾就會跑出亂碼來。明明 FreeBSD, vsftpd, FileZilla 三者都有支援 utf8 的編碼,但就不知道為什麼還會出這種問題。其實我一度以為是 vsftpd 太機車了所以跟別人格格不入,但這單純只是我的猜測而已。

以前都是在 FileZilla 的站台設定裡面強制使用 utf8 來解決這個問題,但是昨天在幫別人測試 ftp 時,卻發現他們家的 vsftpd 不需要強制使用 utf8,FileZilla就可以正常的偵測到要使用 utf8 !發現這個情況以後我開始找原因,首先看看是不是設定檔哪裡沒設定好,但卻發現他用的設定檔裡面也沒有什麼特別不一樣的,跟我用的差不多。難不成是 vsftpd 偏心嗎?在 CentOS 上面就乖乖的開啟 utf8 ,在 FreeBSD 上就搗亂。

連上朋友的 ftp 以後,可以看見他的 feat 回應是:

然後這是我的:

為什麼硬生生的少了最後的 utf8 啊!?為了這個問題,我去Google了半天都找不到原因,看起來也沒什麼人遇到類似問題。心情非常不愉快,所以就跑去看 vsftpd 的原始碼到底是怎麼回事。

首先就從 feat 的部份查起,feat 指令的回應是在 features.c 裡面,可以看到下列程式碼:

OK,看樣子 tunable_convert_charset_enable 這個變數決定了 feat 裡面有沒有包含 utf8。接著就查這個變數的底,看到底怎麼來的。在 parseconf.c 裡面看到這行:

哦,原來要在設定檔裡面設置 convert_charset_enable=1 就可以了。

設定好以後再試一次看看,還是沒有 -ㄦ- …繼續翻 code 。

接著在 main.c 裡面看到這個:

這下總算抓到了,原來要在設定檔裡面同時存在著 local_charset 與 convert_charset_enable 才可以。最後在 vsftpd.conf 裡增加下面這兩行就搞定了:

雖然問題解決了很高興,但這過程還真是曲折啊….

mysql installation

FreeBSD 安裝mysql筆記:

mysql5.5:

安裝時, 編譯選項需要修改Makefile:

然後複製設定檔:

加入設定:

參考:

http://blog.tinlans.org/2011/04/08/freebsd-%E5%9C%A8-mysql55-serverclient-%E6%94%B9%E7%94%A8-cmake-%E5%BB%BA%E7%BD%AE%E5%BE%8C%E6%9F%90%E4%BA%9B%E7%B7%A8%E8%AD%AF%E9%81%B8%E9%A0%85%E7%84%A1%E6%B3%95%E5%82%B3%E9%81%9E/