Help us understand the problem. What is going on with this article?

さくらのレンタルサーバ(スタンダード)で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のほうでお願いします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away