最近の OSC のセミナーで紹介していた Snapper で作成した Btrfs ファイルシステムのスナップショットを Samba で公開し、「以前のバージョン」のファイルにアクセスできるファイルサーバーが、CentOS でも 7.2 になって構築できるようになりました。

Snapper は openSUSE 傘下のプロジェクトで、設定しておいたルールに応じて、自動的にファイルシステムのスナップショットを撮ってくれます。Samba 4.2 以降で、Samba と Snapper が vfs_snapper で連携できるようになりました。細かい話は OSC 京都のスライドをチェックして下さい。

では早速インストールしてみましょう。ポイントは SELinux への対応です。(まさか、無効にしていないですよね?) ここは openSUSE ユーザ会の Blog ということで、細かい CentOS の解説は行わないことにします。

とりあえず、samba と snapper をインストールします:

$ sudo yum install samba snapper

共有するディレクトリ /srv/share を作成します。以前のバージョンに対応した共有ディレクトリは Btrfs の(サブ)ボリュームである必要がありま。アクセス権は実際に使用する環境に合わせて変更して下さい:

$ sudo btrfs subvol create share
$ sudo chgrp -R geeko share
$ sudo chmod g+w share

SELinux で Samba サーバーが /srv/share にアクセスできるようにします:

# semanage がインストールされていない場合
$ sudo yum install policycoreutils-python

# ラベル設定
$ sudo semanage fcontext -a -t samba_share_t /srv/share
$ sudo restorecon /srv/share/

Samba サーバーの設定をします。今回は /etc/samba/smb.conf に次のような設定を追加します。
最後の vfs objects の設定がミソです:

[share]
 comment = Shared Directory
 browseable = yes
 writable = yes
 guest ok = no
 path = /srv/share
 vfs objects = btrfs snapper

Snapper の設定をします。スナップショットの残し方の設定は openSUSE と共通なので、スライドを参照して下さい:

$ sudo snapper -c smb-share create-config /srv/share

ユーザアカウント geeko がスナップショットにアクセスできるようにします。設定ファイルの直接編集も可能です:

$ sudo snapper -c smb-share set-config ALLOW_USERS=geeko

Samba サーバーを立ち上げましょう。まずはファイアウォールを開けて:

$ sudo firewall-cmd --add-service=samba --permanent
$ sudo firewall-cmd --reload

サービスの自動起動設定をし、smb サービスを開始します:

$ sudo systemctl enable smb.service
$ sudo systemctl start smb.service

ユーザー geeko を Samba サーバーのユーザーに追加し、パスワードを設定してログインできるようにします。

sudo pdbedit -a geeko

あとは Windows からアクセスして、右クリックして、「以前のバージョン」タブを開くだけ…なのですが、なんと Samba サーバーが Snapper に接続する際に、SELinux が拒否してしまいます。次のようなログが /var/log/audit/audit.log にしっかり記録されています:

type=USER_AVC msg=audit(1452273485.220:943): pid=534 uid=81 auid=4294967295 ses=4294967295 subj=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 msg='avc: denied { send_msg } for msgtype=method_call interface=org.opensuse.Snapper member=ListConfigs dest=org.opensuse.Snapper spid=16293 tpid=16588 scontext=system_u:system_r:smbd_t:s0 tcontext=system_u:system_r:snapperd_t:s0-s0:c0.c1023 tclass=dbus exe="/usr/bin/dbus-daemon" sauid=81 hostname=? addr=? terminal=?'

Samba から Snapper にアクセスを許可するポリシーを作成してみます。次のような samba-snapper.te を作成し

module samba-snapper 1.0;
require {
  type smbd_t;
  type snapperd_t;
  class dbus { send_msg };
}

allow smbd_t snapperd_t:dbus { send_msg };

ルールをビルドします:

# Makefile がインストールされていない場合
$ sudo yum install selinux-policy-devel

# ビルド
$ make -f /usr/share/selinux/devel/Makefile

作成した samba-snapper.pp をシステムにインストールすると、以前のバージョンにアクセスできるようになります。

