Project

General

Profile

Preparing a Linux machine for Bilder » History » Version 83

Ted Sume, 08/15/2024 03:05 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 53 John Cary
* Perl-dev or Perl-devel with perl-ExtUtils-Embed
10 1 Redmine Admin
11 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.
12
13 82 Ted Sume
## Required Packages. 
14
Rocky Linux 8
15
Copy/Paste to execute
16 1 Redmine Admin
17 82 Ted Sume
~~~~~~
18 83 Ted Sume
dnf install --enablerepo=powertools alsa-lib-devel bison cups-devel dbus-devel flex fontconfig-devel gperf  libcap-devel libevent-devel libffi-devel \
19
libGLU-devel libgcrypt-devel libglvnd-devel libicu-devel libpciaccess-devel   libwebp-devel libXcomposite-devel libXcursor-devel libXi-devel \
20
libxkbcommon-devel  libXrandr-devel libxslt-devel libXt-devel libXtst-devel mesa-libEGL-devel nss-devel numactl-devel  patch pciutils-devel \
21
pulseaudio-libs-devel readline-devel re2c ruby systemd-devel tcl-devel tk-devel lapack-devel libsndfile-devel libstdc++-static libxkbcommon-x11-devel \
22
opus-devel re2c git perl-interpreter dmidecode hdparm libcurl-devel m4 perl-Time-HiRes valgrind rsync bzip2 make wget tar unzip gcc-c++ gcc gcc-gfortran \
23
kernel-devel kernel-headers kernel subversion gd-devel tmux bc java-1.8.0-openjdk.x86_64 rdma-core libibverbs glibc-langpack-de xauth git-lfs glx-utils \
24
unzip rdma-core-devel
25 82 Ted Sume
~~~~~~
26 1 Redmine Admin
27 22 John Cary
## GCC
28 1 Redmine Admin
29
Below are the instructions for building gcc
30
31 28 John Cary
### Get and unpack the source package
32 1 Redmine Admin
33
~~~~~~
34 78 John Cary
export GCCVER=11.2.0
35 1 Redmine Admin
wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCCVER}/gcc-${GCCVER}.tar.xz
36 33 Jonathan Smith
tar xf gcc-${GCCVER}.tar.xz && cd gcc-${GCCVER}
37 1 Redmine Admin
~~~~~~
38
39 28 John Cary
### Patch as needed
40
41 77 John Cary
No patching needs known as of now.
42 28 John Cary
43 1 Redmine Admin
### Build
44
45 72 John Cary
Define GCC_INSTS_DIR to be your tarball installation directory, e.g.,
46 1 Redmine Admin
47
~~~~~~
48 72 John Cary
export GCC_INSTS_DIR=/contrib
49 1 Redmine Admin
~~~~~~
50
51 72 John Cary
Usually GCC_INSTS_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:
52 1 Redmine Admin
53
~~~~~~
54
mkdir /internal /contrib /volatile
55
chmod 775 /internal /contrib /volatile
56
~~~~~~
57
58
Unpack gcc, go into the gcc source directory, and build according to the instructions below.
59
60
**gcc:**
61
62 78 John Cary
You may need to set some addition options, e.g., 
63
* ```ADDLOPTS=--with-cpu=power9``` on linuxppc64le
64
* ```ADDLOPTS=--disable-multilib``` if 32bit glibc libraries are not installed.
65 68 John Cary
66 22 John Cary
~~~~~~
67 1 Redmine Admin
./contrib/download_prerequisites
68
mkdir build && cd build
69 72 John Cary
../configure --prefix=$GCC_INSTS_DIR/gcc-${GCCVER} --enable-languages=c,c++,fortran --with-pic $ADDLOPTS
70
env LD_RUN_PATH=$GCC_INSTS_DIR/gcc-${GCCVER}/lib64 make -j 4
71 1 Redmine Admin
make install
72 75 John Cary
chmod -R a+rX $GCC_INSTS_DIR/gcc-${GCCVER} # Perms issues seen in 9.4.0: 9.4.0/include-fixed/openssl/bn.h
73 1 Redmine Admin
# Alias as desired.
74 72 John Cary
mkdir -p $GCC_INSTS_DIR/bin && cd $GCC_INSTS_DIR/bin
75
ln -s $GCC_INSTS_DIR/gcc-${GCCVER}/bin/{c,g}* .
76 1 Redmine Admin
~~~~~~
77
78
### Fix permissions
79
80
~~~~~~
81 80 John Cary
chown -R root:root $GCC_INSTS_DIR/gcc-${GCCVER}
82 72 John Cary
chmod -R g+rwX $GCC_INSTS_DIR/gcc-${GCCVER}
83 49 Nathan Neri
chmod -R o+rX $GCC_INSTS_DIR/gcc-${GCCVER}
84 54 Nathan Neri
find $GCC_INSTS_DIR/gcc-${GCCVER} -type d -exec chmod g+rs '{}' \;
85
~~~~~~
86
87
88
89 49 Nathan Neri
90 1 Redmine Admin
## LaTeX
91
92 46 John Cary
LaTeX is needed for building documentation using Sphinx.
93 1 Redmine Admin
94 46 John Cary
Bilder prefers the texlive-latex package. For gui usage, see texworks: http://www.tug.org/texworks
95
96 1 Redmine Admin
If you cannot install in the system area, you can download
97
98
~~~~~~
99
wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
100
tar xzf install-tl-unx.tar.gz
101 76 John Cary
cd install-tl-20230412 (date might be different)
102 1 Redmine Admin
./install-tl -no-gui
103
~~~~~~
104
105
This is now interactive, so set
106 11 Matt Copper
 
