Ram.io脚本

#!/usr/bin/env bash

shopt -s extglob

set -o errtrace

set -o errexit

set -o pipefail

rvm_install_initialize()

{

  DEFAULT_SOURCES=(github.com/rvm/rvm bitbucket.org/mpapis/rvm)

  BASH_MIN_VERSION="3.2.25"

  if

    [[ -n "${BASH_VERSION:-}" &&

      "$(\printf "%b" "${BASH_VERSION:-}\n${BASH_MIN_VERSION}\n" | LC_ALL=C \sort -t"." -k1,1n -k2,2n -k3,3n | \head -n1)" != "${BASH_MIN_VERSION}"

    ]]

  then

    echo "BASH ${BASH_MIN_VERSION} required (you have $BASH_VERSION)"

    exit 1

  fi

  export HOME PS4

  export rvm_trace_flag rvm_debug_flag rvm_user_install_flag rvm_ignore_rvmrc rvm_prefix rvm_path

  PS4="+ \${BASH_SOURCE##\${rvm_path:-}} : \${FUNCNAME[0]:+\${FUNCNAME[0]}()}  \${LINENO} > "

}

log()  { printf "%b\n" "$*"; }

debug(){ [[ ${rvm_debug_flag:-0} -eq 0 ]] || printf "%b\n" "$*" >&2; }

warn() { log "WARN: $*" >&2 ; }

fail() { fail_with_code 1 "$*" ; }

fail_with_code() { code="$1" ; shift ; log "\nERROR: $*\n" >&2 ; exit "$code" ; }

rvm_install_commands_setup()

{

  \which which >/dev/null 2>&1 || fail "Could not find 'which' command, make sure it's available first before continuing installation."

  \which grep >/dev/null 2>&1 || fail "Could not find 'grep' command, make sure it's available first before continuing installation."

  if

    [[ -z "${rvm_tar_command:-}" ]] && builtin command -v gtar >/dev/null

  then

    rvm_tar_command=gtar

  elif

    ${rvm_tar_command:-tar} --help 2>&1 | GREP_OPTIONS="" \grep -- --strip-components >/dev/null

  then

    rvm_tar_command="${rvm_tar_command:-tar}"

  else

    case "$(uname)" in

      (OpenBSD)

        log "Trying to install GNU version of tar, might require sudo password"

        if (( UID ))

        then sudo pkg_add -z gtar-1

        else pkg_add -z gtar-1

        fi

        rvm_tar_command=gtar

        ;;

      (Darwin|FreeBSD|DragonFly) # it's not possible to autodetect on OSX, the help/man does not mention all flags

        rvm_tar_command=tar

        ;;

      (SunOS)

        case "$(uname -r)" in

          (5.10)

            log "Trying to install GNU version of tar, might require sudo password"

            if (( UID ))

            then

              if \which sudo >/dev/null 2>&1

              then sudo_10=sudo

              elif \which /opt/csw/bin/sudo >/dev/null 2>&1

              then sudo_10=/opt/csw/bin/sudo

              else fail "sudo is required but not found. You may install sudo from OpenCSW repository (https://www.opencsw.org/about)"

              fi

              pkginfo -q CSWpkgutil || $sudo_10 pkgadd -a $rvm_path/config/solaris/noask -d https://get.opencsw.org/now CSWpkgutil

              sudo /opt/csw/bin/pkgutil -iy CSWgtar -t https://mirror.opencsw.org/opencsw/unstable

            else

              pkginfo -q CSWpkgutil || pkgadd -a $rvm_path/config/solaris/noask -d https://get.opencsw.org/now CSWpkgutil

              /opt/csw/bin/pkgutil -iy CSWgtar -t https://mirror.opencsw.org/opencsw/unstable

            fi

            rvm_tar_command=/opt/csw/bin/gtar

            ;;

          (*)

            rvm_tar_command=tar

            ;;

        esac

    esac

    builtin command -v ${rvm_tar_command:-gtar} >/dev/null ||

    fail "Could not find GNU compatible version of 'tar' command, make sure it's available first before continuing installation."

  fi

  if

    [[ " ${rvm_tar_options:-} " != *" --no-same-owner "*  ]] &&

    $rvm_tar_command --help 2>&1 | GREP_OPTIONS="" \grep -- --no-same-owner >/dev/null

  then

    rvm_tar_options="${rvm_tar_options:-}${rvm_tar_options:+ }--no-same-owner"

  fi

}

