Database Server LETODBf no Linux

Foto de Anderson

Categoria: 

Instalando LetoDBf em servidor Linux

Para criar o servidor letodb no Linux você pode praticar instalando o Harbour e o LetoDBf em uma máquina virtual com o VirtualBox para criar o binário dele. 

No caso eu baixei a imagem do Debian 12, distribuição do Linux DVD, que vai dar interface gráfica para o usuário, escolha a versão compatível com a arquitetura do seu processador: 

- Não baixe o CD porque você só terá o modo console, baixe o DVD.

Se estiver no VirtualBox, não esqueça de configurar depois a sua rede em modo Bridge: Configurações > Rede > Placa em modo Bridge.

O Debian foi escolhido porque foi o utilizado pelo Alexander Kresin com o LetoDB. Parece que o Debian também é compatível com o Ubuntu.

Vamos trabalhar com alguns aplicativos do Linux, o Firefox para navegar na internet, o Files que equivale ao Windows Explorer e o Terminal que equivale ao CMD do Windows (conhecido como janela do MS-DOS).

Activities
apps firefox, files e terminal respectivamente
Apps Firefox, Files e Terminal respectivamente.

Updating from such a repository can't be done securely, and is therefore disabled by default.

Se você instalou o Debian 12 bookworm por um dos links acima no VirtualBox, então vai dar esse problema.

Ao dar um  "apt update" acontece isso: 

E: The repository 'cdrom://[Debian GNU/Linux 12.0.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20230610-10:23] bookworm Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Daí, tem que ir no /etc/apt/sources.list, apague a linha que está lá e deixe assim:

deb http://deb.debian.org/debian bookworm main contrib non-free
deb-src http://deb.debian.org/debian bookworm main contrib non-free

deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free

deb http://deb.debian.org/debian bookworm-updates main contrib non-free
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free

deb http://deb.debian.org/debian bookworm-backports main contrib non-free
deb-src http://deb.debian.org/debian bookworm-backports main contrib non-free

Daí vai pegar tudo atualizado pela web. Salve que agora vai! 

Fonte dessa informação: https://wiki.debian.org/pt_BR/SourcesList

INSTALAR O GIT NO LINUX

Depois de dar esse "update" você pode instalar o git para facilitar a sua vida. Daí você não precisa ficar fazendo download pelo navegador, criando pasta, descompactando etc.
Digite:

apt install git

Vamos exemplificar mais adiante.

A INSTALAÇÃO DO LETODB NO SERVIDOR LINUX

Vamos copiar os DBFs para uma pasta no servidor Linux e instalar o letodb nele. Eles serão acessados pelo endereço IP do servidor nos computadores da rede que usam Windows com o seu aplicativo.

Nenhum computador da rede enxergará a pasta onde estão os bancos de dados a não ser o seu aplicativo que se conectará via LetoDBf ao servidor.

Até agora você preparou o Linux. Vamos agora baixar o Harbour e o LetoDBf.

 

Instalar Harbour a partir dos fontes no Linux

Para o Harbour funcionar direitinho com a sua distribuição Linux é melhor baixar os fontes e compilar nele. Não é difícil e vai garantir que ele funcione.

INSTALAR O COMPILADOR GCC E O BUILD-ESSENTIAL

Na verdade, a imagem que baixamos do DEBIAN 12 já tem o GCC e o build-essential, então você pode pular essa etapa.

Vá no terminal, entre no modo de super usuário (execute o comando "su" e coloque a sua senha), dê um update, instale o gcc e o pacote build-essential. Para isso vá digitando linha a linha conforme abaixo:

su
apt update
apt install gcc
apt install build-essential

BAIXAR OS FONTES DO HARBOUR

Faça o download do Harbour no Linux. Vá pelo Firefox e acesse o site:
https://github.com/harbour/core

Baixe os fontes, copie para a pasta "home" com o Files do Linux e descompacte (Extract) o arquivo com o botão direito em cima dele.

Renomeie a pasta para harbour, se preferir.

Entre no terminal, digite "su" e sua senha para entrar no modo root e entre na pasta descompactada do harbour para compilar a partir dos fontes dessa forma:

cd core-master
make
make install

BAIXANDO O HARBOUR COM O GIT

Muito mais rápido e prático do que o processo anterior é fazer isso aqui no Terminal (tendo instalado o GIT). Só chamar o "git clone" com a URL onde estão os arquivos do Harbour e o nome da pasta que será criada para baixar. Seria isso:

