インストールしたいpkgがある場合、どのように探すか。
pkg searchに与えるオプションを変えながら探していく。
sageというpkgを探す場合を例に取って記録しておく。
まずはsearchから
pkg seach sageですな。
$ pkg search sage
dosage-2.6
gmessage-0.2_5
gxmessage-2.12.4_1
nagios-check_cpu_usage-1.0
p5-AnyEvent-MessagePack-0.19
p5-CGI-Application-Plugin-MessageStack-0.34
p5-Catalyst-Plugin-StatusMessage-1.002000
p5-Data-MessagePack-0.48
p5-Data-MessagePack-Stream-0.07_1
山のように引っかかって面倒。
検索する文字列を考慮してみよう。
searchで正規表現
正規表現が使えるので、頭にsageとつくpkgを探す。"^sage"を与えればよいですな。
$ pkg search "^sage"
sage-0.2.0_3
一件になった。
ではインストール…の前に必ず確認。
インストールしていないpkgの詳細を知る
インストール済みのpkgであればpkg infoで調べることができる。
未インストールならどうするか。
-fを付ければよい。
$ pkg search -f "^sage"
sage-0.2.0_3
Name : sage
Version : 0.2.0_3
Origin : graphics/sage
Prefix : /usr/local
Categories : graphics devel
Maintainer : oliver@FreeBSD.org
WWW : http://www.worldforge.org/dev/eng/libraries/sage
Comment : OpenGL extension library
Shared Libs required:
libSDL-1.2.so.11
Shared Libs provided:
libsage.so.2
Flat size : 953KiB
Pkg size : 96 KB
Description :
Sage is an OpenGL extension library written to make use of SDL's mechanism for
enabling OpenGL's extensions.
WWW: http://www.worldforge.org/dev/eng/libraries/sage
欲しいsageは数学関連のものなので、どうも違うようですな。
危なかった!
しかし狙いのsageは無いのだろうか。
カテゴリで探す
pkgはカテゴリ分けされている。
狙いのsageは数学関連であるから、おそらくmathの下にあるはずだ。
$ pkg search "^math/"|less
math/R
math/R-cran-ChangeAnomalyDetection
math/R-cran-Formula
(略)
あるいは:
$ pkg search "math\/"|less
math/R
math/R-cran-ChangeAnomalyDetection
math/R-cran-Formula
(略)
しかし。
ありませんでした。
$ pkg search "math\/"|grep sage|wc -l
0
$
仕方がないのでportsでインストールしよう。
math/sageはportsにはないのだろうか。
psearchを使う。
$ psearch "^sage"
graphics/sage OpenGL extension library
math/sage Open source Mathematics software
あった。
portsでのインストールは最小限に。
しかしportsからインストールするソフトウェアは最小限にしたい。
つまりmath/sageだけはportsを使ってもよいが、依存するものはpkgを使いたい。
本命ではない依存ソフトウェアのコンパイルなど待ちたくないし。
portmasterを使うなら-Pを与えればよい。
以下、portmasterのman抜粋。
-P|--packages
use packages, but build port if not available
$ sudo portmaster -P math/sage
(中略)
===>>> Initial dependency check complete for math/sage
===>>> math/sage >> (15)
===>>> The following actions will be taken if you choose to proceed:
Install math/sage
Install devel/autoconf
Install devel/autoconf-wrapper
Upgrade pkg-1.1.4_10 to pkg-1.2_1
Install devel/gmake
Install devel/m4
Install misc/help2man
Install devel/p5-Locale-gettext
Install math/atlas
Install print/teTeX-base
Install print/teTeX-texmf
Install print/font-amsfonts
Install print/tex-texmflocal
Install textproc/texi2html
Install www/libwww
Install devel/libtool
===>>> Proceed? y/n [y] n
pkgのアップグレードも提案された。
嫌な予感しかしない。
pkgのアップグレードはやめよう。
いったんNで抜ける。
portmasterで特定のportsのアップグレードを抑止したい。
-xオプションを使う。
portmasterのmanから抜粋。
$ portmaster --version
===>>> Version 3.17.3
$ man portmaster
-x avoid building or updating ports that match this pattern. Can be
specified more than once. If a port is not already installed the
exclude pattern will be run against the directory name from
/usr/ports.
$ sudo portmaster -P -x pkg math/sage
(中略)
===>>> Initial dependency check complete for math/sage
===>>> math/sage >> (14)
===>>> The following actions will be taken if you choose to proceed:
Install math/sage
Install devel/autoconf
Install devel/autoconf-wrapper
Install devel/gmake
Install devel/m4
Install misc/help2man
Install devel/p5-Locale-gettext
Install math/atlas
Install print/teTeX-base
Install print/teTeX-texmf
Install print/font-amsfonts
Install print/tex-texmflocal
Install textproc/texi2html
Install www/libwww
Install devel/libtool
意図した通りpkgのupgradeが外れている。
ただ…pkgレポジトリのものよりportsのバージョンが新しいとやっぱりportsが選ばれてしまう。