GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie aktiviere ich scl CentOS 6.4 dauerhaft?

In Ihrem ~/.bashrc oder ~/.bash_profile Verwenden Sie einfach das mit dem devtoolset bereitgestellte „enable“-Skript. Bei Devtoolset 2 lautet der Befehl beispielsweise:

source /opt/rh/devtoolset-2/enable

oder

source scl_source enable devtoolset-2

Wesentlich effizienter:keine Gabelbombe, keine knifflige Hülle


Eine Alternative zu source /opt/rh/devtoolset-4/enable ist

source scl_source enable devtoolset-4

Das obige Shell-Skript scl_source ist eleganter als die Verwendung eines fest codierten Pfads (kann auf einem anderen Computer anders sein). Jedoch scl_source macht weniger, weil /opt/rh/devtoolset-4/enable verwendet scl_source und andere Sachen.

Um scl_source zu verwenden Möglicherweise müssen Sie Paket scl-utils aktualisieren

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

Schnelles Kopieren und Einfügen

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

Quellcode für Neugierige

Ein Beispiel für scl_source Quellcode:
https://gist.github.com/bkabrda/6435016

Die scl_source auf meinem Red Hat 7.1 installiert

#!/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

Das Problem ist, dass scl enable devtoolset-1.1 bash erstellt eine neue Bash-Shell. Wenn Sie es also in Ihre .bashrc einfügen, erstellt es eine neue Shell ... die Ihre .bashrc lädt, die scl enable devtoolset-1.1 bash ausführt , wodurch eine neue Shell erstellt wird, die Ihre .bashrc... Forkbomb!

lädt

Wahrscheinlich möchten Sie so etwas in Ihrer .bashrc:

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

oder

if [ -z "$TRIEDSCLDEVTOOLSET" ]; then
  export TRIEDSCLDEVTOOLSET=true
  scl enable devtoolset-1.1 bash
fi
  • der erste wird weiterhin forkbomben, wenn devtoolset-1.1 gcc 4.7.2 nicht enthält, und wird auch nicht funktionieren, wenn Ihre native Umgebung gcc 4.7.2 hat.
  • dies erstellt eine neue Shell, wie oben. Wenn Sie also Ihr Terminalfenster oder Ihre SSH-Sitzung erstellen, befinden Sie sich in zwei Bash-Sitzungen und müssen exit zweimal.

Linux
  1. So aktivieren Sie mod_rewrite auf Apache unter CentOS

  2. So aktivieren Sie IPv6 auf CentOS / RHEL 7

  3. So aktivieren Sie IPv6 auf CentOS / RHEL 6

  4. So aktivieren/deaktivieren Sie SELinux-Modi in RHEL/CentOS

  5. Wie aktiviere ich das PowerTools-Repository in CentOS 8?

So aktualisieren Sie CentOS

So aktivieren Sie das EPEL-Repository auf CentOS

So aktivieren Sie SSH auf CentOS

So aktivieren Sie das EPEL-Repository unter CentOS 8

So aktivieren Sie das REMI-Repository unter CentOS 8

So installieren und konfigurieren Sie GlusterFS unter CentOS 7/CentOS 8