14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

パッケージ管理ツール porg (1)実践的インストール

Last updated at Posted at 2018-09-12

概要

porg は、ソースコードからビルドを行ったパッケージソフトウェアなどを管理するためのパッケージ管理ツールです。通常の Linux ディストリビューションなどでは、既定のパッケージ管理ツールが提供されていますから、普通はこんなツールを必要としません。これが必要となるのは、既定のパッケージ管理ツールの範囲外において、そもそも必要なパッケージが提供されていなかったり、パッケージ提供はあるけれども root 権限がないので導入できなかったり、あるいは既存パッケージをカスタマイズしてインストールしたかったり、といった場面を通じて、各種ソフトウェアを導入および管理する際に porg が活用できます1

porg は元々は paco という名で開発されていたものが、名前が変わり開発者も変わって porg となりました。何人かの方が porg (あるいは paco) のことを紹介したり説明したりするサイトが存在していますから、覗いて見るのも良いかと思います。ただ筆者はこれまで porg の扱いに慣れ親しんできていて、他の方の紹介サイトなどには、後一歩、実践的な手順が抜けているようにも感じます。ですから、porg の実践的活用方法を示すことにします。まずここではインストールまでの話をします。

入手とインストール

提供サイトからのソース入手

提供サイトは以下です:
porg Source Code Package Organizer
https://sourceforge.net/projects/porg/files/

本文執筆時点での最新バージョンは porg-0.10 ですので、上記サイトから porg-0.10.tar.gz をダウンロードします。

$ wget https://sourceforge.net/projects/porg/files/porg-0.10.tar.gz

標準的なインストール

porg のソースからのビルド・インストールは、標準的には以下のようにします。ここでいう標準的とは、root 権限も有していて、porg を全ユーザー向けにインストールするような状況を指すものとします。そしてこの節の後に、実践的なインストール手順も示しますが、一通りここでの手順も一読ください。

$ tar xf porg-0.10.tar.gz
$ cd porg-0.10
$ ./configure --prefix=/usr \
$    --sysconfdir=/etc      \
$    --disable-grop
$ make
$ sudo ./porg/porg -lD make install

ポイントをいくつか示します。

  • --prefix=/usr により、porg の実行モジュールを /usr/bin にインストールするようにします。必要に応じて --prefix=/usr/local などとします。
  • --sysconfdir=/etc により porg の設定ファイル porgrc などを /etc ディレクトリ配下にインストールします。これがない場合は ${PREFIX}/etc になってしまい、FHS 的には不適当となります。
  • --disable-grop は porg の GUI バージョンをインストールしないようにします。デスクトップ環境 (X 環境) でのインストールであって GUI 版も利用する場合には、このオプションをはずします。ちなみにこの GUI 版はあまり期待しない方がよいです。コマンドラインを叩く方法をしっかり身につければよいと思います。
  • sudo ./porg/porg ... は、他のサイトでは見かけないインストールの仕方かと思います。これが正しいのです。
    ./porg/porg というのは、ソースディレクトリ内にてビルドされた、出来立てホヤホヤの porg 実行モジュールです。
    porg のバージョン 0.8 以下か、あるいはその前身である paco を操作されていた方は、ここで make install とした上で続けて make logme としていたはずです。
    この logme というのは、porg そのものを porg のパッケージ管理の中に登録するコマンドになっていました。こうしないと登録が出来なかったのです。
    しかしこの logme は porg 0.9 以降はなくなりました。
    代わりに ./porg/porg -lD make install で、porg のインストールと同時に、管理登録までも行うようになりました。

実践的なインストール

そもそもなぜ porg を利用したいかと言えば、端的に言って「root 権限を持っていないけど、パッケージ管理をしたい」ということになるかと思います。となると、上で示した標準的インストールの手順は使えません。なぜなら /usr ディレクトリは管理権限なしには操作できないからです。さらに porg は登録されるパッケージ情報をテキストファイルに保存するのですが、その保存先ディレクトリはデフォルトでは /var/log/porg となっています。これもまた管理権限なしには操作できません。

ちなみに上の標準的なインストールを行った porg を、一般ユーザーが利用すると以下のように、

$ porg -lp package somecommands....
porg: /var/log/porg: Permission denied

といったように /var/log/porg にアクセスできず porg 操作ができません。

一般ユーザーでの利用を前提に (一般ユーザーが自分だけで porg を導入して利用することを前提に) porg をインストールするのであれば、例えば以下のようなインストール手順とします。ここでの要点は、root 権限を必要とするディレクトリにはインストールを行わないようにすることです。

$ tar xf porg-0.10.tar.gz
$ cd porg-0.10
$ ./configure --prefix=$HOME/usr           \
$    --sysconfdir=$HOME/etc                \
$    --with-porg-logdir=$HOME/var/log/porg \
$    --disable-grop
$ make
$ mkdir -p $HOME/var/log/porg
$ ./porg/porg -lD make install

ポイントは以下となります。各種ディレクトリは適宜、好みに合わせて変更してください。

  • --prefix=$HOME/usr は、自分のホームディレクトリ配下の $HOME/usr/bin (具体的に例えば /home/foo/usr/bin) に porg 実行モジュールをインストールするようにします。
    当然 $HOME/usr/bin には PATH を通す必要があります2
  • --sysconfdir=$HOME/etc も同様です。/etc ではなく $HOME/etc を指定します。
  • 新たに --with-porg-logdir=$HOME/var/log/porg を加えます。前述した「porg が管理する各種パッケージ情報を示したテキストファイル」を $HOME/var/log/porg に置くことを指示します。
  • mkdir -p $HOME/var/log/porg により、上のディレクトリを生成します。

