當新灌好的一台 BSD, 該做哪些設定, 才可以使用起來比較順手.
主要是剛開始建立 make.conf, 更新 Ports Index 的 Source Tree 的步驟, 其它 紀錄 Package 安裝, 指令 和 操作方法 等.
感謝 Gawain 提供, 從 FreeBSD 6.0 開始就已經內建 portsnap, 可以快速做更新的動作:
- get Ports Tree: portsnap fetch extract
- update Ports Tree: portsnap fetch update
- update 指定的 Ports 機器: portsnap -s portsnap.cn.freebsd.org fetch
- 設定檔於 /etc/portsnap.conf 可以設定預設要抓哪台機器的 Ports Tree
以下是採用 cvsup 的方法, 剛開使用 root 登入後, 要先更新 Ports Tree, 先來裝 cvsup.(如果灌 BSD 6.2, 預設有 /usr/bin/csup 可以用, 就不用裝 cvsup 囉~, 感謝 jerome 提供)
- cd /usr/ports/net/cvsup-without-gui # 此為 BSD 6.1 以前才需要裝, 6.2 直接用 csup 即可
- make install clean
基本設定建置(for Bsd 6.1) - 6.2 以上請跳過此段
- 此步驟省略下述也可用, 只是下面可以少打些字
- cp /usr/share/examples/etc/make.conf /etc/
修改 抓 Ports 的來源(沒有 make.conf 就自己建一個)
vi /etc/make.conf
SUP_UPDATE= yes
SUP= /usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPHOST= cvsup.tw.FreeBSD.org
SUPFILE= /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
DOCSUPFILE= /usr/share/examples/cvsup/doc-supfileMASTER_SITE_BACKUP?= \
ftp://ftp.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp2.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/\
ftp://ftp9.tw.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}STER_SITE_OVERRIDE=ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
# 安裝 Package 問的問題都用 default 值, 有需要特別打開再自己 make config 修改
BATCH=yes# 不使用 Xwindow
WITHOUT_X11=yes
X11BASE=${LOCALBASE}
不新增 make.conf 的做法(通常還是建議就建一個 make.conf 吧!)
cvsup -g -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
基本設定建置(for Bsd 6.2 以上, 使用 csup)
下述採用 us 設定, 可再自行修改成 tw link 即可, vim /etc/make.conf
MASTER_SITE_BACKUP?= \
http://ftp5.us.freebsd.org/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
SUP_UPDATE= yes
SUP= /usr/bin/csup
SUPFLAGS= -4 -L 2 -z
SUPHOST= cvsup4.us.freebsd.org
SUPFILE= /usr/share/examples/cvsup/stable-supfile
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
使用 csup (update ports index)
csup -h cvsup6.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
更新 ports tree
- cd /usr/ports
- make update
更新 ports index
- 感謝 Duck 指點. ports index 跟 ports tree 更新是不同的. Orz.
- make index # 在自己的目錄下重建
- make fetchindex # 抓別人建好的
常用套件
/usr/ports/net/cvsup-without-gui/usr/ports/sysutils/fastest_cvsup # 找哪個 cvsup 離你最近, fastest_cvsup -c tw- PS: 6.2 以後直接使用 csup 即可, 不需再使用 cvsup.
- /usr/ports/sysutils/portupgrade
- /usr/ports/editors/vim-lite
- /usr/ports/shells/bash
- /usr/ports/misc/gnuls
- /usr/ports/sysutils/screen
- /usr/ports/security/sudo
- PS: Ports 安裝完成的 Package 會放在 /var/db/pkg
搜尋套件方法
- make search name=KEYWORD
- make search key=KEYWORD
- make search key=KEYWORD | grep -1 Port # 找到 Port 連下一行一起印
- 或者直接 grep /usr/ports/INDEX-6 來找也可以(INDEX-6 是 BSD6, INDEX-4 是 BSD4.. 以此類推)
- ex: grep ^p5-IO-Socket-SSL- /usr/ports/INDEX-6
Package 升級
- pkg_version -v # 看哪些版本要升級
- pkg_version -IvL = 或 pkg_version -Ivl '<' 或 portversion -vl '<' # 只看哪些版本需要升級
- portupgrade PKG_NAME_VERSION # 單純升級一個版本
- portupgrade -a # 全部升級
- pkg_version -Iql '<' | xargs portupgrade # 列出套件再丟進去升級
Pakcage 操作(make 版)
- make package clean; pkg_add *.tbz (包好 package 後安裝, 通常後面 pkg_add 都不用了, 包好通常也裝好了)
- make install clean # 安裝
- make deinstall # 移除
- make reinstall # 升級/重新安裝(建議先 make clean 再 make reinstall)
Package 操作(pkg 版)
- pkg_add zh-telnet-1.0_1.tbz # 直接安裝 Package
- pkg_add -r PACKAGE_NAME # 會自己找 Mirror site 下載 Package 直接安裝
- pkg_delete PACKAGE_NAME # 移除
- pkg_version -v # 看哪些版本要升級
Ports 其它相關
- pkgdb -F # 修補程式關連性
- portsdb -Uu # 重建系統 Ports 的 INDEX db, 這個部份比較久, 並不是當機, 所以請耐心等候.
- portupgrade -ayn # 升級測試動作
- portupgrade -ay # 升級測試沒問題, 就安裝上去
系統核心升級(創造世界 make world): (還不熟的, 這個先不要亂玩 XD)
- cd /usr/src
- make buildworld
- make buildkernel (或 make buildkernel KERCONF=GENERIC)
- make install kernel
- make install world
製作標準 FreeBSD Package
- 簡短記錄從拉一個 Open Source tgz 檔, 該怎麼包 Package, 運氣好可以直接包好, 遇到問題就遇到再說囉 XD
- vim /usr/local/etc/pkgtools.conf # 看看自己覺得有什麼設定要設的
- /usr/ports/Tools/scripts/mkptools/mkpskel http://xxxxx/source_code.tar.gz
- make extract
- portlint
- /usr/ports/ports-mgmt/portlint/
- make makesum
- make extract
- portlint -N
看目前系統裝了哪些 Package
- ls /var/db/pkg
參考文章:
其它推薦文章:
- NOTES -- FreeBSD: The Power to Serve
- FreeBSD Porter's Handbook (包 FreeBSD Package)
- 談談FreeBSD如何更新系統
PS: 很快 portupgrade 就被我玩壞了 Orz...
portupgrade -a 出現下述訊息:
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument; rebuild needed] [Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ... /var/db/pkg/pkgdb.db: unexpected file type or format -- Invalid argument: Cannot update the pkgdb!]: Cannot update the pkgdb!]
看起來好像是 pkgdb.db 壞了, 解法:
- cd /var/db/pkg
- rm pkgdb.db # 砍了, 反正應該之後更新會回的來
- rm /usr/ports/INDEX-6.db # 這個應該可以不用砍, 但是我也同時搞爛了, 索性一起砍了 Orz...
- pkgdb -fu # 重建 pkgdb.db 回來.
- portupgrade -a # 正常囉!!
> 剛開使用 root 登入後, 要先更新 Ports Tree, 先來裝 cvsup.
FreeBSD 6.2 以後內建 csup
用 /usr/bin/csup 就可以不必裝 cvsup 囉!
一看到馬上試試,
sudo /usr/bin/csup
sudo: /usr/bin/csup: command not found
.... Orz....
才發現我是裝 BSD 6.1...... XDDDD
感謝指點.. 🙂
ports 檢查更新的部份,可以使用 portversion 來檢查,比較清楚 😀
portversion -vl '
回 portversion -vl 怎麼好像都沒有東西出來 XDD
portversion -v 看起來跟 pkg_version -v 一樣...
不曉得有什麼差別??... Orz
不過多知道了一個指令~ 感恩~ 🙂
其实FreeBSD从6.0起就已经自带一个很优秀的工具,portsnap
得到Ports Tree
portsnap fetch extract
升级Ports Tree
portsnap fetch update
要指定更新服务器
portsnap -s portsnap.cn.freebsd.org fetch
他的设置档是/etc/portsnap.conf可以设定默认服务器地址等等.
原來如此, 感謝您的指點..
先記下來了~~ Orz..
更新 ports index
1. cd /usr/ports
2. make update (或 make fetchindex)
要在自己的目錄下重建
make index
要抓別人建好的
make fetchindex
make update 是用來更新ports tree的,並不會更新index
嗯嗯, 感謝指點, 已經更正.
我一直以為它會一起更新, 原來 ports tree 跟 ports index 是不同的.. Orz..
在基本設定建置的部份
>基本設定建置
> * cp /usr/share/examples/cvsup/standard-supfile.conf /usr/
> * cp /usr/share/examples/etc/ports-supfile.conf /usr/
> * cp /usr/share/examples/etc/doc-supfile.conf /usr/
已經在 make.conf 裡面指定了預設的supfile,不懂你要把上面的範例supfile複製到 /usr 目錄下的目的是啥?
而且複製的來源路徑也錯了,我以為應該是 /usr/share/examples/cvsup ?
另外一開始若安裝cvsup似乎比較累贅,因為csup之所以誕生的原因就是因為不喜歡cvsup相依其他lib,已經有了csup,為啥裝ports還要裝cvsup一屁股來用呢?現在csup除了package-6-stable和packages-6.2-release都已經內建所以找不到pkg來裝以外,其他的版本只要是抓csup.tbz的全部都指到ALL裡面的csup-20060318.tgz了。
個人比較偏好直接裝csup的pkg,這樣裝比較快。所以剛裝機完的只要改make.conf裡面csup的路徑+host應該就能動了。
然後make.conf裡面的MASTER_SITE_BACKUP的伺服器事實上也沒必要填這麼多,主要的前幾個mirror站如果都沒有了,後面的幾乎也不會有,列一堆只會讓別人busy然後自己慢慢全部踹完才去國外找。
嗯嗯~
1. 基本設定建置 這邊確實是在 make.conf 已經寫了, 再指定也沒有意義. 還是拿掉好了 🙂
2. csup 是後來我才知道的, 我裝 6.1 的時後還沒有, 所以就傻傻裝 cvsup... Orz... 我還是修改一下好了. 😛
3. 嗯嗯~ 原來如此, 那就先留著剩前三台好了.
主要只是怕說, 會有掛掉的, 那就可以再試試其它台.
我再修改一下, 感謝大大指點. Orz..