Edited at

さくらのレンタルサーバ(スタンダード)でportsとpkgngを使って超簡単インストールツールを作ってみた

More than 3 years have passed since last update.

みんな大好きさくらのレンタルサーバ(スタンダード)

共用サーバなのにSSHログイン出来ちゃうし、最近は容量が100GBも付いてくるしで、なかなか他のサービスに移る気がしない!って人も多いんじゃないでしょうか。

折角たくさん容量余ってるんで、昔やりかけて挫折してたportsを導入しようと色々頑張った結果、ツール(っぽいもの)が出来たので、折角なので公開します。


はじめに:3行まとめ


  • セットアップコマンド叩いて

  • pspkg --install editors/vim (お好きなports)

  • あとは待つだけ (うまくいかないときもある)


About

ツール名: pspkg

バージョン: 1.0.0

user-based Port Snap + PKG tool for FreeBSD

pspkgの正体は、要するにportsとpkgngのラッパーです。


  • portsnapで最新のソフトウェア群をカバーし、

  • portsでmake packageし、

  • それらパッケージの管理をpkgngを使って行ってます。



  • make configまでは面倒見てませんので各自でお好きに!

  • ちなみにbash&おおよそ標準的なコマンド群でできてます(ただのラッパーなんで)。

  • それ以上でもそれ以下でもありません。

  • ただし、ユーザ権限にてうまく動作するよう、初期設定を極力調整してあります。


