Rsync の Ver 3.x は Boxen の homebrew で入れてもらうことにした
あ。前の続きなのではありますが、"... その参" な感じは、やっぱ止めす。
さてっ。
地味ながらも、何気に必需品であったりする rsync。
rsync は、os プリインストールの 2.x ではなく、3.x を使いたいので、reync の version 3.x を boexn で入れてもらうようにしたい。
で、そのために
modules/people/manifests/$login.pp
にこんな感じで書き足してみました... ;
#dupes to use rsync 3 homebrew::tap { 'homebrew/dupes': } package { 'homebrew/dupes/rsync': require => Homebrew::Tap["homebrew/dupes"] }
そしたら、何か上手くイッてるみたいです。
と言うお話。
ちなみに、これ書いてるしと、puppet については素人未満だったりします。
実は、これが正解かどうかすらの判断から自信がなかったりしてます。
そんなしとの営みですので、その辺りご注意をば。
そして何より、突っ込んでくださる優しい方いらっしゃったら、それは勿論大歓迎です。
以前も、このことについては触れたことありますが、
macos がプリインストールで提供してくれている rsync は、version が 2.x だったりします。
それは、これを書いてる時点、10.9 mavericks でも同じご様子。
% type rsync rsync is /usr/bin/rsync % rsync --version rsync version 2.6.9 protocol version 29 Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and others. <http://rsync.samba.org/> Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles, inplace, IPv6, 64-bit system inums, 64-bit internal inums rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details.
これに対し、今までは、homebrew の homebrew-dupes によって rsync 3 が使える環境を設けていました。
そしてこの度、勿論 rsync は 3 を使えるようにしたい訳ですが、今回はちょっと状況が違います。
boxen で...?
boxen 使えば homebrew も使えるのは分かった...けど
boxen は、個人的にとても都合よいことに、デフォで homebrew 環境を用意してくれる((/path/to/your-boxen/Puppetfile
に書いてるはず。))。
前にも書いた通り rsync 3 の導入には homebrew を利用していました。
こんな感じで ;
% brew tap homebrew/dupes
% brew install rsync
考え方は、こうなのですが。
さて。
boxen 使ったインストール処理の中で tap ってどうやるの? と。*1
ここでまず足が止まるわけです。
boxen の homebrew で tap コマンド?
brew tap
は?
と言う事で、実はこちらの方が後なのですが、boxen の puppet-homebrew の repo ページへ訪れてみる。
readme にこんなフレーズが。
class clojure { homebrew::tap { 'homebrew/versions': } : *略* }
tap コマンドは homebrew::tap
とな?
{} の中に書かれている homebrew/versions
言うのは公式? 最新? 以外のバージョンの fomula 達がパッケージされたリポジトリだ、...ということは、
ここに tap したい repo 名、今回だと rsync の formula がある homebrew/dupes
を充てれば良い、となるわけですね。
ということで、brew tap homebrew/dupes
の部分は、こんな感じになるかと。
homebrew::tap { 'homebrew/dupes': }
これも後で知ったのですが、ここにでもこんなことがメモってありました。;
Public: Tap a Homebrew source
Usage: homebrew::tap { 'homebrew/versions': }
via. manifests/tap.pp
たぶん、これでいいんだと思います。
...たぶん。
brew install
は?
homebrew 使ったインストールは package
リソースタイプで、と言うのまでは分かっている。
で、この方法は、tap で引っ張って来たようなアイテムも同じ? が気になるところ。
先にも挙げた puppet-homebrew の readme に記載されている使い方見ても、やっぱ読み方分かんなくて分からないし *2、分からないなりの "何となく感" もなく...orz
他の人のソースを覗いてみることに :p
幾つか目にした中で膝を叩いたのはこの辺り? ;
- [onewheelskyward さんの site.pp][45]
- ae06710 さんの personal manifests
- sangotaro さんの personal manifests
onewheelskyward さんのは、まさに同じ事を考えていて、rsync 3 を入れようとしている。その意味で、一番長く見たソースだったりします。
でも、その定義場所が site.pp だと言うのがどうも気になってしょうがない。
でも、この辺りを見て、;
しかしsite.ppは全てのマシンに適応される設定を書く場所なので、基本的にはここには書かず、後述する個人設定やプロジェクト設定に書く。
onewheelskyward さんとは、状況や利用目的が違うんだろう、と想像できたのと、上に挙げた他の 2 つの参照先をみて、自分のケースだと普通に modules/people/manifests/$login.pp
に書くで良いんだと腑に落ちる。
と言う事で、onewheelskyward さんのこの辺りを核とすることに。;
# Homebrew dupes to get rsync 3 homebrew::tap { 'homebrew/dupes': } : *略* # Rsync 3 from homebrew dupes package { 'homebrew/dupes/rsync': require => Homebrew::Tap['homebrew/dupes'] }
あと、もひとつ気になっていた、homebrew::tap
によるアイテムのインストールは、homebrew ネイティブのアイテム同様、package
タイプで良いのか? ってこと。
こちらについては、ae06710 さんの pp みて問題ない事がわかりました。
ae06710 さんのケースでは homebrew/binary を tap しているのですが、ひとつの package で binary 提供のアイテムと homebrew ネイティブのアイテム、一色単に定義していたりします。うん、問題ないみたい。
ということで、brew install rsync
の部分は、こんな感じにしました。;
package { 'homebrew/dupes/rsync': require => Homebrew::Tap['homebrew/dupes'] }
丸パクリですが... :p ;
boxen の homebrew での rsync 3 は。
冒頭にも書いているのですが、結果、こうしました、と。;
#dupes to use rsync 3 homebrew::tap { 'homebrew/dupes': } package { 'homebrew/dupes/rsync': require => Homebrew::Tap["homebrew/dupes"] }
最後に、改めて試す気力ないのですが、もしかしたら、こういうのでもイケるのかもしれません。
#dupes to use rsync 3 homebrew::tap { 'homebrew/dupes': } package { 'homebrew/dupes/rsync': require => Homebrew::Tap["homebrew/dupes"] }
だから何だよ、な話ですが、ちょっとこの事をメモしておきたかったので。;
パラメータがひとつしかないリソースは,1行で宣言します。
file { '/tmp/somefile': ensure => exists }
結果です。;
% type rsync rsync is /opt/boxen/homebrew/bin/rsync % rsync --version rsync version 3.1.0 protocol version 31 Copyright (C) 1996-2013 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details.
はいおしまい。
*1:boxen の後に走らせる shellscript でやらせれば、と言うのもあったのですが、今回は折角なので boxen の中でやることを考えることにしました。shellscript による方法は、色々試行錯誤した結果、仕様あるいは自分の能力的に出来なかったら...、の時にと。
*2:usage である "homebrew::formula {..." はこのあたりの話で、Homebrew::Tap の代わりに single tap と Homebrew::Formula 達でできるようにしたよ、なこと? 上に "homebrew::tap {..." とあるけど、rsync を考える場合、あんま関係なく、usage にある感じで書かなくて? ... そっか、自分は homebrew::formula がよく分かってないんだ。うーん