freebsdで、youtubeのファイルをダウンロードするports youtube_dlが便利

FreeBSDのportsの

/usr/ports/www/youtube_dl

を使うと、youtubeのflvファイルをダウンロードできる。
ffmpegと組み合わせて、プレイリストのファイルをダウンロードしたり。

#!/usr/local/bin/ruby
$KCODE=”u”
require ‘rubygems’
require ‘hpricot’
require ‘open-uri’
plist = ARGV[0].scan(/p=(\w*)/).first.first
s = open “http://www.youtube.com/view_play_list?p=#{plist}”
doc = Hpricot s.read
YOUTUBE_ADDR = “http://www.youtube.com”
i = ARGV[1].to_i || 1
doc.search(“a.video-thumb-120″).each do |l|
addr = l.to_html.scan(/href=”([^"&]*).*”/)
title = l.to_html.scan(/img title=”([^"]*).*”/).first.first.gsub(” “,””).gsub(“/”,”-”)
downaddr = YOUTUBE_ADDR + addr.first.first
filename = “#{Time.now.strftime(“%Y%m%d”) + ‘_’ + sprintf(“%04d”,i) + ‘_’ + title}”
`/usr/local/bin/youtube-dl -o #{filename}.flv #{downaddr}`
`/usr/local/bin/ffmpeg -i #{filename}.flv -acodec copy #{filename}.mp3`
i += 1
end

不意の電源断でFreeBSDが落ちたあとgmirrorのディスクがmountされない

ブレーカー落ちなどのあとは、自動ではmountされない。
そして、mount命令を実行しても
Operation not permitted
というメッセージが出てしまう。
mountするためには、いったんfsckでディスクチェックの必要がある。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230781/

Mercurialをつかってみる その2 (チェックイン編)

インストールは無事完了したので、
実際にetc以下の設定ファイルをMercurialを使ってバージョン管理の対象にする。
手順は、

設定ファイルのあるディレクトリで、リポジトリの初期化
初期化したリポジトリに対して、ファイルを追加

svnと違って、リポジトリというのはディレクトリごとに作成する点が異なる点がポイント。
では、実際にやってみたログ。
%sudo hg add *
adding bluetooth/hcsecd.conf
adding bluetooth/hosts
(略)
adding ssl/openssl.cnf
% ls .hg
00changelog.i dirstate requires store
% sudo hg commit -m ‘initial import’
No username found, using ‘root@localhost.localdomain’ instead
こんなかんじで、hg add * で現在のディレクトリ以下すべてが、カレントディレクトリの.hg以下のリポジトリに記録される。
(上記例では、/etc/**/*が/etc/.hgのリポジトリに格納されたことになる。
svnと大きく違うのは、単純にinitだけをすればよくて、importして、checkoutをしてといった手間が不要になること。
checkoutをしないので、ファイルのパーミッションが変わったりオーナーが変わったりとかしないこと。
これはmercurialのメリット。
ほかには、変更の確認はsvnとおなじで、hg diffで見たり、コミットはhg commitだったりするので、
基本的に違和感なく使えると思う。

Mercurialをつかってみる その1 (インストール編)

FreeBSDで、分散バージョン管理システムMercurialを使ってみる。
目標は、開発用の自宅サーバについて、

/etc/*
/usr/local/etc/*

の設定ファイルのバージョン管理を行うこと。
なんでgitじゃないの?っていうのは、なんとなく。
てなわけで、まずはインストール。
% whereis mercurial
mercurial: /usr/ports/devel/mercurial
% cd /usr/ports/devel/mercurial
% sudo make install
% which hg
/usr/local/bin/hg
% hg –version
Mercurial Distributed SCM (version 1.0.2)
Copyright (C) 2005-2008 Matt Mackall <mpm@selenic.com> and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
簡単にインストールできたので、次は/etc以下を実際にimportして、バージョン管理を始める方法です。