SlideShare a Scribd company logo
1 of 12
Ports の FLAVOR を調べてみた
2017 年 12 月 22 日
(株)創夢 内藤 祐一郎
FLAVOR とは
● ビルドオプションが違うパッケージを作るための仕組み
● 各 port の Makefile に
FLAVORS = < フレーバ名 > ...
を入れます
● ビルドする時に
make FLAVOR=< フレーバ名 >
とします
FLAVOR とは
● make FLAVOR=all は NG です
● make pretty-flavors-package-names で
フレーバ名とパッケージ名に一覧が表示されます
例:
$ cd /usr/ports/net/bird
$ make pretty-flavors-package-names
ipv4: bird-1.6.3_3
ipv6: bird6-1.6.3_3
FLAVOR のパッケージ名
● FLAVOR 名がパッケージ名のどこに入るのかは
各 port 毎に異なります
● 前または後ろにつけるという約束はあるようです
● 既存の port を FLAVOR 対応した場合、なるべくパッケー
ジ名が変わらないように配慮しているようです
● とあるパッケージの FLAVOR 名を知りたい場合は
pkg info コマンドで flavor: の行を見ましょう
Python での利用
● Python を使う port に FLAVOR サポートが入りました
● ただし、 Python 自身の port には FLAVOR はありません
● python を使う側の port に以下のような FLAVORS を定義
する仕組みを用意しています
FLAVORS = py27 py34 py35 py36
Python での利用
● Python を利用する port にサポートバージョンに応じた
FLAVORS を入れるために USE_PYTHON を拡張したよう
です
● USE_PYTHON=noflavors で FLAVOR なし
● USE_PYTHON=flavors でデフォルトバージョンの
Python を指定します(現時点では py27 )
● USE_PYTHON=allflavors  で全てのバージョンの Python
を指定します
Python での利用の例
● 例えば devel/py-setuptools では
USE_PYTHON= allflavors
$ make pretty-flavors-package-names
py27: py27-setuptools-36.5.0
py36: py36-setuptools-36.5.0
py35: py35-setuptools-36.5.0
py34: py34-setuptools-36.5.0
Python での利用の例
● 例えば devel/py-gobject では
USE_PYTHON= flavors
$ make pretty-flavors-package-names
py27: py27-gobject-2.28.6_7
Python での利用の例
● 例えば sysutils/ansible では
USE_PYTHON= noflavors
$ make pretty-flavors-package-names
no flavor: ansible-2.4.2.0
● noflavors の場合は FLAVOR が無いときと同じ動作
pkg ユーザにとっての利点
● FLAVOR の数だけパッケージが増えたように見えます
● 依存関係などもそれぞれに応じて入ります
● アップグレードも今まで通り行えます
● バイナリパッケージの扱いについて特に変わることはあり
ません
ports のビルド
● poudriere は既に FLAVOR に対応しています
設定次第で FLAVOR のパッケージをビルドします
( FLAVOR_DEFAULT_ALL = yes )
● portmaster は 3.17.11 以降で対応しました
FLAVOR のない port から FLAVOR ありへアップデートで
きるようになりました
● portupgrade は未対応のようです
まとめ
● バイナリパッケージを使う分には特に変わったことはあり
ません
● Ports ツリーから自分でビルドしている人は poudriere 、
portmaster を使いましょう
● Ports を作る人は本当に必要かよく考えて使いましょう
下手につかうと依存関係の組み合わせ数が爆発する恐れが
あります

More Related Content

More from Yuichiro Naito

More from Yuichiro Naito (19)

HandBrake with QSV
HandBrake with QSVHandBrake with QSV
HandBrake with QSV
 
FreeBSD 12.1 RELESE
FreeBSD 12.1 RELESEFreeBSD 12.1 RELESE
FreeBSD 12.1 RELESE
 
Modern fonts
Modern fontsModern fonts
Modern fonts
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
Psql & proctitle
Psql & proctitlePsql & proctitle
Psql & proctitle
 
Iocage
IocageIocage
Iocage
 
FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!FreeBSD 11.2 RELEASE!
FreeBSD 11.2 RELEASE!
 
How to use PTI & IBRS patch
How to use PTI & IBRS patchHow to use PTI & IBRS patch
How to use PTI & IBRS patch
 
FreeBSD Desktop
FreeBSD DesktopFreeBSD Desktop
FreeBSD Desktop
 
Bsdtw repo
Bsdtw repoBsdtw repo
Bsdtw repo
 
