Project

General

Profile

Preparing a Linux machine for Bilder » History » Version 27

John Cary, 01/25/2018 01:56 PM

1 1 Redmine Admin
# Preparing a Linux machine for Bilder
2
3 15 John Cary
__If all you need is python and sphinx__ (e.g., for builds of documentation), then you need only
4 1 Redmine Admin
5 15 John Cary
* CMake (probably present)
6
* Python (probably present)
7 16 Ted Sume
* Python-dev or Python-devel (on Fedora)
8 15 John Cary
* Latex as installed below
9 1 Redmine Admin
10 15 John Cary
and then you can add the arguments,  -W python,cmake, and your installed Python and CMake will be used if your path is correct.
11
12
## Java
13
14
At least one package (Babel) needs Oracle's java, so we recommend installing it.
15
16 1 Redmine Admin
## GCC
17 15 John Cary
18
It is often useful to get a newer gcc that has mmintrinsics.
19 1 Redmine Admin
20 25 John Cary
Below are the instructions for building gcc-6.4.0.
21 1 Redmine Admin
22
### Make sure 32bit glibc-devel is installed
23
24
~~~~~~
25
yum -y install glibc-devel.i686
26 22 John Cary
dnf -y install glibc-devel.i686
27 1 Redmine Admin
zypper install glibc-devel-32bit  (SLES 11 SP3)
28
~~~~~~
29
30
### Get the source packages
31
32
~~~~~~
33 25 John Cary
export GCCVER=6.4.0
34 22 John Cary
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCCVER}/gcc-${GCCVER}.tar.xz
35 1 Redmine Admin
~~~~~~
36
37
### Build
38
39
Define CONTRIB_DIR to be your tarball installation directory, e.g.,
40
41
~~~~~~
42
export CONTRIB_DIR=/contrib
43
~~~~~~
44
45
Usually CONTRIB_DIR=/contrib, but if one does not have root access, one has to put this in a user area. If one does have root access, one should execute the following commands:
46
47
~~~~~~
48
mkdir /internal /contrib /volatile
49
chmod 775 /internal /contrib /volatile
50
~~~~~~
51
52
Unpack gcc, go into the gcc source directory, and build according to the instructions below.
53
54
**gcc:**
55
56
~~~~~~
57 22 John Cary
tar xf gcc-${GCCVER}.tar.bz2 && cd gcc-${GCCVER}
58 1 Redmine Admin
./contrib/download_prerequisites
59
mkdir build && cd build
60 25 John Cary
../configure --prefix=$CONTRIB_DIR/gcc-${GCCVER} --enable-languages=c,c++,fortran --with-pic
61 1 Redmine Admin
env LD_RUN_PATH=$CONTRIB_DIR/gcc-${GCCVER}/lib64 make -j 4
62
make install
63
# Alias as desired.
64
mkdir -p $CONTRIB_DIR/bin && cd $CONTRIB_DIR/bin
65
ln -s $CONTRIB_DIR/gcc-${GCCVER}/bin/{c,g}* .
66
~~~~~~
67
68
### Fix permissions
69
70
~~~~~~
71
chmod -R g+rwX $CONTRIB_DIR/gcc-${GCCVER}
72
chmod -R o+rX $CONTRIB_DIR/gcc-${GCCVER}
73
find $CONTRIB_DIR/gcc-${GCCVER} -type d -exec chmod g+rs '{}' \;
74
~~~~~~
75
76
77
## Java
78
79
Install Oracle's Java.
80
81
Once it is installed, you will need to modify your path to include /usr/java/default/bin before /usr/bin or use the alternatives package:
82
83
~~~~~~
84
for i in java jar javac; do
85
  alternatives --install /usr/bin/$i j$i /usr/java/jdk1.6.0_16/bin/$i 3
86
done
87
alternatives --config java # Pick 3
88
~~~~~~
89
90
On SLES , Install using the tar package from Oracle, then change into the installation directory
91
92
~~~~~~
93
for i in java jar javac; do
94
  /usr/sbin/update-alternatives --install /usr/bin/$i $i <installation directory>/bin/$i 3
95
done
96
~~~~~~
97
98
where <installation directory\> is the absolute path to where Java was just installed  
99
100
## Version control systems
101
102
Make sure git, mercurial, and subversion are all installed.
103
104
## LaTeX
105
106
Install the texlive-latex package. You may need to install other packages over time. For gui usage, see texworks: http://www.tug.org/texworks
107
108
If you cannot install in the system area, you can download
109
110
~~~~~~
111
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
112
tar xzf install-tl-unx.tar.gz
113
cd install-tl-20150411 (date might be different)
114
./install-tl -no-gui
115
~~~~~~
116
117
This is now interactive, so set
118 11 Matt Copper
 
