SlideShare a Scribd company logo
Naoya NAKAZAWA
2008.04.24
Agenda
• MacPortsとは何か
• インストール方法と使い方
• Portfileの作り方
• プロジェクトへの参加方法
MacPortsとは何か
http://www.macports.org/
MacPorts is an easy to use system for compiling,
installing, and managing open source software.
オープンソースソフトウェアを
コンパイルしてインストールできるシステム
Similar to ...
http://www.finkproject.org/
Similar to ...
http://www.freebsd.org/ports/
Number of Packages
MacPorts 4,675
Flink 8,461
FreeBSD Ports 18,361
※2008.04.23時点
History
2002 - DarwinPorts
http://darwinports.com/
Part of OpenDarwin
Project
http://web.archive.org/web/20070507105243/http://
www.opendarwin.org/
2006 - Update
DarwinPorts
MacPorts
インストール方法
1. XCode Tools をインストールする
ADCに登録が必要
2. MacPorts Download Directoryから
MacPorts-1.x.x.dmgをダウンロード
3. MacPorts-1.x.x.pkgをインストール
4. portsツリーを最新にする
% sudo port -d selfupdate
% sudo port -d sync
使い方
/opt/local/bin/port
% sudo /opt/local/bin/port -h
Usage: port
[-bcdfiknopqRstuvx]
[-D portdir] [-F cmdfile] action
[privopts] [actionflags]
[[portname|pseudo-portname|port-url]
[@version] [+-variant]... [option=value]...]...
よく使うコマンド
• リポジトリを最新にする
% sudo /opt/local/bin/port <-d> selfupdate
% sudo /opt/local/bin/port <-d> sync
• portをインストールする
% sudo /opt/local/bin/port <-v> install foo
% sudo /opt/local/bin/port install zsh-devel screen
emacs
• Leopard(10.5)の場合、zshが古いのでzsh-devel
を使う
• インストールされているportをすべてアップ
デートする
% sudo /opt/local/bin/port upgrade outdated
• emacsだけアップデートする
% sudo /opt/local/bin/port upgrade emacs
その他のオプション
• selfupdate: リポジトリと同期する
• sync: 新しいportだけ取得する
• list: 利用可能なportを一覧表示する
• search: port名から部分一致検索する
• info: port情報を表示する
• deps: 依存しているportを表示する
• variants: インストールするときに利用可
能なオプションを表示する
• install: portをインストールする
• clean: 中間ファイルを削除する
• uninstall: portをアンインストールする
% sudo /opt/local/bin/port uninstall
<port_name> @version
• contents: インストールされているportに
含まれているファイル一覧を表示する
• installed: インストールされているportを
表示する
• outdated: アップデートされているportを
表示する
• upgrade: portをアップグレードする
• dependents: インストールされているport
の依存関係を表示する
• livecheck: 開発者のサイトでアップデー
トされているか調べる
• activate: portを使えるように設定する(複
数のバージョンをインストールすると
きに使う)
PortVariants
• インストールオプションを表示する
% sudo /opt/local/bin/port variants postfix
postfix has the variants:
universal
pcre: add pcre support
tls: add tls supporti via openssl
sasl: add sasl support via cyrus-sasl2
• インストールオプションを指定する
% sudo /opt/local/bin/port <-v> postfix +sasl
• インストールオプションを明示的には
ずす
% sudo /opt/local/bin/port <-v> postfix -sasl
Binary Archives
• アーカイブモードを有効にする
/opt/local/etc/macports/macports.conf
portarchivemode yes
• バイナリパッケージを作る
% sudo /opt/local/bin/port <-d> archive
port_name
% sudo /opt/local/bin/port <-d> archive zsh
/opt/local/var/macports/packages/darwin/
i386/zsh-4.2.7_0.i386.tgz
Portfileの作り方
• TCLスクリプトでPortFileを書く
Portfileの例(抜粋)
% cat /opt/local/var/macports/sources/rsync.macports.org/release/
ports/sysutils/screen/Portfile
# $Id $
PortSystem 1.0
name screen
version 4.0.3
homepage http://www.gnu.org/software/screen/
description Screen manager withVT100/ANSI terminal emulation
long_description Screen is a full-screen window manager that multiplexes a physical 
terminal between several processes (typically interactive shells). 
Each virtual terminal provides the functions of a DECVT100 terminal 
and, in addition, several control functions from the ANSI X3.64 (ISO 
6429) and ISO 2022 standards (e.g. insert/delete line and support for 
multiple character sets).There is a scrollback history buffer for each 
virtual terminal and a copy-and-paste mechanism that allows moving text 
regions between windows.
categories sysutils
platforms darwin
maintainers digdog@macports.org
master_sites http://fresh.t-systems-sfr.com/unix/src/misc/ 
ftp://ftp.uni-erlangen.de/pub/utilities/screen/ 
http://www.cis.nctu.edu.tw/~is85005/dports/screen/:encoding
• Subversion IDのタグ
# $Id$
• Portfileの最初の行に書くおまじない
PortSystem 1.0
• Port名
name foo
• バージョン
version 1.23.45
• リビジョン
revision 1
• オプションキーワード(バージョンを区
別するときに使われる)
epoch 20080424
• 所属するカテゴリ
categories net security
• メンテナー
maintainers naoya cocoitiban
• 説明文
description A classic hoge program
• 詳しい説明文
long_description A long description ...
• ホームページ
homepage http://www.example.com/foo
• プラットフォーム
platforms darwin freebsd
GlobalVariants
prefix インストール場所
binpath 実行ファイルを探すパス
libpath TCLライブラリのパス
portpath PortFileのフルパス
filesdir ファイルディレクトリの相対パス
workpath 作業ディレクトリのパス
worksrcpath ソースコードを展開するフルパス
destroot ソフトウェアの配布パス
distpath ソフトウェアのダウンロードパス
install.user インストールユーザ
install.group インストールグループ
os.platform
プラットフォームの
識別子
os.arch ハードウェアの種類
os.version OSのバージョン
os.endian プロセッサのエンディアン
os.major OSのメジャーバージョン
x11prefix X11への相対パス
Installation Phases
1 fetch ソースコードのダウンロード
2 checksum チェックサム
3 extract ソースコードを展開
4 patch ���ッチをあてる
5 configure configureを実行
6 build makeを実行
7 test portに付属しているテストを実行
8 destroot make installを実行
9 archive バイナリアーカイブを作る
10 install インストールされた配布ファイルをコピーする
11 activate ハードリンクを作成する
さっそく作ってみる
• ローカルPortfileリポジトリを準備する
% sudo emacs /opt/local/etc/macports/sources.conf
file:///Users/Shared/macports
rsync://rsync.macports.org/release/ports/
• ディレクトリを作る
% cd /Users/Shared
% mkdir -p ports/misc/bat
% cd ports/misc/bat
• Portfileを作る
# $Id$
PortSystem 1.0
name bat
version 0.0.1
categories misc
maintainers bto
description bat
long_description bat
homepage http://labs.unoh.net/2006/10/global_standard_programming_wi.html
html
platforms darwin
master_sites http://labs.unoh.net/misc/autotools
checksums md5 dd15d8257a84d8d9cc4edadf5dec4b4a 
sha1 67d95834dff4776175798d03553e3574c4fd2e61 
rmd160 41c93ce881e62563b210f29131f5ae011c81a652
• checksumを計算する
% md5 bat-0.0.1.tar.gz
% openssl sha1 bat-0.0.1.tar.gz
% openssl rmd160 bat-0.0.1.tar.gz
• Portインデックスを更新する
% cd /Users/Shared/ports
% sudo /opt/local/bin/portindex
% ls
PortIndex misc/
• Portをインストーしてみる
% sudo /opt/local/bin/port search bat
bat misc/bat 0.0.1 bat
% sudo /opt/local/bin/port bat install
---> Unpacking tgz archive for bat 0.0.1_0
---> Installing bat 0.0.1_0
---> Activating bat 0.0.1_0
---> Cleaning bat
プロジェクトへの
参加方法
MacOS forge
Trac + Wordpress
http://trac.macports.org/projects/macports/report/1
Tracでチケットを切る
決まり事
• Summary
BUG: <port_name> 簡単な説明
• Type
defect: ビルドに失敗する問題など
enhancement: パッチがあるとき
• Full Description
{{{ 詳しい説明 }}}
• Priority
High / Normal / Low / Not set
• Component
base / guide / ports / server / website / wiki
• Keywords
チケットを検索するときのキーワード
• Cc
チケットを切った人とメンテナの連絡先
macports-tickets@lists.macosforge.org,
maintainer@example.com
• Milestone
Port Bugs など
• Version
対象のMacPortバージョン
• Assign To
アサインする人
新しいportを追加
• チケットを切る
• Typeをenhancementにする
• MilestoneをPort Submissionsにする
• PortFileをチケットに添付する
• コミット権限がほしいときは、PortMgr
チームにメールする
• PortMgr Team
James D. Berry
Juan Manuel Palacios
Markus W. Weissman
Thank you!

More Related Content

Mac Ports