usage()

{

  printf "%b" "

Usage

  rvm-installer [options] [action]

Options

  [[--]version] <version>

    The version or tag to install. Valid values are:

      latest        - The latest tagged version.

      latest-minor  - The latest minor version of the current major version.

      latest-<x>    - The latest minor version of version x.

      latest-<x>.<y> - The latest patch version of version x.y.

      <x>.<y>.<z>    - Major version x, minor version y and patch z.

  [--]branch <branch>

    The name of the branch from which RVM is installed. This option can be used

    with the following formats for <branch>:

      <account>/

        If account is rvm or mpapis, installs from one of the following:

          https://github.com/rvm/rvm/archive/master.tar.gz

          https://bitbucket.org/mpapis/rvm/get/master.tar.gz

      Otherwise, installs from:

        https://github.com/<account>/rvm/archive/master.tar.gz

      <account>/<branch>

        If account is rvm or mpapis, installs from one of the following:

          https://github.com/rvm/rvm/archive/<branch>.tar.gz

          https://bitbucket.org/mpapis/rvm/get/<branch>.tar.gz

        Otherwise, installs from:

          https://github.com/<account>/rvm/archive/<branch>.tar.gz

      [/]<branch>

        Installs the branch from one of the following:

          https://github.com/rvm/rvm/archive/<branch>.tar.gz

          https://bitbucket.org/mpapis/rvm/get/<branch>.tar.gz

      [--]source <source>

        Defines the repository from which RVM is retrieved and installed in the format:

          <domain>/<account>/<repo>

        Where:

          <domain>  - Is bitbucket.org, github.com or a github enterprise site serving

                      an RVM repository.

          <account> - Is the user account in which the RVM repository resides.

          <repo>    - Is the name of the RVM repository.

        Note that when using the [--]source option, one should only use the [/]branch format

        with the [--]branch option. Failure to do so will result in undefined behavior.

      --trace

        Provides debug logging for the installation script.

Actions

  master - Installs RVM from the master branch at rvm/rvm on github or mpapis/rvm

          on bitbucket.org.

  stable - Installs RVM from the stable branch a rvm/rvm on github or mpapis/rvm

          on bitbucket.org.

  help  - Displays this output.

"

}

## duplication marker 32fosjfjsznkjneuera48jae

__rvm_curl_output_control()

{

  if

    (( ${rvm_quiet_curl_flag:-0} == 1 ))

  then

    __flags+=( "--silent" "--show-error" )

  elif

    [[ " $*" == *" -s"* || " $*" == *" --silent"* ]]

  then

    # make sure --show-error is used with --silent

    [[ " $*" == *" -S"* || " $*" == *" -sS"* || " $*" == *" --show-error"* ]] ||

    {

      __flags+=( "--show-error" )

    }

  fi

}

## duplication marker 32fosjfjsznkjneuera48jae

# -S is automatically added to -s

__rvm_curl()

(

  __rvm_which curl >/dev/null ||

  {

    rvm_error "RVM requires 'curl'. Install 'curl' first and try again."

    return 200

  }

  typeset -a __flags

  __flags=( --fail --location --max-redirs 10 )

  [[ "$*" == *"--max-time"* ]] ||

  [[ "$*" == *"--connect-timeout"* ]] ||

    __flags+=( --connect-timeout 30 --retry-delay 2 --retry 3 )

  if [[ -n "${rvm_proxy:-}" ]]

  then __flags+=( --proxy "${rvm_proxy:-}" )

  fi

  __rvm_curl_output_control

  unset curl

  __rvm_debug_command \curl "${__flags[@]}" "$@" || return $?

)

