MariaDB を Debian6(squeeze) に入れるのが大変だった

知り合いから頼まれて MariaDB を Debian6 に入れたんですが、公式のインストール方法(apt リポジトリ追加 → apt-get update → apt-get install mariadb-server)では最後の方で止まってしまい、悩みました。
というわけで、うろ覚えながら方法をメモしておきたいと思います。

まずは公式の方法でインストールに挑戦します。
そうすると「subprocess installed post-installation script returned error」とかが出てエラー終了するはずです。(出ないで成功した貴方はラッキーですね)
続きを読む

postgresql のストアドプロシージャを移行する

postgreSQL のデータをスキーマ間で移行する作業の時に調べ回ることになったのでメモ。

プロシージャ(かトリガのどちらか)の一覧は「\df」で取得できる所までは、まあ大丈夫とする。
実際のソースは「SELECT prcsrc FROM pg_proc WHERE prcname = 'procedure_name'」で取得できる。

とは言え、これではソースのみであり、完全な CREATE FUNCTION 文ではない。
そこで pg_dump を利用する。

スキーマをダンプする時にオブジェクトを一緒にダンプするように、次の SQL 文を使う。
pg_dump --schema-only --oids -Fp db_name > filename」(必要なら -h、-U、-p 等も使う)
これで希望の CREATE FUNCTION 文を入手できる。後はエディタでちゃっちゃと編集すればいい。

もしかすると、適当な空のテーブルを作っておいて「-t tablename」を指定すると、余計なスキーマ情報が入らないかもしれない。…と思って試してみたら駄目だった。

あとは psql で入って「\i filename」で読み込めば OK となる。

virtualbox のゲスト Debian で nat ネットワークがつながらなかった件

掲題の通り、virtualbox で nat に設定したネットワークアダプタを用意してインストールすると、再起動後に外部ネットワークに接続できない状態になっていたので、開通させるまでの手順をメモ。

結論から言うと以下の 4手順で完了。

  1. ifconfig eth0 10.0.2.15 netmask 255.255.255.0
  2. route add default gw 10.0.2.2
  3. apt-get install ifupdown
  4. /etc/network/interfaces を編集
    • iface eth0 inet dhcp をコメントアウト
    • iface eth0 inet static
    • address 10.0.2.15
    • netmask 255.255.255.0
    • up route add default gw 10.0.2.2
    • down route del default gw 10.0.2.2

ここに行き着くまでに /etc/default/network をいじったり、何度も /etc/network/interfaces を書き直したり、手動で ip コマンドを叩きまくったりと大変だった…
特に /etc/network/interfaces を有効にするには ifupdown パッケージが入ってないとダメだと分かるまでに、だいぶかかってしまった。

debian 7.6 に docker をインストール

docker がブームらしいという事で、仮想マシンの debian 7.6 にインストールしようとしたら躓いたのでメモ。

探してみた手順では以下のようになっていた。
$ sudo apt-get install -qqy ca-certificates
$ sudo apt-get install apt-transport-https
$ sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"
$ sudo sh -c "echo 'deb https://get.docker.io/ubuntu docker main' | tee /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update && sudo apt-get install -qqy lxc-docker

ところが、この手順で apt-get update したところ、docker リポジトリが取得エラーになってしまった。メインマシンから https で対象サイトにアクセスすると、ちゃんと Packages が取得できてたので悩んだ。

色々試してみたところ、結局 docker.list の中身を次のように書いたら動いてくれた。
deb http://get.docker.com/ubuntu docker main
(サイトの「io」を「com」に、「https」を「http」に変更した)

wget では https でも取得できてるので、何故こうしないと動かないのかは不明。

追記:よく見たら関連リンクに 7.6 用の手順があった…

How to add elisp library on Debian

突然ですが Emacs 紹介のページで rainbow-delimiters という「対応する括弧を色付けする」elisp を見付けました。
これは早速入れるべしという事で、まずはパッケージを探したのですが案の定そんなパッケージは存在せず、泣きながら(←誇張)手動でインストールとなりました。

で、「どうせだからパッケージと同じようにシステムにインストールしよう」と(いつもと同様)唐突に思い立ち、なんとか目的を達成したのでメモしておきます。

なお、フォルダのパーミッションの都合上、以下の作業は root で行いました。
手順は windows-el パッケージを参照させて頂きました。メンテナの方に感謝です。

  1. まずは elisp ファイルをダウンロードします。しないと話が始まりません。
  2. それを /usr/share/emacs/site-lisp/ 以下に置きます。今回は 1ファイルだったのでグループ化しませんでしたが、複数ファイルの場合はフォルダを掘って入れるのが良いようです。
  3. 続いて、元と同様のフォルダ構造で /usr/share/?flavor?/site-lisp/ 以下に elisp ファイルへの symlink を張ります。「?flavor?」の部分には実際の emacs の名前を入れてください。今回は「emacs24」でした。
  4. いよいよバイトコンパイルの時間です。symlink したファイル群に対して「emacs24 -batch -q -no-site-file -f batch-byte-compile elispファイル名」を叩いてください。「emacs24」の部分は環境に合わせて読み替えて下さい。(当然ながら作業フォルダは symlink 先だった  /usr/share/?flavor?/site-lisp/ 以下ですよ)
    コンパイル時に別ファイルを読ませる必要があれば「-l ファイルパス」(←小文字のエルです。アイでも1でもありません)をコマンドラインに追加すればいいようです。
  5. 最後に /etc/emacs/site-start.d/ に、ライブラリ読み込み用の設定ファイルを作成します。今回は 50windows-el.el70rainbow-delimiters.el にコピーさせてもらって、ちょこっと編集して使いました。
    基本的には元の elisp ファイルの存在を確認した後で emacs の load-path に追加して、require しているようでした。
    1ファイルしか無い今回は load-path 設定の部分をコメントアウトして require だけにしましたが、動作したので OK ということで。

これでシステムワイドにライブラリを読み込んでくれるので、後は個人設定で add-hook するなり global-rainbow-delimiters-mode で常に ON にするなり、好きなように料理できます。

いやぁ、今日の思い付きは短時間で済んだので本人もびっくりです。持つべきものは「バラせる(←ここ重要。テストに出ます)既存品(つまり windows-el パッケージ)」ですね。