Pages

2012年1月22日日曜日

MacPortsをアップデート

OSXで、オープンソースを利用する場合、パッケージシステムはいくつか選択肢があるが、私は、MacPortsを使っています。
http://guide.macports.org/

# 昔は、時々自分が何を使っている忘れて、複数のパッケージシステムを入れて混乱したりしました。

MacPortsは、バイナリを配布するのではなく、ソースをダウンロードして、コンパイルするタイプのパッケージ管理システムです。そのため、コンパイラが必要です。OSXの場合は、Xcodeが必要になります。そのため、Xcodeをインストールしておくことが必須です。

さて、Lionにしてからパッケージのアップデートしてませんでしたので、やってみました。以下の手順です。
  1. リポジトリ情報を最新にする
  2. インストール済みのport(パッケージ)を最新にする

リポジトリ情報の更新

CodeRider:~ baker$ sudo port selfupdate
Password:
--->  Updating MacPorts base sources using rsync
MacPorts base version 2.0.3 installed,
MacPorts base version 2.0.3 downloaded.
--->  Updating the ports tree
--->  MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
  port upgrade outdated

selfupdateコマンドは、公開されているMacPortsのリポジトリで、ローカルのportsを更新するために使われます。結果、ローカルのportsは、最新のヴァージョンになります。このコマンドは、またMacPorts基盤 ( MacPorts base)の最新バージョンをチェックし、必要であれば最新のものに、アップグレードします。(macports.org コマンド解説 3.1.2. selfupdate)

つまり、selfupdateでは、リポジトリの情報のみがアップデートされて、既にインストールされているパッケージが更新されるわけではないと言うことです。ただし、ローカルで利用するportとか、MacPortsのコマンド群(MacPorts Base)は、このタイミングで最新版に更新されます。

パッケージの更新

インストール済みのパッケージを全て最新版にします。upgradeコマンドを使うのですが、

upgradeコマンドは、デフォルトの使用では、更新されたパッケージを削除しません。非アクティブにするだけです。(非アクティブについては、Package Image, Destroot, Activate Phasesの項を参照してください)もし、古いportを削除したいのであれば、uオプションを使用しましょう。
(macports.org コマンド解説 3.1.15. upgrade Note)

なので、uオプションを使用して、古いportは削除し、新しいものに入れ替えました。もちろんアップグレード可能なもののみの話ですが。

CodeRider:~ baker$ sudo port -u upgrade outdated
--->  Computing dependencies for gdbm
--->  Fetching archive for gdbm
--->  Attempting to fetch gdbm-1.10_1.darwin_11.x86_64.tgz from http://packages.macports.org/gdbm
--->  Fetching gdbm
--->  Attempting to fetch gdbm-1.10.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/gdbm
--->  Attempting to fetch gdbm-1.10.tar.gz from http://distfiles.macports.org/gdbm
--->  Verifying checksum(s) for gdbm
--->  Extracting gdbm
--->  Configuring gdbm
--->  Building gdbm
--->  Staging gdbm into destroot
--->  Installing gdbm @1.10_1
--->  Cleaning gdbm
--->  Computing dependencies for gdbm
--->  Deactivating gdbm @1.9.1_0
--->  Cleaning gdbm
--->  Activating gdbm @1.10_1
--->  Cleaning gdbm
--->  Uninstalling gdbm @1.9.1_0
--->  Cleaning gdbm
(途中、たくさん省略)

古いportがクリーンされてますね。
コンパイルするので、少し時間が掛かりましたが、無事 終了です。

0 件のコメント:

コメントを投稿