rvm_error()  { printf "ERROR: %b\n" "$*"; }

__rvm_which(){  which "$@" || return $?; true; }

__rvm_debug_command()

{

  debug "Running($#): $*"

  "$@" || return $?

  true

}

rvm_is_a_shell_function()

{

  [[ -t 0 && -t 1 ]] || return $?

  return ${rvm_is_not_a_shell_function:-0}

}

# Searches the tags for the highest available version matching a given pattern.

# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1.10. -> 1.10.3

# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1.10. -> 1.10.3

# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) 1.    -> 1.11.0

# fetch_version (github.com/rvm/rvm bitbucket.org/mpapis/rvm) ""    -> 2.0.1

fetch_version()

{

  typeset _account _domain _pattern _repo _sources _values _version

  _sources=(${!1})

  _pattern=$2

  for _source in "${_sources[@]}"

  do

    IFS='/' read -r _domain _account _repo <<< "${_source}"

    _version="$(

      fetch_versions ${_domain} ${_account} ${_repo} |

      GREP_OPTIONS="" \grep "^${_pattern:-}" | tail -n 1

    )"

    if

      [[ -n ${_version} ]]

    then

      echo "${_version}"

      return 0

    fi

  done

  fail_with_code 4 "Exhausted all sources trying to fetch version '$version' of RVM!"

}

# Returns a sorted list of most recent tags from a repository

fetch_versions()

{

  typeset _account _domain _repo _url

  _domain=$1

  _account=$2

  _repo=$3

  case ${_domain} in

    (bitbucket.org)

      _url="https://api.${_domain}/2.0/repositories/${_account}/${_repo}/refs/tags?sort=-name&pagelen=20"

      ;;

    (github.com)

      _url=https://api.${_domain}/repos/${_account}/${_repo}/tags

      ;;

    (*)

      _url=https://${_domain}/api/v3/repos/${_account}/${_repo}/tags

      ;;

  esac

  { __rvm_curl -sS "${_url}" || warn "...the preceeding error with code $? occurred while fetching $_url" ; } |

    \awk -v RS=',|values":' -v FS='"' '$2=="name"&&$4!="rvm"{print $4}' |

    sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n

}

install_release()

{

  typeset _source _sources _url _version _verify_pgp

  _sources=(${!1})

  _version=$2

  debug "Downloading RVM version ${_version}"

  for _source in "${_sources[@]}"

  do

    case ${_source} in

      (bitbucket.org*)

        _url="https://${_source}/get/${_version}.tar.gz"

        _verify_pgp="https://${_source}/downloads/${_version}.tar.gz.asc"

        ;;

      (*)

        _url="https://${_source}/archive/${_version}.tar.gz"

        _verify_pgp="https://${_source}/releases/download/${_version}/${_version}.tar.gz.asc"

        ;;

    esac

    get_and_unpack "${_url}" "rvm-${_version}.tgz" "$_verify_pgp" && return

  done

  return $?

}

install_head()

{

  typeset _branch _source _sources _url

  _sources=(${!1})

  _branch=$2

  debug "Selected RVM branch ${_branch}"

  for _source in "${_sources[@]}"

  do

    case ${_source} in

      (bitbucket.org*)

        _url=https://${_source}/get/${_branch}.tar.gz

        ;;

      (*)

        _url=https://${_source}/archive/${_branch}.tar.gz

        ;;

    esac

    get_and_unpack "${_url}" "rvm-${_branch//\//_}.tgz" && return

  done

  return $?

}

# duplication marker dfkjdjngdfjngjcszncv

# Drop in cd which _doesn't_ respect cdpath

__rvm_cd()

{

  typeset old_cdpath ret

  ret=0

  old_cdpath="${CDPATH}"

  CDPATH="."

  chpwd_functions="" builtin cd "$@" || ret=$?

  CDPATH="${old_cdpath}"

  return $ret

}

get_package()

