Comment utiliser les alternatives de mise à jour par user

Existe-t-il un moyen d'utiliser update-alternative "user wide"? Je veux dire qu'il serait formidable de définir des preferences par user.

Est-ce que Debian fournit des outils pour cela?

Chaque user peut créer son propre directory bin par exemple dans ~/bin et le mettre d'abord dans leur PATH . À l'intérieur de ce directory, ils peuvent avoir des liens symboliques à leur alternative préférée.

Je ne sais pas s'ils peuvent utiliser la command update-alternative pour mettre à jour leur propre directory de liens symboliques, ou s'ils doivent le faire manuellement.

Oui, vous pouvez absolument utiliser update-alternatives de update-alternatives pour vous update-alternatives même. Par exemple, j'ai différentes versions LLVM installées sous ~/.local/llvm-VERSION . Je peux installer des liens binarys dans ~/.local/bin (qui est dans mon $PATH ) comme ceci:

 alias update-my-alternatives='update-alternatives --altdir ~/.local/etc/alternatives --admindir ~/.local/var/lib/alternatives' mkdir -p ~/.local/var/lib/alternatives ~/.local/etc/alternatives version=3.9.0 slaves="" for b in llvm-${version}/bin/*; do \ slaves+=" --slave $HOME/.local/bin/$(basename $b) $(basename $b) $(readlink -f $b)" \ done update-my-alternatives --install $HOME/.local/bin/llvm-config llvm $(readlink -f $(dirname $b)/llvm-config) ${version//./0} ${slaves} 

Je peux répéter la dernière command pour les nouvelles versions et utiliser update-my-alternatives --config llvm pour choisir entre les versions.

Si vous souhaitez utiliser les alternatives de système préexistantes, vous pouvez éventuellement copyr tous les files dans /var/lib/alternatives vers ~/.local/var/lib/alternatives et modifier tous les paths du système dans la première section pour être des paths d'users (p. ex. changer /usr to /home/username/.local ).

Les users qui ne veulent pas utiliser le système par défaut pour une application qui utilise les alternatives (et une alternative est en effet installé) peuvent toujours simplement utiliser le nom correct ou le path complet pour l'alternative non par défaut ou configurer un alias surpassant le lien symbolique.