[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:001266] setup.rb



神代様:

別件(気象庁データ公開関係)で、必要なソフトがなければダウンロー
ドしてインストールするスクリプトを作りましたので、参考までにお送
りします。一括セットアップスクリプト作成に役だてばということで。

堀之内

> jmadata-usersの皆様:
> 
> MSM及びRSMのデータ(in「国内2進形式」)を読むためのソフトを作り
> ました。気象庁の豊田さんにアドバイスを頂きましたので、記して感謝
> 致します。
> 
> Rubyという言語で書かれたライブラリーとなっており、そのアプリケー
> ションとして、ファイルの内容表示や NetCDF 形式への変換を行うコマ
> ンドがあります。まだまだ改善すべき点は多くありますが、現状でも一
> 応使用に耐えると思いますので、公開します。(改善のためのパッチを
> 歓迎します。)
> 
> 必要なソフトは、
> 
>   (1) Ruby 1.6.5 以降  (http://www.ruby-lang.org/ja/)
>   (2) NetCDF 3  (http://www.unidata.ucar.edu/packages/netcdf/)
>   (3) 本ソフトを含む幾つかのライブラリー
>  
> です。(1), (2) をまずインストールすれば、(3)は添付した seteup.rb
> を適当な作業ディレクトリーで実行すればダウンロード&インストール
> できます。(2)のNetCDFは大元の C 版だけがインストールできていれば
> 充分です。なお、(3) の中身は以下の通りです。最後の2つが今回作っ
> たものです。
> 
>    NArray	http://www.ir.isas.ac.jp/~masa/ruby/dist/narray-0.5.6p2.tar.gz,
>    RubyNetCDF	http://ruby.gfd-dennou.org/products/ruby-netcdf/ruby-netcdf-0.3.5.tar.gz,
>    MultiBitNums	http://ruby.gfd-dennou.org/products/multibitnums/multibitnums-0.1.1.tar.gz,
>    gpv		http://ruby.gfd-dennou.org/products/gpv/gpv-0.1.1.tar.gz
> 
> setup.rb (テキストファイル, Rubyプログラム) は UNIX を前提にして
> います。実行は、
> 
> % ruby setup.rb
> 
> とするか、
> 
> % chmod +x setup.rb
> % setup.rb
> 
> です。
> 
> ---
> 堀之内 武                    horinout@xxxxxx
> 京都大学宙空電波科学研究センター     611-0011 宇治市五ヶ庄
#!/usr/bin/env ruby

URL = { 
   'NArray'=> 'http://www.ir.isas.ac.jp/~masa/ruby/dist/narray-0.5.6p2.tar.gz',
   'RubyNetCDF' => 'http://ruby.gfd-dennou.org/products/ruby-netcdf/ruby-netcdf-0.3.5.tar.gz',
   'MultiBitNums' => 'http://ruby.gfd-dennou.org/products/multibitnums/multibitnums-0.1.1.tar.gz',
   'gpv' =>  'http://ruby.gfd-dennou.org/products/gpv/gpv-0.1.1.tar.gz'
}
TOP = {
   'NArray' => 'narray-0.5.6p2',
   'RubyNetCDF' => 'ruby-netcdf-0.3.5',
   'MultiBitNums' => 'multibitnums-0.1.1',
   'gpv' =>  'gpv-0.1.1'
}
REQUIRE = {
   'NArray' => 'narray',
   'RubyNetCDF' => 'numru/netcdf',
   'MultiBitNums' => 'numru/multibitnums',
   'gpv' => 'numru/gpv'
}
INSTALL = {
   'NArray' => "tar xvzf #{TOP['NArray']}.tar.gz && cd #{TOP['NArray']} && ruby extconf.rb && make  && make site-install",
   'RubyNetCDF' => "tar xvzf #{TOP['RubyNetCDF']}.tar.gz && cd #{TOP['RubyNetCDF']} && ruby extconf.rb && make && make site-install",
   'MultiBitNums' => "tar xvzf #{TOP['MultiBitNums']}.tar.gz && cd #{TOP['MultiBitNums']} && ruby extconf.rb && make && make site-install",
   'gpv' => "tar xvzf #{TOP['gpv']}.tar.gz && cd #{TOP['gpv']} && ruby install.rb"
}

URL.each_key do |soft|
   begin
      print "checking for #{soft}...\n"
      require REQUIRE[soft]
      print " --> found\n"
   rescue LoadError
      print " --> not found. ",
	  "Would you like to Download and install it? (y, n); \n"
      ans = gets()
      if ( ans =~ /^y/ )
	 print "downloading #{URL[soft]} with wget ...\n"
	 stat = system("wget #{URL[soft]}") 
	 raise 'Could not download ' + URL[soft] if (!stat)
	 print "installing #{soft}...\n",INSTALL[soft],"\n"
	 stat = system(INSTALL[soft])
	 raise 'Installation failed: ' + soft if (!stat)
      else
	 raise "You need to install it\n"
      end
   end
end