107 10 Matt Copper
* Set scheme to basic
108
** To do this type 'S' and hit enter.
109
** Then enter 'd' to set the scheme to basic.
110
** Type 'R' and hit enter to return to the main configuration page.
111 1 Redmine Admin
112 10 Matt Copper
* Set TEXDIR = $CONTRIB_DIR/texlive
113
** Start by typing 'D' and hit enter.
114
** Then enter '1' to change TEXDIR.
115
** Type $CONTRIB_DIR/texlive and hit return.
116
** To return to configuration type 'R' and return.
117 1 Redmine Admin
118 10 Matt Copper
* Set page size to Letter size
119
** Type 'O' and hit enter.
120
** Enter 'P'
121
** Return to main menu by typing 'R' and enter. 
122
123
* Install
124
** Type 'I' and hit enter to install.
125
126
* Put your texlive in your PATH.
127
** Edit you bashrc (vim ~/.bashrc)
128
** Add "export PATH=$PATH:<$CONTRIB_DIR>/texlive/bin/x86_64-linux/" (enter the full CONTRIB_DIR value)
129
** Exit and save. Then source ~/.bashrc.
130
131
To ensure you are using the correct texlive installation type "which pdflatex" and make sure it 
132
the one in $CONTRIB_DIR/texlive/bin/x86_64-linux/. If it is not the correct pdflatex, you may
133 1 Redmine Admin
have to remove the system version (sudo yum remove texlive). 
134 38 John Cary
135 46 John Cary
and then install the packages noted at
136 45 John Cary
137 46 John Cary
[[LaTeX packages needed by Bilder]]
138 38 John Cary
139 81 David Alexander
## Language Local
140
141
The txbase unit tests need a german local package. It can be generated by the command:
142
143
~~~~~~~
144
sudo locale-gen de_DE.UTF-8
145
~~~~~~~
146 1 Redmine Admin
147 25 John Cary
## Additional packages
148 1 Redmine Admin
149 25 John Cary
Other parts of the toolchain introduce other package requirements.  Below are the initial lists.
150
151 61 Nathan Neri
### Fedora / Redhat / CentOS
152 24 John Cary
153 44 John Cary
The following packages (cut and paste after dnf install or yum install) are needed for Fedora, Redhat, CentOS
154 1 Redmine Admin
155 40 John Cary
~~~~~~
156 69 David Alexander
bc bison git-lfs glib2-devel imake krb5-devel lapack-devel blas-devel blas-static libcurl-devel libxkbcommon-devel libxkbcommon-x11-devel libxml2-devel openssl-devel patch redhat-lsb zlib-devel libXt-devel
157 40 John Cary
~~~~~~
158 9 David Alexander
159
For more recent versions of Fedora, you will need.
160 40 John Cary
161
~~~~~~
162 43 John Cary
egl-wayland mesa-libEGL-devel redhat-rpm-config
163 18 John Cary
~~~~~~
164 1 Redmine Admin
165 47 David Alexander
For centos7 you will also need.
166
167
~~~~~~
168 62 John Cary
imake xorg-x11-utils
169 1 Redmine Admin
~~~~~~
170 61 Nathan Neri
171
and to build Qt 5 for VisIt you will need.
172 1 Redmine Admin
173 61 Nathan Neri
~~~~~~
174 71 Ted Sume
dbus-devel nss-devel gperf libxcb-devel xcb-util-renderutil-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-wm-devel xcb-util-devel xcb-util-cursor-devel
175 61 Nathan Neri
~~~~~~
176
177 47 David Alexander
178 18 John Cary
### Ubuntu
179 24 John Cary
180 1 Redmine Admin
The following packages are needed for Ubuntu
181
182
~~~~~~
183 48 Benjamin Cowan
ace-netsvcs
184
bc
185 1 Redmine Admin
bison
186 48 Benjamin Cowan
flex
187
gfortran
188
graphviz
189
libblas-dev
190
libfreetype6-dev
191
libgl1-mesa-dev
192
libglu1-mesa-dev
193
libgraphviz-dev
194
liblapack-dev
195
libntlm0
196
libpng-dev
197
libxext-dev
198
libxrender-dev
199
libxtst-dev
200
libzzip-dev
201
mailutils
202
python2.7
203
python2.7-dev
204
zlib1g-dev
205 1 Redmine Admin
~~~~~~
206 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" 
207
* zlib-dev doesn't exist on ubuntu 16.04 - use zlib1g-dev instead.
208
209 1 Redmine Admin
mailutils is necessary for configuring the system for jenkins. 
210 14 Jonathan Smith
You'll be offered to choose:
211
* Internet site
212
* Internet with smarthost
213
* Satellite system
214 1 Redmine Admin
* Local only
215 14 Jonathan Smith
216
Internet with smarthost is recommended.
217 1 Redmine Admin
218 14 Jonathan Smith
219 1 Redmine Admin
The use of the following commands are helpful. To search for an available package dealing with a keyword, use:
220
221
~~~~~~
222
$ sudo apt-cache search keyword
223
~~~~~~
224
225
To install a particular package, use:
226
227
~~~~~~
228
$ sudo apt-get install libblah-dev
229
~~~~~~
230
231
Note: that development packages names typically end with "dev" not "devel" as in other flavors of linux.
232
233
### Suse Linux Enterprise Server (SLES)
234
235 43 John Cary
The following packages (in cut/paste for zypper form) are needed on SLES
236 1 Redmine Admin
237
~~~~~~
238 43 John Cary
bc bison blas-devel blas-devel-static libblas3 flex freetype2-devel
239
gcc gcc-32bit gcc-fortran git glibc-devel glibc-devel-32bit
240
graphviz graphviz-devel libbz2-devel lapack-devel lapack-devel-static liblapack3 libpng-devel libssh-devel libxml2-devel
241
mailx mercurial Mesa-devel python-devel
242
xorg-x11-devel xorg-x11-libXext-devel xorg-x11-libXrender-devel xorg-x11-libs zlib-devel
243 1 Redmine Admin
~~~~~~
244 43 John Cary
245
The following are needed to build subversion
246
247
~~~~~~
248
libapr-util1 libapr1 libneon27
249
~~~~~~
250
251 1 Redmine Admin
252
To get blas-devel, blas-devel-static and lapack-devel, lapack-devel-static on SLES 11 SP3 , add the Science repository
253
254
~~~~~~
255 40 John Cary
zypper addrepo http://download.opensuse.org/repositories/science/SLE_11_SP3/science.repo
256
zypper refresh
257
zypper install blas-devel blas-devel-static lapack-devel lapack-devel-static
258 1 Redmine Admin
~~~~~~
259 24 John Cary
260 1 Redmine Admin
## Qt Prerequisites
261
262 25 John Cary
Qt-5 must be built with QtWebEngine, which particularly introduces requirements for other packages as noted at
263 24 John Cary
264 25 John Cary
* https://doc.qt.io/qt-5.10/qtwebengine-platform-notes.html
265
* https://wiki.qt.io/QtWebEngine/How_to_Try
266
* https://www.ics.com/blog/building-qtwebengine
267
* http://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html
268
269
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.
270 1 Redmine Admin
271 24 John Cary
### Fedora
272
273
~~~~~~
274 41 John Cary
sudo yum install alsa-lib-devel bison cups-devel dbus-devel flex fontconfig-devel gperf libicu-devel
275 64 John Cary
sudo yum install libcap-devel libgcrypt-devel libgcrypt libgudev1-devel libsndfile-devel libstdc++-static libwebp-devel
276 27 John Cary
sudo yum install libXcomposite-devel libXcursor-devel libXi-devel libXrandr-devel libxslt-devel libXtst-devel
277 1 Redmine Admin
sudo yum install mesa-libEGL-devel nss-devel opus-devel pciutils-devel pulseaudio-libs-devel re2c ruby systemd-devel
278
~~~~~~
279
280
## Vendor-specific version of graphics driver
281
282
If you are preparing a Linux machine for the VisIt Visualization package, the vendor-specific graphics driver for your graphics card should be installed.
283
284
By default, a generic graphics driver is installed.  On Fedora, the generic driver is "nouveau".
285
286
To determine if the nouveau driver is installed on your system, enter the command
287
288
~~~~~~
289 40 John Cary
lsmod | grep nouv
290 1 Redmine Admin
~~~~~~
291
292
You will need to download and install the appropriate driver from your graphics card vendor.  This generally uninstalls the nouveau drivers.
293 3 Matt Copper
294 4 Matt Copper
## NVIDIA CUDA Toolkit
295 3 Matt Copper
296
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 
297
298
~~~~~~
299 40 John Cary
https://developer.nvidia.com/cuda-toolkit-70
300 3 Matt Copper
~~~~~~
301
302
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. 
303
304
~~~~~~
305 40 John Cary
cd <location of download>
306
sudo rpm -i cuda-repo-fedora21-7-0-local-7.0-28.x86_64.rpm   #<or whatever file you downloaded> 
307
sudo dnf install cuda
308 3 Matt Copper
~~~~~~
309
310 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:
311 3 Matt Copper
312
~~~~~~
313 40 John Cary
which nvcc
314 3 Matt Copper
~~~~~~
315 23 John Cary
The output should be /usr/local/cuda-7.0/bin/nvcc. This will allow bilder to build GPU c++ code.
316 31 Jonathan Smith
317
IMPORTANT NOTE: CUDA versions only support particular GCC versions, and the latest GCC may not support your CUDA.[[ CUDAgccCompatibility | See this wiki page for details ]]