1
0
mirror of https://github.com/gophernicus/gophernicus.git synced 2024-06-02 06:11:10 +00:00
gophernicus/INSTALL.md

183 lines
5.6 KiB
Markdown
Raw Normal View History

2019-04-29 15:15:00 +00:00
# Compiling and installing Gophernicus
2014-01-25 09:21:40 +00:00
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
2019-04-29 15:15:00 +00:00
any \*nix system.
2014-01-25 09:21:40 +00:00
To compile and install run:
2019-04-29 15:15:00 +00:00
```
$ git clone https://github.com/gophernicus/gophernicus.git
$ cd gophernicus
2014-01-25 09:21:40 +00:00
$ make
$ sudo make install
2019-04-29 15:15:00 +00:00
```
2014-01-25 09:21:40 +00: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 09:21:40 +00:00
2019-04-29 15:15:00 +00:00
By default Gophernicus serves gopher documents from `/var/gopher`
although that can be changed by using the `-r <root>` parameter.
2014-01-25 09:21:40 +00:00
To enable virtual hosting create hostname directories under
the gopher root and make sure you have at least the primary
2019-04-29 15:15:00 +00:00
hostname (the one set with `-h <hostname>`) directory available
(`mkdir /var/gopher/$HOSTNAME`).
2014-01-25 09:21:40 +00:00
<<<<<<< HEAD:INSTALL
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.
Other installation targets
==========================
=======
2019-04-29 15:15:00 +00:00
## Other installation targets
>>>>>>> 82a1abebc4bfabc43ef6b27f0627f526984eaf30:INSTALL.md
Suppose your server runs systemd, but you'd rather have Gophernicus
2019-04-29 15:15:00 +00:00
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.
2019-04-29 15:15:00 +00: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
2019-04-29 15:15:00 +00:00
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.
2019-04-29 15:15:00 +00:00
## Running with traditional inetd superserver
If you want to run Gophernicus under the traditional Unix inetd, the
2019-04-29 15:15:00 +00:00
below line should be added to your `/etc/inetd.conf` and the inetd
process restarted.
2019-04-29 15:15:00 +00:00
```
gopher stream tcp nowait nobody /usr/sbin/in.gophernicus in.gophernicus -h <hostname>
2019-04-29 15:15:00 +00:00
```
The Makefile will automatically do this for you and remove it when
uninstalling.
2019-04-29 15:15:00 +00:00
## Compiling on Debian Linux (and Ubuntu)
2014-01-25 09:21:40 +00:00
The above commands work on Debian just fine, but if you prefer
2019-04-29 15:15:00 +00:00
having everything installed as packages run `make deb` instead
of plain `make`. If all the dependencies were in place you'll
2014-01-25 09:21:40 +00:00
end up with an offical-looking deb package in the parent
directory (don't ask - that's just how it works). And instead
2019-04-29 15:15:00 +00:00
of `sudo make install` you should just install the deb with
`dpkg -i ../gophernicus_*.deb` after which It Should Just
2014-01-25 09:21:40 +00:00
Work(tm).
If you need TCP wrappers support on Debian/Ubuntu, please
install libwrap0-dev before compiling.
2014-01-25 09:21:40 +00:00
2019-04-29 15:15:00 +00:00
## Cross-compiling
2014-01-25 09:21:40 +00:00
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.
2019-04-29 15:15:00 +00:00
```
2014-01-25 09:21:40 +00:00
$ make HOSTCC=gcc CC=target-arch-gcc
2019-04-29 15:15:00 +00:00
```
2014-01-25 09:21:40 +00:00
2019-04-29 15:15:00 +00:00
## Shared memory issues
2014-01-25 09:21:40 +00:00
====================
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 under various different user
accounts may create a situation where the memory block is locked
to the wrong user.
2014-01-25 09:21:40 +00:00
If that happens you can simply delete the memory block and
let Gophernicus recreate it - no harm done:
2014-01-25 09:21:40 +00:00
2019-04-29 15:15:00 +00:00
```
$ sudo make clean-shm
2019-04-29 15:15:00 +00:00
```
2014-01-25 09:21:40 +00:00
2019-04-29 15:15:00 +00:00
## Porting to different platforms
2014-01-25 09:21:40 +00:00
If you need to port Gophernicus to a new platform, please take
2019-04-29 15:15:00 +00:00
a look at gophernicus.h which has a bunch of `HAVE_*` `#defines`.
2014-01-25 09:21:40 +00:00
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
<gophernicus at gophernicus dot org> so we can include them into
the next release.
<<<<<<< HEAD:INSTALL
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 |
=======
>>>>>>> 82a1abebc4bfabc43ef6b27f0627f526984eaf30:INSTALL.md