sudo semodule -i samba-snapper.pp

CentOS で以前のバージョンに対応したファイルサーバーを構築する方法を紹介しました。ぜひ、スライドで紹介している openSUSE で YaST を使った設定と比べてみて下さい。

8月7日から8日にかけて京都リサーチパークで開催されたオープンソースカンファレンスに出展しました。全体での来場者数は1日目は400名、750名とのことです。

セミナー
VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編

OSC のブースで YaST の説明をしていると、「これは便利そうですね」という声を頂くことが多いため、YaST を中心に解説するセミナーを行いました。聴講者は15名程でした。

スナップショットツール Snapper + Btrfs + Samba で、ファイルサーバーを構築するストーリーで YaST の使い方を紹介しました。一応補足しておきますが、Snapper や Btrfs 自体は Debian 8 や CentOS 7 でも使えます。

いつでもファイルを昔の状態に戻せる、Windows の「以前のバージョン」機能に対応したファイルサーバーを YaST でかんたんに構築する事例を紹介します。

YaST は世界的に使用されている Linux ディストリビューション openSUSE の設定ツールです。設定ファイルを vi で開いて編集しなくても、各種設定が行えます。OS のセットアップはさくっと終わらせて、他のことに時間を使いませんか?

現在開発中の LTS 版やローリングリリースの Tumbleweed など、openSUSE の最近の動向も紹介します。

トピック: Samba サーバー、ユーザーの管理、ネットワークの設定、ディスクの増設

セミナーの最後でじゃんけん大会を行い、Lサイズの openSUSE T シャツを1名の方にプレゼントしました。(Tシャツの写真は後半に)

YaST はディスプレイが繋がっていなくても(SSHでコマンドラインを使っている場合でも)Curses による TUI で、同じ画面構成で操作できることが伝わっていない感じがしますので、今後、もうちょっと工夫してアピールしていきたいなと思います。

VPSもDesktopもYaSTを使ってLinuxをらくらく設定―ファイルサーバー構築・管理編 from Fuminobu Takeyama

ブース

今回はドイツのニュルンベルグから openSUSE グッズを送ってもらい、電球型ボールからコマンドのチートシートになっている小冊子、ステッカーを配布しました。いつものようにたくさんのちびギーコたちが配布していました。

また、日本openSUSEユーザ会の独自キャラクター「ぎーこ」の被り物を制作し、会場にいたスタッフや斜め向かいのおーぷんここんの島田さんが交代で着ていました。実は、衣装はワンピースを含む全身を用意してあり、今後 OSC 東京などで(涼しくなったら)披露する予定です。

P1070275P1070278P1070281P1070288P1070319P1070324P1070331

この方法で、どのような条件でも確実にインストールできるか怪しいですが、本家 wiki にも書いていないので紹介します。依存パッケージが入らないケースがあれば教えてください

  1. openSUSE 用の RPM を Skype のウェブサイトからダウンロード
  2. ダウンロードしたファイルのあるディレクトリへターミナルで移動し、次のコマンドを実行(ファイル名はダウンロードした実際のファイル名に合わせてください)
sudo zypper in skype-4.3.0.37-suse.i586.rpm

openSUSE 13.1 で mikutter を使う

By ftake @ 2013-11-29 13:39

2014/06/03 必要なパッケージを追加

mikutterは ruby で記述されたオープンソースの Twitter クライアントです。

残念ながら、今のところ openSUSE 向けの保守されているパッケージはありませんので、開発元から提供されているアーカイブからインストールする事になります。注意する点は GTK の ruby バインディングをインストールする必要があることです。

まず、ビルドに必要なコンパイラなどの開発ツール一式、依存するライブラリのヘッダファイル類、mikutter が使う notify-send コマンドをインストールします。

$ sudo zypper install -t pattern devel_basis
$ sudo zypper install libnotify-tools ruby-devel gtk2-devel

次に、ruby-gtk2 をインストールします。ruby-gtk2 は rubygem でインストールします。

$ sudo gem install gtk2

ここでは、ホームディレクトリの下に apps/mikutter というディレクトリを作り、そこにインストールします。

