macports について
- 2015年 7月14日(火) 14:10 JST
- 投稿者: akira
- 表示回数 109
MacPorts の基本操作
ターミナルで "port" と入力することで使用可能(パスが通っていれば)。インストールやアンインストールの作業は管理者権限が必要になるのでだいたい "sudo port" と入力する。
-
install:ポートをインストールする。
sudo port install portname
-
uninstall:ポートをアンインストールする。依存関係でアンインストールが出来ない場合はフォースオプ ションを使うか依存関係のものも一緒にアンインストールする。また、1つのポートで複数のリビジョンがインストールされている場合はバージョンやバリアン トも指定しなくてはいけない。
sudo port uninstall portname
-
強制アンインストール。
sudo port -f uninstall portname
-
依存関係も一緒にアンインストール。他のポートが使用中の場合もあるので注意。
sudo port uninstall --follow-dependents portname
-
-
selfupdate:セルフアップデート
MacPorts 本体をアップデートする。暫く使っていないとアップデートを促すメッセージが表示される。sudo port selfupdate
-
sync
ポートツリーを更新する。sudo port sync
-
activate:アクティベート
無効になっているポートを有効にする。sudo port activate portname
-
deactivate:ディアクティベート
有効になっているポートを無効にする。アンインストールはしないけどとりあえず止めておきたい場合に。依存関係の問題が出る場合はフォースモードで行う。sudo port -f deactivate portname
-
outdated
更新可能なポートを表示する。port outdated
-
upgrade
ポートを更新する。ポート単体やインストール済みのポートを全て更新することも出来る。-
ポート単体を更新する
sudo port upgrade portname
-
インストール済みのポートを全て更新する。
sudo port upgrade installed
-
-
clean
一時ファイルなどを削除する。バリアント問題などでインストールに失敗した時などの対処法。デフォルトでは作業ファイルのみ削除される(--work)。sudo port clean portname
-
ログやディストリビューションも削除する場合。この "--all" はポート単体の一時ファイルに対してのもので「ポート全体」という意味ではない。
sudo port clean --all portname
-
インストール済みのポートから一時ファイルを削除する場合。
sudo port clean installed
-
検索関連
-
search:検索
ポートを検索する。ポート名、概要などから部分一致で検索される。port search word
-
list:リスト表示
ポート名、リビジョンに絞って表示してくれる。ポート検索をする場合はワイルドカードが使用可能。port list port*
-
info:詳細
ポートの詳細を表示してくれる。バリアントや依存関係にあるものが確認出来る。port info portname
-
variants:バリアント
バリアントを確認する。指定可能なバリアントは "info" でも確認出来るけど "variants" では衝突関係にあるポートも調べることが出来る。バリアント名に "[+]" がついているものは標準指定。port variants portname
覚えておくと良いオプション
-
-v:バーボス(Verbose)モード
作業内容を表示しながら進めてくれる。 -
-d:デバッグ(Debug)モード
作業内容を表示しながら進めてくれる。バーボスモードとだいたい同じ。 -
-f:フォース(Force)モード
処理を強制する。依存関係などでインストール・アンインストール出来ないときなどに。 -
-u
アップグレード、アンインストール時に非アクティブ(未使用)のポートをアンインストールする。お掃除用。
これらの処理は一括指定が可能。
sudo port -vf install portname
バリアントとアーキテクチャの指定
ポートをインストールする際にバリアント(オプション)やアーキテクチャ(設計思想)の指定が必要になることがある。
-
バリアントの指定
バリアントを追加する場合は "+variants" で指定が出来る。標準指定のバリアントを取り除く場合は "-variants"。常に "+universal" などを付加するような場合は variants.conf を編集する。sudo port install portname +variants -variants
-
アーキテクチャの指定
i386 や x86_64 など、アーキテクチャを直接指定する。sudo port install portname build_arch=i386
macports.conf と variants.conf
バリアントにいちいち "+universal" を付加するのが面倒な場合など、variants.conf に記述しておくことで入力を省くことが出来る。編集には管理者権限が必要。vi や nano で編集する。
sudo nano /opt/local/etc/macports/variants.conf# To specify global variants to use for all port builds, # customize this file to list variant settings you want. # # Any variants specified here that are not supported by # a port will just be ignored. Multiple variants can be # specified per line, or one per line is also allowed. # # Example: # +ipv6 +no_x11 +universalvariants.conf で "+universal" を記述した場合、アーキテクチャは macports.conf の "universal_arch" で指定する。
- x86_64:64bit Intel
- i386:32bit Intel
- ppc64:64bit PowerPC
- ppc:32bit PowerPC
sudo nano /opt/local/etc/macports/macports.conf# CPU architectures to use for Universal Binaries (+universal variant) universal_archs x86_64 i386応用
MacPorts の掃除
-
MacPorts の使用量を調べる。
du -sh /opt
-
インストール済みのポートから中間ファイルを全て削除する。
sudo port clean --all installed
-
無効(非アクティブ)なポートを削除する。
sudo port -u uninstall
インストール済みのポートのバリアントを変更する
インストール済みのポートをバリアントの設定に合わせて更新したい場合は新しくインストールしてもいいけど upgrade コマンドに "--enforce-variants" フラグを追加することでも変更することが出来る。
-
特定のポートのバリアントを変更する場合
sudo port upgrade --enforce-variants portname +variants
-
インストール済みの全てのポートのバリアントを変更する場合
例えば variants.conf に "+universal" を追加して "upgrade installed" コマンドを実行してもバリアントは変更されないが、フラグをつけるとバリアントを変更して更新される。sudo port upgrade --enforce-variants installed
依存関係などで止まってしまう場合は "-n" オプションで依存関係のアップグレードを無効にすることが出来る。
sudo port -n upgrade --enforce-variants installed
複数のバージョンが選択出来るポートの切り替え
インストールされるポートによってはバージョン別で切り替えが可能なもの(python や gcc など)があり、"select" コマンドを使うことでリンクなどを自動で変更してくれる。
-
インストールされているポートから選択出来るバージョンを確認する
port select --list python
Available versions for python: none (active) python25-apple python26-apple python27
-
バージョンを選択する
sudo port select --set python python27
Selecting 'python27' for 'python' succeeded. 'python27' is now active.