{

  typeset _url _file

  _url="$1"

  _file="$2"

  log "Downloading ${_url}"

  __rvm_curl -sS ${_url} > ${rvm_archives_path}/${_file} ||

  {

    _return=$?

    case $_return in

      # duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn

      (60)

        log "

Could not download '${_url}', you can read more about it here:

https://rvm.io/support/fixing-broken-ssl-certificates/

To continue in insecure mode run 'echo insecure >> ~/.curlrc'.

"

        ;;

      # duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn

      (77)

        log "

It looks like you have old certificates, you can read more about it here:

https://rvm.io/support/fixing-broken-ssl-certificates/

"

        ;;

      # duplication marker lfdgzkngdkjvnfjknkjvcnbjkncvjxbn

      (141)

        log "

Curl returned 141 - it is result of a segfault which means it's Curls fault.

Try again and if it crashes more than a couple of times you either need to

reinstall Curl or consult with your distribution manual and contact support.

"

        ;;

      (*)

        log "

Could not download '${_url}'.

  curl returned status '$_return'.

"

        ;;

    esac

    return $_return

  }

}

# duplication marker flnglfdjkngjndkfjhsbdjgfghdsgfklgg

rvm_install_gpg_setup()

{

  export rvm_gpg_command

  {

    rvm_gpg_command="$( \which gpg2 2>/dev/null )" &&

    [[ ${rvm_gpg_command} != "/cygdrive/"* ]]

  } || {

    rvm_gpg_command="$( \which gpg 2>/dev/null )" &&

    [[ ${rvm_gpg_command} != "/cygdrive/"* ]]

  } || rvm_gpg_command=""

  debug "Detected GPG program: '$rvm_gpg_command'"

  [[ -n "$rvm_gpg_command" ]] || return $?

}

# duplication marker rdjgndfnghdfnhgfdhbghdbfhgbfdhbn

verify_package_pgp()