119 10 Matt Copper
* Set scheme to basic
120
** To do this type 'S' and hit enter.
121
** Then enter 'd' to set the scheme to basic.
122
** Type 'R' and hit enter to return to the main configuration page.
123 1 Redmine Admin
124 10 Matt Copper
* Set TEXDIR = $CONTRIB_DIR/texlive
125
** Start by typing 'D' and hit enter.
126
** Then enter '1' to change TEXDIR.
127
** Type $CONTRIB_DIR/texlive and hit return.
128
** To return to configuration type 'R' and return.
129 1 Redmine Admin
130 10 Matt Copper
* Set page size to Letter size
131
** Type 'O' and hit enter.
132
** Enter 'P'
133
** Return to main menu by typing 'R' and enter. 
134
135
* Install
136
** Type 'I' and hit enter to install.
137
138
* Put your texlive in your PATH.
139
** Edit you bashrc (vim ~/.bashrc)
140
** Add "export PATH=$PATH:<$CONTRIB_DIR>/texlive/bin/x86_64-linux/" (enter the full CONTRIB_DIR value)
141
** Exit and save. Then source ~/.bashrc.
142
143
To ensure you are using the correct texlive installation type "which pdflatex" and make sure it 
144
the one in $CONTRIB_DIR/texlive/bin/x86_64-linux/. If it is not the correct pdflatex, you may
145
have to remove the system version (sudo yum remove texlive). 
146 1 Redmine Admin
147
and then
148
149
~~~~~~
150 12 John Cary
    for i in breakurl capt-of cmap comment courier ec eepic environ epstopdf eqparbox \
151 21 John Cary
fancybox fancyvrb framed footnote framed fricychap gensymb helvetic latexmk lineno mdwtools mmap \
152 12 John Cary
mptopdf multirow newfloat overpic palatino parskip pdftex pifont revtex4 siunitx subfiles \
153
symbol tabulary threeparttable titlesec trimspaces txfonts units upquote url wrapfig \
154
xcite xcolor xypic zapfding; do
155 1 Redmine Admin
     tlmgr install $i
156
    done
157
~~~~~~
158
159
You may also want to install some of the fonts, avantgar bookman charter cmextra courier euro-ce eurosym marvosym mathpazo ncntrsbk pxfonts rsfs symbol times txfonts utopia wasy zapfchan zapfding.
160
161 25 John Cary
## Additional packages
162 1 Redmine Admin
163 25 John Cary
Other parts of the toolchain introduce other package requirements.  Below are the initial lists.
164
165 24 John Cary
### Fedora
166
167 1 Redmine Admin
The following packages are needed for Fedora
168
169
~~~~~~
170 19 John Cary
  bison
171
  glib2-devel
172
  libxml2-devel
173
  openssl-devel
174
  zlib-devel
175
  patch
176 1 Redmine Admin
~~~~~~
177
178 9 David Alexander
You may also need
179
180 1 Redmine Admin
~~~~~~
181 19 John Cary
  libblas-devel
182
  lapack-devel
183 9 David Alexander
~~~~~~
184
185
For more recent versions of Fedora, you will need.
186 18 John Cary
187
~~~~~~
188 19 John Cary
  egl-wayland
189
  mesa-libEGL-devel
190 18 John Cary
  redhat-rpm-config
191 1 Redmine Admin
~~~~~~
192 18 John Cary
193 24 John Cary
### Ubuntu
194 1 Redmine Admin
195
The following packages are needed for Ubuntu
196
197
~~~~~~
198
   ace-netsvcs
199
   bison
200
   flex
201
   gfortran
202
   graphviz
203
   graphviz-dev
204
   heirloom-mailx
205
   libblas-dev
206
   libfreetype6-dev
207
   libgl1-mesa-dev
208
   libglu1-mesa-dev
209
   liblapack-dev
210
   libntlm0
211
   libpng12-dev
212
   libxext-dev
213
   libxrender-dev
214
   libxtst-dev
215
   libzzip-dev
216
   mailutils
217
   python2.6
218
   python2.6-dev
219 14 Jonathan Smith
   zlib-dev *
220 1 Redmine Admin
~~~~~~
221 14 Jonathan Smith
* You will probably want a lightweight command line editor other than gedit, so "sudo apt-get install vim"  or "sudo apt-get install emacs" 
222
* zlib-dev doesn't exist on ubuntu 16.04 - use zlib1g-dev instead.
223
224
mailutils is necessary for configuring the system for jenkins. 
225
You'll be offered to choose:
226
* Internet site
227
* Internet with smarthost
228
* Satellite system
229
* Local only
230
231
Internet with smarthost is recommended.
232
233 1 Redmine Admin
234
The use of the following commands are helpful. To search for an available package dealing with a keyword, use:
235
236
~~~~~~
237
    $ sudo apt-cache search keyword
238
~~~~~~
239
240
To install a particular package, use:
241
242
~~~~~~
243
    $ sudo apt-get install libblah-dev
244
~~~~~~
245
246
Note: that development packages names typically end with "dev" not "devel" as in other flavors of linux.
247
248 24 John Cary
### Suse Linux Enterprise Server (SLES)
249 1 Redmine Admin
250
The following packages are needed on SLES
251
252
~~~~~~
253
   bison
254
   blas-devel
255
   blas-devel-static
