Time to Read
6~8分
結論を最初に
- 一部機能を除いて動きました。
- 今のところ、画像アップロードが動きません。。
経緯
2分
etckeeperと言うものがあり、要するに /etc 以下をリポジトリにして変更履歴を管理してくれる、大変大雑把と言えば大雑把なソフトウェアがあります。大雑把ですが、結構便利です。
1 | sudo aptitude install git-core etckeeper |
そしたら、 /etc/etckeeper/etckeeper.conf と言う若干くどい名前の設定ファイルを編集。
1 2 3 4 5 | # The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" |
Gitの他、MercurialやBazaarなんかが使えます。ただし、Subversionなどのような、中央リポジトリが必要なバージョン管理システムは使えませんね(ローカルにコミットしていくため)。
VCSを決めたら:
1 2 | sudo etckeeper init sudo etckeeper commit |
勝手にバージョン管理するんで、特にとりたててすることは無いです。
それで終わってもアレなので、、コミットのタイミングは主に以下の2点です。
たとえばaptitude installしたりすると自動で変更をコミットしてくれます。また、 /etc/cron.daily/etckeeper というジョブがインストールされて、毎日変更をチェックし、変更があれば自動コミットします。
手動で /etc の変更をコミットしたい場合は:
1 | sudo etckeeper commit "message" |
/etc/etckeeper/ 以下には、commit.d、init.d、unclean.dなどのディレクトリがあり、サブコマンドcommit、init、unclean…といった感じで対応しています。そのサブコマンドを発行すると、 ${SUBCOMMAND}.d/ 以下の実行スクリプトを順次実行していきます。
たとえば、/etc/etckeeper/log.d と言うディレクトリを作れば、 etckeeper log と言うサブコマンドが利用できるようになります。 /etc/etckeeper/log.d/10LOG と言うシェルスクリプトを以下のように作成してみましょう。
1 2 3 4 5 6 | #!/bin/bash git --git-dir=/etc/.git log \ --graph \ --all \ --color \ --pretty='%x09%h %cn%x09%C(yellow)(%cr)%Creset%x09%s %Cred%d%Creset' |
これで:
Logを見るのが楽になりました。etckeeper自体は微妙に機能不足感は否めませんが、大雑把な仕組みだけあって大雑把に機能追加出来ます。活用しましょう。
ちなみに、git --git-dir=/etc/.git log の順番でないと動きません。。。しばらく、動かないスクリプトを載せていて失礼しました(19:33修正)。
なお、上述のカラフルなGit logのフォーマットは、以下のサイトを参考にさせていただいております。
1分
先日言ったとおり、サーバの引越しを完了させた。
ServersMan@VPSのStandardプランでやっている。ServersMan@VPSは最安値で490円/月だったり、2ヶ月無料キャンペーンをやっていたりするにも関わらずDebianが使えるので、apt信者の人でも安心して使えると思った。
とはいえ、契約初期状態ではDebianはlennyのリポジトリを向いている。これを、squeezeに向けて、なるべく最新のソフトウェアを使えるようにする(以下の方法はサポート対象外の手順なので、自己責任で!)。
手順は簡単で、 /etc/apt/sources.list を、「Debian JP Project – ミラーサイトについて」を参照しつつ例えば以下のようにする(バックアップは取っておこうね!)。
1 2 3 4 5 6 7 8 9 | deb http://ftp2.jp.debian.org/debian squeeze main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib non-free # Uncomment if you want to use Debian volatile stable updates #deb http://ftp2.jp.debian.org/debian-volatile squeeze/volatile main contrib non-free # Uncomment if you want the apt-get source function to work #deb-src http://ftp2.jp.debian.org/debian squeeze main contrib non-free #deb-src http://ftp2.jp.debian.org/debian-volatile squeeze/volatile main contrib non-free |
ちなみに初期段階ではセントラルに向いててヘヴィなので、ついでに日本のサーバに向けておく。
debian-volatileは、現状squeezeがテスト段階である以上、当然まだ使えない。あと、deb-srcについては、aptitude updateが重くなるし、必要になってからアンコメントすればいいと思う。
上記の設定をしたら、まず、apt、dpkg、aptitudeだけ最新の状態にする。また、初期状態ではlocaleが変な感じなので再設定。
1 2 3 | sudo aptitude update sudo aptitude install apt dpkg aptitude locales sudo dpkg-reconfigure locales |
dpkg-reconfigureで「ja_JP.UTF-8 UTF-8」を頑張って探して設定。これで、aptitude installしてもロケールまわりで変な警告が出ることがなくなる。
そして、
1 | sudo aptitude full-upgrade |
それなりに長いこと掛かるが、帯域は思ったより広いのでものすごく長くは掛からない。多分、何度も何度も「パッケージメンテナのバージョンをインストールして置き換えますか?」みたいな質問が出てくるが、「N」を選んだほうがいいと思う。
終わったら、ドキドキしながら:
1 | sudo shutdown -r now |
再び上がってくるまでお茶でも飲みながら待つ。上がらなかったら、管理画面から上げよう。それでも上がらなかったら、初期化しよう。。。
うまくいけば、これでsqueezeのリポジトリからより新しいソフトウェアが利用できるようになる。ちなみに、僕はアップデートする前にもうapache2を削除してしまっているので、squeezeでもServersManが利用できるかどうかはよく分からない。
現状、squeezeのリポジトリでは、例えばRubyなら1.9.2が、MySQLなら5.1.49が入る。lennyもいい加減リリースされて経つし、squeezeは年内には正式版になるようなので、個人利用ぐらいならこの辺で乗り換えてもよいんじゃないかと思った。
11月 19
Posted by udzura in Ruby, Sinatra | No Comments ![]()
![]()
![]()
![]()
![]()
1分
地味にどこにも情報がないんでここにメモしときます。
以下のようなディレクトリ構成のSinatraアプリを考えます。
$ tree . . |-- Gemfile |-- Gemfile.lock |-- app.rb |-- config.ru |-- lib/ | |-- hoge.rb | `-- zzzzz.rb |-- log/ `-- tmp/
この lib/ 以下で定義したクラス/モジュールについて、Rails風に、明示的にrequireしないでも、
1 2 3 | class App < Sinatra::Base register Hoge # <- ここ end |
って書けばロードしてくれるとうれしいな~と思ったんですが、以下のように設定すると出来ました。
app.rb1 2 3 4 5 6 7 8 9 | require 'sinatra/base' $LOAD_PATH << File.dirname(__FILE__) + "/lib" require 'active_support/dependencies' ActiveSupport::Dependencies.autoload_paths << File.dirname(__FILE__) + "/lib" class App < Sinatra::Base register Hoge # <- autoload end |
config.ru1 2 3 4 5 6 7 | require 'rubygems' require 'bundler' Bundler.require require File.dirname(__FILE__) + '/app' run App |
ポイントとして、
require 'active_support/dependencies' は明示的に宣言する(require 'active_support/all' では読まれない!)$LOAD_PATH と ActiveSupport::Dependencies.autoload_paths 両方にPATHを追加すると言うことが挙げられます。むろん、同じような設定はどういうフレームワークでも可能だと思います。少し複雑になってくると require も面倒だと思うので、参考にしてください。
11月 18
Posted by udzura in Capistrano, Git, Mercurial, Ruby | 2 Comments ![]()
![]()
![]()
![]()
![]()
5分
Gitっぽい分散型バージョン管理ツール。Python界隈でよく使われているらしい。コマンドは hg 。
Mercurialを利用する、リポジトリホスティングサービス。簡単なWikiやトラッカも付く。無料利用可能。
ウェブサービスかなんかをデプロイする際、Capistranoなどが便利だけれど、Capistrano経由のデプロイではリポジトリが存在しないと旨味が少ない。この時、まあ、Webサーバと同じサーバに公開リポジトリを作るよりは、外部のリポジトリホスティングとかを頼りたいよね、と言う話。
Githubと言う最強のホスティングサービスでGitを使ってもいいけど、今回紹介するBitbucketは「無料でプライベートリポジトリが作成可能」なので、色々都合がいい場合が多い。ということで、Bitbucketを利用するための最低限のMercurialの使い方を紹介。
You are currently browsing the archives for 11月, 2010
Arclite theme by digitalnature | powered by WordPress