RVM/rbenv 有没有人试过绕开依赖来 rvm install ruby

jakit · February 21, 2019 · Last by msg7086 replied at March 07, 2019 · 7078 hits

如果在一台没有 root / sudo 权限的 Linux server,是没有 yum install / apt install 能力的。

这时候,rvm install 默认指向调用 yum install / apt install【各种依赖】(libffi-dev openssl-dev)

这会给人造成很大的困扰,有没有人有解决办法?在线等

请允许 me 把老人们艾特出来 @jasl @Rei @huacnlee

前阵子听说 Homebrew 的 Linux support 好像是更成熟了,可以在没有 root 权限的环境下使用这个包管理器安装 Ruby 试试:https://docs.brew.sh/Linuxbrew

再就是用 static link ruby 搜索了一下,找到这个项目:https://github.com/phusion/traveling-ruby 但是我还没仔细看文档。

上面两个方案我都是临时搜出来的,自己没有试过,不知道是否可靠。但愿有用。

额外地,用 @ 人的点名提问的方式,是论坛规则里的《提问的智慧》一文所不提倡的:

当某个项目提供开发者邮件列表时,要向列表而不是其中的个别成员提问,即使你确信他能最好地回答你的问题。

Linuxbrew 我在没有 root 权限的机器上安装成功 rvm 和 ruby,确实可以。

目前我是用 Docker 搞定。完全不用在新机器上装任何 Ruby/Ruby on Rails 依赖。
只要装了 Docker + 有镜像就能跑起来。目前生产环境在用 Docker Swarm。
(注:只有一部分做了容器化,Nginx / 数据库没有进行容器化)

如果再加上个私有网络这个条件呢……没办法连公网的这种😂 😂

没法连公网连 gem 都装不了

在没有 rvm 或者 rbev 的上古时期,人们是怎么安装 ruby 的呢…

linux 下保证自己依赖装好之后,去 ruby-lang.org 下载 ruby 的源码,然后自己编译,基本上三步 confugure,make,make install 就可以安装好了…我自己有一台服务器上得 pg,ruby 都是这么装的😂

Reply to hegwin

首先第一条,不要用 make install 安装软件包……

我来顺带问一下有没有人交叉编译过 Ruby,手里有个 Cubieboard,arm 的,性能差,编译一个 ruby 要好久,一直想尝试下交叉编译,不知道有没有坑

Reply to msg7086

为啥不能 make install 。。。。。

./configure --prefix=$HOME/.ruby

make

# Not sudo
make install

echo 'export PATH="$HOME/.ruby/bin:$PATH"' >> $HOME/.bashrc

libffi-dev openssl-dev 也同理。手动编译,安装在不用 root 的目录

Reply to a-wing

可能是说 make install 后很难撤销操作,除非是能够把所有文件都 install 到一个特定的目录,或者是软件包提供了良好的 make uninstall 用于卸载

Reply to a-wing

#12 是一方面。 另一方面是软件版本管理,make install 装好以后很容易忽视安全更新。

Reply to msg7086

😂😂我觉得这是 make install 的优点,install 之后只是把编译的文件写到了一个目录,没有影响系统呀,要删除的话直接删掉那个目录就好了…我一般会做几个软连接,这样我就可以在一台机器上装不同版本的 postgres,之所以这么做是有个服务一直用的 pg 8.4 且没法升级(:з」∠) 当然大家现在用 docker 了就没这需求了

没权限,还是别从源代码安装了,依赖是必须的。

你可以让 Linux 服务器管理员给你安装好 Docker Machine,然后用 Docker 来跑 Ruby / Rails

Reply to hegwin

很多人无脑直接装系统,这种情况下就是问题了。如果自己知道改 prefix 当然另当别论。

另外像是你说的 pg,还是要有人盯着官方的安全补丁,勤升级才好。有时候连带其他组件更新也需要重新编译。比如 nginx 可以选择静态编译 OpenSSL,那 OpenSSL 有新的安全更新的时候,就要连带 nginx 一起重新编译了。

而且就算要自己编译,我也是提倡用发行版自己的打包脚本来编译,减少每次编译之间带来的差异。我们这维护一个 nginx mod 版,就是 debian 打包脚本然后用 docker 编译成 deb 包,这样版本更新进度一目了然,而且编译过程 reproducible。

You need to Sign in before reply, if you don't have an account, please Sign up first.