summaryrefslogtreecommitdiff
path: root/README.md
blob: 8cd8d104c60012956284113781d876b6d9737031 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# efa - Commandline Public Transit Routing Interface

efa is a commandline client and Perl module for EFA public transit routing
interfaces such as [efa.vrr.de](https://efa.vrr.de). See the
[Travel::Routing::DE::VRR homepage](https://finalrewind.org/projects/Travel-Routing-DE-VRR/)
for details.

## Installation

efa has been packaged as
[libtravel-routing-de-vrr-perl](https://packages.debian.org/search?keywords=libtravel-routing-de-vrr-perl)
for Debian, so you can install it using your package manager of choice on
Debian-based Linux distributions. It is also available as
[perl-travel-routing-de-vrr-git](https://aur.archlinux.org/packages/perl-travel-routing-de-vrr-git/)
in the archlinux User Repository (AUR). Both provide the commandline client and
the Perl module.

If you are using another distribution and/or would prefer a more recent
version, you have four installation options:

* Nightly `.deb` builds for Debian-based distributions
* Installing the latest release from CPAN
* Installation from source
* Using a Docker image

Except for Docker, __efa__ is available in your PATH after installation. You
can run `efa --version` to verify this. Documentation is available via
`man efa`.

### Nightly Builds for Debian

[lib.finalrewind.org/deb](https://lib.finalrewind.org/deb) provides Debian
packages of both development and release versions. Note that these are not part
of the official Debian repository and are thus not covered by its quality
assurance processes.

To install the latest release, run:

```
curl https://lib.finalrewind.org/deb/libtravel-routing-de-vrr-perl_latest_all.deb | sudo dpkg -i -
```

For a (possibly broken) development snapshot of the Git master branch, run:

```
curl https://lib.finalrewind.org/deb/libtravel-routing-de-vrr-perl_dev_all.deb | sudo dpkg -i -
```

Uninstallation works as usual:

```
sudo apt remove libtravel-routing-de-vrr-perl
```

### Installation from CPAN

Travel::Routing::DE::VRR releases are published on the Comprehensive Perl
Archive Network (CPAN) and can be installed using standard Perl module
tools such as `cpanminus`.

Before proceeding, ensure that you have standard build tools (i.e. make,
pkg-config and a C compiler) installed. You will also need the following
libraries with development headers:

* libssl
* libxml2
* zlib

Now, use a tool of your choice to install the module. Minimum working example:

```
cpanm Travel::Routing::DE::VRR
```

If you run this as root, it will install script and module to `/usr/local` by
default.

### Installation from Source

In this variant, you must ensure availability of dependencies by yourself.
You may use carton or cpanminus with the provided `cpanfile`, Module::Build's
installdeps command, or rely on the Perl modules packaged by your distribution.
On Debian 10+, all dependencies are available from the package repository.

To check whether dependencies are satisfied, run:

```
perl Build.PL
```

If it complains about "... is not installed" or "ERRORS/WARNINGS FOUND IN
PREREQUISITES", it is missing dependencies.

Once all dependencies are satisfied, use Module::Build to build, test and
install the module. Testing is optional -- you may skip the "Build test"
step if you like.

If you downloaded a release tarball, proceed as follows:

```
./Build
./Build test
sudo ./Build install
```

If you are using the Git repository, use the following commands:

```
./Build
./Build manifest
./Build test
sudo ./Build install
```

### Running efa via Docker

An efa image is available on Docker Hub. It is intended for testing purposes:
due to the latencies involved in spawning a container for each efa invocation,
it is less convenient for day-to-day usage.

Installation:

```
docker pull derfnull/efa:latest
```

Use it by prefixing efa commands with `docker run --rm derfnull/efa:latest`, like so:

```
docker run --rm derfnull/efa:latest --version
```

Documentation is not available in this image. Please refer to the
[online efa manual](https://man.finalrewind.org/1/efa/) instead.