Arch Linuxでコンパイル

Arch Linuxでソースから、
コンパイル&ビルドしてみるテスト。

Arch LinuxにはABS(Arch Build System)なるものがあり、
手軽にソースからパッケージを作ることができるみたい。
FreeBSDのPortsに近い感じです。

ABSを使うために、以下のパッケージをインストールします。

# pacman -Sy abs base-devel

使いたいリポジトリを編集します。

# vim /etc/abs.conf

REPOS=(core extra community !testing !community-testing
       !staging !community-staging !gnome-unstable !kde-unstable)

僕は、「core」「extra」「community」だけで使うようにしました。

abs」コマンドでツリーを展開します。

# abs
# ls /var/abs/
community  core  extra	local  README

これで、使用する環境が整いました。


とりあえず、簡単そうな
ngircdをIPv6対応させてみる。
(pacmanからパッケージを入れると、IPv4のみリスンするので。。。)

以下、ユーザでやっていきます。
作業ディレクトリの作成

$ mkdir -p ~/abs

ソースの所在を調べます。

$ find /var/abs/ -name ngircd
/var/abs/community/ngircd

(locate /var/abs/*/ngircd でも良い)

作業ディレクトリにコピーしてきます。

$ cp -r /var/abs/community/ngircd ~/abs/
$ cd ~/abs/ngircd
$ ls
ngircd.sh  PKGBUILD

ここで「makepkg」とすると、パッケージを作成することができますが、
configureオプションは、pacmanで入れるものと変わりません。

$ makepkg 
==> Making package: ngircd 18-1.v6 (Sun Jan  8 11:26:47 JST 2012)
==> Checking runtime dependencies...
==> Missing Dependencies:
  -> libident
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.

エラーしていますが、
「-s」オプションをつけるとライブラリ等の依存関係を解決してくれます。

PKGBUILD」を編集して、
–enable-ipv6」を追記してあげます。
(バージョン等もここで変更できます。)

$ vim PKGBUILD

build() {
        cd $srcdir/$pkgname-$pkgver
        ./configure --prefix=/usr \
                --sysconfdir=/etc \
                --mandir=/usr/share/man \
                --with-ident \
                --with-openssl \
                --enable-ipv6

あとは、自動でソースダウンロードからパッケージ作成までやってくれます。
(「-s」で依存関係を解決します。)

$ makepkg -s
==> Making package: ngircd 18-1.v6 (Sun Jan  8 11:30:59 JST 2012)
==> Checking runtime dependencies...
==> Installing missing dependencies...
resolving dependencies...
looking for inter-conflicts...

Targets (1): libident-0.32-2

Total Download Size:    0.00 MB
Total Installed Size:   0.08 MB

Proceed with installation? [Y/n] 

パッケージできるまで、コーヒーでも飲みましょう

$ ls
ngircd-18-1.v6-i686.pkg.tar.xz  ngircd-18.tar.gz  ngircd.sh  pkg  PKGBUILD  src

(pkgrel=1.v6ってやったので、パッケージ名に.v6がついていますw)

Root権限じゃないとダメなので

# pacman -U ngircd-18-1.v6-i686.pkg.tar.xz 
resolving dependencies...
looking for inter-conflicts...

Targets (1): ngircd-18-1.v6

Total Download Size:    0.00 MB
Total Installed Size:   0.45 MB

Proceed with installation? [Y/n] 
roceed with installation? [Y/n] y
(1/1) checking package integrity                            [################################] 100%
(1/1) checking for file conflicts                           [################################] 100%
(1/1) installing ngircd                                     [################################] 100%

出来上がり。

確認します。

# pacman -Qi ngircd
Name           : ngircd
Version        : 18-1.v6
URL            : http://ngircd.barton.de/
Licenses       : GPL
Groups         : None
Provides       : None
Depends On     : openssl  libident
Optional Deps  : None
Required By    : None
Conflicts With : None
Replaces       : None
Installed Size : 456.00 K
Packager       : Unknown Packager
Architecture   : i686
Build Date     : Sun 08 Jan 2012 11:32:48 AM JST
Install Date   : Sun 08 Jan 2012 11:34:35 AM JST
Install Reason : Explicitly installed
Install Script : No
Description    : Next Generation IRC Daemon

起動してみましょう

# /etc/rc.d/ngircd start
# netstat -lanput

tcp  0 0 0.0.0.0:6667 0.0.0.0:* LISTEN 18529/ngircd
tcp6 0  0 :::6667 :::* LISTEN 18529/ngircd  

で、ngircdがipv6で待ち受けていることがわかります。

ちなみに、
ソースだけダウンロードしたい場合は、

$ makepkg --source

で、~/abs/ngircd/src/以下にソースが落ちてきます。

configureオプションが分からなければ

$ cd ~/abs/ngircd/src/
$ tar zxfv ngircd-18.tar.gz
$ cd ngircd-18
$ ./configure --help

とかすればわかると思います。

アンインストールも普通のパッケージと変わりません。
・「-s」・・・設定ファイルも削除
・「-n」・・・必要としてない依存パッケージも削除

# pacman -Rsn ngircd
checking dependencies...

Remove (2): ngircd-18-1.v6  libident-0.32-2

Total Removed Size:   0.53 MB

Do you want to remove these packages? [Y/n]

こんな感じで、結構簡単に出来ます。

[tegaki]移行しようかなぁ[/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.