5 ms·
I tend to agree with you, but I really like updating all my software with one click/command. So out of curiosity: My application is already self contained and
by lawl 6y ago
I tend to agree with you, but I really like updating all my software with one click/command.
So out of curiosity:
My application is already self contained and statically linked, so no AppImage needed, but it behaves like one, you can just run download and run it everywhere. And so what you're describing will be for sure an option for those who like it (in fact currently it's the only option in alpha).
How would you like to get updates for something like this? Visit the website yourself occasionally to check for updates? Have the application notify you a new version is available? Have an integrated updater so the binary can update itself?
- still_grokking 6y agoThat's easy. It should be officially in Debian. ;-) Stuff like AppImage, static binaries, Docker & Co are for me at least a kind of "last resort". Even I'm using Docker a lot[1] to try things out I first look for an AppImage in those cases. But when I decide that some app should become part of my system I will look for a proper package. One source to rule them all… [1] Docker is a big problem on it's own. But as I can't avoid to have it installed because of work I decided I could use it at least to "keep experiments under control". Before I was forced to have Docker I've used systemd-nspawn for that use-case.
- petre 6y agoDebian has a lot of rules, some of which prevent statically linked binaries, like Go programs, from being packaged and shipped with it. A notable example is lxd. Appimages are great but there's no sandboxing or updates. But hey, we used to downlad debs and install them by hand on Debian 1.3, before apt was a thing. Maybe appimages could be signed and distributed in a similar fashion.
- viraptor 6y ago> prevent statically linked binaries, like Go programs What do you mean? There's debian go packaging team: https://go-team.pages.debian.net/ https://go-team.pages.debian.net/ as well as go packages in stable (for example https://packages.debian.org/buster/influxdb https://packages.debian.org/buster/influxdb)
- ReallyOldLurker 6y ago"Appimages are great but there's no sandboxing or updates" Actually there is sandboxing and updates, if you want to take an extra steps. I prefer AppImages over Flatpack and Snaps for essentially the same reasons commented above. I typically launch them with Firejail for the sandboxing. i.e. "firejail --appimage /path/to/appimage" instead of just the appimage alone. Seems to work just fine. Firejail has additional options that can be done. Some AppImage creators do provide an update method that can be installed using zsync2, but I've not tried it since the whole point is disposability.
- cyphar 6y agoGo programs are not (generally speaking) statically linked, unless you're explicitly doing CGO_ENABLED=0, -tags 'netgo' and the whole variety of other tricks needed to coax static binaries out of the compiler. Try running "ldd" or "file" on your Go binaries -- most of the time they'll be dynamic objects and linked to glibc, especially if you're just doing a stock "go build". In addition, Debian definitely does package Go programs -- they've packaged some of mine and they have possibly the most ambitious way of solving the great vendor/ issue (which most other distributions have ignored). The likely issue with LXD is that they require specific versions of various system libraries that they package in their source code bundles (including a fork of sqlite3!). I packaged LXD for openSUSE[1]. It wasn't really fun, but it is fairly doable if you have a flexible enough view on "good packaging practices" (and I imagine Debian packagers didn't feel like going through all the necessary workarounds -- which includes patching the ELF binary in the openSUSE case). And note that LXD isn't even a static binary -- I tried to compile it statically to get around a whole range of issues and it was a nightmare. [1]: https://build.opensuse.org/package/show/Virtualization:containers/lxd https://build.opensuse.org/package/show/Virtualization:conta...
- Izkata 6y ago> Appimages are great but there's no sandboxing or updates. I know nothing about AppImages, but up above someone said they do have updates: https://news.ycombinator.com/item?id=23773878 https://news.ycombinator.com/item?id=23773878
- pjmlp 6y agoGo also supports dynamic linking actually.
- pabs3 6y agoUnfortunately even micro releases of the Go compiler break ABI, so Go dynamic linking isn't feasible for distros to use: https://wiki.debian.org/StaticLinking#Go https://wiki.debian.org/StaticLinking#Go
- cyphar 6y agoThere are two types of "static linking" being discussed: * Linking with system libraries (what GP mentioned). * Linking with Go packages (what you're talking about). Yes, Go doesn't really support -buildmode=shared anymore (and it was pretty broken from the outset). But this is a separate question to whether a Go binary is actually a static object. In most cases (and by default), Go binaries are dynamically linked to system libraries (with Go packages being statically linked into the program).
- pabs3 6y agopjmlp's comment seemed to be about Go packages to me, not system libraries.
- cyphar 6y agoThe original comment[1] spoke about "statically linked binaries" which has a pretty specific meaning ("file" says its a static binary). There are similar issues for Debian packaging if you had a hypothetical language which required you to vendor your dependencies because maintenance for security issues would be annoying (Debian worked around this problem in Go through "de-vendoring" and Go modules -- in theory -- mostly solve this issue today). But static binaries are generally not distributed in distributions because they make make core library updates worse in terms of download size as well as inflating memory usage due to lack of page-cache sharing. [1]: https://news.ycombinator.com/item?id=23773480 https://news.ycombinator.com/item?id=23773480
- pantalaimon 6y agoWhere can I find an up to date guide on how to package software for Debian and what to do to get it included in the repository? I’ve often came across orphaned packages where Debian was stuck with an old version, but didn’t know what to do about it other than installing from source. Or using a PPA if I was lucky.
- paxswill 6y agoFor the first part, I found Debian’s Maintainers’ Guide [0] pretty helpful when I was updating xscreensaver last year (hasn’t been uploaded yet though...). It also has a section at the beginning concerning how to adopt orphaned packages. For upstream updates, some projects will have a way to create deb packages themselves, which can make installation/updates easier later on (concrete example, with OpenZFS can create RPMs and debs from the upstream tree). 0: https://www.debian.org/doc/manuals/debmake-doc/index.en.html https://www.debian.org/doc/manuals/debmake-doc/index.en.html
- AnIdiotOnTheNet 6y agoPersonally, I rarely think about updating my software unless there's a new feature I need or a fix for a bug that's been ruining my life, so just visiting the website when to check for new versions is fine by me. However, you could also include a facility to manually check for updates and either self-update or just show the changelog. Why manually? "I know you're about to do this thing real quick that needs to get done, but a new version is available! Would you like to twiddle your thumbs for 5 minutes while watching a progress bar?".
- ric2b 6y ago> Why manually? "I know you're about to do this thing real quick that needs to get done, but a new version is available! Would you like to twiddle your thumbs for 5 minutes while watching a progress bar?". That's a very Windows-centric point of view. Programs on Linux can be updated without closing them. You get the new version when you restart them.
- vpzom 6y agoFirefox has entered the chat
- Phrenzy 6y agoChocolaty GUI for Redmond. sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && echo 'All done!, rebooting' && sudo reboot now For everything else.
- pjmlp 6y agoIt only works if they are self contained without access additional resources on the file system, as the executable file is kept alive until process termination. Now if the process tries to access some datafiles that changed contents during the upgrade, it might just crash and burn, eventually corrupting data in the process.
- michaelmrose 6y agoIdeally security updates aren't deferred for 5 years because its working well enough and happen for the whole system when you aren't using the machine as opposed to just for that app when you launch it.
- dflock 6y agomost AppImages seem to auto-update themselves when you run them, which is convenient, until it isn't. I'd want it in an apt repo, really.
- m4rtink 6y agoThat actually sounds pretty dangerous - what is more likely to get compromised and stay that for a long time - a random developpers app image update service or distro infrastructure ?
- yellowapple 6y ago> How would you like to get updates for something like this? Visit the website yourself occasionally to check for updates? Have the application notify you a new version is available? Have an integrated updater so the binary can update itself? I've seen all three approaches with AppImage'd software. There are also package managers specifically for AppImage'd software, though it doesn't look like any of 'em are particularly mature.
- wahern 6y agoPlenty of software companies provide their own Apt repositories. Adding a repository is usually as simple as copying a single file to /etc/apt/sources.list.d/. Sometimes you may also need to add a GPG key, which can also be as simple as copying a file to /etc/apt/trusted.gpg.d/ (though most instructions seem to favor a manual one-liner that imports the key to the global database[1]). Technically you could automate both with a one-time deb install, though I'm not aware of anybody that actually does this. In any event, after that `apt-get upgrade` will upgrade third-party packages just as well as Debian or Ubuntu packages. I much prefer Debian packages over RPM, and Apt over Yum/DNF, but unfortunately setting up a Debian package repository is more difficult than for RPM. The tools exist, and are more sophisticated and capable--for example, Aptly--but there's a higher learning curve. Also, good luck using them outside Linux. Years ago I published Debian package repositories from OpenBSD, but I had to manually hack the relevant tools to build and work on OpenBSD. For RPM/Yum I could have more easily written (and at a different job later did) an indexing tool from scratch. The problem with Debian packages and Apt repositories isn't that they're not capable, it's that they have high learning curves due to the slow accretion of features that obscure their potential. A better tooling story would help, particularly for repositories. Better tools for initializing Debian package builds exist; the problem is more a surfeit of choices. [1] It's more complicated and creates unnecessary headaches than dropping a file into trusted.gpgp.d, but the practice seems to reflect the opacity of the Debian packaging ecosystem. There's a better, simpler way to do it, but everybody cargo cults the same old solutions and then complains that it's too complex or inelegant.