Pour les logiciels dont vous avez uniquement besoin, utilisez votre répertoire personnel au lieu de /usr/local
.
Au lieu de changer la propriété de /usr/local
ou d'avoir à exécuter des commandes en tant que root lorsque vous ne le souhaitez pas, vous devez simplement configurer vos versions afin qu'elles s'installent dans votre répertoire personnel au lieu de /usr/local
. Cette adresse tous les problèmes potentiels liés à l' évolution de la propriété de /usr/local
, y compris la façon dont ses bin
et les sbin
sous - répertoires sont dans root
le chemin « .
Si vous devez autoriser d'autres utilisateurs à exécuter votre logiciel, vous pouvez leur donner accès. En fait, ils le seront probablement déjà, car par défaut votre répertoire personnel a un accès permissif en lecture et en exécution . (Si vous ne le souhaitez pas, vous pouvez le modifier assez facilement, simplement en utilisant chmod
n'importe quel fichier ou répertoire que vous souhaitez rendre privé et éventuellement en changeant le vôtre umask
.)
Avec un logiciel installé dans votre répertoire personnel, les fichiers binaires qui y seraient entrés le /usr/local/bin
seront à la place . Vous obtiendrez d'autres sous-répertoires de votre répertoire personnel correspondant aux sous-répertoires dont le logiciel que vous installez a besoin. Cela se produit généralement automatiquement lorsque vous installez un logiciel à partir du code source./home/username/bin
/usr/local
Configuration de vos builds
La plupart des logiciels que vous créez à partir du code source ont une étape où vous exécutez:
./configure
Pour la grande majorité des logiciels livrés avec un configure
script pouvant être exécuté de cette manière, la configuration par défaut est configurée pour l'installation à l'intérieur /usr/local
lorsque vous exécutez finalement sudo make install
pour l'installer. La raison en est qu'elle est implicitement équivalente à l'exécution:
./configure --prefix=/usr/local
Pour configurer une build pour l'installation dans votre répertoire personnel, utilisez plutôt ceci:
./configure --prefix="$HOME"
En pratique, dans Ubuntu, les chemins du répertoire personnel ne contiennent pas d'espaces, d'autres espaces ou d'autres caractères qui seront traités spécialement par le shell comme *
, donc à moins que vous n'ayez configuré votre compte d'utilisateur de manière assez étrange, vous pouvez simplement taper:
./configure --prefix=$HOME
(Je ne recommande pas de prendre l'habitude de cela pour écrire des scripts , cependant. En outre, sur certains autres systèmes d'exploitation - tels que macOS - il est moins rare que les chemins vers les répertoires personnels des utilisateurs contiennent des espaces.)
Ou si vous préférez, vous pouvez taper le chemin complet de votre répertoire personnel:
./configure --prefix=/home/username
(Remplacez username
par votre nom d'utilisateur réel, bien sûr. Si, pour une raison quelconque, votre répertoire personnel n'est pas dans, /home
vous devrez vous ajuster en conséquence.)
Installer vos builds
Après avoir couru make
, vous pouvez être habitué à l'exécuter sudo make install
, mais lorsque vous installez dans votre propre répertoire personnel, vous n'avez pas besoin de l'exécuter en tant que root, vous pouvez donc - et devriez - omettre sudo
. Exécutez simplement:
make install
De même, pour les logiciels qui prennent en charge une uninstall
cible:
make uninstall
C'est exactement ce que vous demandiez ... juste dans votre répertoire personnel, non /usr/local
.
Exécuter vos programmes
ProbablementLe bin
sous - répertoire de votre répertoire personnel est soit:
- déjà dans votre
$PATH
, ou
- sera dans votre
$PATH
si vous vous déconnectez et vous reconnectez.
La raison en est que le .profile
fichier de votre répertoire personnel, qui contient des commandes qui s'exécutent lorsque vous vous connectez, contient celui-ci par défaut pour les comptes d'utilisateurs créés dans la plupart des versions d'Ubuntu (y compris le compte d'administrateur initial créé lorsque vous installez le système d'exploitation):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Ce code s'exécute lorsque vous vous connectez (car il est présent .profile
) et place votre bin
répertoire personnel dans$PATH
uniquement s'il existe à ce moment-là. C'est pourquoi vous devrez peut-être vous déconnecter puis vous reconnecter.
Les versions plus anciennes comme Ubuntu 14.04, ainsi que les versions plus récentes comme Ubuntu 17.10, viennent avec cela. Cependant, Ubuntu 16.04, qui est probablement la version la plus populaire à ce jour, a ceci à la place:
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Cela ajoute simplement le bin
sous - répertoire de votre répertoire personnel --- ainsi que le .local/bin
sous-répertoire - à votre $PATH
, sans vérifier si ces répertoires existent réellement. Donc, si vous utilisez 16.04, ou si vous avez effectué une mise à niveau à partir d' un système qui était 16.04 lorsque votre compte d'utilisateur a été créé, alors lebin
sous répertoire de votre répertoire personnel est probablement déjà dans votre $PATH
.
Votre .profile
fichier est copié depuis le/etc/skel
répertoire lors création de votre compte utilisateur. Si votre compte d'utilisateur a été créé sur une ancienne version d'Ubuntu, il a obtenu cette version de .profile
, et il n'a pas été modifié - pour votre compte d'utilisateur - par la mise à niveau vers une version plus récente.
Une fois le bin
sous - répertoire de votre répertoire personnel dans votre$PATH
, vous pourrez exécuter des programmes dont les fichiers exécutables y sont installés en tapant simplement leurs noms, tout comme vous pourriez le faire avec des programmes installés par le gestionnaire de paquets d'Ubuntu ou installés à l'intérieur /usr/local
.
le .local
option
Vous avez peut-être remarqué que le .profile
fichier par défaut pour les comptes d'utilisateurs créés dans certaines versions d'Ubuntu, y compris dans 16.04 comme décrit ci-dessus, ajoute non seulement $HOME/bin
à votre chemin, mais aussi $HOME/.local/bin
. Si vous .profile
n'ajoutez pas cela, mais que vous voulez , vous pouvez simplement le modifier dans.
Bien que souvent utilisé pour stocker des paramètres et des données en cache , vous pouvez également installer des logiciels dans le .local
sous - répertoire de votre répertoire personnel. Vous devriez vous sentir libre de le faire, car du point de vue de la convivialité et de la sécurité, --prefix="$HOME/.local"
c'est similaire à --prefix="$HOME"
.
N'oubliez pas que les fichiers et répertoires commençant par .
ne sont pas affichés par défaut dans les navigateurs de fichiers graphiques (utilisez Ctrl+ Hpour les afficher et les afficher à nouveau) ou par la ls
commande (passez l' indicateur -A
ou -a
pour les afficher). Ce n'est peut-être pas ce que vous voulez, ou peut-être exactement ce que vous voulez. C'est une question de préférence personnelle.
Cependant, j'ai observé que certains gestionnaires de packages automatisés basés sur la source qui construisent et installent des logiciels dans leur répertoire personnel utilisent $HOME/.local
. Je ne sais pas à quel point cela est courant - j'espère approfondir et mettre à jour cette réponse - mais vous préférerez peut-être simplement l'utiliser $HOME
pour les choses que vous compilez manuellement. De cette façon, il sera clair d'où viennent les choses. Et en cas de collision, le logiciel est susceptible de coexister de manière acceptable.
Vous pouvez également installer délibérément certains logiciels dans $HOME/.local
et d'autres logiciels dans $HOME
. C'est à vous. Le bin
répertoire qui apparaît en premier dans votre $PATH
variable d'environnement est celui à partir duquel une commande sera exécutée, dans le cas où des commandes du même nom existent dans les deux.
Le crédit va à Zanna et Videonauth pour signaler les erreurs dans une version précédente de cette réponse, au sujet de laquelle les versions d' Ubuntu ont un code qui par défaut .profile
et me aider à corriger les (voir aussi ici ).