Graphviz-14.1.5

#### Beyond Linux® From Scratch (systemd Edition) - Version r13.0-553

### Chapter 11. General Utilities

- Prev

  glslc from shaderc-2026.2

- Next

  GTK-Doc-1.36.1

- Up
- Home

# Graphviz-14.1.5

## Introduction to Graphviz

The Graphviz package contains graph visualization software. Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Graphviz has several main graph layout programs. It also has web and interactive graphical interfaces, auxiliary tools, libraries, and language bindings.

### Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

### Package Information

- Download (HTTP): https://gitlab.com/graphviz/graphviz/-/archive/14.1.5/graphviz-14.1.5.tar.bz2

- Download MD5 sum: b7448daa56b997bc31e7a44b4e9f2a5a

- Download size: 36 MB

- Estimated disk space required: 197 MB (6.6 MB installed)

- Estimated build time: 0.3 SBU (using parallelism=4)

### Graphviz Dependencies

### Note

Basic usage of Graphviz does not require any libraries out of what is found in the LFS book. Its “core” rendering engine is able to generate several graphic formats, such as Postscript, SVG, VML, .fig, and Tk. Those formats can be converted to almost any other format using tools from packages such as ImageMagick-7.1.2-13. The dependencies below add the ability to generate graph images in bitmap format, to display the graph image on screen, to edit a graph by viewing the resulting image directly, or to view large graphs. Since Graphviz is a dependency of several other packages in this book, it is suggested that you first build it without any dependencies, and then rebuild it when you have built enough packages to suit your needs.

#### Required

CMake-4.3.2

#### Recommended, for needed bitmap outputs

Pango-1.57.1, with Cairo-1.18.4, Xorg Libraries, Fontconfig-2.17.1, libpng-1.6.58, to generate images in bitmap SVG, postscript, PNG, and PDF formats, or to display the image on screen. The PNG output is required for building gegl-0.4.70.

#### Optional, for additional bitmap outputs

AAlib-1.4rc5 (for outputting images in ASCII art), Cups-2.4.19 (for formatting graphs for printing), Qt-6.11.0, and WebKitGTK-2.52.0

Adding GTK+-2 with libjpeg-turbo-3.1.4.1 adds support for JPEG, BMP, TIF, and ICO formats, and allows displaying the image in a GTK+ window

GD Library may be used instead of Pango. It adds the ability to generate images in GIF, VRML, and GD formats, but Pango provides better outputs for the other formats, and is needed for displaying images

Other formats may be added with libwebp-1.6.0, DevIL, libLASi, and glitz

#### Optional (to load graphics that may be displayed inside the nodes of a graph)

`libgs.so` from ghostscript-10.07.0, librsvg-2.62.1, and Poppler-26.05.0

#### Optional (to build more tools)

libANN and Freeglut-3.8.0 (with GtkGLExt and libGTS for building the smyrna large graph viewer, which is considered experimental)

#### Optional (to build language bindings)

SWIG-4.4.1 (SWIG must be installed or no bindings will be built), GCC-15.2.0 (for the go compiler), Guile-3.0.11, OpenJDK-21.0.10, Lua-5.4.8, PHP-8.5.6, Ruby-4.0.3, Tk-8.6.17, and R

#### Optional (building tools)

Criterion (framework for tests) and Electric Fence

#### Optional (for building the pdf documentation)

ghostscript-10.07.0 (for the ps2pdf command)

## Installation of Graphviz

Now prevent hard coding library search paths (rpath) into the shared libraries. The libraries do not need the rpath for an installation into the standard location, and rpath may sometimes cause unwanted effects or even security issues. We cannot use `-D CMAKE_SKIP_INSTALL_RPATH=ON` for this package because the rpath is really needed for the programs installed by this package, so we need to edit the build system:

    sed '/ORIGIN/d' -i lib/CMakeLists.txt

Install Graphviz by running the following commands:

    mkdir build &&
    cd    build &&

    cmake -D CMAKE_INSTALL_PREFIX=/usr \
          -D CMAKE_BUILD_TYPE=Release  \
          ..                           &&

    sed -i '/GZIP/s/:.*$/=/' CMakeCache.txt &&

    make

This package does not come with a test suite that provides meaningful results.

Now, as the `root` user:

    make install

## Command Explanations

sed ... CMakeCache.txt: This command is needed to prevent compressing the packages's man pages.

## Configuring Graphviz

### Configuration Information

There are no specific configuration requirements for Graphviz. You may consider installing the additional plugins and tools available from the download page at https://graphviz.org/download/source/ for additional capabilities. If additional plugins are installed, you can run dot -c (as the `root` user) to update the `config` file in `/usr/lib/graphviz`.

## Contents

Installed Programs: acyclic, bcomps, ccomps, circo, cluster, dijkstra, dot, dot2gxl, dot_builtins, dot_sandbox, edgepaint, fdp, gc, gml2gv, graphml2gv, gv2gml, gv2gxl, gvcolor, gvedit, gvgen, gvmap, gvmap.sh, gvpack, gvpr, gxl2dot, gxl2gv, mm2gv, neato, nop, osage, patchwork, prune, sccmap, sfdp, tred, twopi, unflatten, and vimdot
Installed Libraries: libcdt.so, libcgraph.so, libgvc.so, libgvpr.so, libpathplan.so, libxdot.so, and several plugins in /usr/lib/graphviz/.
Installed Directories: /usr/include/graphviz, /usr/lib/graphviz, /usr/lib/cmake/graphviz, and /usr/share/graphviz

