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ù:
Tool | Install | Uninstall | Upgrade | Search | Info | Update Index | Upgrade All | List Installed |
---|---|---|---|---|---|---|---|---|
upt | upt install $pkg | upt remove/uninstall $pkg | upt upgrade $pkg | upt search $pkg | upt info/show $pkg | upt update | upt upgrade | upt list |
apk | apk add $pkg | apk del $pkg | apk upgrade $pkg | apk search $pkg | apk info $pkg | apk update | apk upgrade | apk list -I/–installed |
apt | apt install $pkg | apt remove $pkg | apt install –only-upgrade $pkg | apt search $pkg | apt show $pkg | apt update | apt upgrade | apt list -i/–installed |
brew | brew install $pkg | brew uninstall $pkg | brew upgrade $pkg | brew search $pkg | brew info $pkg | brew update | brew upgrade | brew list |
cards | cards install $pkg | cards remove $pkg | cards install -u/–upgrade $pkg | cards search $pkg | cards info $pkg | cards sync | cards upgrade | cards list |
choco | choco install $pkg | choco uninstall $pkg | choco upgrade $pkg | choco search $pkg | choco info $pkg | choco upgrade all –noop | choco upgrade all | choco list -l/–local-only |
dnf | dnf install $pkg | dnf remove $pkg | dnf upgrade $pkg | dnf search $pkg | dnf info $pkg | dnf check-update | dnf update | dnf list –installed |
emerge | emerge $pkg | emerge –depclean $pkg | emerge –update $pkg | emerge –search $pkg | emerge –info $pkg | emerge –sync | emerge -vuDN @world | qlist -lv |
eopkg | eopkg install $pkg | eopkg remove $pkg | eopkg upgrade $pkg | eopkg search $pkg | eopkg info $pkg | eopkg update-repo | eopkg upgrade | eopkg list-installed |
flatpak | flatpak install $pkg | flatpak uninstall $pkg | flatpak update $pkg | flatpak search $pkg | flatpak info $pkg | – | flatpak update | flatpak list |
guix | guix install $pkg | guix remove $pkg | guix upgrade $pkg | guix search $pkg | guix show $pkg | guix refresh | guix upgrade | guix package -I/–list-installed |
nix-env | nix-env -i/–install $pkg | nix-env -e/–uninstall $pkg | nix-env -u/–upgrade $pkg | nix-env -qaP $pkg | nix-env -qa –description $pkg | nix-channel –update | nix-env -u/–upgrade | nix-env -q/–query –installed |
opkg | opkg install $pkg | opkg remove $pkg | opkg upgrade $pkg | opkg find $pkg | opkg info $pkg | opkg update | opkg upgrade | opkg list –installed |
pacman | pacman -S $pkg | pacman -Rs $pkg | pacman -S $pkg | pacman -Ss $pkg | pacman -Si $pkg | pacman -Sy | pacman -Syu | pacman -Q |
pkg | pkg install $pkg | pkg remove $pkg | pkg install $pkg | pkg search $pkg | pkg info $pkg | pkg update | pkg upgrade | pkg info -a/–all |
pkg(termux) | pkg install $pkg | pkg uninstall $pkg | pkg install $pkg | pkg search $pkg | pkg show $pkg | pkg update | pkg upgrade | pkg list-installed |
pkgman | pkgman install $pkg | pkgman uninstall $pkg | pkgman update $pkg | pkgman search $pkg | – | pkgman refresh | pkgman update | pkgman search -i -a |
prt-get | prt-get install $pkg | prt-get remove $pkg | prt-get update $pkg | prt-get search $pkg | prt-get info $pkg | ports -u | prt-get sysup | prt-get listinst |
scoop | scoop install $pkg | scoop uninstall $pkg | scoop update $pkg | scoop search $pkg | scoop info $pkg | scoop update | scoop update * | scoop list |
slackpkg | slackpkg install <slackpkg> | slackpkg remove <slackpkg> | slackpkg upgrade <slackpkg> | slackpkg search <slackpkg> | slackpkg info <slackpkg> | slackpkg update | slackpkg upgrade-all | ls -1 /var/log/packages |
snap | snap install –classic $pkg | snap remove $pkg | snap refresh $pkg | snap find $pkg | snap info $pkg | – | snap refresh | snap list |
urpm | urpmi $pkg | urpme $pkg | urpmi $pkg | urpmq -y/–fuzzy $pkg | urpmq -i $pkg | urpmi.update -a | urpmi –auto-update | rpm -q/–query –all |
winget | winget install $pkg | winget uninstall $pkg | winget upgrade $pkg | winget search $pkg | winget show $pkg | – | winget upgrade –all | winget list |
xbps | xbps-install $pkg | xbps-remove $pkg | xbps-install -u/–update $pkg | xbps-query -Rs $pkg | xbps-query -RS $pkg | xbps-install -S/–sync | xbps-install -u/–update | qxbps-query -l/–list-pkgs |
yum | yum install $pkg | yum remove $pkg | yum upgrade $pkg | yum search $pkg | yum info $pkg | yum check-update | yum update | yum list –installed |
zypper | zypper install $pkg | zypper remove $pkg | zypper update $pkg | zypper search $pkg | zypper info $pkg | zypper refresh | zypper update | zypper 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:
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.
Lascia un commento