Para el software única que necesita, utiliza el directorio de inicio en lugar de /usr/local
.
En lugar de cambiar la propiedad /usr/local
o tener que ejecutar comandos como root cuando no lo desee, debe configurar sus compilaciones para que se instalen en su directorio de inicio en lugar de hacerlo /usr/local
. Todo esto direcciones de los posibles problemas con el cambio de la propiedad de la /usr/local
, incluyendo cómo sus bin
y sbin
subdirectorios están en root
camino 's.
Si necesita permitir que otros usuarios ejecuten su software, puede darles acceso. De hecho, probablemente ya podrán hacerlo, porque de manera predeterminada su directorio de inicio tiene acceso de lectura y ejecución permisivo . (Si no quiere eso, puede cambiarlo con bastante facilidad, simplemente usando chmod
cualquier archivo o directorio que desee que sea privado y posiblemente también cambiando su umask
).
Con el software instalado en su directorio de inicio, los binarios que habrían entrado /usr/local/bin
entrarán en su lugar . Obtendrá otros subdirectorios de su directorio de inicio correspondientes a los subdirectorios que necesita el software que instala. Esto suele suceder automáticamente cuando instala el software desde el código fuente./home/username/bin
/usr/local
Configurando tus Builds
La mayoría del software que crea a partir del código fuente tiene un paso en el que ejecuta:
./configure
Para la gran mayoría del software que se envía con un configure
script que se puede ejecutar de esa manera, el valor predeterminado es configurar la compilación para la instalación en el interior /usr/local
cuando finalmente se ejecuta sudo make install
para instalarlo. La razón es que es implícitamente equivalente a ejecutar:
./configure --prefix=/usr/local
Para configurar una compilación para la instalación en su directorio de inicio, use esto en su lugar:
./configure --prefix="$HOME"
En la práctica, en Ubuntu, las rutas del directorio de inicio no contienen espacios, otros espacios en blanco u otros caracteres que serán tratados especialmente por el shell *
, por lo que, a menos que haya configurado su cuenta de usuario de manera extraña, puede escribir:
./configure --prefix=$HOME
(Sin embargo, no recomiendo acostumbrarse a eso para escribir scripts . Además, en algunos otros sistemas operativos, como macOS, es menos raro que las rutas a los directorios de inicio de los usuarios contengan espacios).
O si lo prefiere, puede escribir la ruta completa del directorio de inicio:
./configure --prefix=/home/username
(Reemplácelo username
con su nombre de usuario real, por supuesto. Si por alguna razón su directorio de inicio no se encuentra, /home
entonces tendrá que ajustarlo en consecuencia).
Instalación de sus compilaciones
Después de ejecutar make
, es posible que esté acostumbrado a hacerlo sudo make install
, pero cuando lo instala en su propio directorio de inicio, no necesita ejecutarlo como root, por lo que puede, y debe, omitir sudo
. Solo corre:
make install
Del mismo modo, para el software que admite un uninstall
objetivo:
make uninstall
Esto es exactamente lo que estaba pidiendo ... solo en su directorio personal, no /usr/local
.
Ejecutando sus programas
Probablemente el bin
subdirectorio de su directorio de inicio sea:
- ya en tu
$PATH
, o
- estará en su
$PATH
si simplemente cierra sesión y vuelve a iniciar sesión.
La razón es que el .profile
archivo en su directorio de inicio, que contiene comandos que se ejecutan cuando inicia sesión, contiene esto de forma predeterminada para las cuentas de usuario creadas en la mayoría de las versiones de Ubuntu (incluida la cuenta de administrador inicial creada cuando instala el sistema operativo):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Ese código se ejecuta cuando inicia sesión (porque está dentro .profile
) y coloca su bin
directorio personal $PATH
solo si existe en ese momento. Es por eso que es posible que deba cerrar sesión y volver a iniciarla.
Las versiones anteriores como Ubuntu 14.04, así como las nuevas versiones como Ubuntu 17.10, vienen con eso. Sin embargo, Ubuntu 16.04, que es probablemente la versión más popular a partir de este escrito, tiene esto en su lugar:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Eso simplemente agrega el bin
subdirectorio de su directorio de inicio, así como el .local/bin
subdirectorio, a su $PATH
, sin verificar si esos directorios realmente existen. Entonces, si usa 16.04, o si actualizó desde un sistema que era 16.04 cuando se creó su cuenta de usuario, entonces el bin
subdirectorio de su directorio de inicio probablemente ya esté en su$PATH
.
Su .profile
archivo se copia del /etc/skel
directorio cuando se crea su cuenta de usuario. Si su cuenta de usuario se creó en una versión anterior de Ubuntu, obtuvo esa versión de.profile
y no se modificó, para su cuenta de usuario, al actualizar a una versión más reciente.
Una vez que el bin
subdirectorio de su directorio de inicio esté en su $PATH
, podrá ejecutar programas cuyos archivos ejecutables se instalen allí simplemente escribiendo sus nombres, tal como lo haría con los programas instalados por el administrador de paquetes de Ubuntu o instalados dentro/usr/local
.
los .local
opción
Es posible que haya notado que el .profile
archivo predeterminado para las cuentas de usuario creadas en algunas versiones de Ubuntu, incluido en 16.04 como se describe anteriormente, agrega no solo $HOME/bin
a su ruta, sino también $HOME/.local/bin
. Si tu .profile
no agrega eso, pero quieres , simplemente puede editarlo.
Aunque a menudo se usa para almacenar configuraciones y datos en caché , también puede instalar software dentro del .local
subdirectorio de su directorio de inicio. Debería sentirse desinhibido al hacerlo, ya que desde un punto de vista de usabilidad y seguridad, --prefix="$HOME/.local"
es similar a--prefix="$HOME"
.
Recuerde que los archivos y directorios que comienzan .
no se muestran de manera predeterminada en los exploradores de archivos gráficos (use Ctrl+ Hpara mostrarlos y volver a mostrarlos) o mediante el ls
comando (pase el -A
o-a
indicador para mostrarlos). Esto puede no ser lo que quieres, o puede ser exactamente lo que quieres. Esta es una cuestión de preferencia personal.
Sin embargo, he observado que algunos administradores de paquetes automatizados basados en fuentes que construyen e instalan software en el uso del directorio personal $HOME/.local
. Realmente no sé qué tan común es esto, espero investigar más y actualizar esta respuesta, pero es posible que prefiera usar$HOME
para cosas que compila manualmente. De esa manera quedará claro de dónde provienen las cosas. Y si hay una colisión, es probable que el software coexista de manera aceptable.
También puede instalar deliberadamente algún software $HOME/.local
y otro software en $HOME
. Tu decides. Cualquier bin
directorio que aparezca primero en su $PATH
variable de entorno es aquel desde el que se ejecutará un comando, en el caso de que existan comandos del mismo nombre en ambos.
El crédito es para Zanna y Videonauth por señalar errores en una versión anterior de esta respuesta, con respecto a qué versiones de Ubuntu tienen qué código predeterminado .profile
y me ayudan a corregirlos (ver también aquí ).