FreeBSD/portupgrade

portupgrade

Portsを自動で最新にしてくれるportupgradeの紹介。
portupgradeを実行する前に、まずはCVSupで最新のPortsを入手しておきます。
CVSupは⇒FreeBSD/CVSup
Ruby言語で書かれたプログラムで、portupgradeをPortsからインストールすると自動で、Rubyもインストールされます。

  1. 環境
  2. インストール
  3. シェルを作成
  4. 起動
  5. オプション

環境

FreeBSD 6.0
ruby 1.8.4
CVSup SNAP_16_1h

インストール

■Rubyは1.8で使いたいので、/etc/make.confに記述しておきます。

# vi /etc/make.conf
----------------追加-------------------
RUBY_DEFAULT_VER=1.8
----------------追加-------------------

■portupgrade,Portsからインストール

# cd /usr/ports/sysutils/portupgrade
# make install clean ;rehash
  • 2008/01/21確認
  • フォルダが変更になったらしい。/usr/ports/ports-mgmt/portupgrade


■portauditをインストール、セキュリティの脆弱性などを指摘してくれるそうです。

#cd /usr/ports/security/portaudit
#make clean install clean
#rehash 
#/usr/local/sbin/portsdb -Fu
#portaudit -F -a

 

シェルを作成

#!/bin/csh
#setenv PORTS_DBDRIVER bdb_hash
/usr/local/bin/cvsup -g -r 5 -h cvsup2.jp.FreeBSD.org \
 -L 2 //usr/share/examples/cvsup/ports-supfile >& /var/log/portupgrade_dayly.log
/usr/local/sbin/portaudit  -F -a >>& /var/log/portupgrade_dayly.log
/usr/local/sbin/portsdb -Fu >>& /var/log/portupgrade_dayly.log
/usr/local/sbin/portversion -v -L '=' | grep -v 'held'

起動

■crontbに設定しておく。

20      6       *       *       *       root    /usr/local/etc/portupgrade.csh

※手動で起動する場合は

#csh /usr/local/etc/portupgrade.csh

参考にしたページ*1

参考にしたページ*2

最新のportsが現在のportsよりバージョンがあがっているか確認

# pkg_version -v|perl

最新のportsへアップグレード

# portupgrade perl

Perlに依存するportsが入っている場合

  1. perl本体の置き換え
    # portupgrade -o lang/perl5.8 -f perl-5.8.6_3
  2. インストールしたperlを/etc/make.confに登録 どのサイトでもuse.perl portを実行すると書いてあったけど、use.perlを実行しても無いって言われる。
    探してみたら、こんな所にありました。/usr/ports/lang/perl5.8/files/use.perl
    # locate use.perl
    /usr/ports/lang/perl5/files/use.perl
    /usr/ports/lang/perl5.8/files/use.perl
    # cd /usr/ports/lang/perl5.8/files
    # use.perl port
  3. perlに依存しているportsを更新
    # portupgrade -f p5-\*

オプション

-r そのportsが依存しているportsも更新する
-R そのportsに依存しているportsも更新する.
-N パッケージが無い場合は,ダウンロードしてインストールする
-n アップグレードはせずに、その必要があるかだけを教えてくれる。
-f 強制的にインストール。
-m makeのオプションを指定する
   例:porupgrade -m 'BATCH=yes' x11/gnome 
-o パッケージの基となっているports名(?)を指定する.このオプションはバージョンがあがってports名が変わってしまった場合などに使える.
   例:portupgrade -o www/apache22 apache
       www/apache20からwww/apache22にアップデートする場合

*1 F.kimura's HomePageこちらのページの方がより詳しく説明されています
*2 SYONテクニカル