2014-01-25 04:21:40 -05:00
|
|
|
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
|
2014-01-25 08:33:07 -05:00
|
|
|
any *nix system.
|
2014-01-25 04:21:40 -05:00
|
|
|
|
|
|
|
To compile and install run:
|
|
|
|
|
2018-01-28 10:55:27 -05:00
|
|
|
$ git clone https://github.com/kimholviala/gophernicus.git
|
|
|
|
$ cd gophernicus
|
2014-01-25 04:21:40 -05:00
|
|
|
$ make
|
|
|
|
$ sudo make install
|
|
|
|
|
2015-12-29 08:21:36 -05:00
|
|
|
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.
|
2014-01-25 04:21:40 -05:00
|
|
|
|
|
|
|
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).
|
|
|
|
|
|
|
|
|
2019-04-29 04:21:14 -04:00
|
|
|
Dependencies
|
|
|
|
============
|
|
|
|
|
|
|
|
These were obtained from a base docker installation, what we
|
|
|
|
(will) be using on Travis.
|
|
|
|
|
|
|
|
# Ubuntu 18.04, 16.04, Debian Sid, Buster, Stretch, Jessie #
|
|
|
|
- build-essential
|
|
|
|
- git
|
|
|
|
- libwrap0-dev for tcp
|
|
|
|
|
|
|
|
# Centos 6, 7 #
|
|
|
|
- the group 'Development Tools'. less is probably required, but
|
|
|
|
I know this works and couldn't be bothered to find out what was
|
|
|
|
actually required.
|
|
|
|
|
|
|
|
# Fedora 29, 30, rawhide #
|
|
|
|
- the group 'Development Tools'. less is probably required, but
|
|
|
|
I know this works and couldn't be bothered to find out what was
|
|
|
|
actually required.
|
|
|
|
- net-tools
|
|
|
|
|
|
|
|
# OpenSuse Leap, Tumbleweed #
|
|
|
|
- the pattern devel_C_C++
|
|
|
|
- the pattern devel_basis
|
|
|
|
- git
|
|
|
|
|
|
|
|
# archlinux #
|
|
|
|
- base-devel
|
|
|
|
- git
|
|
|
|
|
|
|
|
# Gentoo #
|
|
|
|
- git
|
|
|
|
|
|
|
|
# Alpine Linux #
|
|
|
|
- alpine-sdk. once again, less is probably required.. blah blah.
|
|
|
|
|
2019-03-31 17:32:21 -04:00
|
|
|
Other installation targets
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Suppose your server runs systemd, but you'd rather have Gophernicus
|
|
|
|
started with inetd or xinetd. To do that, do "make install-inetd"
|
|
|
|
or "make install-xinetd". Likewise use "make uninstall-inetd" or
|
|
|
|
"make uninstall-xinetd" to uninstall Gophernicus.
|
|
|
|
|
|
|
|
|
2016-01-01 03:12:19 -05:00
|
|
|
Compiling with TCP wrappers
|
|
|
|
===========================
|
|
|
|
|
|
|
|
Gophernicus uses no extra libraries... well... except libwrap
|
|
|
|
(TCP wrappers) if it is installed with headers in default Unix
|
|
|
|
directories at the time of compiling. If you have the headers
|
|
|
|
installed and don't want wrapper support, run 'make generic'
|
|
|
|
instead of just 'make', and if you have wrappers installed in
|
|
|
|
non-standard place and want to force compile with wrappers
|
|
|
|
just run 'make withwrap'.
|
|
|
|
|
|
|
|
For configuring IP access lists with TCP wrappers, take a look
|
|
|
|
at the files /etc/hosts.allow and /etc/hosts.deny (because the
|
|
|
|
manual pages suck). Use the daemon name 'in.gophernicus' to
|
|
|
|
make your access lists.
|
|
|
|
|
|
|
|
|
2015-12-29 08:21:36 -05:00
|
|
|
Running with traditional inetd superserver
|
|
|
|
==========================================
|
|
|
|
|
2019-03-03 20:43:26 -05:00
|
|
|
If you want to run Gophernicus under the traditional Unix inetd, the
|
2019-03-07 22:35:52 -05:00
|
|
|
below line should be added to your /etc/inetd.conf and the inetd
|
2019-03-03 20:43:26 -05:00
|
|
|
process restarted.
|
2015-12-29 08:21:36 -05:00
|
|
|
|
|
|
|
gopher stream tcp nowait nobody /usr/sbin/in.gophernicus in.gophernicus -h <hostname>
|
|
|
|
|
2019-03-31 17:32:21 -04:00
|
|
|
The Makefile will automatically do this for you and remove it when
|
|
|
|
uninstalling.
|
2019-03-03 20:43:26 -05:00
|
|
|
|
2015-12-29 08:21:36 -05:00
|
|
|
|
2014-01-25 04:21:40 -05:00
|
|
|
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).
|
|
|
|
|
2016-01-01 03:12:19 -05:00
|
|
|
If you need TCP wrappers support on Debian/Ubuntu, please
|
|
|
|
install libwrap0-dev before compiling.
|
|
|
|
|
2014-01-25 04:21:40 -05:00
|
|
|
|
|
|
|
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
|
2015-12-31 02:30:39 -05:00
|
|
|
said, running in.gophernicus under various different user
|
|
|
|
accounts may create a situation where the memory block is locked
|
|
|
|
to the wrong user.
|
2014-01-25 04:21:40 -05:00
|
|
|
|
|
|
|
If that happens you can simply delete the memory block and
|
2015-12-31 02:30:39 -05:00
|
|
|
let Gophernicus recreate it - no harm done:
|
2014-01-25 04:21:40 -05:00
|
|
|
|
2015-12-31 02:30:39 -05:00
|
|
|
$ sudo make clean-shm
|
2014-01-25 04:21:40 -05:00
|
|
|
|
|
|
|
|
|
|
|
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
|
2019-04-24 18:16:10 -04:00
|
|
|
platform please send the patches to
|
|
|
|
<gophernicus at gophernicus dot org> so we can include them into
|
2018-01-28 10:23:34 -05:00
|
|
|
the next release.
|
2019-04-29 04:21:14 -04:00
|
|
|
|
|
|
|
Supported Platforms
|
|
|
|
===================
|
|
|
|
|
|
|
|
| Platform | Versions |
|
|
|
|
| ------------ | ---------------------------- |
|
|
|
|
| Ubuntu | 18.04, 16.04 |
|
|
|
|
| Debian | Sid, Buster, Stretch, Jessie |
|
|
|
|
| Centos | 7, 6 |
|
|
|
|
| Fedora | 29, 30, Rawhide |
|
|
|
|
| Opensuse | Leap, Tumbleweed |
|
|
|
|
| Arch Linux | up to date |
|
|
|
|
| Gentoo | up to date |
|
|
|
|
| Alpine Linux | Edge, 3.9 |
|