- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个 shell 脚本来将 rbenv 安装到一个新的虚拟机上,每个人似乎都工作正常,但是,有时 rbenv 似乎无法安装。我想在整个过程中添加一些额外的错误检查以确保安装发生,如果出现问题,请重新开始安装。
一些注意事项:
whiptail
对话框完成的>&$log_fd...
这是我目前拥有的:
set_rbenv(){
# install rbenv
RUBY_VERSION="2.1.4"
RBENV_ROOT="/root/.rbenv"
PROFILE="/root/.bashrc"
# check if rbenv is installed
if [[ ! `which rbenv` ]]; then
if [[ ! -d "$RBENV_ROOT" ]]; then
echo "Cloning rbenv..." >&$log_fd 2>&1
git clone https://github.com/rbenv/rbenv.git $RBENV_ROOT >&$log_fd 2>&1
fi
if [[ ! -d "$RBENV_ROOT/plugins/ruby-build" ]]; then
git clone https://github.com/rbenv/ruby-build.git $RBENV_ROOT/plugins/ruby-build >&$log_fd 2>&1
fi
if [[ ! `grep -e '/.rbenv\/bin' $PROFILE` ]]; then
echo "rbenv not in PATH ... adding..." >&$log_fd 2>&1
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> $PROFILE 2>&1
fi
if [[ ! `grep -e '^\eval "$(rbenv init -)"' $PROFILE` ]]; then
echo "rbenv init not in .bashrc... adding..." >&$log_fd 2>&1
echo 'eval "$(rbenv init -)"' >> $PROFILE 2>&1
fi
. $PROFILE
echo "Finished Installing rbenv..." >&$log_fd 2>&1
else
echo "rbenv already installed... skipping!" >&$log_fd 2>&1
fi
if [ ! -d "$RBENV_ROOT/versions" ]; then
echo "$RBENV_ROOT/versions doesn't exist ... creating..."
mkdir $RBENV_ROOT/versions >&$log_fd 2>&1
fi
if [ ! -d "$RBENV_ROOT/versions/$RUBY_VERSION" ]; then
echo "$RBENV_ROOT/versions/$RUBY_VERSION doesn't exist ... creating..." >&$log_fd 2>&1
mkdir $RBENV_ROOT/versions/$RBENV_VERSION >&$log_fd 2>&1
fi
# check if ruby version is installed
if [[ ! `rbenv version | grep $RUBY_VERSION` ]]; then
echo "installing ruby 2.1.4" >&$log_fd 2>&1
rbenv install $RUBY_VERSION >&$log_fd 2>&1
rbenv global $RUBY_VERSION >&$log_fd 2>&1
if [ ! -d "$RBENV_ROOT/versions/$RUBY_VERSION/etc" ]; then
echo "$RBENV_ROOT/versions/$RUBY_VERSION/etc doesn't exist ... creating..." >&$log_fd 2>&1
mkdir $RBENV_ROOT/versions/$RUBY_VERSION/etc >&$log_fd 2>&1
fi
else
echo "ruby $RUBY_VERSION already exists... skipping!" >&$log_fd 2>&1
fi
(( STATUS += 35 ))
echo $STATUS
}
虽然安装本身在新 VM 上随时可能失败,但如果安装了 rbenv,我就搞砸了,但没有其他任何东西(如 ruby-build)或 $PATH 等。
将每个命令都包含在初始 if which rbenv
之外的它自己的 if
语句中是否更有意义,或者是否有更稳健的方法来确保安装是否成功?
最佳答案
实际上,您可以使用 Ansible、puppet 或 Chef 等配置管理工具更轻松地执行此任务。您可以指定要检查的“内容”并使用现有框架来执行此操作,而不是尝试指定“如何”检查和使用无穷无尽的 IF 语句。
例如,在 Ansible 中,您可以指定更新缓存并使用 apt 模块安装最新版本的 foo:
- hosts: all
remote_user: root
tasks:
- name: Install the package foo
apt:
name: foo
state: present
update_cache: yes
关于ruby - 通过 shell 脚本安装 rbenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124182/
从 Ubuntu 卸载 rbenv 后,每次打开终端时都会收到以下消息: The program 'rbenv' is currently not installed. You can install
我在我的 Ubuntu 10.04 服务器上使用 rbenv,我已经安装了 ImageMagick,但我无法成功安装 RMagick。我收到以下错误消息 Can't install RMagick 2
我正在尝试在安装新 gem 后重新哈希 rbenv它在我的 ubuntu 服务器上给了我这些错误 rbenv: cannot rehash: /home/deployer/.rbenv/shims/
我正在学习 Chef 并构建一本 Recipe ,其中包含安装 rbenv 和 ruby-build 的方法。 ruby-build 配方安装程序,然后尝试使用 rbenv 安装 Ruby 2.3.1
使用 sudo 用户运行 (x)ubuntu 16.04 ... 使用本地用户 + sudo 插件安装 rbenv cd ~ git clone git://github.com/ss
我刚刚在我的 ubuntu 服务器上安装了 rbenv 和 ruby-build。这是 ubntu 版本: Description: Ubuntu 14.04.1 LTS Release: 1
我在 ubuntu 20.04 中遇到了一个奇怪的问题。 我已经安装了 ruby 3.1.2、rails 6.1.5、rbenv 和 rbenv-vars。 在应用程序目录中设置 .rbenv-v
我从 Ubuntu 服务器上的 RVM 转移到 rbenv。 当我使用 RVM 时,使用 bundle 没有问题。转移到 rbenv 后,我在 Jenkins 的执行 shell 中收到“找不到命令”
我正在尝试在 Ubuntu 启动时启动 rails 应用程序。 为此,我在 /etc/rc.local 中添加了这些行. cd /home/ubuntu/webapp/rails/passenger-
我收到了 rbenv: 2.3.1 is not installed or not found in $HOME/.rbenv/versions/2.3.1尝试使用 Capistrano 部署到 Di
在 Ruby 开发的世界中,经常需要面对不同项目使用不同 Ruby 版本的情况。这时,一个高效、灵活且易于使用的 Ruby 版本管理工具就显得尤为重要。 rbenv 正是这样一个工具,它允许开发
我想使用下面的命令在没有 rdoc 的情况下使用 jemalloc 安装 ruby 但不知道如何组合它们: RUBY_CONFIGURE_OPTS=--with-jemalloc--disable
我正在尝试在我的 ubuntu 14.04 上使用 rbenv 安装 ruby 2.1.1。我使用了以下命令。 curl -fsSL https://gist.github.com/mislav/
我决定试试 rbenv 而不是 rvm。我已经用 Homebrew 安装了它,这很简单。然后我将额外的行添加到我的 .bash_profile 中(垫片、自动完成和 eval 语句)。 export
我正在尝试在我的 Debian 6 生产系统上安装 rbenv。做这个的最好方式是什么?我尝试了 github 维基页面(https://github.com/sstephenson/rbenv/wi
大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程: Link to tutorial 我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行
我正在关注 Ryan 的 RailsCast 第 339 集。我已经安装了 rbenv 并且可以运行 ruby -v。我退出了我的 session ,当我试图返回时(通过 root 的 su depl
我们公司使用瘦客户端,并且有很多用户使用同一个盒子。我按照以下网站上的说明将 rbenv 安装为系统安装; https://blakewilliams.me/posts/system-wide-rbe
我最后将 ruby 2.0 安装到 ~/.rbenv/versions 中,现在除了可用之外什么都没有了 $ rbenv 版本 system *ruby-1.9.3-p392 (set by /a
我正在构建一个 vagrant 设置,其中一部分是安装 rbenv。我正在使用 librarian-chef 来管理我所有的 Chef Recipe ,它会安装 rbenv 和 ruby-buil
我是一名优秀的程序员,十分优秀!