Debian security announce: DSA-2880 python2.7
nogajun: 姫路IT系勉強会 Vol.26終わりました
姫路IT系勉強会 Vol.26終わりました
2月の姫路IT系勉強会も終わりました。
講師を立てる開催するスタイルから、参加者全員に付箋紙を渡して自分の話したいこと、興味のあることを書いてもらってディスカッションするスタイルに変更して3回目。 講師スタイルだと話をしないまま帰ってしまう人もいたけれど、今のスタイルは参加者が確実に話しをすることができて、しかも意外な発見・つながりが見つかったりするので、いい感じだと思います。
このスタイルは、おすすめ。
nogajun: OPEN KAVC 2014行ってきた / ソウル・フラワー・トレイン見たよ
OPEN KAVC 2014行ってきた / ソウル・フラワー・トレイン見たよ
神戸アートビレッジセンターの活動を紹介するOPEN KAVC 2014に行ってきました。
演劇の方は時間があわなくて見れなかったけど、ひとマルシェの作品の展示販売でほうほうと感心しながら見たり、出張カフェで割烹大力のそばずし食べたり面白かったです。 報告展の活動報告を見て、いいなーと思ったり。
で、神戸アートビレッジセンターシネマで、前から見たいと思ってたソウル・フラワー・トレインも見てきた。
もともと原作が短編漫画なので、こじんまりとしているのは仕方ないけど音楽と雰囲気がよくて面白かったですね。
nogajun: odt2txtを利用してgitでODFの差分を取る
odt2txtを利用してgitでODFの差分を取る
以前、gitでODFファイルを管理するときフラットODF(FODT)を使う手法を書きましたが、slideshareのコメントでodt2txtを使う方法を教えてもらったので試してみました。
2dice
odt2txt(macportsあり)とgitの属性(.gitattributes)を使うとgitでodfファイルのテキストだけのdiffが取れました.
http://www.slideshare.net/nogajun/flat-odfredmine-gitgitolite-sparkleshare
1. odt2txtをインストールする gitを使うマシンにodt2txtをインストールしておきます。Debianなのでapt一発。
# sudo apt-get install odt2txt
2. gitリポジトリ内に「.gitattributes」というファイルを作る
gitリポジトリに「.gitattributes」というファイルを作って、以下の内容を書いておきます。
*.odp diff=odf *.ods diff=odf *.odt diff=odf *.ott diff=odf
3. gitリポジトリ内の「.git/config」に以下の内容を書き込む
gitリポジトリ内にある「.git/config」の末尾に以下の内容を書き込んでおきます。
[diff "odf"] binary = true textconv = /usr/bin/odt2txt
4. odtを作って差分を見てみた
git diffで差分を見てみました。
$ git diff HEAD HEAD^
diff --git a/difftest.odt b/difftest.odt index 9d776ab..18fc834 100644 --- a/difftest.odt +++ b/difftest.odt @@ -6,7 +6,5 @@ 彼は素早く右に身を翻し、建物の間に消え去った。その時彼は、もう少しで道の真中に転がっていたごみバケツに躓き転ぶところだった。 彼は暗闇の中で道を確かめようとじっと見つめた。どうやら自分の通ってきた道以外にこの中庭からの出道はないようだ。 足音はだんだん近づき、彼には角を曲がる黒い人影が見えた。彼の目は夜の闇の中を必死にさまよい、逃げ道を探す。もうすべては終わりなのか。すべての苦労と準備は水の泡だというのか。 -突然、彼の横で扉が風に揺らぎ、 - -だらだらしている。ほんのわずかにきしむのを聞いた時、彼は背中を壁に押し付け、追跡者に見付けられないことを願った。この扉は望みの綱として投げかけられた、彼のジレンマからの出口 なのだろうか。背中を壁にぴったり押し付けたまま、ゆっくりと彼は開いている扉の方へと身を動かして行った。この扉は彼の救いとなるのだろうか。 +突然、彼の横で扉が風に揺らぎ、ほんのわずかにきしむのを聞いた時、彼は背中を壁に押し付け、追跡者に見付けられないことを願った。この扉は望みの綱として投げかけられた、彼のジレン マからの出口なのだろうか。背中を壁にぴったり押し付けたまま、ゆっくりと彼は開いている扉の方へと身を動かして行った。この扉は彼の救いとなるのだろうか。
普通にdiff取れますね。fodtと違って内容のみなのでわかりやすいと思います。 odtはテキストの差分とわかりますが、odpなどはどうなるかといえばテキスト情報の差分だけが表示されます。
fodtを使う方法とodt2txtを使う方法どっちがいい?
fodtの欠点はツールは入れなくていいけれど保存形式を変更しなければいけない。 一方odt2txtの欠点はodt2txtをインストールしてgitの設定を追加する必要があります。
どっちもひと手間があるので、環境とスキルに応じて使い分けるのがいいかなと思います。
nogajun: LibreOffice ImpressでスライドマスターのスライドをコピーするTips
LibreOffice ImpressでスライドマスターのスライドをコピーするTips
同じデザインでセクション用と本文用の2枚のスライドマスターを作りたいことがあります。 素直に考えれば、スライドマスター内でスライドをコピーすればと思いますが、スライドマスター内ではスライドのコピーができません。
スライドではコピーできるのに、スライドマスター内でスライドがコピーできない仕様はなんでやねんと思うけれど、そんなときに使える技。
- スライドのファイルをコピーして、2つのファイルを開く。
- コピーしたスライドファイルのスライドマスターに入り、スライドマスターの名前を変更する。
- スライド画面にもどり、名前を変更したスライドマスターが適用されたスライドを元のスライドにコピペする。
これで、元スライドのスライドマスターに名前が違う同じスライドが2つできるので、それを元にスライドデザインを変更すればおk。
BugTrackには報告されてるみたい
報告されてるみたいだけど放置されてるっぽい。あと、Tipsはわかりにくいかな。
- testefromhell - Duplicate Master Slide - Libreoffice - Openoffice: http://testefromhell.wikispaces.com/Duplicate+Master+Slide+-+Libreoffice+-+Openoffice
Debian JP Blog: Software Design 2014 年 4 月号「Debian Hot Topics」
Debian JP Project 会員の執筆記事が雑誌に掲載されていますので、皆様にお知らせです。
Software Design 2014 年 4 月号 にて「Debian Hot Topics」が連載中です。
今回はinitシステムについての議論の経過と、パッケージ導入時に参照される「apt line」についての基本的な解説となっています。
どうぞご覧になって、是非感想等を Software Design 編集部樣にお寄せください (twitter で SoftwareDesign (@gihyosd)や DebianJP広報局 (@debianjp)などへもどうぞ)。
Debian security announce: DSA-2881 iceweasel
nogajun: 青空文庫テキストをLibreOffice odtにしてルビを振る
青空文庫テキストをLibreOffice odtにしてルビを振る
青空文庫のテキストをLibreOfficeのodtにしたのはいいけれど、ルビがそのままだとうっとうしい。 で、ルビを一括置換できないか考えたけどLibreOfficeの「検索と置換」では正規表現で検索はできても、ルビに置換まではできそうになかったので、一度フラットODF(fodt)にしてsedを使ってタグを置き換えたらうまくいったのでメモ。
青空文庫の特殊記号
青空文庫のテキストから引用。
ルビを振る漢字は「|」から始まって「《」まで。 ふりがなは「《」から「》」まで。
------------------------------------------------------- 【テキスト中に現れる記号について】 《》:ルビ (例)焦躁《しょうそう》 |:ルビの付く文字列の始まりを特定する記号 (例)始終|圧《おさ》えつけていた [#]:入力者注 主に外字の説明や、傍点の位置の指定 (数字は、JIS X 0213の面区点番号またはUnicode、底本のページと行数) (例)※[#「さんずい+闊」、第4水準2-79-45] [#]:入力者注 主に外字の説明や、傍点の位置の指定 (例)がらくた[#「がらくた」に傍点] -------------------------------------------------------
LibreOfficeフラットodtのルビ確認
ルビがどんなタグで囲まれているかわからなかったので、小さなfodtファイルを作って見てみたところ、 ルビを振る漢字は<text:ruby-base>要素で囲み、ふりがなは<text:ruby-text>要素で囲む。 ルビ全体を囲む<text:ruby>要素のスタイルはそのまま使っても大丈夫そうなので流用する。
<text:ruby text:style-name="Ru1"> <text:ruby-base>漢字</text:ruby-base> <text:ruby-text>かんじ</text:ruby-text> </text:ruby>
sedで置換してみる
単純にいけるかと思ったけど漢字にマッチさせる[一-龠]がうまくいかない。 Shift JISだしと思って[亜-煕]を使うとうまくマッチしたのでこっちを採用。 ということで、こんな感じで置換すると無事fodtでルビを振ることができましたとさ。
sed -e 's/|\([亜-煕]\+\)《\([^》]*\)》/<text:ruby text:style-name="Ru1"><text:ruby-base>\1<\/text:ruby-base><text:ruby-text>\2<\/text:ruby-text><\/text:ruby>/g' ルビを振るファイル.fodt > 出力.fodt
ふりがなの抜けがあるなと思ったら
青空文庫のテキストに、ルビの始まりを示す「|」がついてないのが多いね。 ふりがなはついているので「《》」の前にある漢字を調べて「|」をつけて置換する下処理も必要だな。
青空文庫のルビ抜き出し正規表現は
これが最強っぽい。
- satomacoto: 青空文庫のルビのマイニングをやり直した: http://satomacoto.blogspot.jp/2012/01/blog-post_13.html
((※[[^]]+?]|[一-龠々])+?|(?<=|)([^|]+?))《([^》]+?)》
「※」って何かと思えばShift JIS範囲外の漢字だそうで。完全に見てなかったわ。
Henrich: java-packageでOracle Java8をdebパッケージにする
java-packageでOracle Java8をdebパッケージにする
あ、いつのまにかJava8がリリースされていたようです。そんなに話題になってないな…。
で、Debianにはjava-packageというOracle Javaをdebパッケージに変換してくれるツールがあるので、これを見てみると、パッケージの説明文では8対応となっているんだけど、コマンドのmake-jpkg --helpすると7までになってるわけです。まぁ多分更新し忘れだと思いますが、念のためちゃんと動くかどうかを確かめてみました。
- まずはOracleのサイトでtarballをダウンロードします。今回はJDK8で、「jdk-8-linux-x64.tar.gz」を選びました(多分今時これ以外選ぶことないと思うんですが)
- make-jpkgでダウンロードしたファイルを指定して変換するだけ。途中1回「y」を入力、あとはEnterキーを1回だけ。
henrich@hp:/tmp $ make-jpkg ~/ダウンロード/jdk-8-linux-x64.tar.gz Creating temporary directory: /tmp/make-jpkg.4ksVGl9hRI Loading plugins: /usr/share/java-package/common.sh /usr/share/java-package/javase.sh /usr/share/java-package/jdk-doc.sh /usr/share/java-package/jdk.sh /usr/share/java-package/jre.sh /usr/share/java-package/oracle-jdk-doc.sh /usr/share/java-package/oracle-jdk.sh /usr/share/java-package/oracle-jre.sh Detected Debian build architecture: amd64 Detected Debian GNU type: x86_64-linux-gnu Detected product: Java(TM) Development Kit (JDK) Standard Edition, Version 8 GA Oracle(TM) Is this correct [Y/n]: y Checking free diskspace: done. In the next step, the binary file will be extracted. Probably a license agreement will be displayed. Please read this agreement carefully. If you do not agree to the displayed license terms, the package will not be built. Press [Return] to continue: Testing extracted archive... okay. Create debian package: dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_compress dh_fixperms dh_installdeb dh_shlibdeps dpkg-shlibdeps: warning: can't extract name and version from library name 'libjli.so' dpkg-shlibdeps: warning: can't extract name and version from library name 'libjli.so' (同様のwarningが大量に出てくるので中略) dpkg-shlibdeps: warning: package could avoid a useless dependency if /tmp/make-jpkg.4ksVGl9hRI/install/usr/lib/jvm/jdk-8-oracle-x64/jre/lib/amd64/libprism_es2.so was not linked against libXxf86vm.so.1 (it uses none of the library's symbols) (同様のwarningが ry) dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: `/tmp/make-jpkg.4ksVGl9hRI/oracle-java8-jdk_8_amd64.deb' にパッケージ `oracle-java8-jdk' を構築しています。 copy oracle-java8-jdk_8_amd64.deb into directory /tmp/ The Debian package has been created in the current directory. You can install the package as root with: dpkg -i oracle-java8-jdk_8_amd64.deb Removing temporary directory: done
- 最後、dh_builddebでパッケージ生成するまでに2、3分ぐらいジーッと待つ羽目になりました。長い…。
注意点は…なにもありませんね。--helpオプションは直しておきます。
Debian security announce: DSA-2882 extplorer
Debian JP Blog: 第 82 回 関西 Debian 勉強会のお知らせ
「第82回 関西 Debian 勉強会」 のお知らせです。関西 Debian 勉強会は、関西方面の Debian ユーザ/ユーザ予備群/開発者らで Debian GNU/Linux のさまざまなトピックについて Face to Face で楽しく話し合っていく集まりです。
- 開催日時・会場・持ち物等
- 日時: 2014 年 3 月 23 日 (日) 13:30 - 17:00 (開場 13:00)
- 会場:福島区民センター302号会議室 (定員:30名)
- 費用:500円 (部屋代、印刷代などの諸費用のため)
- 事前課題:
- もくもくの会で行なう作業、質問などの課題を用意して教えてください。
(電源とネットワーク(WiMAXなど)はありますが、それ以外の作業に必要な環境はご用意ください。) - 前回(第81回)の勉強会に参加された方は、前回の作業や課題がその後どうなったか結果を教えてください。
- LT 歓迎です. 何かお話したい方はタイトルを下さい.
- もくもくの会で行なう作業、質問などの課題を用意して教えてください。
- 内容
- Intro
この勉強会の簡単な説明をします。 - Debian で楽しむ 3D プリンティング (担当:八津尾)
最近ハマっている3Dプリンタ周りの話をする予定です。 - もくもくの会
各自作業を行なったり、質問、疑問に回答する時間になります。
- Intro
- 参加方法と注意事項
- Debian勉強会予約管理システムを参照して、 事前登録をしてください。登録にはGoogleアカウントが必要になりますが、事情によりGoogleアカウントを使えない/登録できない方は担当者まで連絡してください (締切りに間に合わなかった方は、下記連絡先から担当者と連絡を取ってください。 懇親会 (予定) に参加する場合は、二次会参加の欄にチェックしてください)。
この件に関するお問い合わせは 関西 Debian 勉強会 担当:かわだてつたろう (t3rkwd@{debian.or.jp} ) までお願いいたします。
Debian security announce: DSA-2883 chromium-browser
nogajun: Sondre LercheとYoung Dreamsのライブに行ってきた
Sondre LercheとYoung Dreamsのライブに行ってきた
- TONE FLAKES Vol.58, SONDRE LERCHE & YOUNG DREAMS JAPAN TOUR 2014: http://www.flakerecords.com/news_toneflakes58.php
ノルウェーのバンドYoung Dreamsは、たまたま知って去年の秋ぐらいはずっとアルバム聞いてのだけど、Sondre Lercheは素通りしてたので、まったく曲を知らずに行ったのですが両バンドともとても素晴らしかった!
Sondre Lercheは最初ギター一本の弾き語りだったけど、ポップだけどJazzyになったり曲が素晴らしいのはもちろん、声も素晴らしくギター1本だけとは思えない厚みのあるサウンドでとても良かったです。 途中からYoung Dreamのドラムとベースが入ってのバンド編成になってからは、弾き語りから一転弾ける弾ける。ファズをかけたガレージなロックンロールは最高でした。
続いてYoung Dreamsのほうは、音以外の情報は入れてなかったので初めて見たけど若い! 6人編成で、あのカラフルなサウンドをどう再現するのかと思ったらボーカルとコーラスは全員入れ替わり立ち代り、ベース、ドラム以外は楽器をくるくる持ち替えたり、ものすごい芸達者な若者たちでございました。
ライブのイメージはCDと違って、エレクトロニカとかプログレっぽい感じだったけれど、ドリーミーなサウンドとコーラスワークはとても素晴らしいものでした。
そういえば、前座のバンドがひどくて外に出てたのだけど、入口にYoung DreamsのメンバーとSondre Lercheが入ってきたのはびっくりした! 裏口がわからなくて表に入ってきたのだけれど、びっくりしたのと事前の情報を入れてなくて何を話していいのかわからなかったから話しかけなかったけど、これは本当にびっくりした!
nogajun: 2048おもしれー
2048おもしれー
- 2048: http://git.io/2048
ブラウザゲーです。カーソルキーで同じ数字ブロックをぶつけて数を大きくするパズルゲームですが、これが面白いです。 で、ゲーム自体の面白さはもちろんですが、MITライセンスのオープンソースソフトウェアとしてgithubに公開されているのでフォークして、さまざまな派生版が出てます。
- ALL THE 2048: http://allthe2048.com/
- gabrielecirulli/2048: https://github.com/gabrielecirulli/2048
ゲームともども動きが面白いな。
Debian JP Blog: 第 112 回 東京エリア Debian 勉強会のお知らせ
東京近辺にいらっしゃる皆様こんにちは。4 月も 東京エリア Debian 勉強会が開かれます!
東京エリア Debian 勉強会とは、Debian Project に関わる事を目的とする熱いユー ザたちと、実際に Debian Project にてすでに日夜活動している人らが Face to Face で Debian GNU/Linux のさまざまなトピック (パッケージ、Debian 特有 の機能の仕組について、Debian 界隈で起こった出来事、 etc ) について語り 合い、手助けをするイベントです。
参加される方は主に東京を中心に関東近郊の国籍・性別不問の Debian ユーザです ( Debian をまだ使ったことが無いが興味があるので…とか、かなり遠い所から来てくださる方もいます)。 開発の最前線にいる Debian の公式開発者や開発者予備軍の方も参加する場合がありますので、 普段は聞けないような様々な情報を得るチャンスです。 興味と時間があった方、是非御参加下さい。 (また、勉強会で話をしてみたいという方も随時募集しています)。
- 開催日時・会場
- 日時:2014 年 4 月 19 日 ( 土曜日 ) 14:00-19:00
- 費用:500 円
- 会場:株式会社 スクウェア・エニックス 会議室
- 当日について:一旦14:00にビル内で集合して中に入ります。また、Debianに関する作業時間を勉強会中に用意しています。詳しくは勉強会のページを参照してください。
- ...鋭意セミナ企画中...
- もくもく会 (全員)
Debianに関する作業を各自で行います - 成果発表 (全員)
行った作業について簡単に発表いただきます
事前課題は Debian 勉強会予約システムの課題回答フォームに入力してください。提出いただいた回答は全員に配布すること、 また内容の再利用を実施することを了承ください。 Debian 勉強会資料は GPL で公開します ( Web での公開が可能な内容でお願いします)。
この件に関するお問い合わせは Debian 勉強会主催者:野島 貴英 (nozzy@{debian.or.jp} ) までお願いいたします。
mkouhei: How to encrypt ansible-vault in the TLS certificate
How to encrypt ansible-vault in the TLS certificate¶
先週、Sidのansibleパッケージが1.4.5+dfsg-1から1.5.3+dfsg-1に上がったので、待望のansible-vaultを使ってみました。パスワードなどを暗号化するために使うのが主でしょうが、今回の私の目的は、TLS証明書を及びその秘密鍵の暗号化です。仕事で使っているplaybookに、PEM形式の証明書や秘密鍵を含めるのがいやだったのが動機です。
IMAPサーバ用のplaybookを例にします。
.
|-- development
|-- group_vars
| |-- all
| |-- development
| `-- production
|-- imapd.yml
|-- production
|-- roles
(snip)
| |-- dovecot
| | |-- handlers
| | | `-- main.yml
| | |-- tasks
| | | `-- main.yml
| | |-- templates
(snip)
| | | |-- 10-ssl.conf.j2
(snip)
| | | |-- key.j2
| | | `-- cert.j2
| | `-- vars
| | `-- main.yml
(snip)`-- site.yml
ansible-vaultで暗号化する対象は、roles/dovecot/templatesディレクトリの下にある、key.j2とcert.j2の2つのテンプレートの中に出力する文字列です。 証明書とprivate keyを配布するだけなら、filesディレクトリの下に、証明書およびprivate keyファイル自体を配置し、copyモジュールでコピーすれば良いだけです。 しかし、 ドキュメントにもあるとおり ansible-vaultで対象に暗号化の対象にできるのは各種の変数だけなので、filesディレクトリ下の添付ファイルは復号できません。そこで、templateモジュールを使う必要があります。暗号化する文字列自体は、roles/dovecot/vars/main.ymlの中に記述します。
PEM形式の文字列は、
-----BEGIN CERTIFICATE-----
MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE
AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x
CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW
(snip)
-----END CERTIFICATE-----
のような形式になっているので、これをtemplateモジュールを使って、ファイルを配置するには、templates/cert.j2などのテンプレートに、
{{ cert_pem }}
とだけ記述し、vars/main.ymlには、
----cert_pem:"-----BEGINCERTIFICATE-----\nMIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE\nAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x\nCzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW\n...(snip)...\n-----ENDCERTIFICATE-----"-key_pem:"..."
のように、改行を”n”に変更して一行の文字列とし、それをダブルクォートかシングルクォートで括って指定します。 これで動作確認ができたら、vars/main.ymlを暗号化します。
$ ansible-vault encrypt roles/dovecot/vars/main.yml
暗号化されたファイルは下記のようになります。
$ANSIBLE_VAULT;1.1;AES256
39613864343833373066386636333338653831383630623938643138366230323336656234326234
3833663562396237393333363665643631653331386566660a653530326636666137633731373361
34653163626664376432393433303435333433303535626437623935313962626430643038623464
(snip)
暗号化された変数を使って、playbookを実行するには、 --ask-vault-passオプションをつけてansible-playbookコマンドを実行すれば良いだけです。 このオプションをつけると、実行時にだけメモリ上に復号されます。
まとめ¶
今まで、パスワードなどはvars_promptで都度入力し、TLS証明書&秘密鍵などは別途配布する、という方法でやっていました。 これでplaybook自体にansible-vaultで暗号化して管理できるので、vautl passwordのみ、keepassなどで管理すれば良さそうです。
mkouhei: Issue deploying Jenkins to Tomcat7 Debian package in Wheezy
Issue deploying Jenkins to Tomcat7 Debian package in Wheezy¶
travis-ciはよく使っているのですが、JenkinsはあのWeb UIに馴染めなくて今まで使っていませんでした。が、この度仕事でJenkinsを用意する必要が出てきたの [1]で、Debian GNU/Linux Wheezyでサーバを用意することにしました。
用意するにあたり、upstreamからwarファイルをダウンロードし、直接実行する方法で、まず全体設定やセキュリティ関連の設定を試しました。そのあとで、DebianパッケージのTomcat7上で動かそうとした際にちょっとハマりました。これはそのメモです。ググった限りでは同様の問題にハマっている人は多分いないのでしょう。
直接実行の場合¶
OpenJDKを使うため、default-jre-headless パッケージをインストールします。あとは、warファイルをダウンロードして直接実行するだけです。
$ sudo apt-get intall default-jre-headless
$ wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
$ java -jar jenkins.war
検証途中で、権限周りの設定をしている時に間違えてEnterを打ってしまい、何もできなくなるというエライことに。きっと これよくある問題なんでしょうね。
DebianパッケージのTomcat上で動かす場合¶
本題です。Tomcat7をまずDebianパッケージでインストールします。
$ sudo apt-get install tomcat7 tomcat7-admin
インストールしたら自動的にTomcatが起動しますが、何の権限も無くてtomcatのweb管理画面にもアクセスできないので、/etc/tomcat7/tomcat-users.xmlを変更し、下記を<tomcat-users>の子要素として追加します。ユーザ名、パスワードは適当に設定して下さい。
<tomcat-users>
(snip)
<rolerolename="manager"/><rolerolename="manager-gui"/><rolerolename="admin-gui"/><userusername="tomcat"password="passw0rd"roles="manager,manager-gui,admin-gui"/></tomcat-users>
設定したら、tomcat7を再起動します。
$ sudo service tomcat7 restart
これで、設定したユーザ、パスワードを使って、 http://tomcat.example.org:8080/manager/からTomcat管理画面にアクセスできます。あとは、先ほどダウンロードしたwarファイルを使ってデプロイしてやれば、 Jenkinsが起動します。
と思ったら大間違いで、デプロイできても起動できません。
原因は、tomcat7パッケージで作られるtomcat7ユーザのホームディレクトリの位置です。 tomcat7ユーザのホームディレクトリは、/usr/share/tomcat7になっているのですが、/usr以下のディレクトリはパッケージのインストール以外で置かれる静的ファイル以外は基本置かれません。しかし、Jenkinsは実行ユーザのホームディレクトリの直下に、.jenkinsディレクトリを作成し、そこに各種出力をします。/usr/share/tomcat7の所有権はrootユーザおよびrootグループであり、自由に書き込みはできません。
なので、次のようにしてやることで、この問題を回避できます。 [2]
$ sudo install -d -o tomcat7 -g tomcat7 -m 700 /var/lib/jenkins
$ sudo ln -s /var/lib/jenkins /usr/share/tomcat7/.jenkins
あとは、tomcatを再起動すれば、Jenkinsが起動します。
この問題、TomcatもUpstreamのwarファイルを使うか、あるいはJenkinsも公式のDebianパッケージ [3]を使えば発生しない現象ですね、おそらく。しかし、Wheezyでは残念ながら公式パッケージにJenkinsは含まれていないので、Debianパッケージを用意するならSidからのバックポートが必要になります。が、ビルドの依存関係多いので、jenkins以外にもバックポートが多数必要という罠。今回バックポートせずにJenkinsだけをwarファイル使ったのは、たんに私の甘え&ゆとりです。
Footnotes
[1] | 本来のきっかけとは別に、SidからWheezyやPrecise向けにDebianパッケージをバックポートしたり、自前のツールをDebianパッケージにする際のオートビルド環境として、jenkins-debian-glueが良いよ、と @lurdanに教えて頂いたので、それも動機となっています。 |
[2] | /usr/share/tomcat7/.jenkinsディレクトリを作って、所有権をtomcat7:tomcat7にする、というのでも動きますが、お行儀悪いのでやめましょう。 |
[3] | Upstreamが配布しているDebianパッケージもありますが、これはDebianの公式パッケージではないので、私は使いません。 |