Graphviz-7.1.0

Introdução a Graphviz

O pacote Graphviz contém um software de visualização gráfica. A visualização gráfica é uma forma de representar informações estruturais como diagramas de gráficos abstratos e redes de comunicação. O Graphviz tem vários aplicativos principais de esquemas gráficos. Também tem interfaces gráficas web e interativas, ferramentas auxiliares, bibliotecas e ligações de linguagem.

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

Informação do Pacote

Dependências do Graphviz

[Nota]

Nota

O uso básico do Graphviz não precisa de nenhuma biblioteca além das encontradas no livro LFS. O mecanismo de renderização central dele permite gerar vários formatos gráficos, tais como "Postscript", "SVG", "VML", ".fig" e "Tk". Esses formatos podem ser convertidos para quase qualquer outro formato usando, por exemplo, ferramentas originárias do ImageMagick-7.1.0-61. As dependências abaixo adicionam a capacidade de gerar imagens gráficas em formato "bitmap", exibir a imagem gráfica na tela, editar um gráfico visualizando a imagem resultante diretamente ou visualizar gráficos grandes. Uma vez que Graphviz é uma dependência de vários outros pacotes neste livro, é sugerido primeiro construí-lo sem quaisquer dependências, então reconstruí-lo quando você tiver construído pacotes suficientes para atender às suas necessidades.

Opcional, para várias saídas de "bitmap"

Pango-1.50.12, com Cairo-1.17.6, Bibliotecas do Xorg, Fontconfig-2.14.2 e libpng-1.6.39, para gerar imagens nos formatos "bitmap SVG", "postscript", "PNG" e "PDF" ou exibir a imagem na tela. A saída gerada "PNG" é exigida para construir gegl-0.4.40

Adicionar GTK+-2.24.33 com libjpeg-turbo-2.1.5.1 adiciona suporte para formatos "JPEG", "BMP", "TIF" e "ICO" e permite exibir a imagem em uma janela "GTK+"

GD Library pode ser usado em vez de Pango. Ela adiciona a capacidade de gerar imagens nos formatos "GIF", "VRML" e "GD", mas o Pango fornece saídas melhores para os outros formatos e é necessário para exibir imagens

Outros formatos podem ser adicionados com libwebp-1.3.0 (o suporte a "WebP" é considerado experimental), DevIL, libLASi e glitz

Opcional, para carregar imagens gráficas que podem ser exibidas dentro dos nós de um gráfico

libgs.so originária de ghostscript-10.00.0, librsvg-2.54.5 e Poppler-23.02.0

Opcional, para construir mais ferramentas

Freeglut-3.4.0 (com libglade-2.6.4, GtkGLExt e libGTS, para construir o visualizador de gráfico grande smyrna, que é considerado experimental) e Qt-5.15.8 (para construir o editor gráfico gvedit).

Opcional (para construir ligações de idioma)

SWIG-4.1.1 (SWIG precisa estar instalado ou nenhuma ligação será construída), GCC-12.2.0 (para o compilador "go"), Guile-3.0.9, OpenJDK-19.0.2, Lua-5.4.4, PHP-8.2.3, Ruby-3.2.1, Tk-8.6.13, Io, Mono, OCaml e R

Opcional (ferramentas de construção)

Criterion (estrutura essencial de suporte para os testes) e Electric Fence

Opcional (para construir a documentação "PDF")

ghostscript-10.00.0 (para o comando ps2pdf)

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/graphviz

Instalação do Graphviz

Instale Graphviz executando os seguintes comandos:

sed -i '/LIBPOSTFIX="64"/s/64//' configure.ac &&

./autogen.sh             &&
./configure --prefix=/usr \
            --docdir=/usr/share/doc/graphviz-7.1.0
[Nota]

Nota

Um aviso é gerado por autogen.sh porque a árvore de construção não é um repositório "git". Como resultado, a data da construção é configurada para zero (0). Para obter uma data significativa na sequência de caracteres da versão, você pode executar:

sed -i "s/0/$(date +%Y%m%d)/" builddate.h

Fixe ou não a data, prossiga para compilar o pacote:

make

Esse pacote não vem com uma suíte de teste que forneça resultados significativos.

Agora, como o(a) usuário(a) root:

make install

Explicações do Comando

sed ... configure.ac: Esse comando é necessário para evitar instalar arquivos em "/usr/lib64".

