Most open source software follows a certain set of conventionsone that the community has adopted as a de facto standard:
? The software is packaged in compressed tar format (
? A
? The
? Basic documentation, including pointers and licensing information, is contained in files with uppercase names such as
To install software distributed this way:
1. Obtain the compressed tar file (or
2. Unpack the tarball:
3. $ tar xvzf
4. xmorph-current/
5. xmorph-current/Makefile.in
6. xmorph-current/gtkmorph/
7. xmorph-current/gtkmorph/ChangeLog
8. xmorph-current/gtkmorph/Makefile.in
9. xmorph-current/gtkmorph/README
10. xmorph-current/gtkmorph/Makefile.am
11. ...(Lines snipped)...
12.
13. If the file is compressed with
14. $ tar xvjf
Most tarballs will unpack into their own directory, but some badly packaged ones may not, and unpacking them will leave dozens of files in your current directory. Use
$ tar tvzf
1. Change to the new directory:
2. $ cd
3. Review the notes that are provided with the software (such as the
4. If there is a script named
5. $ ./configure
6. checking for a BSD-compatible install... /usr/bin/install -c
7. checking whether build environment is sane... yes
8. checking for gawk... gawk
9. ...(Lines snipped)...
10. The Makefile will build morph.
11. The Makefile will build xmorph.
12. The Makefile will build gtkmorph.
13. configure: creating ./config.status
14. config.status: creating m4/Makefile
15. config.status: creating po/Makefile.in
16. config.status: creating Makefile
17. config.status: creating doc/Makefile
18. config.status: creating libmorph/Makefile
19. config.status: creating morph/Makefile
20. config.status: creating xmorph/Makefile
21. config.status: creating gtkmorph/Makefile
22. config.status: creating glade1/Makefile
23. config.status: creating glade2/Makefile
24. config.status: creating tkmorph/Makefile
25. config.status: creating plyview/Makefile
26. config.status: creating config.h
27. config.status: executing depfiles commands
28. config.status: executing default-1 commands
29. config.status: creating po/POTFILES
30. config.status: creating po/Makefile
31. Use
32. $ make
33. make all-recursive
34. make[1]: Entering directory Q/tmp/xmorph-current'
35. Making all in m4
36. ...(Lines snipped)...
37. if /bin/sh ../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I..
38. -g -O2 -Wall -DREAL=double -DRGBA_MESH_WARP -g -O2 -Wall -MT
39. my_malloc.lo -MD -MP -MF '.deps/my_malloc.Tpo'
40. -c -o my_malloc.lo Qtest -f 'my_malloc.c' || echo './'Qmy_malloc.c;
41. then mv -f '.deps/my_malloc.Tpo' '.deps/my_malloc.Plo';
42. else rm -f '.deps/my_malloc.Tpo'; exit 1;
43. fi
44. ...(Lines snipped)...
45. make[2]: Leaving directory Q/tmp/xmorph-current'
46. make[1]: Leaving directory Q/tmp/xmorph-current'
If you have a multiprocessor or multicore system, use make -j3, assuming it's not also a multiuser machine and you don't mind two cores/CPUs being utilized at 100 percent.
1. If
2. # make install
3. Making install in m4
4. make[1]: Entering directory Q/tmp/xmorph-current/m4'
5. make[2]: Entering directory Q/tmp/xmorph-current/m4'
6. ...(Lines snipped)...