$ cd
$ mkdir apps
$ cd ~/apps

mikutter のアーカイブは「ダウンロード」フォルダに保存してあるものとします。ファイル名は実際にダウンロードしたファイルに合わせて下さい。

$ tar xvf ~/Download/mikutter.0.2.2.1430.tar.gz

次のようにして起動できます

$ cd mikutter
$ ./mikutter.rb

2回目以降の起動は、~/apps/mikutter/mikutter.rb へのショートカットを作成するのが良いでしょう。

TeXLive 2012 で pTeX を使う

By ftake @ 2013-05-31 02:29

openSUSE 12.3 では、TeX Live 2012 になり、導入の方法が少し変わりました。 卒論シーズンを迎える前に、日本語を扱える TeX 処理系の1つ、pTeX (platex など) のインストール方法を紹介します。

TeXLive 一式と、pTeX を入れるには、zypper であれば、次のコマンドでインストールできます。なお DVD には含まれていないパッケージのため、インストール時にはネットワークへの接続が必要です。 (YaST であれば、ソフトウェアの管理から texlive-ptex を入れて下さい)

 $ sudo zypper install texlive-ptex

これで platex などのコマンドは使えるようになりますが、dvipdfmx で PDF に変換する時にフォントが埋め込まれません。PDF に IPAex フォントを埋め込むのに必要な ptex-ipaex.map ファイルは、TeXLive 2012 に含まれていますので、以前のように自分でファイルを書く必要はありません。 TeXLive を構成するファイルがどのパッケージに属しているかを検索するには zypper wp ‘tex(ファイル名)’ が使えます。ptex-ipaex.map では次のようにして、texlive-jfontmaps に含まれていることが分かります:

$ zypper wp 'tex(ptex-ipaex.map)'

S | 名前              | 種類       | バージョン             | アーキテクチャ | リポジトリ
--+-------------------+------------+------------------------+----------------+------------------
  | texlive-jfontmaps | パッケージ | 2012.60.svn25887-4.2.1 | noarch         | openSUSE-12.3-1.7

‘tex(ファイル名)’ はインストールするときにもそのまま使えます:

 $ sudo zypper install 'tex(ptex-ipaex.map)'

インストールしたら、dvipdfmx が自動的にフォントを埋め込むように設定します

 $ sudo updmap-setup-kanji ipaex

また、日本語でドキュメントを書くときに、旧来の jarticle.cls ではなく、jsarticle.cls を使う人も多いでしょう。これも同様にインストールできます。

$ sudo zypper install 'tex(jsarticle.cls)'

残念ながら TeXLive には含まれていない TeX パッケージもあります。(日本語を含むソースコードのフォーマットに便利な jslisting など)そのような TeX パッケージは ~/texmf/tex の下に配置すると良いでしょう。

16日に日本 Microsoft で行われたオープンソースカンファレンス.Cloud に参加してきました。当日は衆議院選挙の日でしたが、OSC 会場ではクラウドインフラ用(ゲスト)OS 総選挙を行いました。

この総選挙ではクラウドインフラ(EC2, Azure, VPS, …)のゲストに導入している OS と、その OS の理想とするサポート年数(パッチ提供期間)を投票してもらいました。使用用途での分類もしました。

投票結果

「お仕事・本格的」カテゴリでは、事前の予想通り CentOS がトップとなり、RedHat Enterprise を使っている方もいるようです。興味深いのはサポート期間で、

  • クラウドでも長ければ長い方が良い
  • 仮想化するとハードウェアが壊れても使い続けられるので長くなりそう
  • Web フレームワークのサポート期間が3年くらいなので、OSもそれくらいで十分
  • ハードウェアの減価償却で5年+α 欲しい

などの意見があり、3年以内と、5年、それ以上に分かれるようです。5年以上となると、やはり Enterprise 版の出番かと思いますが、3年であれば、コミュニティサポートのディストリビューションでも考えても良いのでは無いかと思います。(openSUSE には Evergreen と呼ばれる LTS サポートチームもあります)

