ports

FreeBSD 的 Flavors

[華語, cmn-Hant-TW] FreeBSD 的 ports 在引入 Flavors 之後,比較能清楚的看出套件倒底是相依哪個東西,現在會看是用哪個版本的 php 而加上適當的前綴或後綴,像是以前的 composer 叫 php-composer-1.6.5,相依 php 7.2 的話就會叫 php72-composer-1.6.5,又例如 phpMyAdmin 的話以前叫 phpMyAdmin-4.8.2,相依 php 7.2 的會變成 phpMyAdmin-php72-4.8.2 這樣的好處是在套件安裝的時候可以指定要用哪個版本的 php,要用 php 5.6 的話就下 pkg install php56-composer 安裝即可,以往要使用非預設版本的套件時,只能自己手動從 ports 編譯,現在的話只要支援中的版本都可以透過這樣的方式選擇安裝,方便不少,要注意的是如果套件是在還沒支援 flavors 之前就裝好的話會沒辦法更新,先反安裝再重新選一個需要的版本安裝即可,以 phpMyAdmin 來講,如果要用 php72 的話就是: pkg delete phpmyadmin pkg…

FreeBSD ports 的穩定分支

[華語, cmn-Hant-TW] 上個月 FreeBSD 的 ports 正式有了 stable 的分支,細節可以看這篇公告。簡單的說就是多了 2014Q1, 2014Q2… 這樣的分支,每三個月從 head 長一個出來,然後只針做安全性相關的更新。官方的 pkg 也有了,只要把 /etc/pkg/FreeBSD.conf 裡面的 /latest 改成 /quarterly 就會抓到從最新一季的 ports 做出來的套件,設定上還算方便。 這東西對喜歡用 ports 安裝東西,但是又不想一直踩地雷的人應該會很有幫助,因為 FreeBSD 的 ports 基本上就是 rolling 的形式,一直都只有 head,或者說 trunk,每次有軟體大改版的時候就很容易出些有的沒有的問題,而每個軟體大更新的時間當然不相同,進 ports 的時間更不用講,所以只能勤快的盯 UPDATING 看有沒有什麼大變動得注意的,現在這樣的話只要每一季做一次就好了。 把幾台辦正事的機器切到 2014Q2 試用了一個月覺得還不賴,大致上可以很無腦的用…

找出不是透過 pkg 安裝的檔案

[華語, cmn-Hant-TW] 在 /usr/local 裡面除了 pkg 安裝的檔案外,往往還會夾雜一些有的沒的東西,如果是自己放進去不礙事的還好,那些用 ports 安裝到一半壞掉或是刪除時沒清乾淨的檔案就麻煩了,散落各地不說,有時候甚至會造成編 ports 或是執行不正常,剛好這次把一台老機器從 FreeBSD-8 升到 FreeBSD-10,然後重編套件一直吃奇怪的錯誤訊息,又不想把 /usr/local 砍掉重練,就來研究一下怎麼找出這些 pkg 管不到的檔案,試了一下這樣就可以了: (以 pkgng 為例) # find /usr/local -type f \! -path "/usr/local/etc/*" \! -path "/usr/local/www/*" -exec pkg which {} \; | grep "was…

FreeBSD ports svn

[華語, cmn-Hant-TW] 根據 portmgr 這篇的講法,ports 不久之後就要追隨 src 的腳步改成用 svn 了。 然後跟 src 的情況一樣原本 c(v)sup 的機制還是能用,只是直接用 svn 或許是比較方便的方式 (當然更簡單的就是用 portsnap 了,只是我不愛用…) 所以之後灌 freebsd 完要設定原始碼目錄就不用再改 supfile 那些東西了,這一切將會變得很簡單 # pkg_add -r subversion # rehash # svn co svn://svn.freebsd.org/ports/head /usr/ports# pkg_add -r subversion # rehash…

libgcc_pic

[華語, cmn-Hant-TW] 把一台機器從 FreeBSD 6.2 昇級到 FreeBSD 7.0-BETA,系統是可以跑沒錯,不過在要編譯 kdelibs 的時候跳出了一個錯誤訊息: cannot find -lgcc_piccannot find -lgcc_pic 在網路上找了一下 libgcc_pic 在已經沒在用了,看了一下系統的 /usr/lib 也確實沒錯。在錯誤訊息裡瞄了一下發現是卡在 libtools,直接 portupgrade libtools 後問題就解決了,還好不是什麼太大的問題。

libiconv, big5, big5-2003

[華語, cmn-Hant-TW] FreeBSD ports 裡面的 converter/libiconv 在1.9.2的時代,如果要用 big5 2003 的話,那需要用一些 patch 來把 big5 改成 big5-2003。 現在 ports 裡面的 1.11 已經有 big5-2003,不過是放在extra-encoding 裡就是了,所以可以直接用 big5-2003 來轉換。那如果要讓預設的 big5 就直接是 big5-2003呢? 因為已經有內建,現在要改就不用從外部來,直接動一下裡面的東西就可以了。主要的地方是改 lib/ces_big5.h 這個檔案,把本來用的 big5_mbtowc() 和 big5_wctomb() 改成 big5_2003_mbtowc() 以及 big5_2003_wctomb() 即可。 不過要注意的是因為 big5-2003…