Explique el comando de alternativas en detalle (este ejemplo usa el cambio de versión de Python como ejemplo)

                                                  Explique el comando de alternativas en detalle (este ejemplo usa el cambio de versión de Python como ejemplo)

Alternatives es un comando integrado de la serie de sistemas operativos Linux, incluso con una instalación mínima. Su función principal es el cambio de control de versiones. Por ejemplo, hay varias versiones de Python en su sistema, como Python3.8, Python2.7.5, y Python3. 6 ,.

En primer lugar, debe quedar claro que múltiples versiones de Python pueden coexistir en el mismo sistema, porque el directorio de instalación se puede especificar al compilar e instalar usando código fuente. Si está instalado en rpm o yum, entonces puede haber una versión problema de conflicto. Además, cada versión de Python tiene sus propias características. Por ejemplo, la versión principal de Python3 básicamente viene con un administrador de paquetes pip, y Python2.7 no tiene pip, por lo que debe instalarlo manualmente. Para distinguir, la versión pip de python3.8 es 21.0.1 y la versión pip de Python2.7.5 es 20.3.4.

Introducción medioambiental:

Sistema Centos7.2, use Python 2.7.5 incorporado y Python 3.8.1 instalado desde el código fuente. Python 2.7.5 instala manualmente pip20.3.4. Dado que Python se compila a partir del código fuente, viene con pip. Después de instalar Python 3.8, actualice pip a 21.0.1.

Introducción al comando de alternativas:

[root@centos6 piprpm]# alternatives 
alternatives version 1.7.4 - Copyright (C) 2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage: alternatives --install <link> <name> <path> <priority>
                    [--initscript <service>]
                    [--family <family>]
                    [--slave <link> <name> <path>]*
       alternatives --remove <name> <path>
       alternatives --auto <name>
       alternatives --config <name>
       alternatives --display <name>
       alternatives --set <name> <path>
       alternatives --list

common options: --verbose --test --help --usage --version --keep-missing
                --altdir <directory> --admindir <directory>

Los principales parámetros de uso común son los 5 parámetros de instalación, eliminación, configuración, visualización y lista.

instalar - Generar conexión suave

eliminar - eliminar conexión blanda

config - seleccione conexión suave

pantalla: muestra la conexión suave

lista: muestra todas las conexiones blandas



Suponiendo que se haya instalado Python 3.8.1, el directorio de instalación se especifica en /usr/local/python3.8, el pip de Python 2.7.5 se instala con pip 8.1.2 y luego se actualiza a pip20.3.4, todo Python y pip se puede utilizar normalmente,

Primero, agregue Python 3.8.1 a la administración de alternativas, el comando es:

alternativas --install / usr / bin / python python /usr/local/python3.8/bin/python3.8 3 Este comando agrega Python3.8 a las alternativas.

En segundo lugar, agregue Python 2.7.5 a la administración de alternativas, el comando es:

alternativas --install / usr / bin / python python /usr/bin/python2.7 2

Luego, cambie la versión de Python a Python3.8

[root@centos6 ~]# alternatives --config python

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/local/python3.8/bin/python3.8

Enter to keep the current selection[+], or type selection number: 2

Después de elegir 2, puede cambiar a la versión Python 3.8.1 . 

/ usr / bin / python ¿Qué archivo es primero?

[root@centos7 ~]# ls -al /usr/bin/python
lrwxrwxrwx. 1 root root 7 Jan 23 22:13 /usr/bin/python -> python2

[root@centos7 bin]# ls -al /usr/bin/python2
lrwxrwxrwx. 1 root root 9 Jan 23 22:13 python2 -> python2.7

Podemos ver que antes de agregar la administración de alternativas, es un archivo de enlace, apuntando a / usr / bin / python2 y Python2 apunta a /usr/bin/python2.7.

Después de unirse a la administración de alternativas, la dirección de / usr / bin / python es diferente nuevamente

[root@centos6 ~]# ls -al /usr/bin/python
lrwxrwxrwx 1 root root 24 Mar 27 05:33 /usr/bin/python -> /etc/alternatives/python

[root@centos6 ~]# ls -al /etc/alternatives/python
lrwxrwxrwx 1 root root 34 Mar 27 05:33 /etc/alternatives/python -> /usr/local/python3.8/bin/python3.8

Este es el punto de / etc / alternativas / python después de cambiar la versión de Python a 3.8. Puede ver que está vinculado a /usr/local/python3.8/bin/python3.8.

Entonces, ¿qué pasa ahora después de cambiar a Python 2.7.5?

[root@centos6 ~]# alternatives --config python

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/local/python3.8/bin/python3.8

Enter to keep the current selection[+], or type selection number: 2^H

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/local/python3.8/bin/python3.8

Enter to keep the current selection[+], or type selection number: 1
[root@centos6 ~]# ls -al /usr/bin/python
lrwxrwxrwx 1 root root 24 Mar 27 06:50 /usr/bin/python -> /etc/alternatives/python
[root@centos6 ~]# ls -al /etc/alternatives/python
lrwxrwxrwx 1 root root 18 Mar 27 06:50 /etc/alternatives/python -> /usr/bin/python2.7

Aquí, después de usar las alternativas --config python, elegí 1 y cambié a Python2.7 . Después de mirar el enlace, puede ver que / etc / alternativas / python apunta a /usr/bin/python2.7l.

alternativas --install / usr / bin / python python /usr/local/python3.8/bin/python3.8 3 ¿Cómo se escribe este comando? El archivo seguido de la instalación debe ser un archivo de enlace, python es el nombre del proyecto, /usr/local/python3.8/bin/python3.8 es la ruta absoluta del archivo real y 3 es la prioridad. La prioridad establecida por el segundo comando es 2, lo que indica que el Python 3.8 de mayor prioridad se usa primero, si está en modo automático.

Como se muestra en la figura siguiente, la segunda línea indica el modo manual. Si es automático, primero se usará Python3.8.

La tercera línea dice que actualmente está usando /usr/bin/python2.7, la cuarta y quinta líneas son la prioridad de las dos versiones, y la sexta línea significa que la mejor versión es Python3.8.

[root@centos6 ~]# alternatives --display python
python - status is manual.
 link currently points to /usr/bin/python2.7
/usr/bin/python2.7 - priority 2
/usr/local/python3.8/bin/python3.8 - priority 3
Current `best' version is /usr/local/python3.8/bin/python3.8.

Cabe señalar que después de que se cambia la versión de Python, el administrador de pip cambia automáticamente con ella, incluso si pip son dos componentes diferentes. 

Luego, después de los experimentos anteriores, podemos concluir que las alternativas son similares a un administrador de enlaces, a través de alternativas --configurar el nombre del proyecto, y luego seleccionar el número de serie para elegir qué proyecto usar. De este modo, se ajusta dinámicamente el punto de enlace.

Se pueden usar alternativas en el caso de múltiples versiones de gcc, tomcat, jdk en el mismo sistema para evitar confusión de versiones Es un comando de Linux muy útil. ( Tenga en cuenta que incluso si se reinicia el sistema, siempre que esté en modo manual, la selección de la versión de Python se mantendrá ).

Supongo que te gusta

Origin blog.csdn.net/alwaysbefine/article/details/115261860
Recomendado
Clasificación