openSUSE-12.2にdarkhttpdをcheckinstallしてrpmで入れる
コマンドからさくっと使える割に一時的な物置きのみならずウェブ開発用にも重宝する簡易HTTPdのdarkhttpdを導入しましょう。
と、思ったけれど、
% zypper se darkhttpd ...
やはり出て来なかった。ウェブのパッケージ検索でも出てこない。
darkhttpdは普通にソースをtar玉で公開しているし、ビルドも数秒と掛からないコンパクトな良い子。`make`して`cp darkhttpd ~/opt/bin`とかしても構わないのだけど、checkinstallでお手軽にrpmにして導入してみる。
先ずはcheckinstallを導入しましょう。こちらはzypperで導入できます。
% zypper in checkinstall-lang
...
langの依存パッケージで本体も入るのでコマンド打つのが楽なんですゴメンナサイゴメンナサイ・w・
さて、checkinstallを導入できたなら早速使ってみましょう。なお、zypperで導入したcheckinstallは`/usr/sbin`に導入されています。よってrootじゃないと使えません。
% sudo su
...
% which checkinstall
/usr/sbin/checkinstall
checkinstallを今回はdarkhttpdのtar玉を展開したディレクトリーで実行します。
% ls AUTHORS Makefile README darkhttpd.c % checkinstall ...
対話を進めます。
checkinstall 1.6.2, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran このソフトウェアはGNU GPLの下でリリースしています。 The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: パッケージのドキュメンテーションを準備..OK 使用するパッケージ方式を選んでください。 Slackwareなら[S], RPMなら[R], Debianなら[D]を入力R このパッケージの説明を書いてください 説明の末尾は空行かEOFにしてください。 >> When you need a web server in a hurry. >> ************************************** **** RPM package creation selected *** ************************************** このパッケージは以下の内容で構成されます: 1 - Summary: [ When you need a web server in a hurry. ] 2 - Name: [ darkhttpd ] 3 - Version: [ 1.8 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ x86_64 ] 8 - Source location: [ darkhttpd-1.8 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ darkhttpd ] 変更するものの番号を入力してください。Enterで続行します: Installing with make...Installing with install... ========================= インストールの結果 =========================== make: *** ターゲット `install' を make するルールがありません. 中止. **** インストールは失敗しました。パッケージの作成を中断します クリーンアップ..OK Bye.
oops!!
darkhttpdのMakefileにはinstallルールが無いのでした。
% cat Makefile CC?=cc CFLAGS?=-O LIBS=`[ \`uname\` = "SunOS" ] && echo -lsocket -lnsl` .PHONY: all clean all: darkhttpd darkhttpd: darkhttpd.c $(CC) $(CFLAGS) $(LIBS) darkhttpd.c -o $@ clean: rm -f darkhttpd core darkhttpd.core
installルールを追記しましょう・w・;
% echo -e '\ninstall: darkhttpd\n\tinstall darkhttpd /usr/local/bin\n' >> Makefile
さてさてワンモア・x・
% checkinstall checkinstall 1.6.2, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran このソフトウェアはGNU GPLの下でリリースしています。 使用するパッケージ方式を選んでください。 Slackwareなら[S], RPMなら[R], Debianなら[D]を入力R ************************************** **** RPM package creation selected *** ************************************** このパッケージは以下の内容で構成されます: 1 - Summary: [ When you need a web server in a hurry. ] 2 - Name: [ darkhttpd ] 3 - Version: [ 1.8 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ Applications/System ] 7 - Architecture: [ x86_64 ] 8 - Source location: [ darkhttpd-1.8 ] 9 - Alternate source location: [ ] 10 - Requires: [ ] 11 - Provides: [ darkhttpd ] 変更するものの番号を入力してください。Enterで続行します: Installing with make...Installing with install... ========================= インストールの結果 =========================== cc -O `[ \`uname\` = "SunOS" ] && echo -lsocket -lnsl` darkhttpd.c -o darkhttpd install darkhttpd /usr/local/bin ======================== インストールに成功しました ========================== Copying documentation directory... ./ ./AUTHORS ./README tempディレクトリにファイルをコピー..OK Stripping ELF binaries and libraries...OK manページを圧縮..OK ファイルリストを作成..OK RPMパッケージを作成..OK 注意: パッケージはインストールされません tempファイルを削除..OK バックアップパッケージを書き込み..OK OK temp dirを削除..OK ********************************************************************** Done. The new package has been saved to /usr/src/packages/RPMS/x86_64/darkhttpd-1.8-1.x86_64.rpm You can install it in your system anytime using: rpm -i darkhttpd-1.8-1.x86_64.rpm **********************************************************************
先ほど失敗した際に定義済みだった内容が残っているので Enter 1回で rpm 作成まで進みました。最後に出ているメッセージを基に、パッケージを`rpm -i`でインストールしましょう。
% rpm -i /usr/src/packages/RPMS/x86_64/darkhttpd-1.8-1.x86_64.rpm
rootから抜けて一般ユーザーで`darkhttpd`を使ってみましょう。
% exit % which darkhttpd /usr/local/bin/darkhttpd % darkhttpd . --daemon && curl http://localhost:8080 && pkill darkhttpd darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic. listening on: http://0.0.0.0:8080/ <html> <head> <title>/</title> </head> <body> <h1>/</h1> <tt><pre> <a href="..">..</a>/ <a href="AUTHORS">AUTHORS</a> 56 <a href="Makefile">Makefile</a> 274 <a href="README">README</a> 1352 <a href="backup-120220121215-pre-darkhttpd-1.8.tgz">backup-120220121215-pre-darkhttpd-1.8.tgz</a> 5201601 <a href="darkhttpd">darkhttpd</a> 47038 <a href="darkhttpd.c">darkhttpd.c</a> 74774 <a href="description-pak">description-pak</a> 39 <a href="doc-pak">doc-pak</a>/ </pre></tt> <hr> Generated by darkhttpd/1.8 on Sun, 02 Dec 2012 03:28:58 GMT </body> </html>
動作テストの簡単の為`curl`でHTTP GETしていますが、もちろんChrome等のウェブブラウザーでも確認できます。なお、darkhttpdの使い方についてはオプション無しで`darkhttpd`を実行すれば表示されます。