aboutsummaryrefslogtreecommitdiff
path: root/rpkid/doc/Installation
blob: d47aae906eb464be63c25e0fc58c520c1f520402 (plain) (blame)
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
Installation Guide

   Preliminary installation instructions for rpkid et al.

   These are the production-side RPKI tools, for Internet Registries
   (RIRs, LIRs, etc). See the "rcynic" program for relying party tools.

   rpkid is a set of Python modules supporting generation and maintenance
   of resource certificates. Most of the code is in the rpkid/rpki/
   directory. rpkid itself is a relatively small program that calls the
   library modules. There are several other programs that make use of the
   same libraries, as well as a collection of test programs.

   At present the package is intended to be run out of its build
   directory. Setting up proper installation in a system area using the
   Python distutils package would likely not be very hard but has not yet
   been done.

   Note that initial development of this code has been on FreeBSD, so
   installation will probably be easiest on FreeBSD.

   Before attempting to build the package, you need to install any missing
   prerequisites. Note that the Python code requires Python version 2.5.
   rpkid et al are mostly self-contained, but do require a small number of
   external packages to run.
     * If your Python installation does not already include the sources
       files needed to compile new Python extension modules, you will need
       to install whatever package does include those source files. The
       need for and name of this package varies from system to system. On
       FreeBSD, the base Python interpreter package includes the
       development sources; on at least some Linux distributions, you have
       to install a separate "python-devel" package or something similar.
       If you get compilation errors trying to build the POW code (below)
       and the error message says something about the file "Python.h"
       being missing, this is almost certainly your problem.
     * http://codespeak.net/lxml/. lxml in turn requires the Gnome LibXML2
       C libraries.
          + FreeBSD: /usr/ports/devel/py-lxml
          + Fedora: python-lxml.i386
          + Ubuntu: python-lxml
     * http://sourceforge.net/projects/mysql-python/. MySQLdb in turn
       requires MySQL client and server. rpkid et al have been tested with
       MySQL 5.0 and 5.1.
          + FreeBSD: /usr/ports/databases/py-MySQLdb
          + Fedora: MySQL-python.i386
          + Ubuntu: python-mysqldb

   rpkid et al also make heavy use of a modified copy of the Python
   OpenSSL Wrappers (POW) package, but this copy has enough modifications
   and additions that it's included in the subversion tree.

   The next step is to build the OpenSSL and POW binaries. At present the
   OpenSSL code is just a snapshot of the OpenSSL development sources,
   compiled with special options to enable RFC 3779 support that ISC wrote
   under previous contract to ARIN. The POW (Python OpenSSL Wrapper)
   library is an extended copy of the stock POW release.

   To build these, cd to the top-level directory in the distribution and
   type "make".
   $ cd $top
   $ make

   This should automatically build everything, in the right order,
   including staticly linking the POW extension module with the OpenSSL
   library to provide RFC 3779 support. If you get errors building POW,
   see the above discussion of Python development sources.

   You will also need a MySQL installation. This code was developed using
   MySQL 5.1 and has been tested with MySQL 5.0 and 5.1.

   The architecture is intended to support hardware signing modules
   (HSMs), but the code to support them has not been written.

   At this point, you should have all the necessary software installed.
   You will probably want to test it. All tests should be run from the
   rpkid/ directory. The test suite requires a few more external packages,
   only one of which is Python code.
     * http://pyyaml.org/. testpoke.py (an up-down protocol command line
       test client) and testbed.py (a test harness) use PyYAML.
          + FreeBSD: /usr/ports/devel/py-yaml
          + Ubuntu: python-yaml
     * http://xmlsoft.org/XSLT/. Some of the test code uses xsltproc, from
       the Gnome LibXSLT package.
          + FreeBSD: /usr/ports/textproc/libxslt
          + Ubuntu: xsltproc
     * http://w3m.sourceforge.net/. testbed.py uses w3m to display the
       summary output from rcynic. Nothing terrible will happen if w3m
       isn't available, testbed.py will just complain about it being
       missing and won't display rcynic's output.
          + FreeBSD: /usr/ports/www/w3m
          + Ubuntu: w3m

   Some of the tests require MySQL databases to store their data. To set
   up all the databases that the tests will need, run the SQL commands in
   rpkid/testbed.setup.sql. The MySQL command line client is usually the
   easiest way to do this, eg:
   $ cd $top/rpkid
   $ mysql -u root -p <testbed.setup.sql

   To run the tests, run "make all-tests":
   $ cd $top/rpkid
   $ make all-tests

   If nothing explodes, your installation is probably ok. Any Python
   backtraces in the output indicate a problem.

   There's a last set of tools that only developers should need, as
   they're only used when modifying schemas or regenerating the
   documentation. These tools are listed here for completeness.
     * http://www.doxygen.org/. Doxygen in turn pulls in several other
       tools, notably Graphviz, pdfLaTeX, and Ghostscript.
          + FreeBSD: /usr/ports/devel/doxygen
          + Ubuntu: doxygen
     * http://lynx.isc.org/current/. The documentation build process uses
       xsltproc and Lynx to dump flat text versions of a few critical
       documentation pages.
          + FreeBSD: /usr/ports/www/lynx
          + Ubuntu: lynx
     * http://www.thaiopensource.com/relaxng/trang.html. Trang is used to
       convert RelaxNG schemas from the human-readable "compact" form to
       the XML form that LibXML2 understands. Trang in turn requires Java.
          + FreeBSD: /usr/ports/textproc/trang
     * http://search.cpan.org/dist/SQL-Translator/. SQL-Translator, also
       known as "SQL Fairy", includes code to parse an SQL schema and dump
       a description of it as Graphviz input. SQL Fairy in turn requires
       Perl.
          + FreeBSD: /usr/ports/databases/p5-SQL-Translator

    All Classes Namespaces Files Functions Variables
     __________________________________________________________________


    Generated on Fri Apr 2 01:12:58 2010 for RPKI Engine by  doxygen
    1.6.3