git clone https://github.com/harbour/core.git hb32
cd hb32
make
make install

Onde essa URL você pega no GitHub do Harbour e o hb32 é o nome da pasta que será criada para baixar os fontes.

 

BAIXAR OS FONTES DO LETODBf

Use o fork LetoDBf do Rolf Beckmann (Elchs) que é uma versão melhorada do LetoDB.

Vá pelo Firefox e acesse o site:

https://github.com/elchs/LetoDBf

Extraia para home/LetoDBf-master.

Renameie para "letodbf".

Agora acesse normalmente essa pasta pelo Terminal como se fosse o CMD do Windows para compilar o servidor LetoDBf, chame hbmk2 letodbaddon.hbp:

root@Debian:/home/anderson/LetoDbf# hbmk2 letodbaddon.hbp

O binário estará na pasta letodbf/bin, confira! Observe que o binário não tem extensão, é apenas "letodb".

root@debian:/home/anderson/letodbf/bin# dir
letodb   letodb.ini   leto.sh

Agora você vai precisar descobrir o endereço IP do Linux, configurar o letodb.ini e criar uma pasta para colocar os bancos de dados antes de instalar o letodb.

BAIXAR OS FONTES DO LETODBf COM O GIT

Baixar os fontes e compilar o servidor letodb:

git clone https://github.com/elchs/LetoDBf.git letodbf
cd letodbf
hbmk2 letodbaddon.hbp

Confira o leto na pasta bin. Antes de executá-lo precisamos configurar o letodb.ini, mas você sabe o endereço IP do servidor Linux?

DESCOBRINDO O ENDEREÇO IP NO LINUX PELO TERMINAL

Se a sua máquina Linux é o servidor, então você precisa descobrir o endereço IP dela. A maneira mais fácil e prática é ir no Terminal digitar "hostname -I":

root@Debian:/usr/bin# hostname -I
10.100.0.120 

Você também pode clicar no ícone de rede, ícone de engrenagem e ícone de engrenagem da conexão (cabo ou wi-fi), detalhes, IPv4 Address.

Observação: Se você está fazendo o teste primeiro na sua máquina com o Linux no VirtualBox o endereço IP precisa ter o mesmo radical que sua máquina Windows. Por exemplo, se no Windows é 10.100.0.77 e no Linux 10.100.0.25 está ok, mas se no Linux estiver 10.10.0.25 então provavelmente a configuração da sua placa de rede no VirtualBox está como NAT! Lembre-se que ela deve estar como Bridge!!! Corrija e reinicie o Linux.

CONFIGURANDO LETODB.INI

Digamos que o endereço IP encontrado no tópico anterior fosse 10.100.0.120, então seu arquivo letodb.ini pode estar no mínimo assim:

Server = 10.100.0.120
Port = 2812
DataPath = /databases
Share_Tables = 1
Debug = 0
No_Save_WA = 1
Lower_Path = 1
Default_Driver = CDX
Lock_Scheme = 2
Mask = *.dbf,*.fpt,*.cdx

Entre na pasta bin para editar o arquivo usando:

nano letodb.ini

Mas, calma! Não chame ainda o letodb porque sem a pasta /databases onde foi informada que estariam os bancos de dados ele não roda! Você chama e não acontece nada nem mostra nada com o comando "ss -ptan" no Terminal.

COPIANDO OS BANCOS DE DADOS 

Copie os bancos de dados para a pasta /databases como informado no DataPath.

Vamos explicar a seguir o passo a passo.

 

CRIANDO UMA PASTA COMPARTILHADA NO LINUX DO VIRTUALBOX

Para acessar os arquivos do Windows dentro de uma máquina virtual com o Linux é preciso compartilhar a pasta no Linux. 

Vá para a seção "Pastas Compartilhadas" (Shared Folders) nas configurações da máquina virtual.

Clique no ícone de pasta com o sinal de "+" para adicionar uma nova pasta compartilhada.

pasta compartilhada vitualbox linux

Execute o comando seguinte para criar um diretório onde a pasta compartilhada será montada:

sudo mkdir /mnt/shared

Execute o seguinte comando para montar a pasta compartilhada do Windows no diretório que você acabou de criar:

sudo mount -t vboxsf c_drive /mnt/shared

Infelizmente tem que fazer isso toda vez no Linux. 