こうすることで、porg を root 権限なしに自在に操作していくことができます。

インストール後の動作確認

porg のバージョンを確認します。

$ porg --version
porg-0.10 (17 May 2016)
Written by David Ricart <http://porg.sourceforge.net>

porg そのものが porg によって管理されているかどうかを確認します。

$ porg porg
porg-0.10

管理されている porg のインストール済ファイルを一覧確認します。(foo は自ユーザー名を表わします。)

$ porg -f porg
porg-0.10:
/home/foo/etc/bash_completion.d/porg_bash_completion
/home/foo/etc/porgrc
/home/foo/usr/bin/paco2porg
/home/foo/usr/bin/porg
/home/foo/usr/bin/porgball
/home/foo/usr/lib/libporg-log.a
/home/foo/usr/lib/libporg-log.la
/home/foo/usr/share/man/man5/porgrc.5
/home/foo/usr/share/man/man8/porg.8
/home/foo/usr/share/man/man8/porgball.8
/home/foo/usr/share/porg/README
/home/foo/usr/share/porg/download.png
/home/foo/usr/share/porg/faq.txt
/home/foo/usr/share/porg/index.html
/home/foo/usr/share/porg/porg.png
/home/foo/usr/share/porg/porgrc

なおこの出力結果は、先に示した「実践的インストール」を行った結果です。「標準的インストール」を行った場合は、ちょうど \home\foo を取り除いた出力結果となります。

また bash-completion パッケージがインストールされていない場合は、ファイル一覧先頭の /home/foo/etc/bash_completion.d/porg_bash_completion はインストールされていないはずです。

/usr/bin/porg を一般ユーザーが使うための環境整備

porg が root 権限で既にインストールされている環境において、自ユーザーが独自に porg によるパッケージ管理を行いたいとします。つまり porg がごく標準的に /usr/bin/porg にインストールされている状態で、root ではない自ユーザーが porg を使う方法です。単純に porg -lD make install を実行するだけでは、上で示したように /var/log/porg へのアクセス権限がないため正常処理ができません。

そこで /var/log/porg というディレクトリアクセスを、実行時に変更する方法をとります。porg の実行オプション --logdir=<log directory> を使います。前述のとおり、このディレクトリは「porg が管理する各種パッケージ情報を示したテキストファイル」が収容される場所であるため、そういったディレクトリを自ユーザーが自由にアクセスできるディレクトリに振り替えてしまうというやり方になります。

まずは自ユーザーのホームディレクトリ配下に、上で言うディレクトリを新たに作ります。ここでは $HOME/.var/log/porg というディレクトリにします。

$ mkdir -p $HOME/.var/log/porg

そして例えば bar パッケージを make install によりインストールする際には、--logdir オプションをつけて以下のように実行します。

$ porg -lp bar-0.0.1 --logdir=$HOME/.var/log/porg make install

$HOME/.var/log/porg へは、今の場合 bar パッケージに関する情報を収めたテキストファイルが新たに作り出されます。

これより先は注意が必要です。
/usr/bin/porg によって管理された通常のパッケージ情報は /var/log/porg 配下にあるはずですので、単純に porg を実行すると、それは /var/log/porg 配下にあるパッケージ情報を取り扱うことになります。したがってもし、上の bar パッケージを以下のようなコマンドにより参照しようとしても、参照できないことになります。bar パッケージの情報は $HOME/.var/log/porg にあるのであって、/var/log/porg にはないからです。

$ porg bar
(...何も表示されない...)

bar パッケージの情報は $HOME/.var/log/porg にあるわけですから、これを参照するためにはここでも --logdir オプションを使わなければなりません。

$ porg --logdir=$HOME/.var/log/porg bar
bar-0.0.1

この後に、自ユーザー管理のもとに、別のパッケージを新たにインストールする場合や、それまでの自分が管理する登録パッケージを参照する場合など、すべての局面において --logdir=$HOME/.var/log/porg をつけていくことになります。毎回毎回 --logdir オプションをつけての実行は面倒になるので、いっそのこと alias を定義してしまいましょう。~/.bashrc あたりに以下の1行を加えます。

alias porg="porg --logdir=$HOME/.var/log/porg"

もう一度、今度は --logdir オプションを入力せずに bar パッケージを参照してみます。(source ~/.bashrc を行うなどして alias を有効にしておきます。)

$ porg bar
bar-0.0.1

bar パッケージの情報が表示されます。もうこれから先は、--logdir をつけずに利用していくことができます。

なお /var/log/porg に登録されているパッケージ情報も、同時に参照したいような場合は、alias を無効にするために porg の前に \ (バックスラッシュ) をつけて実行します。

$ \porg somepackage
somepackage-1.2.3

このあたりは、かなり個人的な嗜好もあるところかと思いますので、適宜ご対処ください。

  1. そもそもこのツールは Linux From Scratch に集う開発者の中から作り出されたツールであるようで、実践として Linux From Scratch をビルド構築する際のパッケージ管理に活用することができます。

  2. ~/.bashrc などに export PATH=$HOME/usr/bin:$PATH といった記述を書き加えることになります。さらに man ページも参照したいなら、同じように ~/.bashrcexport MANPATH=$HOME/usr/share/man:$MANPATH も加えることになるでしょう。

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?