GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengaktifkan scl CentOS 6.4 secara permanen?

Di ~/.bashrc Anda atau ~/.bash_profile Cukup sumber skrip "aktifkan" yang disediakan dengan devtoolset. Misalnya, dengan Devtoolset 2, perintahnya adalah:

source /opt/rh/devtoolset-2/enable

atau

source scl_source enable devtoolset-2

Jauh lebih efisien:tanpa forkbomb, tanpa cangkang rumit


Alternatif source /opt/rh/devtoolset-4/enable adalah

source scl_source enable devtoolset-4

Skrip shell di atas scl_source lebih elegan daripada menggunakan jalur kode keras (mungkin berbeda di komputer lain). Namun scl_source kurang karena /opt/rh/devtoolset-4/enable menggunakan scl_source dan hal lainnya.

Untuk menggunakan scl_source Anda mungkin harus memutakhirkan paket scl-utils

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

Salin-tempel cepat

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

Kode sumber untuk orang yang ingin tahu

Contoh scl_source Kode sumber:
https://Gist.github.com/bkabrda/6435016

scl_source diinstal pada Red Hat 7.1 saya

#!/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 "[email protected]"; 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

Masalahnya adalah scl enable devtoolset-1.1 bash membuat shell bash baru. Jadi ketika Anda meletakkannya di .bashrc Anda, itu membuat shell baru... yang memuat .bashrc Anda, yang menjalankan scl enable devtoolset-1.1 bash , yang membuat shell baru, yang memuat .bashrc... Forkbomb Anda!

Anda mungkin menginginkan sesuatu seperti ini di .bashrc:

Anda
if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi

atau

if [ -z "$TRIEDSCLDEVTOOLSET" ]; then
  export TRIEDSCLDEVTOOLSET=true
  scl enable devtoolset-1.1 bash
fi
  • yang pertama akan terus melakukan forkbomb jika devtoolset-1.1 tidak berisi gcc 4.7.2, dan juga akan gagal berfungsi jika lingkungan asli Anda memiliki gcc 4.7.2.
  • ini membuat shell baru, seperti di atas. Jadi ketika Anda membuat jendela terminal atau sesi ssh, Anda akan berada dalam dua sesi bash, dan harus exit dua kali.

Linux
  1. Cara mengaktifkan IPv6 di CentOS / RHEL 7

  2. Cara Mengaktifkan IPv6 Di CentOS / RHEL 5

  3. Cara Mengaktifkan Penerusan X11 di CentOS/RHEL 5,6,7

  1. Cara mengaktifkan mod_rewrite di Apache di CentOS

  2. Cara Mengaktifkan IPv6 di CentOS/RHEL 8

  3. Bagaimana cara mengaktifkan repositori PowerTools di CentOS 8?

  1. Cara mengaktifkan IPv6 di CentOS / RHEL 6

  2. Cara mengaktifkan/menonaktifkan Mode SELinux di RHEL/CentOS

  3. Cara mengaktifkan warna teks di vi mirip dengan vim di CentOS/RHEL