Agora é só copiar os arquivos com o comando "cp" de "copy".

Entre na pasta compartilhada onde estão os DBFs e execute esse comando para copiar:

cp * /databases 

Pronto! Agora você pode acessar os DBFs para copiá-los para o Linux.

 

CRIAR UMA PASTA NO LINUX

Antes de mais nada, vamos criar a pasta a ser compartilhada. Ela vai ficar dentro da pasta raís (root). Então, se você está na pasta /home do Terminal então desça para CD / e crie o diretório databases:

sudo mkdir /databases

 

COPIAR ARQUIVOS NO LINUX

Entre na pasta compartilhada do VirtualBox onde estão os DBFs lá do seu HD do Windows e execute o comando "cp" de "copy" para copiar assim:

sudo cp * /databases

Se você colocar *.* só copiará arquivos que tiverem uma extensão (quase todos, né?), use * para copiar tudo. Todos tem extensão, né?!...

 

RENOMEAR ARQUIVOS PARA MINÚSCULAS NO LINUX

O Linux é case-sensitive, então lá PRODUTOS.DBF e produtos.dbf podem ser 2 arquivos diferentes coexistindo na mesma pasta.

Isso vai gerar problema na hora de abrir os bancos de dados, então renomeie tudo para minúsculas!

Vou logo adiantar que o comando "rename" não vem instalado nesse pacote do Debian 12, instale logo para poder usar:

sudo apt install rename

Agora calma! Você não vai precisar renomear um a um! Tem um macete do Linux para renomear em série, veja:

 rename 'y/A-Z/a-z/' *

Maravilha, heim?!

Deixe o Lower_Path = 1 no letodb.ini para não precisar alterar as linhas do seu programa para chamar os bancos de dados em minúsculas. Fazendo isso você pode deixar USE PRODUTOS que vai funcionar! Ainda bem que existe isso!

PERMISSÕES DE ACESSO AO BANCO DE DADOS NO LINUX

Depois de tudo isso você ainda tem que liberar as permissões de acesso ao banco de dados. 

O comando do Linux a seguir vai te mostrar as permissões de acesso atual da sua pasta, "namei -mo":

root@Debian:/# namei -mo /databases
f: /databases
 drwxr-xr-x root root /
 drwxr-xr-x root root databases

Vamos seguir as permissões que estão no readme.txt do LetoDBf que, na montagem da pasta do samba, cita "file_mode=0666,dir_mode=0777".

chmod 0777 databases

Execute o namei de novo e veja que mudou:

root@Debian:/# namei -mo /databases
f: /databases
 drwxr-xr-x root root /
 drwxrwxrwx root root databases

Agora altere a permissão dos arquivos para 0666:

cd databases
chmod 0666 *

Agora conecta e acha o DBF.

 

INSTALANDO O SERVIDOR LETODB

Agora sim! Tudo pronto!

Você vai rodar o letodb direto no hardware do servidor e acessar os bancos de dados via TCP IP.

Instale o letodb:

root@Debian: /usr/bin# ./leto.sh

Vai mostrar:

root@Debian:/usr/bin# ./leto.sh
LetoDB runs

Verifique as conexões ativas dos servidores para ver se o letodbf está escutando direitinho no IP e porta que você informou, no Terminal digite:

ss -ptan

Veja o resultado do letodb aguardando conexão:

root@debian:/home/anderson/letodbf/bin# ss -ptan
State       Recv-Q   Send-Q     Local Address:Port          Peer Address:Port   Process                                                                         
LISTEN      0        128            127.0.0.1:631                0.0.0.0:*       users:(("cupsd",pid=533,fd=7))                                                 
LISTEN      0        10               0.0.0.0:2813               0.0.0.0:*       users:(("letodb",pid=13649,fd=4))                                              
LISTEN      0        10               0.0.0.0:2812               0.0.0.0:*       users:(("letodb",pid=13649,fd=3))                                              
ESTAB       0        0           10.100.0.120:58278         34.117.65.55:443     users:(("firefox-esr",pid=3705,fd=57))                                         
TIME-WAIT   0        0           10.100.0.120:59682       34.117.237.239:443                                                                                    
LISTEN      0        128                [::1]:631                   [::]:*       users:(("cupsd",pid=533,fd=6))                                                 
root@debian:/home/anderson/letodbf/bin# 

Após uma conexão (aplicativo conectado ao servidor), o resultado seria esse:

