Chapter: Install and Build

WARNING: This documentation is not maintained anymore. Some part might be obsolete or wrong, some part might be missing but still some valuable information can be found there. Instead please refer to the ROOT Reference Guide and the ROOT Manual. If you think some information should be imported in the ROOT Reference Guide or in the ROOT Manual, please post your request to the ROOT Forum or via a Github Issue.

30 Appendix A: Install and Build ROOT

30.1 License

ROOT is made available under the LGPL v2.1 license. For full details see the file LICENSE in the ROOT distribution.

30.2 Installing ROOT

To install ROOT you will need to go to the ROOT website at:

You have a choice to download the binaries or the source. The source is quicker to transfer since it is only 31 MB, but you will need to compile and link it. The binaries range from 50 MB to 100 MB depending on the target platform.

30.3 Choosing a Version

The ROOT developers follow the principle of “release early and release often”, however a very large portion of a user base requires a stable product therefore generally three versions of the system is available for download - new, old and pro:

30.4 Installing Precompiled Binaries

The binaries are available for downloading from Once downloaded you need to unzip and de-tar the file. For example, if you have downloaded ROOT v5.30 for Linux-SLC5:

% gunzip root_v5.30.00.Linux-slc5-gcc4.3.tar.gz
% tar xvf root_v5.30.00.Linux-slc5-gcc4.3.tar

This will create the directory root. Before getting started read the file README/README. Also, read the Introduction chapter for an explanation of the directory structure.

30.5 Installing from the Source

The ROOT’s source code sits in the GitHub repository all the details and options to buld ROOT from sources are given in

In short, the steps to build ROOT from the sources are the following:

  1. Clone the repository:
$ git clone
  1. Make a directory for building
$ mkdir build
$ cd build
  1. Run cmake and make
$ cmake ../root
$ make -j8
  1. Setup and run ROOT
$ source bin/
$ root Staying up-to-date

To keep your local ROOT source up-to-date with the GitHub repository you should regularly run the command:

% git pull

30.6 File system.rootrc

ROOT Environment settings are handled via the class TEnv. gEnv->Print()shows which values are active. Any settings can be obtained by TEnv::GetValue methods that return an integer, double or character value for a named resource. If the resource is not found, the default value (given as the second parameter) is returned.

fShowEventStatus = gEnv->GetValue("Canvas.ShowEventStatus",kFALSE);

Via the method TEnv::SetValue allows you can set the value of a resource or create a new resource:


Path used by dynamic loader to find shared libraries and macros. Paths are different for Unix and Windows. The example shows the defaults for all ROOT applications for either Unix or Windows:

Unix.*.Root.DynamicPath:    .:$(ROOTSYS)/lib
Unix.*.Root.MacroPath:      .:$(ROOTSYS)/macros
WinNT.*.Root.DynamicPath:   .;$(ROOTSYS)/bin;$(PATH)
WinNT.*.Root.MacroPath:     .;$(ROOTSYS)/macros

Path where to look for TrueType fonts:

Unix.*.Root.UseTTFonts:     true
*.*.Root.TTFontPath:        $(ROOTSYS)/fonts

Use Net* API functions:

WinNT.UseNetAPI:            true

Use thread library (if exists).

Unix.*.Root.UseThreads:     false

