1
0
mirror of https://github.com/gophernicus/gophernicus.git synced 2024-12-04 14:46:37 -05:00
gophernicus/INSTALL
2015-12-30 11:37:11 +02:00

115 lines
3.9 KiB
Plaintext

Compiling and installing Gophernicus
====================================
Gophernicus requires a C compiler but no extra libraries aside
from standard LIBC ones. Care has been taken to use only
standard POSIX syscalls so that it should work pretty much on
any *nix system.
To compile and install run:
$ gzip -cd gophernicus-*.tar.gz | tar xvf -
$ cd gophernicus-*
$ make
$ sudo make install
That's it - Gophernicus should now be installed, preconfigured
and running under gopher://<HOSTNAME>/. And more often than not,
It Just Works(tm). If gopher links don't seem to work you may
need to configure your public hostname explicitly in whatever
config file Gophernicus is using.
By default Gophernicus serves gopher documents from /var/gopher
although that can be changed by using the -r <root> parameter.
To enable virtual hosting create hostname directories under
the gopher root and make sure you have at least the primary
hostname (the one set with -h <hostname>) directory available
(mkdir /var/gopher/$HOSTNAME).
Running with traditional inetd superserver
==========================================
If you want to run Gophernicus under the traditional Unix
inetd, add the below line to your /etc/inetd.conf and restart
the inetd process.
gopher stream tcp nowait nobody /usr/sbin/in.gophernicus in.gophernicus -h <hostname>
Compiling on Debian Linux (and Ubuntu)
======================================
The above commands work on Debian just fine, but if you prefer
having everything installed as packages run "make deb" instead
of plain "make". If all the dependencies were in place you'll
end up with an offical-looking deb package in the parent
directory (don't ask - that's just how it works). And instead
of "sudo make install" you should just install the deb with
"dpkg -i ../gophernicus_*.deb" after which It Should Just
Work(tm).
Cross-compiling
===============
Cross-compiling to a different target architecture can be done
by defining HOSTCC and CC to be different compilers. HOSTCC
must point to a local arch compiler, and CC to the target
arch one.
$ make HOSTCC=gcc CC=target-arch-gcc
Shared memory issues
====================
Gophernicus uses SYSV shared memory for session tracking and
statistics. It creates the shared memory block using mode 600
and a predefined key which means that a shared memory block
created with one user cannot be used by another user. Simply
said, running in.gophernicus as yourself will allocate that
memory, and then running the binary through inetd as another
user (nobody) will be denied access to that memory.
If that happens you can simply delete the memory block and
let Gophernicus recreate it - no harm done.
$ su -
# ipcs -m | grep beeb
# ipcrm -M <key from the above command>
Porting to different platforms
==============================
If you need to port Gophernicus to a new platform, please take
a look at gophernicus.h which has a bunch of HAVE_* #defines.
Fiddling with those usually makes it possible to compile a working
server. If you succeed in compiling Gophernicus to a new
platform please send the patches to kim@holviala.com so I can
include them into the next release.
Tested (and semi-supported) platforms include:
OS Arch Compiler
+---------------+-------------+-------------+
AIX 5 POWER3 gcc 4
AIX 6 POWER4 gcc 4
AIX 7 POWER5 gcc 4
CentOS 5 x86_64 gcc 4
CentOS 7 x86_64 gcc 4
Debian Squeeze armv5tel gcc 4
Debian Wheezy i386 gcc 4
Debian Wheezy x86_64 gcc 4
Debian Jessie x86_64 gcc 4
Maemo 5 armv7l gcc 4
MacOSX 10.5 i386 gcc 4
MacOSX 10.7 x86_64 llvm-gcc 4
MacOSX 10.8 x86_64 clang 3
MacOSX 10.10 x86_64 clang 6
MacOSX 10.11 x86_64 clang 7
NetBSD 5 x86_64 gcc 4
Haiku R1 i386 gcc 2