O banco de dados Metakit facilita o uso de um banco de dados em uma aplicação Tcl/Tk. Tutoriais estão disponíveis nos links: Wiki - Tcl do Ricardo Jorge I, Wiki - Tcl do Ricardo Jorge II, Tutorial do Mark Roseman e http://wiki.tcl.tk/24022.
A biblioteca Metakit oferece uma API para a Tcl chamada Mk4tcl.
Baixei a última versão do Metakit (metakit-2.4.9.7.tar.gz) que eu encontrei no site http://equi4.com/pub/mk/, com o comando:
bash$wget -chttp://equi4.com/pub/mk/metakit-2.4.9.7.tar.gz
Em 2011 os fontes foram transferidos para o repositório do GitHub e pode ser baixado como um arquivo zipado do link: https://github.com/jcw/metakit/archive/master.zip!
Em seguida descompactei com o comando:
bash$tar -xzvfmetakit-2.4.9.7.tar.gz
Entrei no diretório metakit-2.4.9.7/builds:
bash$cdmetakit-2.4.9.7/builds
O comando seguinte tem a seguinte estrutura:
../unix/configure --with-tcl= [diretório_onde_está_o_arquivo_tcl.h]
Para encontrar o diretório onde está o arquivo tcl.h rodei:
bash#find / -nametcl.h/usr/include/tcl8.5/tcl-private/generic/tcl.h /usr/include/tcl8.5/tcl.h
E usando o diretório /usr/include/tcl8.5 rodei o comando:
bash:~/metakit-2.4.9.7/builds$../unix/configure --with-tcl=/usr/include/tcl8.5
Em seguida rodei:
bash:~/metakit-2.4.9.7/builds$ make
Depois me loguei como root e rodei (no mesmo diretório):
bash:~/metakit-2.4.9.7/builds# make install
Para testar se a biblioteca estava devidamente instalada rodei a Tcl no modo interativo e digitei package require Mk4tcl:
bash$ tclsh
% package require Mk4tcl
package not found
Mas o interpretador retornou package not found indicando que não estava encontrando a biblioteca. Para corrigir isso encontrei duas alternativas.
Localizar o caminho que a Tcl está procurando as bibliotecas e copiar o diretório Mk4tcl para uma dessas pastas.
Incluir no cabeçalho de cada script Tcl a linha lappend auto_path [diretório_onde_está_Mk4tcl]
O caminho (path) onde a Tcl procura por bibliotecas fica armazenado nas variáveis auto_path ou tcl_pkgPath. Então basta abrir o interpretador no modo interativo e digitar puts $auto_path ou puts $tcl_pkgPath.
% puts $auto_path /usr/share/tcltk/tcl8.5 /usr/lib /usr/local/lib/tcltk /usr/local/share/tcltk /usr/lib/tcltk /usr/share/tcltk % puts $tcl_pkgPath /usr/local/lib/tcltk /usr/local/share/tcltk /usr/lib/tcltk /usr/share/tcltk /usr/lib
Localizei a pasta Mk4tcl e copiei para a pasta /usr/share/tcltk/tcl8.5:
bash#find / -nameMk4tcl/usr/include/lib/Mk4tclbash#cp-R/usr/include/lib/Mk4tcl /usr/share/tcltk/tcl8.5
E finalmente o interpretador carregou a biblioteca:
bash$ tclsh
% package require Mk4tcl
2.4.9.7