Select the compression algorithm (0=old zlib, 1=new zlib). Setting this to `0’ may be a security vulnerability.

Root.ZipMode:               1

Show where item is found in the specified path:

Root.ShowPath:              false

Activate memory statistics.

Root.ObjectStat:            0

Global debug mode. When >0 turns on progressively more details debugging.

Root.Debug:                 0
Root.Stacktrace:            yes

Settings for X11 behaviour.

X11.Sync:                   no
X11.FindBestVisual:         yes

Default editor in use.

Unix.*.Editor:              vi
WinNT.*.Editor:             notepad

Default 3d Viewer. By default 3-D views are shown in the pad, if the next line is activated, the default viewer will be OpenGL.

Viewer3D.DefaultDrawOption: ogl

Default Fitter (current choices are Minuit, Minuit2, Fumili and Fumili2).

Root.Fitter:                Minuit

Specify list of file endings which TTabCom (TAB completion) should ignore.

TabCom.FileIgnore:          .cpp:.h:.cmz

30.6.1 TCanvas Specific Settings

Opaque move and resize show full pad during the operation instead of only the outline. Especially for resize you will need serious CPU power. UseScreenFactor=true means to size canvas according to size of screen, so a canvas still looks good on a low resolution laptop screen without having to change canvas size in macros.

Canvas.MoveOpaque:          false
Canvas.ResizeOpaque:        false
Canvas.UseScreenFactor:     true

Hight color 2 is the red one.

Canvas.HighLightColor:      2

Next three settings are related to different user interface parts of canvas window. If they are set to true, the corresponding event status bar, tool bar, graphics editor will be activated by default.

Canvas.ShowEventStatus:     false
Canvas.ShowToolBar:         false
Canvas.ShowEditor:          false

AutoExec allows TExec objects to be executed on mouse and key events.

Canvas.AutoExec:            true

Canvas print directory is set to the current one by default:

Canvas.PrintDirectory     .

Printer settings:

WinNT.*.Print.Command:    AcroRd32.exe
#Unix.*.Print.Command:    a2ps -P%p --landscape --columns=2 --margin=30 -rf8.0 %f
Print.Printer:            32-rb20-hp
Print.Directory:          .
Print.FileType:           pdf

Default histogram binnings used by TTree::Draw() method.

Hist.Binning.1D.x:          100
Hist.Binning.2D.x:           40
Hist.Binning.2D.y:           40
Hist.Binning.2D.Prof:       100
Hist.Binning.3D.x:           20
Hist.Binning.3D.y:           20
Hist.Binning.3D.z:           20
Hist.Binning.3D.Profx:      100
Hist.Binning.3D.Profy:      100

Default statistics names used for parameters in TPaveStats:

Hist.Stats.Entries         Entries
Hist.Stats.Mean            Mean
Hist.Stats.MeanX           Mean x
Hist.Stats.MeanY           Mean y
Hist.Stats.RMS             RMS
Hist.Stats.RMSX            RMS x
Hist.Stats.RMSY            RMS y
Hist.Stats.Underflow       Underflow
Hist.Stats.Overflow        Overflow
Hist.Stats.Integral        Integral
Hist.Stats.Skewness        Skewness
Hist.Stats.SkewnessX       Skewness x
Hist.Stats.SkewnessY       Skewness y
Hist.Stats.Kurtosis        Kurtosis
Hist.Stats.KurtosisX       Kurtosis x
Hist.Stats.KurtosisY       Kurtosis y

30.6.2 THtml Specific Settings

See the reference guide documentation of THtml class at for more details.

XHTML content charset (see, default: ISO-8859-1) is set by:


Stem of a search engine for the documentation, where %s is replaced by the term entered in the search text box (example:, default is "")


Link to the site’s search engine (default: "", example:


String to prepend to TClass::GetImplFileName() names containing directories when looking for source files (default: "", example: ../root)


Link stem to ViewCVS entry for classes, where a class name is assumed to match a file name (default: "", example:


Stem of the CERN XWho system (default:


If set to Doc++, allow method documentation in front of method even for methods in the source file (default: "")


Search path for the source and header files with their default settings:

Unix.*.Root.Html.SourceDir:  .:src:include
WinNT.*.Root.Html.SourceDir: .;src;include

URL stem for ROOT documentation pages (default is "").


Filesystem output directory for generated web pages (default: htmldoc).

Root.Html.OutputDir:        htmldoc/

Address of the package’s home page (default:


Location of user defined header and footer files, see (defaults are "", example: ../header.txt, ../footer.txt):


Tag for detecting class description comments (default value is set below).

Root.Html.Description:      //____________________

Tag for detecting “Author” comment (default value is set below).

Root.Html.Author:           // Author:

Tag for detecting “last updated” comment. THtml uses the current date if this tag is not found in a class source file (default value is set below).

Root.Html.LastUpdate:       // @(#)

Tag for detecting “Copyright” comment (default value is set below).

Root.Html.Copyright:        * Copyright

30.6.3 GUI Specific Settings

Set the “native” ROOT GUI interface to be used in a ROOT session.

Gui.Backend:                native
Gui.Factory:                native

GUI default fonts in use:

Gui.DefaultFont:            -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1
Gui.MenuFont:               -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1
Gui.MenuHiFont:             -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1
Gui.DocFixedFont:           -adobe-courier-medium-r-*-*-12-*-*-*-*-*-iso8859-1
Gui.DocPropFont:            -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1
Gui.IconFont:               -adobe-helvetica-medium-r-*-*-10-*-*-*-*-*-iso8859-1
Gui.StatusFont:             -adobe-helvetica-medium-r-*-*-10-*-*-*-*-*-iso8859-1

Regular background and foreground colors in use:

Gui.BackgroundColor:         #c0c0c0
Gui.ForegroundColor:         black

Selection background and foreground colors in use:

Gui.SelectBackgroundColor:   #000080
Gui.SelectForegroundColor:   white

Document background and foreground colors in use:

Gui.DocumentBackgroundColor: white
Gui.DocumentForegroundColor: black

Tooltip background and foreground colors in use:

Gui.TooltipBackgroundColor:  LightYellow
Gui.TooltipForegroundColor:  black

Path where all GUI icons in use can be found:

Gui.IconPath:                $(HOME)/icons:$(ROOTSYS)/icons:.

Mime type file setting:

Gui.MimeTypeFile:            $(HOME)/.root.mimes

If $(HOME)/.root.mimes does not exists, defaults to this:

#Gui.MimeTypeFile:            $(ROOTSYS)/etc/root.mimes

30.6.4 TBrowser Settings

Current icon style selection - can be either small, big, list, details:

Browser.IconStyle:           small

Current sorting rule applied on the browser objects - can be name, type, size, date:

Browser.SortBy:              name

Number of items in a group view:

Browser.GroupView:           10000

Show or not hidden items:

Browser.ShowHidden:          no

Create a thumbnail view after executing the macro (default is yes).

Browser.AutoThumbnail:       yes

30.6.5 TRint Specific Settings

Rint (interactive ROOT executable) specific alias, logon and logoff macros.

Rint.Load:               rootalias.C
Rint.Logon:              rootlogon.C
Rint.Logoff:             rootlogoff.C

Record ROOT session commands in a given history file (default is $(HOME)/.root_hist). If set to “-”, it turn off the command recording.

Rint.History:            $(HOME)/.root_hist

Next two lines set the history file size handling. Once HistSize is reached, the last HistSave entries are removed. If HistSize is set to 0, it turns off command recording. Both values can be overridden by environment variable ROOT_HIST=size[:save], where the “:save” part is optional.

Rint.HistSize:         500
Rint.HistSave:         400

30.6.6 ACLiC Specific Settings

ACLiC.Linkdef specifies the suffix that will be added to the script name to try to locate a custom linkdef file when generating the dictionary.

ACLiC.Linkdef:          _linkdef

The top directory for storing the libraries produced by ACLiC is set by:

ACLiC.BuildDir:        /where/I/would/like/my/compiled/scripts

The additional include directives for ACLiC compilations are set by:

ACLiC.IncludePaths:     -I/where/the/includes/are

PROOF debug options.

Proof.DebugLevel: 0

PROOF GDB hooks allows a debugger to be attached early in the startup phase of proofserv:0 - don’t wait; 1 - master proofserv enters wait loop; 2 - slave proofserv enters wait loop; 3 - any proofserv enters wait loop

Proof.GdbHook:    0

On the master to enable the parallel startup of workers using threads set next to “yes” (default is “no”):

Proof.ParallelStartup: no
Proof.StatsHist:       no
Proof.StatsTrace:      no
Proof.SlaveStatsTrace: no
Proof.CondorHome:     /opt/condor
Proof.CondorConfig:   /opt/condor/etc/condor_config
PEAC.GmUrl:           http://somewhere:8080/clarens/
PEAC.LmUrl:           http://elsewhere:8080/clarens/ Server Authentication in TServerSocket

General setting: file with server access rules

SrvAuth.DaemonRc:        /etc/root/system.daemonrc

Check of host equivalence via /etc/hosts.equiv or $HOME/.rhosts.

SrvAuth.CheckHostsEquivalence: 1

Force file opening via TNetFile (TXNetFile) if a hostname is specified in the Url. By default, for local files TFile::Open() invokes directly TFile.

TFile.ForceRemote:        yes

Special cases for the TUrl parser, where the special cases are parsed in a protocol + file part, like rfio:host:/path/file.root, castor:/path/file.root or /alien/path/file.root. In case the file namespace descriptor ends with - the namespace is not a part of the filename. Extend in private .rootrc with a +Url.Special line.

Url.Special:             file: rfio: hpss: castor: gfal: dcache:
+Url.Special:            /alien/- /castor/ PROOF XRD Client Variables

Debug level (if <=0 : none, 1 : low, 2 : medium, 3 : high)

XProof.Debug:       0

Socket read timeout [in secs: default 10 secs]

XProof.ReadTimeout: 10

The following env vars are handled by TXNetFile and related classes (module netx,

XNet.ConnectTimeout - maximum time to wait before server’s response on a connect [10 s]

XNet.RequestTimeout - maximum time to wait before considering a read/write failure [60 s]

XNet.ConnectDomainAllowRE - sequence of TRegexp regular expressions separated by a |. A domain is granted access to for the first connection if it matches one of these regexps. Example:||

XNet.ConnectDomainDenyRE - sequence of TRegexp regular expressions separated by a |. A domain is denied access to for the first connection if it matches one of these regexps.

XNet.RedirDomainAllowRE - sequence of TRegexp regular expressions separated by a |. A domain is granted access to for a redirection if it matches one of these regexps. Example:

XNet.RedirDomainDenyRE - sequence of TRegexp regular expressions separated by a |. A domain is granted access to for a redirection if it matches one of these regexps.

XNet.MaxRedirectCount - maximum number of redirections from server [default - 255]

XNet.Debug - log verbosity level (0=nothing,1=messages of interest to the user, 2=messages of interest to the developers (includes also user messages), 3=dump of all sent/received data buffers (includes also user and developers messages). [default - 0]

XNet.ReconnectTimeout - sleep-time before going back to the load balancer (or rebouncing to the same failing host) after a read/write error [default - 10s]

XNet.StartGarbageCollectorThread - for test/development purposes. Normally nonzero (true), but as workaround for external causes someone could be interested in not having the garbage collector thread around. [experimental!]

XNet.GoAsynchronous - default is 0. When activated, XTNetFile works in async mode, allowing input buffering and unsolicited responses [experimental!]

XNet.TryConnect - Number of tries connect to a single server before giving up.

XNet.TryConnectServersList - number of connect retries to the whole server list given [default - 240]

XNet.PrintTAG - Print a particular string the developers can choose to quickly recognize the version at run time [default - 0]

Example of custom setting for the Rint application (root.exe). This overrides the default specified above for a generic application. Color 5 is yellow.

Rint.Canvas.HighLightColor:      5

30.7 Documentation to Download