One tool to rule them all. Ecco UPT, frontend universale scritto in Rust che vuole parlare a tutti i package manager Linux

7

Sapete quanti package manager, ossia programmi che gestiscono l’installazione dei software all’interno delle distribuzioni Linux, esistono oggi? Tanti, tantissimi.

Se usate Debian o Ubuntu conoscerete certamente APT, se usate Fedora o derivate Red Hat conoscerete invece YUM (o il suo successore, DNF), per Arch Linux invece c’è Pacman, mentre Alpine usa APK, Gentoo usa Emerge e Slackware invece Slackpkg.

Ora, fintanto che tutto rimane nel contesto della stessa tipologia di distribuzione non ci sono problemi. E sappiamo quanti aficionados non si separerebbero mai dalla loro distribuzione preferita. Solo che tante volte ci si trova a lavorare anche sulle installazioni Linux che non rientrano tra quelle usate prima ed in questo caso l’installazione dei pacchetti potrebbe rappresentare un bel problema (oltre che un’opportunità per imparare ad utilizzare nuovi strumenti, ndr).

Lo avrete capito, è l’open-source, a ciascuno il suo.

Ma davvero questa situazione va bene a tutti? In realtà no, o sicuramente non va bene allo sviluppatore che si identifica con il nickname sigoden, il quale ha creato UPT, definito come lo Universal Package-management Tool. Uno strumento open-source e scritto in Rust (ovviamente!) in grado di parlare a tutti i package manager descritti in apertura.

Se state iniziando a domandarvi quanto possa essere utile uno strumento simile, è bene approfondire il suo principio di funzionamento.

Di UPT ha parlato infatti It’s FOSS in questo articolo, descrivendo tanto il progetto, quante le sue peculiarità, la prima delle quali è la più importante: il progetto non è un package manager in sé, ma un frontend verso tutti i package manager esistenti. Il che, come è facilmente intuibile porta ad una inevitabile conclusione, ossia che il nome dei pacchetti dipenderà dalla distribuzione, e quindi bisognerà conoscerlo.

Tolto questo però, la lista dei tool supportati è davvero ampia:

  • upt
  • apk
  • apt
  • brew
  • cards
  • choco
  • dnf
  • emerge
  • eopkg
  • flatpak
  • guix
  • nix-env
  • opkg
  • pacman
  • pkg
  • pkg(termux)
  • pkgman
  • prt-get
  • scoop
  • slackpkg
  • snap
  • urpm
  • winget
  • xbps
  • yum
  • zypper

E per ciascuno di questi esiste una corrispondenza in termini di azioni che possono essere effettuate:

  • Install
  • Uninstall
  • Upgrade
  • Search
  • Info
  • Update Index
  • Upgrade All
  • List Installed

L’aspetto forse più interessante del progetto è proprio la tabella che sulla pagina principale illustra il supporto, poiché contiene la sintesi della sintassi da utilizzare per ciascuna delle azioni in ciascuno dei tool ufficiali dei vari package manager.

Solo quella, per così dire, vale il prezzo del biglietto e non fosse niente la riportiamo qui, perché potrebbe tornare decisamente utile ai più:

