2010/03/20

Create packages by pkg_create in FreeBSD

因為手上有超過二台的主機是安裝 FreeBSD,因為 FreeBSD ports collection 一向都是要自己 make install,安裝大型套件會花不少時間編譯。

之前餅乾提到可以用 pkg_create 建立套件備份,然後直接拿去另一台做 pkg_add,這次重灌寫了個批次檔來測試,不過因為 shell script 不熟可以說繞了一大段遠路:
#!/usr/local/bin/bash
echo "Listing packages .... "
pkg_info | tee pkg_info.log | wc -l
mkdir pkg
awk '/.*/ {print "pkg_create -v -b " $1 " pkg/" $1  }' pkg_info.log > pack.sh
rm pkg_info.log

# Start to create package
echo "Creating packages .... "
chmod +x pack.sh
./pack.sh
rm pack.sh

# Start to tar
echo "tar .... "
tar -cf pkg_back.tar pkg/
echo "Creating MD5 checksum .... "
md5 pkg_back.tar > md5sum.log

# Clean
echo "Cleaning temp files .... "
rm -fr pkg/

將打包好的套件檔複製到另一台電腦,解壓縮後就可以使用 pkg_add 安裝套件:
> pkg_add `find ./pkg/ -name "*.tbz"`

pkg_add 時應該會看到一堆相依性的錯誤訊息,這是因為套件沒有按照順序安裝引起的,至於要如何檢查安裝完畢後相依性套件是否有正確安裝,等以後想到方法再補齊吧。

1 則留言:

  1. 好像會有相依性的問題
    剛剛發現雖然有 GD lib 但 PHP 連不到
    要重編

    回覆刪除