さくらのレンタルサーバ(スタンダード)でportsとpkgngを使って超簡単インストールツールを作ってみた
(Qiitaの記事とほぼ内容は同じです!)
みんな大好きさくらのレンタルサーバ(スタンダード)。
共用サーバなのに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)
% 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のひとはこっち
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 ... [\]
下記のように出力されたらセットアップ完了です。
指示の通り、PSPKGDIR
、PATH
、LD_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
オプションを使って検索します。
% pspkg --search vim
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ディレクトリ以下のパス に則っているので注意してください。
% 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
参考にしたサイト
おわりに
お気づきの点などありましたらQiita記事からコメントまたはTwitterまで。
ソースに関する事はGitHubのほうでお願いします。