ToolInstallUninstallUpgradeSearchInfoUpdate IndexUpgrade AllList Installed
uptupt install $pkgupt remove/uninstall $pkgupt upgrade $pkgupt search $pkgupt info/show $pkgupt updateupt upgradeupt list
apkapk add $pkgapk del $pkgapk upgrade $pkgapk search $pkgapk info $pkgapk updateapk upgradeapk list -I/–installed
aptapt install $pkgapt remove $pkgapt install –only-upgrade $pkgapt search $pkgapt show $pkgapt updateapt upgradeapt list -i/–installed
brewbrew install $pkgbrew uninstall $pkgbrew upgrade $pkgbrew search $pkgbrew info $pkgbrew updatebrew upgradebrew list
cardscards install $pkgcards remove $pkgcards install -u/–upgrade $pkgcards search $pkgcards info $pkgcards synccards upgradecards list
chocochoco install $pkgchoco uninstall $pkgchoco upgrade $pkgchoco search $pkgchoco info $pkgchoco upgrade all –noopchoco upgrade allchoco list -l/–local-only
dnfdnf install $pkgdnf remove $pkgdnf upgrade $pkgdnf search $pkgdnf info $pkgdnf check-updatednf updatednf list –installed
emergeemerge $pkgemerge –depclean $pkgemerge –update $pkgemerge –search $pkgemerge –info $pkgemerge –syncemerge -vuDN @worldqlist -lv
eopkgeopkg install $pkgeopkg remove $pkgeopkg upgrade $pkgeopkg search $pkgeopkg info $pkgeopkg update-repoeopkg upgradeeopkg list-installed
flatpakflatpak install $pkgflatpak uninstall $pkgflatpak update $pkgflatpak search $pkgflatpak info $pkgflatpak updateflatpak list
guixguix install $pkgguix remove $pkgguix upgrade $pkgguix search $pkgguix show $pkgguix refreshguix upgradeguix package -I/–list-installed
nix-envnix-env -i/–install $pkgnix-env -e/–uninstall $pkgnix-env -u/–upgrade $pkgnix-env -qaP $pkgnix-env -qa –description $pkgnix-channel –updatenix-env -u/–upgradenix-env -q/–query –installed
opkgopkg install $pkgopkg remove $pkgopkg upgrade $pkgopkg find $pkgopkg info $pkgopkg updateopkg upgradeopkg list –installed
pacmanpacman -S $pkgpacman -Rs $pkgpacman -S $pkgpacman -Ss $pkgpacman -Si $pkgpacman -Sypacman -Syupacman -Q
pkgpkg install $pkgpkg remove $pkgpkg install $pkgpkg search $pkgpkg info $pkgpkg updatepkg upgradepkg info -a/–all
pkg(termux)pkg install $pkgpkg uninstall $pkgpkg install $pkgpkg search $pkgpkg show $pkgpkg updatepkg upgradepkg list-installed
pkgmanpkgman install $pkgpkgman uninstall $pkgpkgman update $pkgpkgman search $pkgpkgman refreshpkgman updatepkgman search -i -a
prt-getprt-get install $pkgprt-get remove $pkgprt-get update $pkgprt-get search $pkgprt-get info $pkgports -uprt-get sysupprt-get listinst
scoopscoop install $pkgscoop uninstall $pkgscoop update $pkgscoop search $pkgscoop info $pkgscoop updatescoop update *scoop list
slackpkgslackpkg install <slackpkg>slackpkg remove <slackpkg>slackpkg upgrade <slackpkg>slackpkg search <slackpkg>slackpkg info <slackpkg>slackpkg updateslackpkg upgrade-allls -1 /var/log/packages
snapsnap install –classic $pkgsnap remove $pkgsnap refresh $pkgsnap find $pkgsnap info $pkgsnap refreshsnap list
urpmurpmi $pkgurpme $pkgurpmi $pkgurpmq -y/–fuzzy $pkgurpmq -i $pkgurpmi.update -aurpmi –auto-updaterpm -q/–query –all
wingetwinget install $pkgwinget uninstall $pkgwinget upgrade $pkgwinget search $pkgwinget show $pkgwinget upgrade –allwinget list
xbpsxbps-install $pkgxbps-remove $pkgxbps-install -u/–update $pkgxbps-query -Rs $pkgxbps-query -RS $pkgxbps-install -S/–syncxbps-install -u/–updateqxbps-query -l/–list-pkgs
yumyum install $pkgyum remove $pkgyum upgrade $pkgyum search $pkgyum info $pkgyum check-updateyum updateyum list –installed
zypperzypper install $pkgzypper remove $pkgzypper update $pkgzypper search $pkgzypper info $pkgzypper refreshzypper updatezypper search -i/–installed-only

Se UPT avrà successo o meno come sempre lo dirà il tempo, ma dobbiamo ammettere che la prima immagine che ci è venuta in mente sentendone parlare è stata questa, apparsa numerose volte nei nostri articoli:

Standards

Ma magari questa volta andrà meglio, chi lo sa!

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

7 risposte a “One tool to rule them all. Ecco UPT, frontend universale scritto in Rust che vuole parlare a tutti i package manager Linux”

  1. Avatar Black_Codec

    Avevo fatto una cosa simile con bash… Ok vogliamo usare per forza rust ovunque ma non è che serva sempre complicarsi la vita…

  2. Avatar JustATiredMan
    JustATiredMan

    auff…. stà mania della frammentazione… se tutti si usasse apt non ci sarebbero problemi, ma siccome ognuno vuole fare sempre di testa propria…..

  3. Avatar Giacomo Perin
    Giacomo Perin

    Invece è proprio la frammentazione la vera forza. Pensa se si potesse comprare solo su amazon, o esistesse una sola automobile per andare in giro… Non ci sarebbe innovazione. Frammentazione = innovazione.

  4. Avatar Acor3
    Acor3

    Io uso da parecchio con gioia top grade… Che fa la stessa cosa… Pure lui scritto in rust e anche nala

  5. Avatar Ifc29
    Ifc29

    Ciao, esisteva qualcosa di simile già da tempo, si chiama pmm (package manager manager) ed è un componente della distribuzione Bedrock Linux. È scritto in sh “puro” per essere compatibile ed utilizzabile out of the box su praticamente tutte le distribuzioni. La cosa più interessante è che da la possibilità di usare un package manager (ad esempio Pacman) ma sfruttando la sintassi di un altro package manager. Purtroppo non si tratta di un progetto a se ma di un tool sviluppato espressamente per Bedrock Linux, e con uno scopo che non credo sia lo stesso di UPT. Attualmente non supporta tutte le tipologie di PM supportati da UPT, ma aggiungere nuovi “traduttori” è abbastanza semplice. A differenza di UPT, pmm non cerca di diventare un nuovo standard (anche perché nell’ ambito di Bedrock Linux non avrebbe senso, credo), l’ obbiettivo è invece quello di permettere all’ utente di usare l’ interfaccia che gli è più familiare.

  6. Avatar JustATiredMan
    JustATiredMan

    si entro certi limiti… con Linux secondo me si è andati molto oltre.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *