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]