{

  if

    "${rvm_gpg_command}" --verify "$2" "$1"

  then

    log "GPG verified '$1'"

  else

    typeset _return=$?

    log "\

GPG signature verification failed for '$1' - '$3'! Try to install GPG v2 and then fetch the public key:

    ${SUDO_USER:+sudo }${rvm_gpg_command##*/} --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

or if it fails:

    command curl -sSL https://rvm.io/mpapis.asc | ${SUDO_USER:+sudo }${rvm_gpg_command##*/} --import -

    command curl -sSL https://rvm.io/pkuczynski.asc | ${SUDO_USER:+sudo }${rvm_gpg_command##*/} --import -

In case of further problems with validation please refer to https://rvm.io/rvm/security

"

    exit ${_return}

  fi

}

verify_pgp()

{

  [[ -n "${1:-}" ]] ||

  {

    debug "No PGP url given, skipping."

    return 0

  }

  get_package "$1" "$2.asc" ||

  {

    debug "PGP url given but does not exist: '$1'"

    return 0

  }

  rvm_install_gpg_setup ||

  {

    log "Found PGP signature at: '$1',

but no GPG software exists to validate it, skipping."

    return 0

  }

  verify_package_pgp "${rvm_archives_path}/$2" "${rvm_archives_path}/$2.asc" "$1"

}

get_and_unpack()

{

  typeset _url _file _patern _return _verify_pgp

  _url="$1"

  _file="$2"

  _verify_pgp="$3"

  get_package "$_url" "$_file" || return $?

  verify_pgp "$_verify_pgp" "$_file" || return $?

  [[ -d "${rvm_src_path}/rvm" ]] || \mkdir -p "${rvm_src_path}/rvm"

  __rvm_cd "${rvm_src_path}/rvm" ||

  {

    _return=$?

    log "Could not change directory '${rvm_src_path}/rvm'."

    return $_return

  }

  # Remove existing installation

  typeset _cleanup_cmd

  _cleanup_cmd="rm -rf ${rvm_src_path}/rvm/{,.[!.],..?}*"

  $_cleanup_cmd || {

    _return=$?

      log "Could not remove old RVM sources. Try:\n\n\tsudo $_cleanup_cmd\n\nThen retry your task again."

      return $_return

  }

  # Unpack sources

  __rvm_debug_command $rvm_tar_command xzf ${rvm_archives_path}/${_file} ${rvm_tar_options:-} --strip-components 1 ||

  {

    _return=$?

    log "Could not extract RVM sources."

    return $_return

  }

}

rvm_install_default_settings()

{

  # Tracing, if asked for.

  if

    [[ "$*" == *--trace* ]] || (( ${rvm_trace_flag:-0} > 0 ))

  then

    set -o xtrace

    rvm_trace_flag=1

  fi

  # Variable initialization, remove trailing slashes if they exist on HOME

  true \

    ${rvm_trace_flag:=0} ${rvm_debug_flag:=0}\

    ${rvm_ignore_rvmrc:=0} HOME="${HOME%%+(\/)}"

  if

    (( rvm_ignore_rvmrc == 0 ))

  then

    for rvmrc in /etc/rvmrc "$HOME/.rvmrc"

    do

      if

        [[ -s "$rvmrc" ]]

      then

        if

          GREP_OPTIONS="" \grep '^\s*rvm .*$' "$rvmrc" >/dev/null 2>&1

        then

          printf "%b" "

  Error: $rvmrc is for rvm settings only.

  rvm CLI may NOT be called from within $rvmrc.

  Skipping the loading of $rvmrc

  "

          exit 1

        else

          source "$rvmrc"

        fi

      fi

    done

  fi

  if

    [[ -z "${rvm_path:-}" ]]

  then

    if

      (( UID == 0 ))

    then

      rvm_user_install_flag=0

      rvm_prefix="/usr/local"

      rvm_path="${rvm_prefix}/rvm"

    else

      rvm_user_install_flag=1

      rvm_prefix="$HOME"

      rvm_path="${rvm_prefix}/.rvm"

    fi

  fi

  if [[ -z "${rvm_prefix}" ]]

  then rvm_prefix=$( dirname $rvm_path )

  fi

  # duplication marker kkdfkgnjfndgjkndfjkgnkfjdgn

  [[ -n "${rvm_user_install_flag:-}" ]] ||

  case "$rvm_path" in

    (/usr/local/rvm)        rvm_user_install_flag=0 ;;

    ($HOME/*|/${USER// /_}*) rvm_user_install_flag=1 ;;

    (*)                      rvm_user_install_flag=0 ;;

  esac

}

rvm_install_parse_params()

{

  install_rubies=()

  install_gems=()

  flags=( ./scripts/install )

  forwarded_flags=()

  while

    (( $# > 0 ))

  do

    token="$1"

    shift

    case "$token" in

      (--trace)

        set -o xtrace

        rvm_trace_flag=1

        flags=( -x "${flags[@]}" "$token" )

        forwarded_flags+=( "$token" )

        ;;

      (--debug|--quiet-curl)

        flags+=( "$token" )

        forwarded_flags+=( "$token" )

        token=${token#--}

        token=${token//-/_}

        export "rvm_${token}_flag"=1

        printf "%b" "Turning on ${token/_/ } mode.\n"

        ;;

      (--path)

        if [[ -n "${1:-}" ]]

        then

          rvm_path="$1"

          shift

        else

          fail "--path must be followed by a path."

        fi

        ;;

      (--branch|branch) # Install RVM from a given branch

        if [[ -n "${1:-}" ]]

        then

          case "$1" in

            (/*)

              branch=${1#/}

              ;;

            (*/)

              branch=master

              if [[ "${1%/}" -ne rvm ]] && [[ "${1%/}" -ne mpapis ]]

              then sources=(github.com/${1%/}/rvm)

              fi

              ;;

            (*/*)

              branch=${1#*/}

              if [[ "${1%%/*}" -ne rvm ]] && [[ "${1%%/*}" -ne mpapis ]]

              then sources=(github.com/${1%%/*}/rvm)

              fi

              ;;

            (*)

              branch="$1"

              ;;

          esac

          shift

        else

          fail "--branch must be followed by a branchname."

        fi

        ;;

      (--source|source)

        if [[ -n "${1:-}" ]]

        then

          if [[ "$1" = */*/* ]]

          then

            sources=($1)

            shift

          else

            fail "--source must be in the format <domain>/<account>/<repo>."

          fi

        else

          fail "--source must be followed by a source."

        fi

        ;;

      (--user-install|--ignore-dotfiles)

        token=${token#--}

        token=${token//-/_}

        export "rvm_${token}_flag"=1

        printf "%b" "Turning on ${token/_/ } mode.\n"

        ;;

      (--auto-dotfiles)

        flags+=( "$token" )

        export "rvm_auto_dotfiles_flag"=1

        printf "%b" "Turning on auto dotfiles mode.\n"

        ;;

      (--auto)

        export "rvm_auto_dotfiles_flag"=1

        printf "%b" "Warning, --auto is deprecated in favor of --auto-dotfiles.\n"

        ;;

      (--verify-downloads)

        if [[ -n "${1:-}" ]]

        then

          export rvm_verify_downloads_flag="$1"

          forwarded_flags+=( "$token" "$1" )

          shift

        else

          fail "--verify-downloads must be followed by level(0|1|2)."

        fi

        ;;

      (--autolibs=*)

        flags+=( "$token" )

        export rvm_autolibs_flag="${token#--autolibs=}"

        forwarded_flags+=( "$token" )

        ;;

      (--without-gems=*|--with-gems=*|--with-default-gems=*)

        flags+=( "$token" )

        value="${token#*=}"

        token="${token%%=*}"

        token="${token#--}"

        token="${token//-/_}"

        export "rvm_${token}"="${value}"

        printf "%b" "Installing RVM ${token/_/ }: ${value}.\n"

        ;;

      (--version|version)

        version="$1"

        shift

        ;;

      (head|master)

        version="head"

        branch="master"

        ;;

      (stable)

        version="latest"

        ;;

      (latest|latest-*|+([[:digit:]]).+([[:digit:]]).+([[:digit:]]))

        version="$token"

        ;;

      (--ruby)

        install_rubies+=( ruby )

        ;;

      (--ruby=*)

        token=${token#--ruby=}

        install_rubies+=( ${token//,/ } )

        ;;

      (--rails)

        install_gems+=( rails )

        ;;

      (--gems=*)

        token=${token#--gems=}

        install_gems+=( ${token//,/ } )

        ;;

      (--add-to-rvm-group)

        export rvm_add_users_to_rvm_group="$1"

        shift

        ;;

      (help)

        usage

        exit 0

        ;;

      (*)

        usage

        exit 1

        ;;

    esac

  done

  if (( ${#install_gems[@]} > 0 && ${#install_rubies[@]} == 0 ))

  then install_rubies=( ruby )

  fi

  true "${version:=head}"

  true "${branch:=master}"

  if [[ -z "${sources[@]}" ]]

  then sources=("${DEFAULT_SOURCES[@]}")

  fi

  rvm_src_path="$rvm_path/src"

  rvm_archives_path="$rvm_path/archives"

  rvm_releases_url="https://rvm.io/releases"

}

rvm_install_validate_rvm_path()

{

  case "$rvm_path" in

    (*[[:space:]]*)

      printf "%b" "

It looks you are one of the happy *space* users (in home dir name),

RVM is not yet fully ready for it, use this trick to fix it:

    sudo mkdir -p /${USER// /_}.rvm

    sudo chown -R \"$USER:\" /${USER// /_}.rvm

    echo \"export rvm_path=/${USER// /_}.rvm\" >> \"$HOME/.rvmrc\"

and start installing again.

"

      exit 2

    ;;

    (/usr/share/ruby-rvm)

      printf "%b" "

It looks you are one of the happy Ubuntu users,

RVM packaged by Ubuntu is old and broken,

follow this link for details how to fix:

  https://stackoverflow.com/a/9056395/497756

"

      [[ "${rvm_uses_broken_ubuntu_path:-no}" == "yes" ]] || exit 3

    ;;

  esac

  if [[ "$rvm_path" != "/"* ]]

  then fail "The rvm install path must be fully qualified. Tried $rvm_path"

  fi

}

rvm_install_validate_volume_mount_mode()

{

  \typeset path partition test_exec

  path=$rvm_path

  # Directory $rvm_path might not exists at this point so we need to traverse the tree upwards

  while [[ -n "$path" ]]

  do

      if [[ -d $path ]]

      then

        partition=`df -P $path | awk 'END{print $1}'`

        test_exec=$(mktemp $path/rvm-exec-test.XXXXXX)

        echo '#!/bin/sh' > "$test_exec"

        chmod +x "$test_exec"

        if ! "$test_exec"

        then

          rm -f "$test_exec"

          printf "%b" "

It looks that scripts located in ${path}, which would be RVM destination ${rvm_path},

are not executable. One of the reasons might be that partition ${partition} holding this location

is mounted in *noexec* mode, which prevents RVM from working correctly. Please verify your setup

and re-mount partition ${partition} without the noexec option."

          exit 2

        fi

        rm -f "$test_exec"

        break

      fi

      path=${path%/*}

  done

}

rvm_install_select_and_get_version()

{

  typeset dir _version_release _version

  for dir in "$rvm_src_path" "$rvm_archives_path"

  do

    [[ -d "$dir" ]] || mkdir -p "$dir"

  done

  _version_release="${version}"

  case "${version}" in

    (head)

      _version_release="${branch}"

      install_head sources[@] ${branch:-master}

      ;;

    (latest)

      _version=$(fetch_version sources[@])

      install_release sources[@] "$_version"

      ;;

    (latest-minor)

      version="$(<"$rvm_path/VERSION")"

      _version=$(fetch_version sources[@] ${version%.*})

      install_release sources[@] "$_version"

      ;;

    (latest-*)

      _version=$(fetch_version sources[@] ${version#latest-})

      install_release sources[@] "$_version"

      ;;

    (+([[:digit:]]).+([[:digit:]]).+([[:digit:]])) # x.y.z

      install_release sources[@] ${version}

      ;;

    (*)

      fail "Something went wrong, unrecognized version '$version'"

      ;;

  esac

  echo "${_version_release}" > "$rvm_path/RELEASE"

}

rvm_install_main()

{

  [[ -f ./scripts/install ]] ||

  {

    log "'./scripts/install' can not be found for installation, something went wrong, it usually means your 'tar' is broken, please report it here: https://github.com/rvm/rvm/issues"

    return 127

  }

  # required flag - path to install

  flags+=( --path "$rvm_path" )

  \command bash "${flags[@]}"

}

rvm_install_ruby_and_gems()

(

  if

    (( ${#install_rubies[@]} > 0 ))

  then

    source ${rvm_scripts_path:-${rvm_path}/scripts}/rvm

    source ${rvm_scripts_path:-${rvm_path}/scripts}/functions/version

    __rvm_print_headline

    for _ruby in ${install_rubies[@]}

    do command rvm "${forwarded_flags[@]}" install ${_ruby}

    done

    # set the first one as default, skip rest

    for _ruby in ${install_rubies[@]}

    do

      rvm "${forwarded_flags[@]}" alias create default ${_ruby}

      break

    done

    for _gem in ${install_gems[@]}

    do rvm "${forwarded_flags[@]}" all do gem install ${_gem}

    done

    printf "%b" "

  * To start using RVM you need to run \`source $rvm_path/scripts/rvm\`

    in all your open shell windows, in rare cases you need to reopen all shell windows.

"

    if

      [[ "${install_gems[*]}" == *"rails"* ]]

    then

      printf "%b" "

  * To start using rails you need to run \`rails new <project_dir>\`.

"

    fi

  fi

)

rvm_install()

{

  rvm_install_initialize

  rvm_install_commands_setup

  rvm_install_default_settings

  rvm_install_parse_params "$@"

  rvm_install_validate_rvm_path

  rvm_install_validate_volume_mount_mode

  rvm_install_select_and_get_version

  rvm_install_main

  rvm_install_ruby_and_gems

}

rvm_install "$@"

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容