Comment installer les versions de GitHub à l'aide d'UBI
Avez-vous déjà eu du mal à installer des logiciels obscurs ? Vous essayez d'abord les référentiels de logiciels de votre distribution, en vous rabattant sur les référentiels communautaires. Parfois, vous échouez, et ce n'est pas non plus sur Snap Store ou Flathub, vous le téléchargez donc manuellement depuis GitHub en dernier recours. Il existe une meilleure façon, et je vais vous montrer comment.
Trouver, télécharger et installer manuellement un logiciel est un véritable casse-tête. Il existe plusieurs outils à notre disposition, chacun avec ses propres atouts, mais Universal Binary Installer (UBI) résout ce problème mieux que la plupart. Je vais expliquer de quoi il s'agit, quel problème il résout, comment il fonctionne et comment l'utiliser.
Sommaire
Qu’est-ce que l’UBI ?
En un mot, UBI est un petit programme Rust qui installe les binaires depuis GitHub ou GitLab. Les développeurs de logiciels ne se contentent pas de publier leur code sur ces plateformes ; ils le construisent et le publient souvent là aussi. UBI va directement à la source tout en automatisant les parties ennuyeuses pour vous.
Comprendre les versions de GitHub
Une version GitHub est un ensemble d'artefacts de projet (sorties de build, comme des archives tar) publiés sur une page Web spécifique au projet sur GitHub. Par exemple, le référentiel lazydocker publie des binaires que vous pouvez télécharger et exécuter. La page des versions GitHub d'un projet peut contenir de nombreux liens, organisés par version.
Les noms de fichiers contiennent généralement de nombreux détails sur l'artefact de construction. Par exemple, vous pouvez voir sur l'image précédente que les noms de fichiers de lazydocker ressemblent à ceci :
lazydocker_0.24.2_Linux_x86_64.tar.gz
GitHub n'applique pas de convention de dénomination standard, les noms peuvent donc prendre n'importe quelle forme. Le format utilisé par lazydocker est cependant courant et nous pouvons généralement nous attendre à ce qu'ils incluent le nom du projet, la version, la plate-forme et parfois des informations sur la libc (par exemple, glibc ou musl).
Libc est la bibliothèque standard du C. Il s'agit d'un ensemble d'objets partagés (par exemple, libc.so.6 ou libresolve.so.2) sur la plupart des systèmes Linux qui fournissent des utilitaires de programmation pour les applications. Ils sont essentiels au fonctionnement des applications.
Le problème qu’UBI résout
Pour un essai unique, le téléchargement manuel du logiciel convient. Mais pour une utilisation à long terme, cela devient une corvée : vous devez visiter la page, télécharger et décompresser l'archive, déplacer le binaire, définir le bit d'exécution, puis changer de propriétaire. Vous pouvez écrire un script Bash pour simplifier ce processus, mais c'est trop compliqué d'installer une seule application.
UBI facilite l'installation de n'importe quel logiciel depuis GitHub ou GitLab. Désormais, les petits projets indépendants sont plus accessibles que jamais. Cela signifie que vous pouvez sortir de l'écosystème de votre distribution et accéder à des logiciels de pointe à partir de l'un des plus grands référentiels au monde.
3 applications Linux utiles à essayer ce week-end (5 au 7 décembre)
Vous souhaitez surveiller les ressources d'un appareil à distance sans SSH ? Jetez un œil au premier.
Comment UBI trouve le bon binaire
Les versions de GitHub contiennent des artefacts de build pour diverses plates-formes, versions et documents de support. UBI doit choisir celui qui convient le mieux à votre système.
UBI utilise un processus d'élimination pour exclure les archives non pertinentes, qui ressemble à ceci :
-
Filtrez les extensions inconnues (par exemple, .foo, .bar).
-
S'il reste une archive, utilisez-la ; sinon, filtrez les éléments non pertinents…
-
Systèmes d'exploitation.
-
Architectures CPU
-
Constructions Libc (par exemple, musl ou glibc).
-
-
Filtrer 64/32 bits
Une archive doit rester ; sinon, vous pouvez spécifier explicitement une correspondance en utilisant l'indicateur –matching.
Une fois l'archive sélectionnée, UBI doit choisir le bon exécutable, car ces versions sont souvent accompagnées de fichiers supplémentaires.
Le processus est simple ; il sélectionnera un fichier dont le nom soit…
-
Correspond au projet.
-
Commence par le nom du projet : par exemple, foo-v1.2.3, foo-linux-amd64.
En bref, UBI filtre la liste des archives par extension et informations sur la plate-forme ; ensuite, il extrait (et renomme) un binaire qui correspond au nom du projet.
Installation d'UBI
L'installation d'UBI est simple, même si certains se plaindraient du curl-bashing. J'ai amélioré le script d'installation afin qu'il inclue le « BIN_DIR » nécessaire dans votre variable PATH. C'est là que se trouvent vos binaires installés, et vous êtes libre de les modifier, mais si vous le faites, vous devez utiliser l'indicateur –in lors de l'installation des applications. Je recommande de créer un alias pour cela.
BIN_DIR="$HOME/bin"
mkdir -p "$BIN_DIR"
&& curl --silent --location
https://raw.githubusercontent.com/houseabsolute/ubi/master/bootstrap/bootstrap-ubi.sh
| TARGET="$BIN_DIR" sh
&& {
if (( ":$PATH:" != *":$BIN_DIR:"* )); then
for rc in ~/.zshrc ~/.bashrc; do
if ( -f "$rc" ); then
echo "export PATH="$BIN_DIR:$PATH"" >> "$rc";
echo "Added $BIN_DIR to PATH in $rc";
fi;
done;
fi;
}
Vous devrez peut-être recharger votre shell s'il a ajouté le chemin à votre configuration : source ~/.bashrc pour Bash ou source ~/.zshrc pour Zsh.
Utiliser l'UBI
Pour installer un logiciel à partir d'un référentiel GitHub, tout ce dont vous avez besoin sont les noms du propriétaire et du référentiel. Une URL GitHub ressemble à ceci :
https://github.com/houseabsolute/ubi
Les segments de chemin « houseabsolute » et « ubi » sont respectivement les noms du propriétaire et du référentiel.
A titre d'exemple, pour installer UBI (avec UBI), exécutez :
ubi --project houseabsolute/ubi
C'est ça. Dans votre configuration shell, vous pouvez créer un alias ou une fonction pour faciliter les choses :
add() {
case "$1" in
ubi) ubi --project houseabsolute/ubi ;;
*) echo "Unhandled project: '$1'" ;;
esac
}
« installer » est une commande sur la plupart des systèmes, j'ai donc appelé la fonction « ajouter » à la place.
Gérer les cas extrêmes
Parfois, l'algorithme de correspondance ne résout pas une seule archive, car les éditeurs ont défini des éléments supplémentaires (non gérés) dans leurs noms. Vous disposez de quelques options pour gérer ces cas extrêmes.
Étant donné une version qui contient des éléments « foo » et « bar » supplémentaires dans son nom :
ubi-Linux-musl-foo-x86_64.tar.gz
ubi-Linux-musl-bar-x86_64.tar.gz
Le flag « –matching » permet de les distinguer :
ubi --project houseabsolute/ubi --matching foo
Ou vous pouvez utiliser Regex :
ubi --project houseabsolute/ubi --matching-regex '.+-foo-.+'
« –matching » applique le filtre après l'algorithme de correspondance par défaut et « –matching-regex » avant.
Pour installer une version spécifique, spécifiez une balise :
ubi --project houseabsolute/ubi --tag v0.8.2
L'image montre comment déterminer les noms de balises pour des versions spécifiques.
Parfois, l'archive ne contient pas d'exécutable correctement nommé (par exemple, le nom du projet). Dans ce cas, utilisez l'indicateur « –exe » pour spécifier la cible :
ubi --project houseabsolute/ubi --exe ubi
Enfin, vous pouvez spécifier le répertoire de sortie du binaire avec l'indicateur « –in » :
ubi --project houseabsolute/ubi --in ~/.local/bin
7 applications Linux criminellement sous-estimées sans lesquelles je ne peux pas vivre
Sept applications gratuites qui valent la peine d'être payées.
UBI est un programme simple qui comble une lacune de longue date dans l'écosystème logiciel Linux, où il était difficile d'obtenir automatiquement des packages de niche ou indépendants. UBI comble ce vide et cela ne fera pas d'histoires. Il n'intègre pas des milliers de dépendances et ne nécessite pas de sandboxing SELinux. Il n'y a pas de mise en cache ni de formats d'empaquetage complexes. Il exploite un canal que la plupart des développeurs utilisent déjà, vous donnant accès à des projets de pointe.
J'utilise également Distrobox pour installer des logiciels difficiles à obtenir sur n'importe quel système. Avec Distrobox, UBI et les dépôts Linux officiels et communautaires : difficile de trouver des applications que je ne peux pas utiliser.
Cette application Linux open source m'a amené à abandonner la commande git
C'est probablement le meilleur TUI que j'ai utilisé, et il a également l'air très bien.
