LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   how do non-programmers deal with apps available only as sourcecode? (https://www.linuxquestions.org/questions/linux-newbie-8/how-do-non-programmers-deal-with-apps-available-only-as-sourcecode-778974/)

belliott4488 12-30-2009 05:54 PM

how do non-programmers deal with apps available only as sourcecode?
 
I just came across the Speed Dreams game (http://speed-dreams.sourceforge.net/) and thought I might try it out, but as is so often the case, I can find only source code for download, and no binaries for Linux (annoyingly there are binaries for Windows).

Once again I'm stumped because I'm not a software developer, so the instructions are near meaningless to me. I see that before attempting to build the software I should verify that I have certain libraries installed, but I barely know what a software library is, let alone where to look to see if I have a particular one installed.

What should I do? Should I just walk away and resign myself to using only software applications that my package manager can install for me? Are all those applications that are available only as source code meant only for developers?

This is very frustrating for me, since so often when I run into a problem on Linux (I'm running Fedora 11 64-bit, BTW), the recommended solution is to recompile something so that it will run on my system. WTF? I can type "make", but don't me what in the world happens when I do. It's pure luck if it works, and if it doesn't, then I'm dead in the water.

Is Linux really still meant primarily for software developers? Is there - or should there be - a clear distinction between software apps that can be installed by a reasonably savvy end user vs. those that require some knowledge of programming?

cg40oz 12-30-2009 06:19 PM

Have a thought about creating a virtual machine and then trying to build the application in the virtual environment? That way if the compile goes bad and crashes you at least only broke a virtual machine.

XavierP 12-30-2009 06:26 PM

In the tarball your grabbed, is there a README or INSTALL file? They usually give installation instructions. Normally it will be ./configure, make, make install (as root) but check for those 2 files.

evo2 12-30-2009 08:20 PM

You don't need to be a programmer to compile code. You just need to follow instructions. If the instructions don't make sense, do some research to fill the gaps in your knowledge. Most of the problems you mention in your post have nothing to do with developing software, they are related to understanding your system and the tools it comes with.

Quote:

Is Linux really still meant primarily for software developers?
Far from it. The average Ubuntu user probably wouldn't even know what gcc is.

Quote:

Is there - or should there be - a clear distinction between software apps that can be installed by a reasonably savvy end user vs. those that require some knowledge of programming?
That depends on how your define "a reasonably savvy end user". If you mean someone who has been happily riding his mouse around his desktop, clicking on icons in MS windows for a few years, then your definition would be different to mine. The point is that if you want to go beyond your package manager you need to understand your system. Understanding windows does not mean you understand your linux system.


Evo2.

belliott4488 12-30-2009 11:48 PM

Quote:

Originally Posted by cg40oz (Post 3809387)
Have a thought about creating a virtual machine and then trying to build the application in the virtual environment? That way if the compile goes bad and crashes you at least only broke a virtual machine.

I don't even know what that means ... I know that people run Linux on Windows machines using a VM (or vice versa), but I didn't know you could run a Linux VM in an actual Linux environment (if that's what you meant).

So, obviously, no - I haven't considered trying that. More to learn ...

belliott4488 12-30-2009 11:51 PM

Quote:

Originally Posted by XavierP (Post 3809391)
In the tarball your grabbed, is there a README or INSTALL file? They usually give installation instructions. Normally it will be ./configure, make, make install (as root) but check for those 2 files.

Yes - the INSTALL file lists some prerequisite libraries, but I wasn't sure how to check to see if I had them. I tried "which" and "locate" with what I thought were likely filenames, but they came up empty.

Next I just tried running the configure file, which naturally complained about missing stuff, but I wasn't sure about where to get some of it. So, I'm just trying to figure out what it needs now.

belliott4488 12-31-2009 12:29 AM

Thanks - this really gets to the heart of my current frustration. I'm not really worried about being able to build this particular game application; it's more a matter of my periodically getting tired of always having three or four things that need to be fixed on my Linux box at any given time. I don't think I've ever had a Linux system where everything was working all at the same time.
Quote:

Originally Posted by evo2 (Post 3809450)
You don't need to be a programmer to compile code. You just need to follow instructions. If the instructions don't make sense, do some research to fill the gaps in your knowledge. Most of the problems you mention in your post have nothing to do with developing software, they are related to understanding your system and the tools it comes with.

Yeah, I know ... I guess that's just it - I've never really understood the default directory structure or the purpose of all those hundreds of files in /usr, /var, /etc. When I get instructions that say I need (for e.g.) "OpenAL soft 1.5", but I have no idea what it is or where to look for it, often I just put it off for later rather than starting down another endless path of Google searches trying to track down software libraries whose function I don't really understand. It just gets tedious.

Quote:

Originally Posted by evo2 (Post 3809450)
Far from it. The average Ubuntu user probably wouldn't even know what gcc is.

That what I would think, but I wonder how the average Ubuntu user decides which compiler to install, or which version of openGL he should find and download.

Quote:

Originally Posted by evo2 (Post 3809450)
That depends on how your define "a reasonably savvy end user". If you mean someone who has been happily riding his mouse around his desktop, clicking on icons in MS windows for a few years, then your definition would be different to mine. The point is that if you want to go beyond your package manager you need to understand your system. Understanding windows does not mean you understand your linux system.

No, I mean more than that - I really mean me, so let me introduce myself (probably should have done this up front - sorry!)

I wrote my first computer program some time in the 1970's, so I'm not exactly new to computers. That was BASIC, though, so I never used a compiler until I started writing FORTRAN in the 1980's. I took a course in C++ in the late 90's, but I've never used it professionally, so I've never gotten good at it. Nowadays all my programming is in scripting languages, primarily the m-code used by Matlab.

As for OS's, I mainly worked on VMS on a VAX and MS-DOS on PC's in the 80's. I also occasionally worked on Unix systems in the 1980's and 1990's, but I really didn't use it regularly until 2004 or so, when I used it at work for a while and also got my first Red Hat Linux system at home. I've worked with Windows as long as it's been around.

So I guess my point is this: if I have to, I can usually figure out how to get things to work on whatever computer I'm using, but there are times when the shear volume of stuff I have to learn to get things working on my Linux machine gets kind of overwhelming. I'm sure it gets better eventually.

evo2 12-31-2009 01:22 AM

Hi belliott4488,

Quote:

I really mean me, so let me introduce myself
<snip>
ok, it seems you have significantly more knowledge/experience than I assumed.

The place to start is by understanding the output of configure, and how to use your package manager to search for the missing libs and headers. I know that this post was not about compiling a specific program, but if you have something that you've been unable to satisfy the dependecies for, please post the output from configure, and we can find what packages you need to install. In doing so, you will hopfuly learn a bit more about your system, in particular how to workout what packages provide what libs and headers.

This should help you solve similar problems that you may encounter in the future.

Cheers,

Evo2.

londy 12-31-2009 01:42 AM

I almost never need to compile anything but for times like these it's good to use a popular/beginner friendly distro like Ubuntu. Speed Dreams has a .deb for Ubuntu which was just posted yesterday.

http://www.webupd8.org/2009/12/speed...buntu-deb.html

Maybe you can use "alien" to convert it to a rpm, I don't know.

cg40oz 12-31-2009 10:43 AM

belliott4488,

You can have linux in a vm and run linux as the host operating system. You can use vmware server or vmware player in linux and virtualize any other OS.

jefro 12-31-2009 04:26 PM

You can't take windows binaries and try to compile them on linux.

Well, not easily. It is very difficult to port an application even if you have all the required software and training.

vigi 12-31-2009 05:15 PM

I started with mandrake a few years back, but found it too difficult due to hardware issues at the time. Revisited linux with ubuntu, and now on to slackware. There are so many shortcuts to a binary, that I have never needed to compile anything. I use src2pkg for the odd application I need. It works from a source.tarball as well as other binaries. Surely there is a similar converter for rpm systems?

allanf 12-31-2009 05:24 PM

Assuming that the installation included the compilers, make, linkers...

Also remember that all file and directory names are case-sensitive!

(The tar-ball was created using a "tar" (Tape ARchive) command and may or may not be compressed. This program has not been restricted to "magnetic tapes" for nearly forever but the name stayed.)

The most common tar-ball package contains the needed information within it to build the product. The needed piece of information is how to untar the tar-ball. That is easy also.

Bring up a "terminal" (usually under "system" in the menus). Use the "cd" (Change Directory) command to move to the location that has the downloaded tar-ball. Verify that the tar-ball is there by using the "ls" (LiSt directory contents) or "ls -l" commands.

for example:
cd ~/Desktop
ls -l

When you are in the directory that has the tar-ball of interest, continue past this point.

Since you are new to this I will walk you through creating a directory, moving into it and then eXtracting the files from the tar-ball. (By creating and moving into the directory, you will only see the extracted files and directories.) The "mkdir" (MaKe DIRectory) command is used to create a new directory (folder to some people).

mkdir temporary_build_dir
cd temporary_build_dir
tar xf ~-/TAR-BALL-FILENAME-GOES-HERE

(NOTE: that the "~-/" says with the previous directory location.)

ls -l

Use the "cd" command to move into the directory present, looking for files named
README (or starting with README)
INSTALL (or starting with INSTALL)

The INSTALL file explains the building steps to build and install the software. Typical
steps are:

./configure
make
then as user "root"
make install

The "tar" command can be asked to show the "Table-of-contents" (like an ls but for its contents) via the command:

tar tf TAR-BALL-FILENAME-GOES-HERE
or
tar tvf TAR-BALL-FILENAME-GOES-HERE


By the way, the "system administrator" (normally NOT a programmer) is the person that does these builds an installs in the real world work places.

allanf 12-31-2009 05:33 PM

Quote:

Originally Posted by belliott4488 (Post 3809591)
I really mean me, so let me introduce myself (probably should have done this up front - sorry!)

I wrote my first computer program some time in the 1970's, so I'm not exactly new to computers. That was BASIC, though, so I never used a compiler until I started writing FORTRAN in the 1980's. I took a course in C++ in the late 90's, but I've never used it professionally, so I've never gotten good at it. Nowadays all my programming is in scripting languages, primarily the m-code used by Matlab.

As for OS's, I mainly worked on VMS on a VAX and MS-DOS on PC's in the 80's. I also occasionally worked on Unix systems in the 1980's and 1990's, but I really didn't use it regularly until 2004 or so, when I used it at work for a while and also got my first Red Hat Linux system at home. I've worked with Windows as long as it's been around.

So I guess my point is this: if I have to, I can usually figure out how to get things to work on whatever computer I'm using, but there are times when the shear volume of stuff I have to learn to get things working on my Linux machine gets kind of overwhelming. I'm sure it gets better eventually.

To bad that in the 74 or 75 you did not take the correct path which was UNIX. I started in computers in 1971, moved to UNIX (pdp and VAX machines) then to CDC 3200, CDC 6600, CDC Cyber 74, Sperry Univac 1100/80, several other models of the 1100, Apollo DN 1000 workstation, Sun Workstation, HP-UX workstation, AIX workstation, IRIX workstation, and in 1993 added in Linux along with the other UNIX workstations. Like a maid, "I do not do Windows".


I found that the site http://lowfatlinux.com/ has very nice non-geeky tutorial for Linux.


All times are GMT -5. The time now is 04:20 AM.