123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- #!/usr/bin/env bash
- # AMD64, i386, ARM - this is different from _system_arch as it's not translated.
- requirements_debian_arch()
- {
- __architecture="$(dpkg --print-architecture)"
- }
- # Queries the dpkg system for packages that are installed only asking about
- # the package name and it's arch. This package will fall back to :all for
- # cases where we cannot get an arch specific package (such is the case
- # for a few packages.)
- requirements_debian_lib_installed()
- {
- dpkg-query -s "${1}:${__architecture}" >/dev/null 2>&1 ||
- dpkg-query -s "${1}:all" >/dev/null 2>&1 ||
- dpkg-query -s "$1" 2>/dev/null | __rvm_grep "Architecture: ${__architecture}" >/dev/null ||
- dpkg-query -s "$1" 2>/dev/null | __rvm_grep "Architecture: all" >/dev/null ||
- return $?
- }
- # Informs us if a package is even available on the distro we are working
- # with, this is more of a transitional method kind of like Ubuntu
- # has a transitional git-core package right now. This will allow us
- # to continue to support older versions of Ubuntu while enforcing newer
- # packages on newer Ubuntu.
- requirements_debian_lib_available()
- {
- apt-cache show "$1" >/dev/null 2>&1 || return $?
- }
- requirements_debian_libs_install()
- {
- __rvm_try_sudo apt-get --no-install-recommends --yes install "$@" || return $?
- }
- requirements_debian_libs_remove()
- {
- __rvm_try_sudo apt-get --yes remove "$@" || return $?
- }
- requirements_debian_update_system()
- {
- __rvm_try_sudo apt-get --quiet --yes update ||
- {
- \typeset __ret=$?
- case ${__ret} in
- (100)
- rvm_error "There has been an error while updating your system using \`apt-get\`.
- It seems that there are some 404 Not Found errors for repositories listed in:
- /etc/apt/sources.list
- /etc/apt/sources.list.d/*.list
- Make sure that all repositories are available from your system and verify your setup by running manually:
- sudo apt-get update
- Make sure that it works correctly before proceeding with RVM.
- If you are working from the GUI instead of the terminal, you might want to verify and fix broken
- repositories using \"Software & Updates\" application.
- "
- ;;
- esac
- return ${__ret}
- }
- }
- requirements_debian_define_libgmp()
- {
- if [[ "${_system_version}" == 6* ]]
- then
- requirements_check libgmp3-dev
- else
- requirements_check libgmp-dev
- fi
- }
- requirements_debian_define_libreadline()
- {
- if
- __rvm_version_compare ${_system_version} -ge 9
- then
- requirements_check libreadline-dev
- else
- requirements_check libreadline6-dev
- fi
- }
- requirements_debian_define_libssl()
- {
- # Legacy libssl-dev required by older version of ruby has been renamed to libssl1.0-dev
- # starting from Debian 9 (Stretch)
- case "$1" in
- (ruby-2.3*|ruby-2.2*|ruby-2.1*|ruby-2.0*|ruby-1.9*)
- if
- __rvm_version_compare ${_system_version} -ge 9
- then
- undesired_check libssl-dev
- requirements_check libssl1.0-dev
- else
- requirements_check libssl-dev
- fi
- ;;
- (*)
- requirements_check libssl-dev
- ;;
- esac
- }
- requirements_debian_define_clang_llvm()
- {
- requirements_check clang-3.6 llvm-3.6 llvm-3.6-dev
- }
- requirements_debian_define_base()
- {
- requirements_check "$@" \
- autoconf automake bison ca-certificates curl libc6-dev libffi-dev libgdbm-dev libncurses5-dev \
- libsqlite3-dev libtool libyaml-dev make openssl patch pkg-config sqlite3 zlib1g zlib1g-dev
- requirements_${_system_name_lowercase}_define_libgmp
- requirements_${_system_name_lowercase}_define_libreadline
- }
- requirements_debian_define_java()
- {
- update-alternatives --list ${1:-java} >/dev/null 2>&1 ||
- requirements_check_fallback \
- openjdk-8-jre-headless openjdk-8-jdk oracle-j2sdk1.8 \
- openjdk-7-jre-headless openjdk-7-jdk oracle-j2sdk1.7 \
- openjdk-6-jre-headless opendjk-6-jdk oracle-j2sdk1.6
- }
- requirements_debian_define()
- {
- \typeset __architecture
- requirements_debian_arch
- if [[ "$1" == *head ]]
- then
- requirements_check_fallback git git-core
- fi
- case "$1" in
- (rvm)
- requirements_check bash curl patch bzip2 ca-certificates gawk
- ;;
- (jruby*)
- requirements_check g++ make
- if
- is_head_or_disable_binary "$1"
- then
- requirements_debian_define_java javac
- requirements_check_fallback git git-core
- case $( jruby_installation_method "$1" ) in
- ant) __rvm_which ant >/dev/null || requirements_check ant ;;
- mvn) __rvm_which mvn >/dev/null || requirements_check_fallback maven maven2 ;;
- esac
- else
- requirements_debian_define_java java
- fi
- ;;
- (ir*)
- requirements_check curl mono-2.0-devel
- ;;
- (opal)
- requirements_check nodejs npm
- ;;
- (rbx*|rubinius*)
- requirements_debian_define_base flex ruby-dev libreadline-dev libedit-dev
- requirements_${_system_name_lowercase}_define_libssl "$1"
- requirements_${_system_name_lowercase}_define_clang_llvm "$1"
- ;;
- (truffleruby*)
- requirements_debian_define_base
- requirements_${_system_name_lowercase}_define_libssl "$1"
- requirements_check make gcc libxml2
- ;;
- (*)
- requirements_debian_define_base g++ gcc
- requirements_${_system_name_lowercase}_define_libssl "$1"
- ;;
- esac
- }
|