Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/03/2013, 20:10
pistonasos
 
Fecha de Ingreso: julio-2009
Ubicación: La Plata
Mensajes: 233
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Ubuntu enlace simbolico a pip-python

Hola @edgarherrera.

Si, está bien lo que entendiste. Cuando uno está en consola, hay siertas variables que intervienen en el comportamiento de la misma como otras que son informativas.
Si no me equivoco,a ese conjunto de variables se les llama entorno o environment en inglés.
Para definir una variable, se hace con
Código:
export nombre_variable=valor
Para conocer el valor de una variable, una forma es con
Código:
echo $nombre_variable
La variable $PATH contiene todas las rutas donde el sistema va a buscar binarios que correspondan con lo que vos escribís en consola.
Si vos escribís echo $PATH, se muestran en pantalla todas esas rutas separadas por ":" .

Entonces, si lo que vos querés es que al escribir pip en consola, el sistema sepa buscar el ejecutable, necesitás indicar la ruta hacia el ejecutable en la variable de entorno $PATH.
Si por ej. el ejecutable está en /usr/local/lib/pip/pip ; la ruta sería
/usr/local/lib/pip , es decir, la carpeta contenedora del ejecutable.

Para agregar la ruta, sería como antes mencioné:
Código:
export PATH=$PATH:/usr/local/lib/pip
El inconveniente de hacer esto, es que los cambios van a ser temporales, es decir, haciedo esto solo funcionaría pip en la consola donde hallas ejecutado ese export.

Es que en realidad, cada vez que abrís una consola, ésta ejecuta un fichero ubicado en el home del usuario que la invoca, llamado .bashrc con toda la información inicial de las consolas que abra el usuario, valga la redundancia.

Entonces, una manera de efectuar cambios permantentes en la variable PATH sería mediante el archivo .bashrc de tu home.

La otra manera de lograr lo mismo, es crear un enlace simbólico del ejecutable en cuestión y ubicarlo en alguna de las rutas en las que busca el sistema. Una de éstas rutas es /usr/local/bin . Entonces, el procedimiento para crear el enlace simbólico sería así:

Código:
# cd /usr/local/bin
# ln -s /usr/local/lib/pip/pip
El primer comando es para ubicarte en una de las rutas del sistema especificadas en la variable $PATH.
El segundo, es para crear un enlace simbólico del ejecutable pip en la capeta actual. Como no especificamos nada, el comando ln le va a dar al enlace sombólico el mismo nombre que tiene el fichero a donde apunta el enlace simbólico, creando así un enlace simbólico de nombre pip que apunta al ejecutable pip en /usr/local/bin.
Y esto es parte de lo que resaltaste en negrita: Vos hiciste un enlace simbólico a la carpeta contenedora del ejecutable, no al ejecutable. Es decir, según mi ejemplo, erróneamente hiciste un enlace hacia /usr/local/lib/pip y no hacia /usr/local/lib/pip/pip , que sería lo correcto.

Entonces, la próxima vez que teclees pip en consola, ésta va a buscar un binario con el mismo nombre en las carpetas especificadas en la variable de entorno $PATH, y por lo tanto en /usr/local/bin , donde lo va a encontrar porque lo creamos.

El inconveniente de esta forma, es que en siertos casos podría fallar el programa, el que falle o no depende de cómo esté echo, hay programas que necesitan ejecutarse desde su carpeta, y al ejecutarlos desde otra carpeta, quizá intente buscar archivos que no existen, probablemente fallando.

Por último, o por lo menos la última manera que se me ocurre, es especificar manualmente la ruta del binario para ejecutarlo, es decir:
Código:
/usr/local/lib/pip/pip
Que sería exactamente lo mismo que especificar la ruta de la carpeta contenedora en la variable $PATH y luego teclear pip.

Ahh, y también, podés usar un comando llamado alias. Te dejo que lo busques, es muy sencillo usarlo y hay mucho info en Google.

Otra cosa: No se qué será pip, pero suponiendo que es un programa sin interfaz gráfica, no tiene mucho sentido hacerle doble click, ya que jamás verías nada, por lo menos nada útil.

Otra: En algunos sistemas, tecleando ls -l o simplemente ls, te colorea con rojo los enlaces simbólicos rotos, u algún otro color que resalte, eso te facilitaría saber si estás haciendo algo mal o no. También, usando ls -l, podés ver hacia dónde apuntan los enlaces simbólicos, muy util también.

Salu2!