Mac OSX標準のApache2やSambaは設定しづらいのでMacPortsで必要なサーバ等をインストールしてます。

MacPortsのGUIであるPorticusとMacPortsを組み合わせて使ってたけど、PorticusはMacPorts 2.0と互換性がなく、MacPorts Projectから公式GUIであるPalletが公開されているので、今後、Porticusがアップデートされるかも未定だって。。。 私の環境でPalletはダウンロードしたものは正常に動かず、MacPortsでのインストールもエラーが発生して無理だった。

仕方がないのでMacPorts 2.0をインストールして、ターミナルからコマンドで操作することにする。

[MacPortsのインストール]
The MacPorts ProjectからOSのバージョンに対応したdmgファイルをダウンロードし、勝手に起動するインストーラーでインストールした。

[MacPortsの操作]
MacPorts自体やMacPortsからインストール可能なパッケージのリストを更新するために以下のコマンドを実行する。

$ sudo port selfupdate

インストール可能なパッケージのリストは以下のコマンドで表示できるが、リストが大きすぎて表示する気にはなれない。

$ port list

パッケージの検索には以下のコマンドを使う。キーワードにはapache2とかphpとか入れる。

$ port search キーワード

パッケージの依存関係は以下のコマンドで表示できる。

$ port deps パッケージ名

パッケージのVariantsは以下のコマンドで表示できる。

$ port variants パッケージ名

パッケージをインストールする場合は以下のコマンドを実行する。Variantsはオプション。

$ sudo port install パッケージ名 [Variants]

インストールの際の一時ファイル等を削除するには以下のコマンドを実行する。インストールに失敗してVariantsを変更する前には必ず実行する。

$ sudo port clean --all パッケージ名 [Variants]

インストールしたパッケージを確認する場合は以下のコマンドを実行する。

$ port installed

インストールしたパッケージの内、更新すべきものは以下のコマンドで表示される。

$ port outdated

パッケージの更新は以下のコマンドを実行する。

sudo port upgrade パッケージ名

一括更新する時は以下のコマンドを実行する。

$ sudo port upgrade outdated

パッケージをアンインストールする場合は以下のコマンドを実行するが、依存関係がある場合は無理。

$ sudo port uninstall パッケージ名

インストールした全パッケージの一括削除は以下のコマンドでできる。

$ sudo port -f uninstall installed

他に使用頻度の高いコマンドなどあれば、おいおい追加します。

[MacPortsとパッケージのアップデート]
MacPortsやMacPortsでインストールしたパッケージは頻繁にアップデートする必要があるが、ターミナルからアップデートするのは面倒臭いし、作業するのを忘れがちである。そこでLaunchdで定期的(日曜日AM5:00〜)にアップデートすることにした。

plistファイルを保存するディレクトリを作成。

sudo mkdir /opt/local/etc/LaunchDaemons/org.macports.port

MacPortsをアップデートする為に以下のplistを作成。

$ sudo vi /opt/local/etc/LaunchDaemons/org.macports.port/org.macports.port.selfupdate.plist
# 以下の内容を入力して保存
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.macports.port.selfupdate</string>
	<key>ProgramArguments</key>
	<array>
		<string>/opt/local/bin/port</string>
		<string>selfupdate</string>
	</array>
	<key>StartCalendarInterval</key>
	<array>
		<dict>
			<key>Minute</key>
			<integer>0</integer>
			<key>Hour</key>
			<integer>5</integer>
			<key>Weekday</key>
			<integer>0</integer>
		</dict>
	</array>
</dict>
</plist>

plistを配置するディレクトリにリンクを作成し、Launchdに作成したplistをロードする。

$ sudo ln -s /opt/local/etc/LaunchDaemons/org.macports.port/org.macports.port.selfupdate.plist /Library/LaunchDaemons/
$ sudo launchctl load /Library/LaunchDaemons/org.macports.port.selfupdate.plist

コマンドが実行されるかどうか確認

$ sudo launchctl start org.macports.port.selfupdate

Launchdでコマンドが実行され、正常に終了しているかどうか確認。以下のコマンドでstatusが0となっていれば正常に終了している。

$ sudo launchctl list | grep org.macports.port.selfupdate
-	0	org.macports.port.selfupdate

アップデートされたパッケージも定期的(日曜日AM5:30〜)にアップグレードするために以下のplistを作成

$ sudo vi /opt/local/etc/LaunchDaemons/org.macports.port/org.macports.port.upgrade.outdated.plist
# 以下の内容を入力して保存
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>org.macports.port.upgrade.outdated</string>
	<key>ProgramArguments</key>
	<array>
		<string>/opt/local/bin/port</string>
		<string>upgrade</string>
		<string>outdated</string>
	</array>
	<key>StartCalendarInterval</key>
	<array>
		<dict>
			<key>Minute</key>
			<integer>30</integer>
			<key>Hour</key>
			<integer>5</integer>
			<key>Weekday</key>
			<integer>0</integer>
		</dict>
	</array>
</dict>
</plist>

plistを配置するディレクトリにリンクを作成し、Launchdに作成したplistをロードする。

$ sudo ln -s /opt/local/etc/LaunchDaemons/org.macports.port/org.macports.port.upgrade.putdated.plist /Library/LaunchDaemons/
$ sudo launchctl load /Library/LaunchDaemons/org.macports.port.upgrade.outdated.plist

コマンドが実行されるかどうか確認

$ sudo launchctl start org.macports.port.upgrade.outdated

Launchdでコマンドが実行され、正常に終了しているかどうか確認。以下のコマンドでstatusが0となっていれば正常に終了している。outdatedとなったパッケージが無いとエラーが出てstatusは1となるようだ。。。

$ sudo launchctl list | grep org.macports.port.upgrade.outdated
-	1	org.macports.port.upgrade.outdated

コメントを残す