root@debian:/home/anderson/letodbf/bin# ss -ptan
State     Recv-Q    Send-Q       Local Address:Port       Peer Address:Port     Process                                                                         
LISTEN    0         128              127.0.0.1:631             0.0.0.0:*         users:(("cupsd",pid=533,fd=7))                                                 
LISTEN    0         10                 0.0.0.0:2813            0.0.0.0:*         users:(("letodb",pid=13649,fd=4))                                              
LISTEN    0         10                 0.0.0.0:2812            0.0.0.0:*         users:(("letodb",pid=13649,fd=3))                                              
ESTAB     0         0             10.100.0.120:2812        10.100.0.77:52769     users:(("letodb",pid=13649,fd=7))                                              
LISTEN    0         128                  [::1]:631                [::]:*         users:(("cupsd",pid=533,fd=6))                                                 
root@debian:/home/anderson/letodbf/bin# 

Aí mostra uma máquina com o IP 10.100.0.77 conectada no servidor IP 10.100.0.120.

Tudo pronto!

SERVIDOR LETODBF AUTOEXECUTANDO NO LINUX

Com certeza interessa que o gerenciador de banco de dados letodbf seja iniciado automaticamente no Linux. Vamos fazer isso agora.

1) Crie uma pasta no raíz chamada letodbf e copie a pasta bin do letodbf para lá:

mkdir /letodbf
cd /home/usuario/letodbf/bin
cp * /letodbf
cp *.* /letodbf

2) Crie um arquivo chamado letodb.sh na pasta /etc/profile.d:

nano /etc/profile.d/letodb.sh

Agora coloque isso no arquivo e salve:

#!/bin/bash
cd /letodbf
./leto.sh

3) Altere as permissões dos arquivos para 0777 com "CHMOD 0777 *" no Terminal.

Pronto! Agora o letodbf vai executar automaticamente ao iniciar o Linux (depois de um login).

 

AUTO-LOGIN NO LINUX

Não adianta nada disso se tiver que colocar a senha para fazer login, não é verdade? Essa dica vale para todas as versões do Linux, notadamente a Xubuntu.

Crie/edite o seguinte arquivo:

nano /etc/lightdm/lightdm.conf

Coloque as seguintes linhas (não esqueça de alterar aí o nome do usuário que fará o auto-login):

[Seat:*]
autologin-session=xubuntu
autologin-user=SeuUsuárioDesejadoParaAutoLogin
autologin-user-timeout=0

Pronto! Agora vai tudo direto no automático!

 

Agora uma última dica:

MIGRAÇÃO SUAVE DO LETODB SEM MUDAR AS LINHAS DO SEU PROGRAMA

No meu caso eu criei um define "__LETODBF" pra quando for usar esse database manager ele configurar tudo direitinho.

Tem gente aí mudando o sistema todo onde tem FILE() coloca LETO_FILE(), não precisa nada disso se em cada programa que existir essas coisas você inserir essas linhas no início do programa:

**********************************
*** SERVIDOR DE BANCO DE DADOS ***
**********************************
#IFDEF __LETODBF
	// servidor LETODBf
	#include "rddleto.ch"  // defines do RDD
	#include "dbinfo.ch"   // Header file for the RDD API Index OrderInfo and DBInfo support
	#include "leto_std.ch" // traduz os comandos para o LETO
	#define __LETO_TRANSLATE_FILE_ALL
	#include "letofile.ch" // traduz todas as funções para o LETO
	REQUEST RDDLETO
	REQUEST RDDInfo
#ENDIF	
FUNCTION MAIN()

Lembre-se de copiar os arquivos de cabeçalho (*.ch) do LetoDBf para a pasta INCLUDE do [x]Harbour também!!!

Esse exemplo foi no programa principal, mas se tiver outros programas com FILE() ou outras funções que o LetoDb tem a sua própria versão, então copie e cole as linhas acima nele também e pronto, vai funcionar! Desta forma, não precisa mexer mais em nada no seu sistema.

Aleluia! 🙌🙏


Estava procurando algo sobre pastas compartilhadas com o SAMBA ?


Se quiser pular a fogueira e baixar o binário do LetoDBf pronto, está logo abaixo.

Contém: letodb (o binário), leto.sh, letodb.ini, letoudf.hrb e o setup.sh que eu fiz para facilitar ainda mais sua vida.

Downloads: 

Total votes: 0