在 FreeBSD 系統裡,最常使用就是管理安裝 ports,之前寫過一篇如何 commit update ports :『[FreeBSD] send-pr porter committer 需要注意事項』,根據 FreeBSD Porter’s Handbook 裡頭,寫到 pkg-plist 檔案內容是根據 ports 所產生的檔案列表,可以參考 Automated package list creation 這篇來快速產生,而我自己把該篇寫成 shell script 來直接產生,再來利用 diff 的方式來看看有無需要修改或者是增加,底下就是 shell script 內容:
#!/usr/local/bin/bash ############################################### # # Date: 2009.11.18 # Author: appleboy ( appleboy.tw AT gmail.com) # Web: http://blog.wu-boy.com # Ref: http://www.freebsd.org/doc/en/books/porters-handbook/plist-autoplist.html # ############################################### PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin export PATH if [ "$#" -lt "2" ]; then echo "please give two argument" echo "example $0 /tmp/dir1 /tmp/dir2" exit fi # # configure system parameters HOME=$1 TARGET=$2 TMPDIR="/var/tmp" # # configure end if [ ! -d "$HOME" ]; then echo "${HOME} is not directory" exit fi if [ "$TARGET" != "" ] && [ ! -d "$TARGET" ]; then echo "$TARGET will be created" mkdir -p $TARGET fi # # clean ports file cd $HOME && make clean # # get port name PORTNAME=$(make -V PORTNAME) # # Before create port directory, please delete it. # Next, create a temporary directory tree into which your port can be installed, and install any dependencies. rm -rf ${TMPDIR}/${PORTNAME} if [ ! -d "${TMPDIR}/${PORTNAME}" ]; then echo "${TMPDIR}/${PORTNAME} will be created" mkdir -p ${TMPDIR}/${PORTNAME} fi mtree -U -f $(make -V MTREE_FILE) -d -e -p ${TMPDIR}/${PORTNAME} make depends PREFIX=${TMPDIR}/$PORTNAME # # Store the directory structure in a new file. cd ${TMPDIR}/${PORTNAME} && find -d * -type d | sort > ${TARGET}/OLD-DIRS # # If your port honors PREFIX (which it should) you can then install the port and create the package list. cd $HOME && make install PREFIX=${TMPDIR}/${PORTNAME} cd ${TMPDIR}/${PORTNAME} && find -d * \! -type d | sort > ${TARGET}/pkg-plist # # You must also add any newly created directories to the packing list. cd ${TMPDIR}/${PORTNAME} && find -d * -type d | sort | comm -13 ${TARGET}/OLD-DIRS - | sort -r | sed -e 's#^#@dirrm #' >> ${TARGET}/pkg-plist echo "Please check ${TARGET}/pkg-plist file"用法大概是: ./create_pkg.sh /root/phpbb3 /root/test /root/phpbb3 是你修改 ports 的資料夾 /root/test 是 pkg-plist 新的資料夾
See also
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- 安裝 XCache 加速 PHP 執行速度
- 好用 PHP debug extension Xdebug on FreeBSD 安裝
- [FreeBSD] 利用 fsck 指令修復不正常斷電關機
- ProFTPD UseEncoding 繁體中文亂碼解決 Localization
- [FreeBSD] update apache -> 2.2.15, PHP -> 5.3.2, and MySQL downgrade to 5.1.9
- Apache 取得透過 Reverse Proxy (Varnish) 的 Client 真正 IP (mod_rpaf)
- [Vim] 想套用 *.php syntax 顏色於 *.ros
- [FreeBSD] DenyHosts 設定在 hosts.allow 注意事項
- [FreeBSD] Fanout and Fanterm Tool to run commands on multiple machines