On Sun, 2007-02-04 at 11:09 -0500, Rami Michael wrote:
> #1.  Most of these apps have a lot of requirements when you build
> them, for example libpcap-devel or gnome-something-devel.  I realized
> I do not need the "*devel*" rpms to be installed on the boxes i was
> compiling to.  However, since there is no dependancy checking when I
> copy something over how can I know that the libpcap libraries actually
> exist?  I assume my app will bomb out in the middle?

Or bomb out right at the start, which is when shared libraries are
usually loaded. For many applications you can use a --disable-shared
flag in a configure file so that the library becomes part of the binary
you build. This will increase file size, sometimes dramatically, but
will often make the application start faster and will make it much more
likely to work when copied to another system.

If you know there are particular shared libraries, you can build local
(i.e. in /usr/local/lib) versions and copy them too.

> 
> #2.  If I compile something on 586 openSuse will it work in 586 CentOS
> ?  Is this just not a smart thing to do?  Should you only copy between
> the same distro?

You should be fine unless you pass specific flags to the compiler.
Typically I use something like

$ export -march=pentium4 -O2 -mfpmath=sse -msse -msse2 -malign-double
-Wall -pipe -Wno-long-long
$ ./configure

Without the first line, I get a generic binary that should run on
different distros (as long as they are based on basic i386 IIRC). With
the flags, it will only run on systems with newer P4 chips, though
should still be distribution-independent. As an example, I've compiled
gcc itself on one system and then copied the binaries to another. It
works.

> #3.  is there any way to keep track of the files installed?  Or am I
> doing something findamentally wrong?  Do I ./configure and make on one
> system and then do a make install on all of them?
> 
Make sure they are all installed in /usr/local rather than anywhere
else. Then you can typically copy the files in /usr/local/bin from one
system to another without problems. SuSE doesn't install files
to /usr/local/ and you're unlikely to overwrite anything (such as fonts
in /usr/local/share/fonts) that you might otherwise have installed
locally.

There are alternatives, such as building in a subdirectory of /opt,
but /usr/local is searched for binaries; so no special configuration is
required.

> #4.  How does one easily uninstall stuff that is installed by these methods?

If you haven't too many files, it's usually easy to identify and deleted
the required ones from /usr/local/

make uninstall usually (but not always) removes all the files associated
with a particular application).

You could also try setting up rsync to mirror the whole /usr/local tree
from one machine to another. Then when you delete files on the build
machine (e.g. with a make uninstall) rsync (with --delete flag IIRC)
from another machine will automatically delete the required files for
you.

-- 
JDL

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to