Linux

如何永久啟用 scl CentOS 6.4?

  • December 18, 2020

我安裝了更新版本的 devtoolset (1.1) 並且想知道如何將它們永久設置為預設值。現在,當我 ssh 進入執行 CentOS 的伺服器時,我必須執行這個命令scl enable devtoolset-1.1 bash

我嘗試將它添加到 ~/.bashrc 並簡單地將其粘貼到最後一行,但沒有成功。

在您的~/.bashrc~/.bash_profile只需獲取 devtoolset 提供的“啟用”腳本。例如,使用 Devtoolset 2,命令是:

source /opt/rh/devtoolset-2/enable

或者

source scl_source enable devtoolset-2

效率更高:沒有分叉炸彈,沒有棘手的外殼

的替代方案source /opt/rh/devtoolset-4/enable

source scl_source enable devtoolset-4

上面的 shell 腳本scl_source比使用硬編碼路徑更優雅(在另一台機器上可能不同)。然而scl_source,因為/opt/rh/devtoolset-4/enable用途scl_source和其他東西而做得更少。

要使用scl_source您可能需要升級包scl-utils

yum update scl-utils  # old scl-utils versions miss scl_source

快速複製粘貼

echo 'source scl_source enable devtoolset-4' >> ~/.bashrc
   # Do not forget to change the version ↑

好奇的人的原始碼

scl_source原始碼範例:

https ://gist.github.com/bkabrda/6435016

在我的scl_sourceRed Hat 7.1 上安裝

#!/bin/bash

_scl_source_help="Usage: source scl_source <action> [<collection> ...]

Don't use this script outside of SCL scriptlets!

Options:
   -h, --help    display this help and exit"

if [ $# -eq 0 -o $1 = "-h" -o $1 = "--help" ]; then
   echo "$_scl_source_help"
   return 0
fi


if [ -z "$_recursion" ]; then
   _recursion="false"
fi
if [ -z "$_scl_scriptlet_name" ]; then
   # The only allowed action in the case of recursion is the same
   # as was the original
   _scl_scriptlet_name=$1
fi
shift 1

if [ -z "$_scl_dir" ]; then
   # No need to re-define the directory twice
   _scl_dir=/etc/scl/conf
   if [ ! -e $_scl_dir ]; then
       _scl_dir=/etc/scl/prefixes
   fi
fi

for arg in "$@"; do
   _scl_prefix_file=$_scl_dir/$arg
   _scl_prefix=`cat $_scl_prefix_file 2> /dev/null`
   if [ $? -ne 0 ]; then
       echo "Can't read $_scl_prefix_file, $arg is probably not installed."
       return 1
   fi

   # First check if the collection is already in the list
   # of collections to be enabled
   for scl in ${_scls[@]}; do
       if [ $arg == $scl ]; then
           continue 2
       fi
   done

   # Now check if the collection isn't already enabled
   /usr/bin/scl_enabled $arg > /dev/null 2> /dev/null
   if [ $? -ne 0 ]; then
       _scls+=($arg)
       _scl_prefixes+=($_scl_prefix)
   fi;
done

if [ $_recursion == "false" ]; then
   _i=0
   _recursion="true"
   while [ $_i -lt ${#_scls[@]} ]; do
       _scl_scriptlet_path="${_scl_prefixes[$_i]}/${_scls[$_i]}/${_scl_scriptlet_name}"
       source "$_scl_scriptlet_path"
       if [ $? -ne 0 ]; then
           echo "Can't source $_scl_scriptlet_name, skipping."
       else
           export X_SCLS="${_scls[$_i]} $X_SCLS"
       fi;
       _i=$(($_i+1))
   done
   _scls=()
   _scl_prefixes=()
   _scl_scriptlet_name=""
   _recursion="false"
fi

引用自:https://unix.stackexchange.com/questions/175851