--with-javaincludedir="$JAVA_HOME/include -I$JAVA_HOME/include/linux": Se você tiver construído o OpenJDK-19.0.2 em "/opt" e desejar construir as ligações "JAVA", [então] é necessário especificar o local dos arquivos de cabeçalho "JAVA" a configurar. A chave do "configure" é projetado para somente um diretório, mas dois diretórios precisam ser incluídos. Isso é possível, no entanto, usando-se a chave "-I" dentro da variável.

--with-webp: Mesmo se libwebp-1.3.0 estiver instalado, ele não é incluído na construção sem essa opção.

--with-smyrna: Mesmo se as dependências necessárias estiverem instaladas, o visualizador gráfico interativo smyrna não é construído sem essa opção.

Configurando Graphviz

Arquivos de Configuração

/usr/lib/graphviz/config

Informação de Configuração

Não há requisitos específicos de configuração para Graphviz. Você possivelmente considere instalar os "plug-ins" e ferramentas adicionais disponíveis a partir da página de download em https://graphviz.org/download/source/ para recursos adicionais. Se "plug-ins" adicionais estiverem instalados, [então] você pode executar dot -c (como o(a) usuário(a) root) para atualizar o arquivo config em /usr/lib/graphviz.

Conteúdo

Aplicativos Instalados: acyclic, bcomps, ccomps, circo, cluster, dijkstra, dot, dot2gxl, dot_builtins, 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 e vimdot
Bibliotecas Instaladas: libcdt.so, libcgraph.so, libgvc.so, libgvpr.so, liblab_gamut.so, libpathplan.so, libxdot.so e vários "plug-ins" em /usr/lib/graphviz. Existem também várias em subdiretórios de /usr/lib/{lua,perl5,php,python3.11,tcl8.6}. Infelizmente, algumas bibliotecas são duplicadas.
Diretórios Instalados: /usr/include/graphviz, /usr/lib/graphviz, /usr/lib/tcl8.6/graphviz, /usr/share/doc/graphviz-7.1.0 e /usr/share/graphviz

Descrições Curtas

acyclic

é um filtro que recebe um gráfico direcionado como entrada e emite uma cópia do gráfico com arestas suficientes invertidas para tornar o gráfico acíclico

bcomps

decompõe gráficos nos componentes bi-conectados deles, imprimindo os componentes na saída padrão

ccomps

decompõe gráficos nos componentes conectados deles, imprimindo os componentes na saída padrão

circo

desenha gráficos usando um esquema circular

cluster

pega um gráfico no formato "DOT" como entrada, encontra aglomerados de nós e então aumenta o gráfico com essa informação

diffimg

(precisa de GD Library) gera uma imagem onde cada pixel é a diferença entre o pixel correspondente em cada uma das duas imagens de origem

dijkstra

lê um fluxo de gráficos e para cada um calcula a distância de cada nó a partir do nó de origem

dot

desenha gráficos direcionados. Funciona bem em "DAGs" e outros gráficos que possam ser desenhados como hierarquias. Ele lê arquivos atribuídos gráficos e escreve desenhos. Por padrão, o ponto de formato da saída gerada é o arquivo da entrada com coordenadas de esquema anexadas

dot2gxl

converte entre gráficos representados em "GXL" e na linguagem "DOT". A menos que um tipo de conversão seja especificado usando um sinalizador, gxl2dot deduzirá o tipo de conversão a partir do sufixo do arquivo de entrada; um sufixo .dot causa uma conversão de "DOT" para "GXL"; e um sufixo .gxl causa uma conversão de "GXL" para "DOT"

edgepaint

realiza a coloração de arestas para eliminar a ambiguidade dos cruzamentos de arestas

fdp

desenha gráficos não direcionados usando um modelo spring. Baseia-se em uma abordagem dirigida pela força no espírito de "Fruchterman" e "Reingold"

gc

é um gráfico análogo ao wc, pois imprime na saída padrão o número de nós, arestas, componentes conectados ou aglomerados contidos nos arquivos de entrada. Ele também imprime uma contagem total para todos os gráficos, se mais de um gráfico for fornecido

gml2gv

converte um gráfico especificado no formato "GML" em um gráfico no formato "GV" (anteriormente "DOT")

graphml2gv

converte um gráfico especificado no formato "GRAPHML" em um gráfico no formato "GV" (anteriormente "DOT")

gv2gml

converte um gráfico especificado no formato "GV" para um gráfico no formato "GML"

gv2gxl

converte um gráfico especificado no formato "GV" para um gráfico no formato "GXL"

gvcolor

