This website uses Javascript to render markdown documents in your browser, apply syntax highlighting to code fragments and render $\LaTeX$ formulas. Below is the markdown source code of this page. You can either read that or enable Javascript to have it rendered to HTML.
# Installation of CInet tools The code for conditional independence computations behind this website and database is written in Perl. You will need a relatively recent version of it, at least `v5.26`: ``` console $ perl -v This is perl 5, version 30, subversion 1 (v5.30.1) built for x86_64-linux-thread-multi Copyright 1987-2019, Larry Wall … ``` If your Perl version is not recent enough, I recommend you use [`perlbrew`] to compile your own recent Perl. This will require a C compiler and other standard build tools. Next, we need a capable Perl module installer. I prefer [`cpanm`], which, if you trust it, can be installed from [https://cpanmin.us] as follows: ``` console $ wget -O- https://cpanmin.us | perl - App::cpanminus ``` As part of the installation, it will likely inform you about a mechanism called [`local::lib`], which I also recommend. It allows you to install Perl modules into your home directory instead of a system directory, which requires elevated privileges. To enable this, follow the given instructions, which at the time of writing amount to ``` console $ ~/perl5/bin/cpanm --local-lib=~/perl5 local::lib $ eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) ``` Afterwards, add the second command, `eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)`, to your shell rc file. This sets up the necessary environment variables, which make Perl aware of the additional module installations, whenever you start a shell session. With these in place, the CInet tools can be installed. There is one meta-module, `CInet::Tools`, which pulls in all the others in their most recent version as dependencies: ``` console $ cpanm -M dpan.cinet.link CInet::Tools ``` This installation will take a while, especially if you have never used Perl and CPAN before, because there is a sizable number of transitive dependencies. The effort has to be spent only once. When you update `CInet::Tools` later, most dependencies are already in place and it will go much faster. The CInet modules and their lower-level dependencies sometimes bundle native code in C or C++. The installation process will automatically compile all the bundled code, but you will need to have some essential build tools available, including a C and C++ compiler, autotools, make and cmake. The rule of thumb in CInet is to prefer to bundle source code of native programs or libraries in so-called `Alien` modules. For example, [`CInet::Alien::CaDiCaL`] bundles the SAT solver [CaDiCaL], which is used by [`CInet::Propositional`]. The only **exception** to this rule currently is [`CInet::Bridge::SoPlex`] providing the [SoPlex] LP solver to [`CInet::Polyhedral`]. I decided not to bundle the source code because SoPlex's license makes this non-trivial. You should install [SoPlex] separately before launching the above command or installation of `CInet::Bridge::SoPlex` will fail. During installation, various test suites run to ensure (as far as the test suites go) that the modules function properly on your system. If you encounter any bugs or believe this guide is incomplete, then please do not hesitate to write me an email via [Contact](/contact)! [`perlbrew`]: https://perlbrew.pl [`cpanm`]: https://metacpan.org/pod/App::cpanminus [`local::lib`]: https://metacpan.org/pod/local::lib [`CInet::Alien::CaDiCaL`]: /doc/CInet::Alien::CaDiCaL [CaDiCaL]: http://fmv.jku.at/cadical/ [`CInet::Propositional`]: /doc/CInet::Propositional [`CInet::Bridge::SoPlex`]: /doc/CInet::Bridge::SoPlex [SoPlex]: https://soplex.zib.de [`CInet::Polyhedral`]: /doc/CInet::Polyhedral