當新灌好的一台 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 # 正常囉!!