苦悶に満ちて溢れ出した Boxen のお話 (Winter ver.) - 弐

Iceland Operates on Mac OS X!
Iceland Operates on Mac OS X! / cogdogblog

前エントリーの続き。

  • Puppet でシンボリックリンクを作れる。
  • Puppet での変数のお作法、$..."${...}" 表記スタイルと使い分け。
  • Boxen がデフォルトで提供(定義)するモジュールのバージョンを別のものにする。
  • Boxen の puppet あるけど Package リソースタイプ使ってインストール。
  • Package リソースタイプ使ってのインストール、"No such file or directory" ?
  • Package リソースタイプ使ってのインストール、それの providerappdmg
  • Rsync は 3 を使いたくてやったこと。
  • Ricty も Boxen の中で全部やってしまいたくてやったこと。

今回は、上から 3 つめから。
何か、自分以外の誰にも役に立たないような内容ばかりだなwww 今更だけど。(発作)

Boxen がデフォルトで提供(定義)するモジュールのバージョンを別のものにする

以下のようなエラー.

/opt/boxen/repo% script/boxen --no-fde
Could not resolve the dependencies.
Can't run Puppet, fetching dependencies with librarian failed.

これについての結末は、
Puppetfile*1 で、モジュールを重複して定義していた、と言う実にくだらないミス。

とは言え、タイトルにあるよう、
基本的な開発環境として boxen 側がデフォルトで提供するモジュールではあるけれど、それとは異なるバージョンを入れたい、と言うケースについてのメモとして残しておくことに。

で以下詳細。

キッカケとしては、 go 言語の puppet が在るのを見つけて、ちょっとした好奇心からインストールしておこうと、Puppetfile*2github "go", "2.0.1" と付け足したのですが、実はその上の方で "Core modules" のひとつとして既に go は定義されてたりする。

そしてさらに、puppet-go の使い方見たら、version を指定できるらしく、せっかくだから新しい version を入れておこう、と。

個人用 pp ファイルに go::version { '<version>': } を挿し込む。
とこには、任意の version 値を。

ところで、our-boxen の Puppetfile 側で定義されている release 番号と言うか tag の値を見てみると "1.0.0" なんだけど、puppet-go 自身の方の最新は現時点 "2.0.1" となっている。

どういうことなんだろうか...

Boxen に puppet 在るけれど、Package タイプでのインストールしようと思ったケース

Gimp を入れたい、と考えていた。

勿論 boxen 自身にも Gimp の puppet はあるのですが、なぜそれを使わないと判断し、そして Package リソースタイプ使ってインストールした、と言うことを残しておきたくメモ。

在るにも関わらず、なぜ puppet-gimp を使わないか。
その理由は、ここでは Simone さんの gimp*3を使いたいから。

さらに、その理由は、となるとこういうこと。

多数のプラグインにくわえ日本語リソースも収録されているため、メニューなどが日本語で表示できるからだ。

まぁ、この記事見た時から随分経ってるので、問題や差分は解決されてるかもしれませんが...

で。
boxen の puppet が連れてきてくれて来てくれる gimp と言うのは、どうも、と言うかやっぱり gimp 公式に置いてあるヤツのご様子。

そう言ったキッカケで、gimp については boxen の puppet ではなく、Package リソースタイプを使ってインストールすることに。*4

サイトより、リンクのアドレスを頂いて、個人用 pp ファイル *5 に記載。;

package { 'Gimp':
  source   => "http://sourceforge.net/projects/gimponosx/files/GIMP%20Mavericks/Gimp-2.8.10p2-Mavericks.dmg/download",
  provider => pkgdmg;
    }

Package タイプでのインストール、"No such file or directory" エラー

ところがエラーを吐く。

: *省略*
Error: Could not set 'present' on ensure: No such file or directory - http://sourceforge.net/projects/gimponosx/files/GIMP%20Mountain%20Lion/Gimp-2.8.6p1-MountainLion.dmg at 75:/opt/boxen/repo/modules/people/manifests/mygithubname.pp
Wrapped exception:
No such file or directory - http://sourceforge.net/projects/gimponosx/files/GIMP%20Mountain%20Lion/Gimp-2.8.6p1-MountainLion.dmg
Error: /Stage[main]/People::Woowee/Package[Gimp]/ensure: change from absent to present failed: Could not set 'present' on ensure: No such file or directory - http://sourceforge.net/projects/gimponosx/files/GIMP%20Mountain%20Lion/Gimp-2.8.6p1-MountainLion.dmg at 75:/opt/boxen/repo/modules/people/manifests/mygithubname.pp
: *省略*

そんなファイルがない、って?
試しにブラウザでアドレス直入力するとちゃんとダウンロードされる、のに url 間違ってる? ファイルない?

この原因。 これもまた、まぁそれはツマラナイ話だったりする。

url。
url 内の %20

フツーに url が悪い、と言うオチ。もー自分にウンザリ。

それは特に何らかの論理的なストーリーあっての事ではなく「実は何となく気になっていて...」を、しょうがなく、もしかして、で実際行動を起こしてみたら、それだった、と言う、これまたテイタラク。

スペースは、url のエンコーディング の中で %20 に符号化される。

と言う事で、source 属性に指定している url の %20 を半角スペースにしておく、ということでした。(白目)
基本的な話で誠にお恥ずかしい限り。

Package タイプでのインストール、provider 属性には "pkgdmg" だけでなく "appdmg" もある

別件で調べていたら、気になる記載が目につく。

どうやらpkgdmgはDMGの中に.pkgのインストーラが含まれている場合に指定するもので、DMGの中に.appで格納されていて、アプリケーションフォルダにコピーしてインストールする形式のものはappdmgを指定するらしいということ ...

どうりでインストールされてないわけです。
と言う事で。

package {
    'Gimp':
        source   => "http://sourceforge.net/projects/gimponosx/files/GIMP Mountain Lion/Gimp-2.8.6p1-MountainLion.dmg",
        provider => appdmg;
}

Gimp ひとつ、インストールするのに、トラップ 3 つ... 情けない orz

今日も、ここで終わりにします。
何か、思い出しただけで疲れたw...はいおしまい。

*1:our-boxen/Puppetfile

*2:our-boxen/Puppetfile

*3:Mavericks にも対応してくれてますね。感謝。あとで更新しよう...

*4:実は、boxen の puppet を clone して、自分用の puppet-gimp を作ろうと思ったのですが、何か思うようにいかなくてwww。あんまそこで労力消費したくなく、未来の自分へうっちゃってしまってます。

*5:our-boxen/modules/people/manifests/puppet/${github_username}.pp