個人的な用途や研究開発ではサポート期間は特に関係ないという意見が占めました。openSUSE 表が7票入っていますが、そのうち4票はユーザ会関係者以外により投じられています。また Ubuntu の割合も多くなっています。

最新号の Geeko Magazine では SUSE Studio を使ってカスタマイズ済の openSUSE のディスクイメージを作り、VPS と Azure 上に簡単に仮想マシンを構築する方法を紹介しました。後日公開予定です。

Tips: Zypper が遅い…そんなときは?

zypper コマンドで search や install をするのに、実行後出力が出るまで待たされることは無いでしょうか?

Zypper が裏で何をしているか、何に時間がかかっているかを知るには、-v オプションを使います。

$ zypper -v search ibus
冗長性: 1
オプション以外のプログラム引数: ‘ibus’
ターゲットを初期化しています
取得しています: repomd.xml ………………………………..[完了 (548 B/s)]
取得しています: content ……………………………………………[完了]
取得しています: media ……………………………………………..[完了]
取得しています: content ……………………………………………[完了]
取得しています: media ……………………………………………..[完了]
取得しています: repomd.xml …………………………………………[完了]
取得しています: repomd.xml …………………………………………[完了]
リポジトリのデータを読み込んでいます…
インストール済みのパッケージを読み込んでいます…
強制的な解決: いいえ (N)

S | 名前 | 概要 | 種類
–+————————————–+———————+—————–
i | ibus | Linux OS 向けイン-> | パッケージ

遅くなる大きな原因はリポジトリの自動更新です。リポジトリの自動更新を有効にすると、上記の例の場合は、検索をする前に、リポジトリの内容が変更されているかをサーバーに問い合わせ、変更されていればリポジトリの情報を取得し直します。 software.opensuse.org の 1-click インストールで、たくさんのリポジトリを登録している場合、これらのリポジトリを1つ1つ調べに行くので、時間がかかります。

手っ取り早い解決策は自動更新を無効にすることです。zypper コマンドからであれば

$ zypper mr –no-refresh リポジトリ番号or名前

で指定したリポジトリの自動更新を無効にできます。リポジトリ番号は

$ zypper repos

で確認できます。もちろん YaST からも変更できます。

自動更新を無効にすると、適当なタイミングでリポジトリの情報を取得しなければいけません。サーバーなどであれば

$ zypper refresh

を、検索やインストールする前に1回だけ実行して下さい。デスクトップであれば Packagekit が定期的にリポジトリの更新を行っていますので、上記のコマンドはあまり必要ありません。

参考: 覚えておきたい! zypper コマンドの使い方

IRC Proxy (znc) を導入する

By ftake @ 2012-09-23 00:46

12.2 が公開されたというのに、最近、更新が少なくてすみません。写真をアップロードしたりするのは Facebook が手軽すぎて…。アカウントを持っている人は日本 openSUSE ユーザ会のページももチェックしてみて下さい。

さて、毎週土曜日の夜に行われている IRC の定例をやっていると、次のようなことがあります。

  • 参加していない日のログが欲しい
  • 途中で抜けて戻ってきたときに、その間の発言を受け取りたい(特に途切れやすいモバイル環境で)

そこで便利なのが IRC Proxy です。IRC Proxy をどこかのサーバーにインストールしておくと、proxy が IRC サーバ(freenode など)に接続し続けてくれます。手元の IRC クライアントから proxy に接続すると、そのまま会話ができ、ログなども取得できます。

今回は、IRC proxy に znc を選びました。通信の暗号化にも対応しています。またサーバーは OSC で無料の VPS アカウントを配布している、Joe’s の VPS に openSUSE 12.1 をインストールして行いました。

znc は公式リポジトリには収録されてなく、OBS の server:irc に入っています。まずは、リポジトリを登録してから、znc をインストールします。

$ sudo zypper ar -R obs://server:irc/openSUSE_12.1 sever:irc
$ sudo zypper install znc

znc を動かすのに使うアカウントでログインして設定をします。こちらの記事を参考に設定しました。非常に手抜きですみませんが、今日はここまでです。