Linked by Thom Holwerda on Mon 23rd Jun 2008 16:51 UTC, submitted by sjvn
Linux Installing software on Linux. In the world of online minefields, this is the big one. Back in the day, you installed software on Linux by compiling it manually. Time-consuming, but assuming you had a decent knowledge of gcc, make, and maintaining library files, this could actually work. Later one came the package management systems that were supposed to make installing software on Linux a breeze: rpm, dpkg, and so on, and so forth. Since human beings have the innate tendency to assume that everyone else is wrong and only they are right, we are now stuck with 3453495 different Linux package managers. Denis Washington, a Fedora developer, is taking steps to resolve this issue.
Thread beginning with comment 319645
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[3]: ...
by leos on Tue 24th Jun 2008 03:37 UTC in reply to "RE[2]: ..."
leos
Member since:
2005-09-21

Try compiling a C++ app on one linux distro and running it on another. Doesn't work, unless the distros in question track the same core debian release or something.


Ha. Try compiling a C++ app on Windows and deploying it to another machine. Doesn't work. Unless of course you bundle all the runtime libraries for the compiler you're using into your installer. Guess what, the same thing works on Linux. Include all your dependencies with the app and binary compatibility is no problem.

The reason binary compatibility is harder on Linux is because Linux apps actually try to share libraries, instead of each app bundling everything they need and then loading X copies of it in memory. Bundling everything is easier, but not very efficient.

Reply Parent Bookmark Score: 7

RE[4]: ...
by Almindor on Tue 24th Jun 2008 07:18 in reply to "RE[3]: ..."
Almindor Member since:
2006-01-16

No, no it doesn't.

If you compile on newer distro and put it on older distro, even with all libraries, it won't work because of [gay]libc.

The problem is that you can't distribute libc itself (because the kernel API and ABI changes), but your apps/libs depend on a specific libc abi too (GLIBC_2_XX required errors).

So.. no, you don't really know what you're talking about. If you need a nice eyesore for compatibility, have a look at statfs.h file in linux. See that OFFSET define? Know what that can cause? I do.

Reply Parent Bookmark Score: 2

RE[5]: ...
by leos on Tue 24th Jun 2008 18:40 in reply to "RE[4]: ..."
leos Member since:
2005-09-21

If you compile on newer distro and put it on older distro, even with all libraries, it won't work because of [gay]libc.


Forward compatibility is different than backward compatibility. The low level interfaces (glibc and especially the kernel) do not change very often at all, and distros generally ship older versions for a long time. You can't expect to build an app on a new distro and distribute it to something years out of date. However, if you build it on the old distro it will likely run on the new one as well. That's pretty much standard practice for software development.

>> [gay]libc

Yeah real mature.

Reply Parent Bookmark Score: 2