256
   libblas3
257
   flex
258
   freetype2-devel
259
   gcc
260
   gcc-32bit
261
   gcc-fortran
262
   git
263
   glibc-devel
264
   glibc-devel-32bit
265
   graphviz
266
   graphviz-devel
267
   gstreamer-0_10-devel
268
   gstreamer-0_10-plugins-base-devel
269 13 David Alexander
   libbz2-devel
270 1 Redmine Admin
   lapack-devel
271
   lapack-devel-static
272
   liblapack3
273
   libapr-util1 (needed to build subversion)
274
   libapr1      (needed to build subversion)
275
   libneon27    (needed to build subversion)
276
   libpng-devel
277
   libssh-devel
278
   libxml2-devel
279
   mailx
280
   mercurial
281
   Mesa-devel
282
   python-devel
283
   xorg-x11-devel
284
   xorg-x11-libXext-devel
285
   xorg-x11-libXrender-devel
286
   xorg-x11-libs
287
   zlib-devel
288
~~~~~~
289
290
To get blas-devel, blas-devel-static and lapack-devel, lapack-devel-static on SLES 11 SP3 , add the Science repository
291
292
~~~~~~
293
   zypper addrepo http://download.opensuse.org/repositories/science/SLE_11_SP3/science.repo
294
   zypper refresh
295
   zypper install blas-devel blas-devel-static lapack-devel lapack-devel-static
296
~~~~~~
297 24 John Cary
298 1 Redmine Admin
## Qt Prerequisites
299
300 25 John Cary
Qt-5 must be built with QtWebEngine, which particularly introduces requirements for other packages as noted at
301 24 John Cary
302 25 John Cary
* https://doc.qt.io/qt-5.10/qtwebengine-platform-notes.html
303
* https://wiki.qt.io/QtWebEngine/How_to_Try
304
* https://www.ics.com/blog/building-qtwebengine
305
* http://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html
306 24 John Cary
307 25 John Cary
Each of the above websites appears to have made assumptions about what is already installed, so as one encounters more workstations, one is likely to find yet another package missing.  This is our list so far.
308
309 24 John Cary
### Fedora
310
311
~~~~~~
312 27 John Cary
sudo yum install alsa-lib-devel cups-devel bison flex gperf
313
sudo yum install libcap-devel libgcrypt-devel libgcrypt libgudev1-devel libsndfile-devel libwebp-devel
314
sudo yum install libXcomposite-devel libXcursor-devel libXi-devel libXrandr-devel libxslt-devel libXtst-devel
315
sudo yum install mesa-libEGL-devel nss-devel opus-devel pciutils-devel pulseaudio-libs-devel re2c ruby systemd-devel
316 1 Redmine Admin
~~~~~~
317
318
## Vendor-specific version of graphics driver
319
320
If you are preparing a Linux machine for the VisIt Visualization package, the vendor-specific graphics driver for your graphics card should be installed.
321
322
By default, a generic graphics driver is installed.  On Fedora, the generic driver is "nouveau".
323
324
To determine if the nouveau driver is installed on your system, enter the command
325
326
~~~~~~
327
     lsmod | grep nouv
328
~~~~~~
329
330
You will need to download and install the appropriate driver from your graphics card vendor.  This generally uninstalls the nouveau drivers.
331 3 Matt Copper
332 4 Matt Copper
## NVIDIA CUDA Toolkit
333 3 Matt Copper
334
If you have a compatible GPU and wish to compile with nvcc code, you must first install the CUDA Toolkit. The linux installation page is 
335
336
~~~~~~
337
     https://developer.nvidia.com/cuda-toolkit-70
338
~~~~~~
339
340
Download the applicable file. Your Linux distribution may or may not be natively supported for version 7.0. You may alternatively use version 7.5 if supported or an older version if necessary. As an example, we will include the steps known to work for Fedora 22. On Fedora 22, download the Fedora 21 Local RPM package. 
341
342
~~~~~~
343
     cd <location of download>
344
     sudo rpm -i cuda-repo-fedora21-7-0-local-7.0-28.x86_64.rpm   #<or whatever file you downloaded> 
345
     sudo dnf install cuda
346
~~~~~~
347
348 5 Matt Copper
Different Linux distributions will have different package handlers (here we use dnf, ubuntu has apt-get, fedora < 22 uses yum). You should now have the directory /usr/local/cuda-7.0. Add /usr/local/cuda-7.0/bin to your path. To ensure you have gotten the necessary components, type:
349 3 Matt Copper
350
~~~~~~
351
     which nvcc
352
~~~~~~
353
354 20 John Cary
CUDA-8 does not work with Fedora 27.  A workaround is specified at https://xpra.org/trac/ticket/1600.
355
356 23 John Cary
Looks like CUDA-9.1 works, but with only select versions of gcc, e.g., gcc-5.4.0 according to https://github.com/tensorflow/tensorflow/issues/10220.
357
358 3 Matt Copper
The output should be /usr/local/cuda-7.0/bin/nvcc. This will allow bilder to build GPU c++ code.