RPM (RedHat Package Manager) and DEB files are package files. It means that a single .rpm or .deb file (there are other package formats, by the way) includes a lot of stuff: files of the program (or something else) inside, pre-/post-install scripts, information about dependencies etc. Binaries, on the other hand, are precompiled files that are meant to be executed. Binaries, along with the other needed files, are distributed in (along others) .deb or .rpm (or equivalent) files; this is because it's handy that way. Package managers can handle .rpm files and alike, they can be installed and removed (manually) easily etc. An .rpm file is something like "Setup.exe" or "Installer.msi" on Windows: techies will say I'm wrong but if you want to get the idea easily, it's ok. Those mentioned file types on Windows include files and some data to put them around your harddisk, mess around with registry etc. and that's what rpm and deb files are for: only the structure is different.
It depends on the kernel of the operating system whether or not you can run a binary on it. You can't run Windows binaries (.exe files) on Linux without an emulator of some kind, neither can you run Linux binaries (for example 'xterm' grabbed off a Linux system) on Windows. If the kernel of FreeBSD can run Linux programs, then it can; both Linux and FreeBSD are Unix variants of one kind.
EDIT: you know that on some sites like SourceForge, projects distribute their programs (for example) in .tar.gz or .bz2 files or equivalent; those are compressed archives, somewhat similar to .zip files. That's one way: usually source code is distributed that way (you'll then unpack and compile the code yourself). RPM, DEB etc. packages are another way of distributing the programs: they already hold the information of what to do with the files inside (so you don't have to manually move files around, the package installation program rpm or apt or something does it for you, like the package instructs), and some of them hold pre-compiled binaries. There are source .rpm or .deb packages as well, RPM source packages often have a suffix .src.rpm and they don't include precompiled binaries but the source code: again you don't have to self move the unpacked code around, once you install the .src.rpm package, (for example if you used rpm) rpm reads what the package instructs and installs the source code into the given directory. After this you deal with it. The point of this kind of packages is that when they are used to add and remove software to/from the system, files are in the right place (i.e. you don't put binaries in /usr/lib or libraries to /sbin yourself) and managing program installs, removals and updates is easy (no need to always remove, re-compile and reinstall stuff -- one command is enough) provided that all dependencies are met (you have installed or obtained other packages that need to be installed before some others). Package managers are then a next step: in addition to installing and removing those packages they can even calculate what other packages you need to install in order to get some package X installed, then obtain those packages and even install them automatically for you -- a lot easier, often, than you yourself looking at the "missing dependencies:" messages, hunting for the packages off the net, downloading one by one, ...
Last edited by b0uncer; 04-21-2007 at 09:34 AM.