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 135 136 137 138 139 140 141 142 143 144 145
|
# Installing pgloader
pgloader version 3.x is written in Common Lisp.
## Dependencies
The steps depend on the OS you are currently using.
### debian
If you're using debian, it's quite simple actually, see the file
`bootstrap-debian.sh` within the main pgloader distribution to get yourself
started.
You will note in particular:
sudo apt-get install -y sbcl \
git curl patch unzip \
devscripts pandoc \
libsqlite3-dev \
freetds-dev
We need a recent enough [SBCL](http://sbcl.org/) version and that means
backporting the one found in `sid` rather than using the very old one found
in current *stable* debian release. See `bootstrap-debian.sh` for details
about how to backport a recent enough SBCL here (1.2.5 or newer).
### Redhat / CentOS
To build and install pgloader the Steel Bank Common Lisp package (sbcl) from EPEL,
and the freetds packages are required.
With RHEL/CentOS 6, if the packaged version of sbcl isn't >=1.3.6, you'll need
to build it from source.
It is recommended to build the RPM yourself, see below, to ensure that all installed
files are properly tracked and that you can safely update to newer versions of
pgloader as they're released.
To do an adhoc build and install run `boostrap-centos.sh` for CentOS 6 or
`bootstrap-centos7.sh` for CentOS 7 to install the required dependencies.
[Build pgloader](INSTALL.md#building-pgloader).
#### rpmbuild
The spec file in the root of the pgloader repository can be used to build your
own RPM. For production deployments it is recommended that you build this RPM on
a dedicated build box and then copy the RPM to your production environment for
use; it is considered bad practice to have compilers and build tools present in
production environments.
1. Install the [EPEL repo](https://fedoraproject.org/wiki/EPEL#Quickstart).
1. Install rpmbuild dependencies:
sudo yum -y install yum-utils rpmdevtools @"Development Tools"
1. Install pgloader build dependencies:
sudo yum-builddep pgloader.spec
1. Download pgloader source:
spectool -g -R pgloader.spec
1. Build the source and binary RPMs (see `rpmbuild --help` for other build options):
rpmbuild -ba pgloader.spec
### Mac OS X
We suppose you already have `git` and `make` available, if that's not the
case now is the time to install those tools. The SQLite lib that comes in
MacOSX is fine, no need for extra software here.
You will need to install either SBCL or CCL separately, and when using
[brew](http://brew.sh/) it's as simple as:
brew install sbcl
brew install clozure-cl
NOTE: Make sure you installed the universal binaries of Freetds, so that
they can be loaded correctly.
brew install freetds --universal --build-from-source
### Compiling SBCL by yourself
If you ended up building SBCL yourself or you just want to do that, you can
download the source from http://www.sbcl.org/ .
You will need to build SBCL with the following command and options:
sh make.sh --with-sb-core-compression --with-sb-thread
NOTE: You could also remove the --compress-core option.
## Building pgloader
Now that the dependences are installed, just type make.
make
If your `SBCL` supports core compression, the make process will use it
to generate a smaller binary. To force disabling core compression, you
may use:
make COMPRESS_CORE=no
Then you will have a new tool to play with:
./build/bin/pgloader --help
This command should spit out the *usage* information on which parameters are
accepted in the command line actually.
## Building pgloader with CCL
It's possible to pick [ccl](http://ccl.clozure.com/) rather than SBCL when
compiling pgloader:
make CL=ccl
## Building pgloader for use in low RAM environments
It's possible to tweak the size of RAM pgloader will use in its binary
image, at compile time. This defaults to 4 GB.
make DYNSIZE=1024
Now the `./build/bin/pgloader` that you get only uses 1GB.
## Building a docker image
A `Dockerfile` is provided, to use it:
docker build -t pgloader:debian .
docker run --rm --name pgloader pgloader:debian bash -c "pgloader --version"
The `build` step install build dependencies in a debian jessie container,
then `git clone` and build `pgloader` in `/opt/src/pgloader` and finally
copy the resulting binary image in `/usr/local/bin/pgloader` so that it's
easily available.
|