And holy shit, did I discover how fucked up the Linux "installation" process is.
You have to put your binary (I hope you have only one, otherwise I think you're fucked) into one of either /bin /usr/bin /usr/local/bin God knows fucking where
Then you have to ask-the-average-Joe to install the shared-libraries, because installing them manually is a no-no and defeats all purpose of shared libraries, so it's okay if the library is in the repositories and is not too out-of-date >Ubuntu Xenial (arguably the most widely used Linux/repo, 16.04, the LTS release) has outdated GLFW (I need 3.2 for glfwWaitEventsTimeout function, which is new in 3.2) >literally nothing has libsoundio ( libsound.io/ , github.com/andrewrk/libsoundio ), so you HAVE to fucking ship it and then fuck with linker options (because ld won't look in the current directory, fucking idiot linker) the Joe might succeed with a simple sudo apt-get install, but otherwise he's fucked big time
Then you have to install your .desktop file at either one of /usr/share/applications /usr/local/share/applications God knows fucking where
Then you have to put your icon at something like /usr/share/icons/hicolor/16x16/apps/ /usr/local/share/icons/hicolor/16x16/apps/ God knows fucking where
And here's the BEST PART. None of this fucking mess is not guaranteed to work. The distro can ignore the freedesktops standards, none of the listed paths are guaranteed to exist (even /bin) or work as expected.
So yeah, all I am going to do for my app is this: 1) Flatpak for normies 2) Makefile for neckbeards Everything else is shit.
sounds like you're a newbie and you are frustrated.
Jose Wood
Fuck, I've been on Lubuntu for two years already
On Windows you just put your shit in C:/Program Files, your icon just have to have .ico format, and maybe put a desktop shortcut and you're done.
Compare with the mess above.
Brandon Turner
>.desktop >app icons user, if you want to do that shit just put it on the repos for the package managers yourself or use a file that the package managers can read, don't try to manually install your shit into the user.
Isaiah Diaz
Btw, on Windows everything is guaranteed to work and be uniform
Luke Campbell
Snaps > flatpaks GPL3 > MIT APPARMOR > failure
ps: why do they copy LEDE logo?
Joshua Thompson
So now I have to maintain have a repo for my .deb for each of > Ubuntu 17.10 > Ubuntu 17.04 > Ubuntu 16.04 > Ubuntu 14 > Ubuntu 12 Then I have to have an RPM for > Fedora XYZ > Fedora ZYX > Fedora XZY Then I have to have ARCHPKG for Arch neckbeards Whatever other distros have
And then I have to MAINTAIN all that shit, because new distros with different packages are released every year
Enjoy them re-licensing from MIT down the road and pulling the rug out under you.
Nolan James
Is there a reason Linux programs aren't just compiled for an old version of the OS with statically linked libraries like Windows programs are?
David Garcia
statically linked libraries don't follow the unix philosophy™
Justin Fisher
The neckbeards frown upon you because "muh security" and "muh wasted bytes"
Yeah, you can make a hello world, but once you decide to make anything more complicated it shits its pants > snap run stopwatch libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missing libGL error: failed to load driver: i965 libGL error: unable to load driver: i965_dri.so libGL error: driver pointer missing libGL error: failed to load driver: i965 libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast stopwatch: /build/glfw3-KYdbSD/glfw3-3.2.1/src/input.c:493: glfwSetMouseButtonCallback: Assertion `window != NULL' failed. Aborted (core dumped)
Jason Martin
>anything more complicated
clearly you fucked up with the documentation because theres plenty of applications working on snap at the moment
steam included which involves multi arch libs and can use GL/SDL ect which are multiple outputs
you suggesting they are purposely trying to hide stuff because you are too stupid is hilarious
Bentley Lewis
>you suggesting they are purposely trying to hide stuff because you are too stupid is hilarious And somehow in four days there's no smartass capable of telling me what's wrong It's a one-file program with two libraries available on their repos You can compile it with one command gcc -o stopwatch main.c -lglfw -lGLESv2 And yet, nobody tells me how to make a working snap
I had no problem with flatpak
Alexander Garcia
use appimage op desu
Nathan Howard
1. gcc -static ... 2. put in /bin 3. Youre done
Carson Powell
its most likely a sandboxing issue. you didnt allow proper permissions for it
the reason why you arent getting proper responses is because its such a new standard and the majority of people with experience
ie ubuntu/elementary/solus devs are busy with pushing it out on their next releases
you suggesting they are trying to hide shit just sounds stupid thought.
the whole point of snaps is to allow outside devs and projects to port their programs
just because you dont get a answer in 4 days doesnt mean you should go around bitching and telling lies
try the autobuilder out and document what your process is. then try requesting help on the official forums again build.snapcraft.io/
Adrian Torres
>you didnt allow proper permissions for it I gave *ALL* permissions to it, that is, all interfaces printed by snap interfaces, and it didn't work >build.snapcraft.io/ Thanks, I'll try it
Blake Ramirez
Linux file structure is really annoying. That's why things like GoboLinux exist where everything is in /Programs. But mainstream distros are too retarded and stuck to standarts to implement such a resonable thing
Christopher James
Yeah, I saw gobolinux, it's great but nobody uses it.
Josiah Perez
>-static actually that doesnt work with the GNU stdlib (the default in most distros) you have to use another stdlib like musl
Carter Cruz
this is why I use hackintosh
*nix OS that Just Werks™
Aiden Cook
>actually that doesnt work with the GNU stdlib (the default in most distros) Not him but are you sure? It works fine for me on the Windows GCC ports.
Also, gcc.gnu.org/onlinedocs/gcc/Link-Options.html >-static >On systems that support dynamic linking, this overrides -pie and prevents linking with the shared libraries. On other systems, this option has no effect.
>gcc.gnu.org/onlinedocs/gcc/Link-Options.html thats what the compiler is supposed to do, but afaik you cant create a static library out if the gnu stdlib and ive tried statically linking in the past aswell, hence i started using musl
In a perfect world I would release: 1) A snap 2) A flatpak 3) A .deb for as many different Ubuntu repos 4) A makefile with instructions
Ryan Hughes
Good job OP, totally agree with your decision.
Justin Hernandez
This except appimages > snaps > flatpaks
Jeremiah Wilson
1. Put your binary into /usr/bin. This is universally acceptable.
2. You are free to produce static binaries. No one will complain if you do so. Shared libraries need package manger abstraction which is pretty difficult.
3. .desktop is not necessary. Hence if you think so you can just put it in /usr/local/applications
4. Icons put it in /usr/share/icons/hicolor/DIMENSION/apps/
>Discuss You are just a novice programmer, nothing you mentioned is really the case here.
> all I am going to do for my app is this: > Flatpak Good for you
> CMake I'm 100% certain that you will fail. C/C++ does not have a standard package manager like python, JS, nim, D, Rust etc etc. You will have to endure thousands times more pain than the minor things you just mentioned.
Kevin Price
This. Therefore, my packaging procedure for Linux software looks like this: 1. If the users are lucky, the platform - some engines, for examples - offer built-in installation creation. Otherwise they can build the shit themselves, like I expect from my peer group. 2. If some tosser from bistros like e.g. Debian shows up and suggests changing build tools, release cycles, file hierachy etc. I kindly tell him to piss off. Simplicity itself.
Jaxson Howard
>At least 2 possible locations for everything Linux in a nutshell. Worst part is everybody does whatever the fuck they want, so there's no consistency.
Jason Baker
Exactly, you can choose to put your binary anywhere and the end user won't feel a thing. Unlike a cuck OS that I know of.
Jose Myers
Trips don't lie.
>doesn't know standards exist >complains about freedom stfu
Alexander Taylor
NixOS puts everything in /nix/store and doesn't have this problem
Isaiah Bell
Link statically icon = harmful bloat .desktop = harmful bloat put everything in bin. simple. also i bet you also used a makefile cuck
Usually I just use my package manager or compile, but out of all this memeshit I've used appimage once when I tried rpcs3. I downloaded it and double clicked and it just werked.
Caleb Hughes
This
Julian Richardson
guix doesn't work with proprietary apps
Ian Roberts
>bloat I produce software for the normies
Justin Moore
>normie using a linux
Luis Miller
>what is Ubuntu >what is Ubuntu Software Center >what is 3% and rising (protip: that's normies coming in slowly)
William Gray
Times have changed.
Mason Cruz
then put it in fucking ubuntu software center, then package the real way for the rest of us
also it's still about 1
Tyler Carter
Just do a makefile. If someone wants to package your shit for a specific distro they can do it themselves.
Matthew Perry
>what is appimages >what is snaps >what is flatpaks
Nathaniel Anderson
>not just releasing versioned tarballs with standards-compliant Makefiles and letting distro maintainers maintain the deb/rpm/ebuild/spell/whateverthefuckarchuses It just werks
James Brooks
what is disgusting bloatnet what is disgusting bloatnet what is disgusting bloatnet make is the standard way since 1980
Well I don't really know, I didn't touch windows for two yeards now, but C# and Java should be harder to deploy since it's an additional level of indirection from hardware
They can't be installed. This means no start-menu entry, no icon, no panel launch shortcut.
Sebastian Morris
This is why you create a PPA and put all the deps on your PPA.
Chase Gutierrez
building a proper package is a challenge on any platform
on Windows it's the poorly documented and obscure mechanisms + insane approach to shared objects all of this exacerbated by the additional complexity of getting .NET or Java (etc) shit to run
on Linux it's the endless fragmentation and the fact that you can only do it correctly if you software is freely redistributable
Ayden Robinson
macOS doesn't have this problem =]
Jace Edwards
That's fine, musl is better anyway.
Levi Lopez
FreeBSD doesn't have this problem.
Everything is in a proper place from configs to libs to data.
Julian Turner
>Lying THIS hard
Jordan Watson
AppImages run into the same issues as the Steam runtime.
Justin Perry
>i don't understand how file system hierarchy works >linux is bad
Henry Ward
>Lying THIS hard been running FreeBSD since release 5, why the fuck would I lie?
Angel Scott
Unless your application is a system application it should go in /usr/bin. Usually /usr/local is used for local overrides so you shouldn't have your application install there.
Wyatt Bell
>/usr/bin. This is universally acceptable. false >/usr/local/applications >/usr/share/icons/hicolor/DIMENSION/apps/ so you're just an idiot that sprays shit in random directories
Nathaniel Walker
the retard can't find his way around the filesystem and you expect him to know how to write a makefile?