24111
【環境】CentOS7.2

Linux環境にて、RubyをインストールせずにRubyを使える環境にさせるにはどのような方法があるでしょうか？

Rubyのスクリプトで書かれた hoge.rb というスクリプトを作成したのですが、相手の環境には Ruby がなく実行出来ません。

相手の環境に Ruby
をインストールしてもらえればいいのですが、こだわりがあるらしくRubyは入れたくない！依存関係が～という良くわからない理由があるため困っております。

ただ、fluentdなどを例にみると /opt/配下に Ruby?
の環境が入っているらしくfluentdを使うときはRubyをインストールしなくても使えております。

fluentdのようにRubyをインストールせずともRubyが使えるようにするにはどうしたらよろしいでしょうか？  
ご存じの方いらっしゃいましたらご教示頂けませんでしょうか？  
または、そのあたりの部分について詳しく記載されているサイト等ございましたらご紹介して頂けませんでしょうか？
CC BY-SA 4.0
2016-04-15T09:33:31.690
24043
2019-12-14T22:08:00.670
2019-12-14T22:08:00.670
32986
14384
question
ruby
Ruby をインストールせずに Ruby を使える環境にするためには？
おそらく fluentd (td-agent) を rpm から入れているのではと思いますが その場合 /opt/td-agent/embedded/ に
Ruby の環境が 組み込まれます。

「fluentdのように」やるのであれば hoge.rb と ruby 環境一式を rpm 化して 相手に渡す感じになりますが rpm
化はあまり詳しくないのでこれ以上のことは分からないです。すみません。

別の方法として思いつくのは

  1. fluentd の ruby 環境を使ってもらう
  2. ソースからビルドしたバイナリを相手に送る

**fluentd の ruby 環境を使ってもらう**

fluentd (td-agent) に組み込まれている ruby を使って実行できるかもしれません。

(例)

```

    $ vim hoge.rb
    #!/opt/td-agent/embedded/bin/ruby  <- fluentdのRuby
    print "Hello World\n";
    
    $ ./hoge.rb
    Hello World
    
```

**ソースからのビルドしたバイナリを相手におくる**

ビルドした rubyのバイナリ環境ごと、相手に送付すれば良いと思います。  
※ただし、この方法は 依存関係を自動的に解決出来ませんので 依存関係不足で実行出来ない可能性もあります。

(例)

```

    $ ./configure --prefix=/var/tmp/hoge/
    $ make
    $ sudo make install
    
    $ vim /var/tmp/hoge/bin/hoge.rb
    #!/var/tmp/hoge/bin/ruby
    print "Hello World\n";
    
    $ chmod +x /var/tmp/hoge/bin/hoge.rb
    $ /var/tmp/hoge/bin/hoge.rb
    Hello World
    
    $ tar cfz hoge.tgz -C /var/tmp ./hoge
    $ ls hoge.tgz
    hoge.tgz  ←このファイルを相手に送る
    
```

```

    $ tar xfz hoge.tgz -C /var/tmp         ←/var/tmp/hoge に展開してもらう
    $ /var/tmp/hoge/bin/hoge.rb
    Hello World
    $ rm -rf /var/tmp/hoge                 ←使い終わったらまるごと消す
    
```
CC BY-SA 3.0
2016-04-15T13:24:32.220
24055
2016-04-18T06:33:49.893
2016-04-18T06:33:49.893
5008
5008
24043
answer
[Traveling Ruby](http://phusion.github.io/traveling-ruby/)とか参考になるのではないでしょうか。
CC BY-SA 3.0
2016-04-18T07:19:40.130
24111
2016-04-18T07:19:40.130
3054
24043
answer