FreeBSDのportsを一般ユーザー権限でインストールしてみるテスト Tweet
※ この記事の作業だけでは動かないportsもあります。詳しくは次の記事を参照してください。
(論理)今日は朝っぱらから横浜にビールでも飲みに行くか、と思ってたのに、なぜか昔使ってたFreeBSDな環境を気まぐれで再整備してました。
ただviが素のviだったで、とりあえずなんとかしたいなと思ったんだけど、自分の管理してるサーバじゃないのでユーザー権限だけでなんとかできる方法を探してみました。
記事中ちょっと気になったのが、
でもinstallは途中でsuをしようとして失敗するので、手で配置する。
というところで、あのへんいろいろ細工できるようになってた気がしたので、/usr/ports/Mk/bsd.port.mk
を読んでみたら、
# INSTALL_AS_USER
# - Define this to install as the current user, intended
# for systems where you have no root access.
なんてのを発見。
あとはシステムのディレクトリ見に行きそうなあたりを回避する目的でNO_PKG_REGISTER
とかNO_MTREE
あたりを追加してみました。
最終的には以下のような感じ。基本的な流れは元サイトそのままです。
1. インストール場所の用意、portsの知恵を借りる
元サイトと配置が違うけど、この辺りはお好みでどうぞ。
vimだけじゃなくて他もインストールする可能性ある気がしたのでこんな感じに。
$ mkdir ~/ports
$ mkdir ~/ports/ports
$ mkdir ~/ports/distfiles
$ cp -r /usr/ports/editors/vim ~/ports/ports/
2. Makefileを編集する
設定を上書きする部分は、あとで他のportsを入れるときにも使いまわせるように、別ファイルにして.include
で読み込むようにしてみました。
INSTALL_AS_USER=yes
NO_PKG_REGISTER=yes
NO_MTREE=yes
DISTDIR=${HOME}/ports/ports/distfiles
PREFIX=${HOME}/ports
WRKDIR=/tmp/work
TARGETDIR=${HOME}/ports
上記の内容で~/ports/ports/ports.userspace.mk
というファイルを作成しておいて、~/ports/ports/vim/Makefile
の先頭に、
.include "../ports.userspace.mk"
を追加します。
3. makeして、installする
普通にインストールできるようになりました。
$ cd ~/ports/ports/vim/
$ make
$ make install
4. 補足
とりあえずvimに関してはこれで特に問題なかったんですが、その他のportsがこれだけで十分かは不明なので、実際に自分の環境で試してみる場合にはご注意ください。
しかし、vim 7.3のパッチが556個(本家ftp.vim.orgに置いてあるファイルは1,314個)もあって、fetchしてくるときにftpサイトが音を上げてエラーをだしているという……fetchしているときにProtocol errorとか出てても気にしないでください。
これports側でhttpを優先にするかvim.org側である程度の数ごとにtarballにしたほうがいい気が……