How to use blacklistd
How to use blacklistdHow to use blacklistd
How to use blacklistd
 
Custom Package Building with Poudriere
Custom Package Building with PoudriereCustom Package Building with Poudriere
Custom Package Building with Poudriere
 
Ruby build
Ruby buildRuby build
Ruby build
 
Intel graphics
Intel graphicsIntel graphics
Intel graphics
 
Programming under capability mode
Programming under capability modeProgramming under capability mode
Programming under capability mode
 
Itamae provisioning for FreeBSD
Itamae provisioning for FreeBSDItamae provisioning for FreeBSD
Itamae provisioning for FreeBSD
 
Two iconvs
Two iconvsTwo iconvs
Two iconvs
 
FreeBSD10.2 on_mac
FreeBSD10.2 on_macFreeBSD10.2 on_mac
FreeBSD10.2 on_mac
 
FreeBSD on Mac
FreeBSD on MacFreeBSD on Mac
FreeBSD on Mac
 

FreeBSD Ports Flavors

  • 1. Ports の FLAVOR を調べてみた 2017 年 12 月 22 日 (株)創夢 内藤 祐一郎
  • 2. FLAVOR とは ● ビルドオプションが違うパッケージを作るための仕組み ● 各 port の Makefile に FLAVORS = < フレーバ名 > ... を入れます ● ビルドする時に make FLAVOR=< フレーバ名 > とします
  • 3. FLAVOR とは ● make FLAVOR=all は NG です ● make pretty-flavors-package-names で フレーバ名とパッケージ名に一覧が表示されます 例: $ cd /usr/ports/net/bird $ make pretty-flavors-package-names ipv4: bird-1.6.3_3 ipv6: bird6-1.6.3_3
  • 4. FLAVOR のパッケージ名 ● FLAVOR 名がパッケージ名のどこに入るのかは 各 port 毎に異なります ● 前または後ろにつけるという約束はあるようです ● 既存の port を FLAVOR 対応した場合、なるべくパッケー ジ名が変わらないように配慮しているようです ● とあるパッケージの FLAVOR 名を知りたい場合は pkg info コマンドで flavor: の行を見ましょう
  • 5. Python での利用 ● Python を使う port に FLAVOR サポートが入りました ● ただし、 Python 自身の port には FLAVOR はありません ● python を使う側の port に以下のような FLAVORS を定義 する仕組みを用意しています FLAVORS = py27 py34 py35 py36
  • 6. Python での利用 ● Python を利用する port にサポートバージョンに応じた FLAVORS を入れるために USE_PYTHON を拡張したよう です ● USE_PYTHON=noflavors で FLAVOR なし ● USE_PYTHON=flavors でデフォルトバージョンの Python を指定します(現時点では py27 ) ● USE_PYTHON=allflavors  で全てのバージョンの Python を指定します
  • 7. Python での利用の例 ● 例えば devel/py-setuptools では USE_PYTHON= allflavors $ make pretty-flavors-package-names py27: py27-setuptools-36.5.0 py36: py36-setuptools-36.5.0 py35: py35-setuptools-36.5.0 py34: py34-setuptools-36.5.0
  • 8. Python での利用の例 ● 例えば devel/py-gobject では USE_PYTHON= flavors $ make pretty-flavors-package-names py27: py27-gobject-2.28.6_7
  • 9. Python での利用の例 ● 例えば sysutils/ansible では USE_PYTHON= noflavors $ make pretty-flavors-package-names no flavor: ansible-2.4.2.0 ● noflavors の場合は FLAVOR が無いときと同じ動作
  • 10. pkg ユーザにとっての利点 ● FLAVOR の数だけパッケージが増えたように見えます ● 依存関係などもそれぞれに応じて入ります ● アップグレードも今まで通り行えます ● バイナリパッケージの扱いについて特に変わることはあり ません
  • 11. ports のビルド ● poudriere は既に FLAVOR に対応しています 設定次第で FLAVOR のパッケージをビルドします ( FLAVOR_DEFAULT_ALL = yes ) ● portmaster は 3.17.11 以降で対応しました FLAVOR のない port から FLAVOR ありへアップデートで きるようになりました ● portupgrade は未対応のようです
  • 12. まとめ ● バイナリパッケージを使う分には特に変わったことはあり ません ● Ports ツリーから自分でビルドしている人は poudriere 、 portmaster を使いましょう ● Ports を作る人は本当に必要かよく考えて使いましょう 下手につかうと依存関係の組み合わせ数が爆発する恐れが あります