在 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