動作確認した環境


  • 自分の www****.sakura.ne.jp (ぉ


さくら

% uname -r

9.1-RELEASE-p24

% uname -m
amd64



  • FreeBSD 9.1-RELEASE on vagrant (Windows 7 x86_64)


vagrant

% uname -r

9.1-RELEASE

% uname -m
amd64



  • それぞれに標準でインストールされるbashとcshでテストしてます。


セットアップ方法

homebrewとかでよくあるやつリスペクトで。

bashのひとはこっち

bash -c "$(curl -fsSL https://raw.githubusercontent.com/bellflower2015/pspkg/master/setup.bash)"

cshのひとはこっち


csh

sh -c 'bash -c "$(curl -fsSL https://raw.githubusercontent.com/bellflower2015/pspkg/master/setup.bash)"'


デフォルトでは、ファイル群は $HOME/.pspkg ($PSPKGDIR) 配下に全て格納されます。

(上記コマンドを叩く前にあらかじめ環境変数 PSPKGDIR を設定しておくと変更できる・・・はず)

ただSTDOUTとSTDERRの内容を垂れ流すのも芸がないので、可能なとこは棒(Loading Spinner)をぐるぐる回してみましたw

ぐるぐる回ってる間のログが見たい・・・という場合は $PSPKGDIR/var/log 配下を探してみてください。

上記コマンドを叩くと、こんな感じでセットアップが始まります。


curlでpspkg本体を取ってきます

vagrant@freebsd:/home/vagrant % sh -c 'bash -c "$(curl -fsSL https://raw.githubusercontent.com/bellflower2015/pspkg/master/setup.bash)"'

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8136 100 8136 0 0 5900 0 0:00:01 0:00:01 --:--:-- 7610


基本ディレクトリは$HOME/.pspkgです

PSPKGDIR:  /home/vagrant/.pspkg



portsnapのセットアップが始まります。extract中はぐるぐる。

PORTSNAP:  fetch

Looking up portsnap.FreeBSD.org mirrors... 7 mirrors found.
Fetching public key from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Sun Sep 27 09:05:33 JST 2015:
912f95ba2245b1b00f1d1c427d6b3c9b34612e3cef53c2100% of 69 MB 13 MBps
Extracting snapshot... done.
Verifying snapshot integrity... done.
Fetching snapshot tag from ec2-ap-northeast-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Updating from Sun Sep 27 09:05:33 JST 2015 to Mon Sep 28 02:21:17 JST 2015.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 25 patches.....10....20.. done.
Applying patches... done.
Fetching 1 new ports or files... done.
PORTSNAP: extract ... [\]

下記のように出力されたらセットアップ完了です。

指示の通り、PSPKGDIRPATHLD_LIBRARY_PATHを設定してください。


セットアップ完了

PORTSNAP:  extract                                                          ... [OK]

PORTSNAP: update ... [OK]
INFO: SETUP COMPLETED

Make sure you have environment variables set:

# bash
export PSPKGDIR=$HOME/.pspkg
export PATH=$PSPKGDIR/bin:$PATH
export LD_LIBRARY_PATH=$PSPKGDIR/lib:$LD_LIBRARY_PATH

# csh
setenv PSPKGDIR $HOME/.pspkg
setenv PATH $PSPKGDIR/bin:$PATH
if ( ${?LD_LIBRARY_PATH} ) \
setenv LD_LIBRARY_PATH $PSPKGDIR/lib:$LD_LIBRARY_PATH
if ( ! ${?LD_LIBRARY_PATH} ) \
setenv LD_LIBRARY_PATH $PSPKGDIR/lib



ソフトウェアを探す

例えばvimをインストールしたい!というとき、--searchオプションを使って検索します。


search

% pspkg --search vim



search結果

vagrant@freebsd:/home/vagrant % pspkg --search vim

PSPKGDIR: /home/vagrant/.pspkg
Port: p5-Shell-EnvImporter-1.07_1
Path: /home/vagrant/.pspkg/ports/devel/p5-Shell-EnvImporter
Info: Inherit different shell environments and restore previous

Port: neovim-0.0.0.201507060407_1
Path: /home/vagrant/.pspkg/ports/editors/neovim
Info: Next generation Vim

Port: p5-Vimana-2010.09303_3
Path: /home/vagrant/.pspkg/ports/editors/p5-Vimana
Info: Vim script manager

Port: vim-7.4.873
Path: /home/vagrant/.pspkg/ports/editors/vim
Info: Improved version of the vi editor

()



ソフトウェアをインストールする

いま検索したvimをインストールするぞ!というときは--installオプションを使います。

指定方法は portsディレクトリ以下のパス に則っているので注意してください。


install

% pspkg --install editors/vim


こんな(下記)感じでずらずら〜〜〜っと出力されます。

この間、約20分弱くらい。

この例で言うとportsでvimが依存しているパッケージは全てインストールされます。

デフォルトで portsのデフォルト設定 + PREFIX=$PSPKGDIR (バイナリは$PSPKGDIR/binに入る)というコンフィグになります。で、vimに関しては ぼーっと待ってるだけでインストール完了

(パッケージによってはインストールパスが固定されているものもあるため、すんなりインストールできない=書き込み権限エラーでインストール処理が止まるものもあります。その場合は各パッケージのディレクトリに潜って自力でMakefileとかをなんとかするw)

vagrant@freebsd:/home/vagrant % pspkg --install editors/vim

PSPKGDIR: /home/vagrant/.pspkg
INSTALL: ports-mgmt/pkg ... [OK]
MAKE: devel/libedit ... [OK]
PKG_ADD: devel/libedit ... [OK]
MAKE: devel/m4 ... [OK]
PKG_ADD: devel/m4 ... [OK]
MAKE: textproc/expat2 ... [OK]
PKG_ADD: textproc/expat2 ... [OK]
MAKE: converters/libiconv ... [OK]
PKG_ADD: converters/libiconv ... [OK]
MAKE: devel/gettext-runtime ... [OK]
PKG_ADD: devel/gettext-runtime ... [OK]
MAKE: devel/gettext-tools ... [OK]
PKG_ADD: devel/gettext-tools ... [OK]
MAKE: lang/perl5.20 ... [OK]
PKG_ADD: lang/perl5.20 ... [OK]
MAKE: devel/p5-Locale-gettext ... [OK]
PKG_ADD: devel/p5-Locale-gettext ... [OK]
MAKE: devel/gmake-lite ... [OK]
PKG_ADD: devel/gmake-lite ... [OK]
MAKE: misc/help2man ... [OK]
PKG_ADD: misc/help2man ... [OK]
MAKE: devel/gmake ... [OK]
PKG_ADD: devel/gmake ... [OK]
MAKE: devel/autoconf-wrapper ... [OK]
PKG_ADD: devel/autoconf-wrapper ... [OK]
MAKE: devel/autoconf ... [OK]
PKG_ADD: devel/autoconf ... [OK]
MAKE: textproc/libyaml ... [OK]
PKG_ADD: textproc/libyaml ... [OK]
MAKE: devel/libexecinfo ... [OK]
PKG_ADD: devel/libexecinfo ... [OK]
MAKE: lang/ruby21 ... [OK]
PKG_ADD: lang/ruby21 ... [OK]
MAKE: devel/pkgconf ... [OK]
PKG_ADD: devel/pkgconf ... [OK]
MAKE: lang/python27 ... [OK]
PKG_ADD: lang/python27 ... [OK]
MAKE: lang/lua52 ... [OK]
PKG_ADD: lang/lua52 ... [OK]
MAKE: lang/tcl86 ... [OK]
PKG_ADD: lang/tcl86 ... [OK]
MAKE: devel/cscope ... [OK]
PKG_ADD: devel/cscope ... [OK]
MAKE: devel/ctags ... [OK]
PKG_ADD: devel/ctags ... [OK]
MAKE: editors/vim ... [OK]
PKG_ADD: editors/vim ... [OK]
COMPLETED: editors/vim


参考にしたサイト


おわりに

お気づきの点などありましたらコメントまたはTwitterまで。

ソースに関する事はGitHubのほうでお願いします。