shell bypass 403
#!/usr/bin/env bash
requirements_arch_lib_installed_all_missing()
{
pacman -T "$@" || true
}
requirements_arch_lib_installed() {
pacman -Qq "$1" >/dev/null 2>&1 || return $?
}
requirements_arch_lib_available()
{
pacman -Ssq "^${1}$" >/dev/null 2>&1 || return $?
}
requirements_arch_libs_install()
{
__rvm_try_sudo pacman -Sy --needed --noconfirm "$@" || return $?
}
requirements_arch_libs_remove()
{
__rvm_try_sudo pacman -Rs --noconfirm "$@" || return $?
}
requirements_arch_update_system()
{
# Has to be ran separately so new version can be used for installing missing libs
requirements_arch_libs_install pacman || return $?
}
requirements_arch_define_check_raspberry_pi()
{
if
[[ "${_system_arch}" == "arm"* ]]
then
# assuming all arm will need this fix
requirements_check_fallback ntp openntpd chrony
fi
}
requirements_arch_define_openssl()
{
case "$1" in
(ruby-2.3*|ruby-2.2*|ruby-2.1*|ruby-2.0*|ruby-1.9*)
requirements_check openssl-1.0
# Ruby should respect pkg-config in case of openssl (it does not have to be the case with other extensions)
# https://github.com/ruby/ruby/blob/trunk/ext/openssl/extconf.rb#L38
export PKG_CONFIG_PATH="/usr/lib/openssl-1.0/pkgconfig${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH:-}"
;;
(*)
requirements_check openssl
;;
esac
}
requirements_arch_define()
{
requirements_arch_define_check_raspberry_pi
case "$1" in
(rvm)
requirements_check bash curl patch
;;
(jruby*)
requirements_check curl make
if
is_head_or_disable_binary "$1"
then
requirements_check_fallback jdk8-openjdk jdk7-openjdk
requirements_check git
case $( jruby_installation_method "$1" ) in
ant) __rvm_which ant >/dev/null || requirements_check apache-ant ;;
mvn) __rvm_which mvn >/dev/null || requirements_check maven ;;
esac
else
requirements_check_fallback jre8-openjdk jre7-openjdk
fi
;;
(ir*)
requirements_check mono
;;
(opal)
requirements_check nodejs
;;
(rbx*head|rubinius*head)
undesired_check clang35 llvm35 llvm35-libs
requirements_check clang llvm llvm-libs patch curl zlib readline autoconf automake diffutils make libtool bison git
;;
(rbx-3*|rubinius-3*)
undesired_check clang35 llvm35 llvm35-libs
requirements_check clang llvm llvm-libs patch curl zlib readline autoconf automake diffutils make libtool bison
;;
(rbx-2*|rubinius-2*)
undesired_check clang llvm llvm-libs
requirements_check clang35 llvm35 llvm35-libs patch curl zlib readline autoconf automake diffutils make libtool bison
;;
(rbx-1*|rubinius-1*)
undesired_check clang llvm llvm-libs
requirements_check clang35 llvm35 llvm35-libs patch curl zlib readline autoconf automake diffutils make libtool bison
;;
(truffleruby*)
requirements_check zlib make gcc libxml2
requirements_arch_define_openssl "$1"
;;
(ruby-2.3*|ruby-2.2*|ruby-2.1*|ruby-2.0*|ruby-1.9*)
requirements_check gcc patch curl zlib readline autoconf automake diffutils make libtool bison sqlite git
requirements_arch_define_openssl "$1"
;;
(*-head)
requirements_check gcc patch curl zlib readline autoconf automake diffutils make libtool bison sqlite git
requirements_arch_define_openssl "$1"
;;
(*)
requirements_check gcc patch curl zlib readline autoconf automake diffutils make libtool bison sqlite
requirements_arch_define_openssl "$1"
;;
esac
}
requirements_arch_service()
{
systemctl $1 $3 >/dev/null ||
if __rvm_try_sudo systemctl $2 $3
then true
else
\typeset __arch_status=$?
rvm_error "There was a problem running 'systemctl $2 $3' with exit status '$__arch_status'."
return $__arch_status
fi
}
requirements_arch_after_check_raspberry_pi()
{
if
[[ "${_system_arch}" == "arm"* ]]
then
ntp_servers=( ntpd systemd-timesyncd openntpd chronyd )
for ntp_server in "${ntp_servers[@]}"
do
if
systemctl list-unit-files | grep -Fq "$ntp_server.service" &&
systemctl is-active $ntp_server
then
return 0
fi
done
for ntp_server in "${ntp_servers[@]}"
do
if
systemctl list-unit-files | grep -Fq "$ntp_server.service"
then
requirements_arch_service is-enabled enable $ntp_server &&
requirements_arch_service is-active start $ntp_server ||
return $?
fi
done
fi
}
requirements_arch_after()
{
requirements_arch_after_check_raspberry_pi
}
requirements_manjaro_define()
{
__lib_type=arch
requirements_arch_define "$@" || return $?
}