<div id="geary-body" dir="auto"><div>It is worse than I thought. Here are the ways that programs are installed on my PC:</div><div><br></div><div>* Debian packages installed from official repositories</div><div>* Debian packages installed from numerous PPA repositories</div><div>* Snap installs from some Snap store -- is there more than one?</div><div>* AppImages downloaded from arbitrary websites, and manually moved to either ~/bin</div><div>* AppImages downloaded from arbitrary websites, and somehow ended up in ~/.local/bin</div><div>* Flatpack installed from flathub</div><div>* Flatpack installed from the applications' private flat-stores</div><div>* Python packages installed using 'pip', from py-pi</div><div>* Python packages installed using 'pip' from some other Python package place</div><div>* Source code tar file downloaded from the applications' website, then built manually 'configure; make; sudo make install', ending up in /usr/local</div><div><div>* Source code version control repository cloned, then built manually 'configure; make; sudo make install', ending up in /usr/local</div></div><div>* Tar file with precompile binaries downloaded, unpacked (usually into /opt) then created symlink in '~/bin'</div><div>* Single precompiled binary downloaded from some website, then moved to '~/bin'</div><div>* Personal scripts in '~/bin' to set-up before and tear-down after some other program (eg. always pass specific arguments, to run pasuspender, or to set environment variables), or just to give it a nicer name. These are version controlled.</div><div>* Command interpreter aliases used for the same purpose. I prefer one-line scripts in '~/bin' as they can be version controlled.</div><div><br></div><div>Note: after downloading stuff from random web sites, I usually remember to compare the hash before using it. This does assume that I trust that web site...</div><div><br></div><div>No wonder it's confusing.</div><div><br></div><div>Stephen Irons</div></div><div id="geary-quote" dir="auto"><br>On Tue, Aug 25, 2020 at 11:29, Stephen Irons <stephen@irons.nz> wrote:<br><blockquote type="cite"><div id="geary-body" dir="auto"><div>General grumble</div><div><br></div><div>There used to be a few packaging systems (deb, rpm, emerge, pacman, etc), but each distribution chose Their Way and it was the Only Way for that distribution. Of course, every thought Their Way was The One True Way. But at least I knew how to update a package.</div><div><br></div><div>However, we now also have 'portable' packaging systems (AppImage, Flatpak and Snap and probably others) which can be installed on any distribution.</div><div><br></div><div>Then Python has its Way too (pip), and I see that I have at least one Useful Program (youtube-dl) installed using this Way.</div><div><br></div><div>Some applications choose only One Way to release their software, so I have to use that Way to install the software, so, in general, I cannot settle on a single Way, even if there were a Preferred Way. So now, the burden is on Me to remember which Way each application has chosen.</div><div><br></div><div>Specific problem</div><div><br></div><div>I am trying to update Musescore to version 3.5.3 on Ubuntu 20.04. I am using version 3.2.3. Approximately this version (3.2.3-and-some-change) exists in the Ubuntu repos, but this is not installed. I remember installing one of the portable versions when 3.2.3 was the Next Best Thing, before it was available as a deb in the repo. But I cannot remember which Way I ended up using.</div><div><br></div><div>Musescore makes new versions available as AppImage, Flatpak and Snap; these eventually end up in the Ubuntu repo some month later.</div><div><br></div><div>When I auto-complete 'musescore' it completes as 'musescore-portable' which 'which' tells me is '~/.local/bin/musescore-common'. There also exists '~/.local/bin/mscore-common', where 'mscore' used to be the name of the executable when people thought that shorter executable names were better.</div><div><br></div><div>*** Does anyone recognise which Way would install a binary as '~/.local/bin/xxx-portable'?</div><div><br></div><div>General questions</div><div><br></div><div>*** Is any one of these packaging systems (AppImage, Flatpak, Snap, Python pip) significantly better or worse than any other? What are the pros and cons?</div><div>*** Are there any rules of thumb to work out which Way to update an arbitrary program?</div><div><br></div><div>Thank you</div><div><br></div><div>Stephen Irons</div><div><br></div></div></blockquote></div>