é um filtro que configura as cores dos nós a partir dos valores iniciais de semente. As cores fluem ao longo das bordas a partir da cauda para a cabeça e são calculadas à média (como vetores "HSB") nos nós

gvedit

fornece um editor e visualizador simples de gráficos. Permite que muitos gráficos sejam visualizados ao mesmo tempo. O texto de cada gráfico é exibido na própria janela de texto dele

gvgen

gera uma variedade de gráficos abstratos simples e estruturados regularmente

gvmap

toma como entrada um gráfico no formato "DOT", encontra aglomerados de nós e produz uma renderização do gráfico como um mapa de estilo geográfico, com aglomerados realçados, no formato "xdot"

gvmap.sh

é uma linha tubular para executar o "gvmap"

gvpack

lê um fluxo de gráficos, combina os gráficos em um esquema e produz um gráfico servindo como a união dos gráficos de entrada

gvpr

é um editor de fluxo gráfico inspirado no awk. Ele copia gráficos de entrada para a saída dele, possivelmente transformando a estrutura e atributos deles, criando novos gráficos ou imprimindo informações arbitrárias

gxl2dot

converte entre gráficos representados em "GXL" e na linguagem "DOT". A menos que um tipo de conversão seja especificado usando um sinalizador, gxl2dot deduzirá o tipo de conversão a partir do sufixo do arquivo de entrada; um sufixo .dot causa uma conversão de "DOT" para "GXL"; e um sufixo .gxl causa uma conversão de "GXL" para "DOT"

gxl2gv

converte entre gráficos representados em "GXL" e na linguagem "GV"

mm2gv

converte uma matriz esparsa do formato "Matrix Market" em um gráfico no formato "GV" (anteriormente "DOT")

neato

desenha gráficos não direcionados usando modelos spring. Os arquivos de entrada precisam ser formatados na linguagem gráfica atribuída dot. Por padrão, a saída gerada de neato é o gráfico de entrada com coordenadas de esquema anexadas

nop

lê um fluxo de gráficos e imprime cada um em formato bem estampado (canônico) na saída padrão. Se nenhum arquivo for fornecido, [então] ele lê a partir da entrada padrão

osage

desenha gráficos agrupados. Toma qualquer gráfico no formato "DOT" como entrada

patchwork

desenha gráficos agrupados usando um esquema quadrado de mapa de árvore. Toma qualquer gráfico no formato "DOT" como entrada

prune

lê gráficos direcionados no mesmo formato usado por dot e remove sub-gráficos enraizados em nós especificados na linha de comando por meio de opções

sccmap

decompõe dígrafos em componentes fortemente conectados e um mapa auxiliar do relacionamento entre os componentes. Nesse mapa, cada componente é recolhido em um nó. Os gráficos resultantes são impressos na saída padrão

sfdp

desenha gráficos não direcionados usando o modelo spring, mas usa uma abordagem multi escala para produzir esquemas de gráficos grandes em um tempo razoavelmente curto

tred

calcula a redução transitiva de gráficos direcionados e imprime os gráficos resultantes na saída padrão. Isso remove as arestas implícitas pela transitividade. Nós e sub-gráficos não são afetados de outra forma

twopi

desenha gráficos usando um esquema radial. Basicamente, um nó é escolhido como centro e colocado na origem. Os nós restantes são colocados em uma sequência de círculos concêntricos centrados na origem, cada um a uma distância radial fixa a partir do círculo anterior

unflatten

é um pré-processador para dot que é usado para melhorar a proporção dos gráficos com muitas folhas ou nós desconectados. O esquema usual para tal gráfico geralmente é muito largo ou alto

vimdot

é um script simples que inicia o editor gvim ou o vim junto com uma janela "GUI" mostrando a saída gerada do dot do arquivo editado

libcdt.so

gerencia dicionários em tempo de execução usando tipos padrão de dados de contêiner: conjunto/multiconjunto não ordenado, conjunto/multiconjunto ordenado, lista, pilha e fila

libcgraph.so

suporta programação de gráficos, mantendo os gráficos na memória e lendo e gravando arquivos de gráficos. Os gráficos são compostos de nós, arestas e sub-gráficos aninhados

libgvc.so

fornece um contexto para aplicativos que desejam manipular e renderizar gráficos. Ele fornece interfaces de análise de linha de comando, código de renderização comum e um mecanismo de "plug-in" para renderizadores

libpathplan.so

contém funções para encontrar o caminho mais curto entre dois pontos em um polígono simples

libxdot.so

fornece suporte para analisar e desanalisar operações gráficas especificadas pela linguagem "xdot"