### Short Descriptions

acyclic | is a filter that takes a directed graph as input and outputs a copy of the graph with sufficient edges reversed to make the graph acyclic
bcomps | decomposes graphs into their biconnected components, printing the components to standard output
ccomps | decomposes graphs into their connected components, printing the components to standard output
circo | draws graphs using a circular layout
cluster | takes a graph in DOT format as input, finds node clusters, and then augments the graph with this information
dijkstra | reads a stream of graphs and for each computes the distance of every node from sourcenode
dot | draws directed graphs. It works well on DAGs and other graphs that can be drawn as hierarchies. It reads attributed graph files and writes drawings. By default, the output format dot is the input file with layout coordinates appended
dot2gxl | converts between graphs represented in GXL and in the DOT language. Unless a conversion type is specified using a flag, gxl2dot will deduce the type of conversion from the suffix of the input file, a `.dot` suffix causing a conversion from DOT to GXL, and a `.gxl` suffix causing a conversion from GXL to DOT
dot_sandbox | is a wrapper around graphviz. It aims to provide a safe environment for the processing of untrusted input graphs and command line options.
edgepaint | performs edge coloring to disambiguate crossing edges
fdp | draws undirected graphs using a “spring” model. It relies on a force-directed approach in the spirit of Fruchterman and Reingold
gml2gv | converts a graph specified in the GML format to a graph in the GV (formerly DOT) format
graphml2gv | converts a graph specified in the GRAPHML format to a graph in the GV (formerly DOT) format
gv2gml | converts a graph specified in the GV format to a graph in the GML format
gv2gxl | converts a graph specified in the GV format to a graph in the GXL format
gvcolor | is a filter that sets node colors from initial seed values. Colors flow along edges from tail to head, and are averaged (as HSB vectors) at nodes
gvedit | provides a simple graph editor and viewer. It allows many graphs to be viewed at the same time. The text of each graph is displayed in its own text window
gvgen | generates a variety of simple, regularly-structured abstract graphs
gvmap | takes as input a graph in DOT format, finds node clusters and produces a rendering of the graph as a geographic-style map, with clusters highlighted, in xdot format
gvmap.sh | is a pipeline for running gvmap
gvpack | reads in a stream of graphs, combines the graphs into a single layout, and produces a single graph serving as the union of the input graphs
gvpr | is a graph stream editor inspired by awk. It copies input graphs to its output, possibly transforming their structure and attributes, creating new graphs, or printing arbitrary information
gxl2dot | converts between graphs represented in GXL and in the DOT language. Unless a conversion type is specified using a flag, gxl2dot will deduce the type of conversion from the suffix of the input file, a `.dot` suffix causing a conversion from DOT to GXL, and a `.gxl` suffix causing a conversion from GXL to DOT
gxl2gv | converts between graphs represented in GXL and in the GV language
lefty | is a two-view graphics editor for technical pictures
lneato | is a graph editor for the X Window System. It may be run as a standalone editor, or as a front end for applications that use graphs. It can control multiple windows viewing different graphs
mm2gv | converts a sparse matrix of the Matrix Market format to a graph in the GV (formerly DOT) format
neato | draws undirected graphs using “spring” models. Input files must be formatted in the dot attributed graph language. By default, the output of neato is the input graph with layout coordinates appended
nop | reads a stream of graphs and prints each in pretty-printed (canonical) format on stdout. If no files are given, it reads from stdin
osage | draws clustered graphs. It takes any graph in DOT format as input
patchwork | draws clustered graphs using a squarified treemap layout. It takes any graph in DOT format as input
prune | reads directed graphs in the same format used by dot and removes subgraphs rooted at nodes specified on the command line via options
sccmap | decomposes digraphs into strongly connected components and an auxiliary map of the relationship between components. In this map, each component is collapsed into a node. The resulting graphs are printed to stdout
sfdp | draws undirected graphs using the “spring” model, but it uses a multi-scale approach to produce layouts of large graphs in a reasonably short time
tred | computes the transitive reduction of directed graphs, and prints the resulting graphs to standard output. This removes edges implied by transitivity. Nodes and subgraphs are not otherwise affected
twopi | draws graphs using a radial layout. Basically, one node is chosen as the center and put at the origin. The remaining nodes are placed on a sequence of concentric circles centered about the origin, each a fixed radial distance from the previous circle
unflatten | is a preprocessor to dot that is used to improve the aspect ratio of graphs having many leaves or disconnected nodes. The usual layout for such a graph is generally very wide or tall
vimdot | is a simple script which launches the gvim or vim editor along with a GUI window showing the dot output of the edited file
`libcdt.so` | manages run-time dictionaries using standard container data types: unordered set/multiset, ordered set/multiset, list, stack, and queue
`libcgraph.so` | supports graph programming by maintaining graphs in memory and reading and writing graph files. Graphs are composed of nodes, edges, and nested subgraphs
`libgvc.so` | provides a context for applications wishing to manipulate and render graphs. It provides command line parsing interfaces, common rendering code, and a plugin mechanism for renderers
`libpathplan.so` | contains functions to find the shortest path between two points in a simple polygon
`libxdot.so` | provides support for parsing and deparsing graphical operations specified by the xdot language

- Prev

  glslc from shaderc-2026.2

- Next

  GTK-Doc-1.36.1

- Up
- Home