2. Linux em Nobebook com Debian 5.0 (Lenny)

Prezado(a) leitor(a)!

Tenho sido muito auxiliado nas listas de discussão e pelas informações disponibilizadas por diversos usuários nos inúmeros sites espalhados pela Internet, e por isso tento retribuir essa ajuda disponibilizando algumas dicas.

Gostaria de alertar que não sou profissional de informática, mas simplesmente um usuário curioso e disposto a compartilhar o pouco que conseguiu aprender sobre Linux.

Criei o hábito de anotar os programas instalados ou as configurações necessárias para a realização de diversas tarefas.

As informações estão (des)organizadas de forma cronológica e se referem a instalações e configurações feitas em um nobebook IBM ThinkPad X60 e um nobebook DELL Latitude D430, ambos rodando o sistema Debian Lenny.

A partir de 2018 comecei a documentar a instação em um Positivo Stilo XCi 7660.

Bom proveito!

2.1. Edição de documentos HTML

Ao atualizar uma página em um site percebi a necessidade de instalar o composer (iceape). Muito complicado instalar o iceape ou seamonkey, pois não existem pacotes debian. Encontrei o Kompozer http://kompozer.net/download.php que disponibiliza um pacote .deb para Lenny.

2.2. Java

Para instalar o compilador java

apt-get install default-jdk

Pensei em instalar o icedtea-gcjwebplugin.

O comando apt-cache search mostra:

      bash$
      apt-cache searchicedtea-gcjwebplugin
      icedtea-gcjwebplugin - Java plugin based on IcedTea and gcjwebplugin
    

Seguindo as orientações deste FAQ incluí as opções contrib non-free no repositório:

deb http://linux.iq.usp.br/debian/ lenny main contrib non-free

no arquivo sources.list (/etc/apt/sources.list).

Em seguida rodei:

apt-cache search java | grep plugin

e encontrei

sun-java6-plugin

E instalei:

apt-get install sun-java6-plugin

Mais tarde instalei também o sun-java6-jdk depois de tentar intalar o bluej-2.5.3.deb um tutorial para java.

2.3. Uso de chaves GPG no apt-get.

Após usar apt-get update,pode-se receber uma mensagem parecida com essa:

W: There are no public key available for the following key IDs:A70DAF536070D3A1

Esse Warning (não é erro) aparece porque pacotes de alguns repositórios são assinados com uma chave assimétrica, para garantir a integridade dos pacotes. Para acessar um pacote assinado você precisa da chave pública. Só é necessário habilitar a chave uma vez.

Caso isso ocorra, use os seguintes comandos, onde XXXXXXXX representa os oito últimos termos do erro apresentado sendo que o processo deve ser repetido para cada key pedida

	# gpg  --keyserver wwwkeys.eu.pgp.net --recv-keys XXXXXXXX 
	#gpg  --armor --export XXXXXXXX | apt-key add - 
      

No meu caso o comando foi:

	# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys 6070D3A1 
	# gpg  --armor --export 6070D3A1 | apt-key add - 
      

E finalmente dar o comando apt-get update.

2.4. Instalação do banco de dados Metakit

A extensão Metakit, escrita em C++ oferece uma API para Tcl (Mk4tcl) facilitando significativamente o desenvolvimento de aplicações para armazenamento e gerenciamento de dados estruturados em programas escritos em Tcl/Tk.

Se ficou curioso(a) veja alguns Exemplos de Utilização em português.

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 -c http://equi4.com/pub/mk/metakit-2.4.9.7.tar.gz
    

Em seguida descompactei com o comando:

      bash$   tar -xzvf metakit-2.4.9.7.tar.gz
    

Entrei no diretório metakit-2.4.9.7/builds:

      bash$   cd metakit-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 / -name tcl.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.

  1. Localizar o caminho que a Tcl está procurando as bibliotecas e copiar o diretório Mk4tcl para uma dessas pastas.

  2. 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 / -name Mk4tcl
      /usr/include/lib/Mk4tcl
      bash#  cp /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
    

Uma outra alternativa é informar no início do programa em Tcl onde está a biblioteca Mk4tcl.so.

Depois de compilar vi que o Mk4tcl.so e o pkgIndex.tcl estavam na pasta /usr/include/lib/Mk4tcl/ então é possível incluir no começo do script o comando: lappend auto_path /usr/include/lib/Mk4tcl.

Você pode escolher uma das alternativas!

2.5. 21/10/2009 - Instalação do BlueJ

BlueJ é uma IDE para desenvolvimento em Java™.

Baixei o pacote do bluej do site www.bluej.org/download/download.html mas ao tentar instalar recebi a mensagem:

    bluej depende de sun-java6-jdk | sun-java5-jdk | openjdk-6-jdk; porém:
    Pacote sun-java6-jdk não está instalado.
    Pacote sun-java5-jdk não está instalado.
    Pacote openjdk-6-jdk não está instalado.
  

Bastou instalar os pacotes com apt-get.

2.6. 28/12/2010 - Para configurar o link java e javac para o JDK 6

Basta rodar os comandos como root:

# update-alternatives --config java
# update-alternatives --config javac

2.7. 28/12/2009 - Tentando entender os exemplos do OmniDriverBeta

OmniDriverBeta é o driver, escrito em Java™, fornecido pela empresa OceanOptics™ para o controle dos espectrofotômetros USB2000.

Usei a linha do Makefile (~/OceanOptics/OmniDriverBeta/java) para compilar o PollingTest mas encontrava mensagens de erro ao testar.

Primeiro exportei as variáveis de ambiente:

CLASSPATH=../OOI_HOME/OmniDriver.jar:../OOI_HOME/SPAM.jar:../OOI_HOME/HighResTiming.jar:../OOI_HOME/UniUSB.jar:../OOI_HOME/OOIUtils.jar:../OOI_HOME/xpp3_min-1.1.3.4.M.jar:../OOI_HOME/xstream-1.1.2.jar

e

LIBRARY_PATH=../OOI_HOME

E no script test-linux.sh executei o comando:

java -classpath $CLASSPATH -Djava.library.path=$LIBRARY_PATH com.oceanoptics.tests.PollingTest

Mas recebia mensagens de erro da biblioteca:

~/OceanOptics/OmniDriverBeta/OOI_HOME/libNatUSB.so

que não estava encontrando a lib libstdc++.so.5

Então instalei essa lib com o comando:

apt-get install libstdc++5

E o PollingTest rodou! :)

2.8. 29/12/2009 - Identificando o espectrofotômetro USB2000

Para identificar o(s) dispositivo(s) que o sistema cria ao plugar o equipamento na porta USB listei os arquivos /dev/usbdev*

ls -l /dev/usb* > disp_usb_antes.txt

Depois conectei o USB2000 na porta USB e rodei o comando:

ls -l /dev/usb* > disp_usb_depois.txt

Em seguida comparei o conteúdo dos arquivos com o comando diff:

diff disp_usb_antes.txt disp_usb_depois.txt

O qual retornou:

    > crw-rw---- 1 root root 252, 34 Dez 29 09:11 /dev/usbdev3.3_ep00
    > crw-rw---- 1 root root 252, 30 Dez 29 09:11 /dev/usbdev3.3_ep02
    > crw-rw---- 1 root root 252, 32 Dez 29 09:11 /dev/usbdev3.3_ep07
    > crw-rw---- 1 root root 252, 31 Dez 29 09:11 /dev/usbdev3.3_ep82
    > crw-rw---- 1 root root 252, 33 Dez 29 09:11 /dev/usbdev3.3_ep87
  

O comando udevadm info -a -p $(udevadm info -q path -n /dev/usbdev3.3*) retorna informações detalhadas sobre os dispositivos criados:

    Udevinfo starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
    looking at device '/class/usb_endpoint/usbdev3.3_ep00':
    KERNEL=="usbdev3.3_ep00"
    SUBSYSTEM=="usb_endpoint"
    DRIVER==""
    ATTR{bLength}=="07"
    ATTR{bEndpointAddress}=="00"
    ATTR{bmAttributes}=="00"
    ATTR{bInterval}=="00"
    ATTR{wMaxPacketSize}=="0040"
    ATTR{interval}=="0ms"
    ATTR{type}=="Control"
    ATTR{direction}=="both"
    
    looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb3/3-1':
    KERNELS=="3-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="12"
    ATTRS{idVendor}=="2457"
    ATTRS{idProduct}=="1002"
    ATTRS{bcdDevice}=="0002"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="3"
    ATTRS{version}=="10.20"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="USB2000 2.41.3 "
    ATTRS{product}=="Ocean Optics USB2000"

    looking at parent device '/devices/pci0000:00/0000:00:1d.2/usb3':
    KERNELS=="usb3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="67"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0001"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="3"
    ATTRS{devnum}=="1"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="2"
    ATTRS{quirks}=="0x0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.26-2-686 uhci_hcd"
    ATTRS{product}=="UHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.2"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/pci0000:00/0000:00:1d.2':
    KERNELS=="0000:00:1d.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x27ca"
    ATTRS{subsystem_vendor}=="0x1028"
    ATTRS{subsystem_device}=="0x0201"
    ATTRS{class}=="0x0c0300"
    ATTRS{irq}=="22"
    ATTRS{local_cpus}=="ff"
    ATTRS{local_cpulist}=="0-7"
    ATTRS{modalias}=="pci:v00008086d000027CAsv00001028sd00000201bc0Csc03i00"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

  

Depois copiei o arquivo 10-oceanoptics.rules para a pasta /etc/udev/rules.d e o sistema criou os respectivos links na pasta /dev para o driver poder acessar.

2.9. 30/12/2009 - Programa PollingTest.java

E finalmente para acessar o programa PollingTest.java que estava dentro do arquivo OmniDriver.jar, copiei este arquivo para outra pasta e descompactei com unzip, depois fiz a modificação no arquivo PollingTest.class e recompactei com o comando:

jar cvf OmniDriver.jar com/*

E os respectivos diretórios:

  drwxr-xr-x 3 markos markos   4096 Jun 22  2006 com
  drwxr-xr-x 2 markos markos   4096 Jun 28  2006 META-INF

2.10. 27/01/2010 - Rodando o programa exemplo PollingTest.java

Primeiro criamos o diretório teste_omnidrive_jar e copiamos o arquivo OmniDriver.jar, que é um arquivo compactado.

Compilamos o arquivo PollingTest.java com os comandos:

export CLASSPATH=../OOI_HOME/OmniDriver.jar:../OOI_HOME/SPAM.jar:../OOI_HOME/HighResTiming.jar:../OOI_HOME/UniUSB.jar:../OOI_HOME/OOIUtils.jar:../OOI_HOME/xpp3_min-1.1.3.4.M.jar:../OOI_HOME/xstream-1.1.2.jar
javac -classpath $CLASSPATH PollingTest.java

O arquivo PollingTest.class gerado foi copiado para o diretório: com/oceanoptics/tests.

E novo arquivo OmniDriver.jar foi criado com o comando:

jar cvf OmniDriver.jar com/*

Em seguida colocamos o arquivo OmniDriver.jar na pasta OOI_HOME.

Editando o script test_Polling.sh observamos que apenas é necessário incluir 3 bibliotecas no CLASSPATH para rodar:

CLASSPATH=../OOI_HOME/OmniDriver.jar:../OOI_HOME/SPAM.jar:../OOI_HOME/HighResTiming.jar:../OOI_HOME/UniUSB.jar

2.11. 27/01/2010 - Instalando o flashplayer

Para resolver problemas ao rodar vídeos em alguns sites:

apt-get install flashplayer-mozilla
update-alternatives --configflash-mozilla.so

2.12. 10/02/2010 - Instalando tklib para usar biblioteca Plotchart

Para usar a biblioteca Plotchart no Tcl/Tk, instalar o pacote tklib com o comando apt-get install tklib

Mas seguindo as informações do fórum comp.lang.tcl, baixei o pacote tklib 0.5 do site http://sourceforge.net/projects/tcllib/files/tklib/0.5/tklib-0.5.zip/download e troquei o conteúdo do diretório /usr/share/tcltk/tklib0.4/plotchart pelos arquivos da versão 0.5 sem problemas.

2.13. 04/03/2010 - Instalando plugins para o Totem

Para visualizar vídeos na Intranet no meu trabalho usando o Totem instalei o pacote:

apt-get install gstreamer0.10-plugins-bad

2.14. 12/04/2010 - Gravando CD com K3B e verificando a integridade dos CDs.

Seguindo a dica do site www.troubleshooters.com/linux/coasterless.htm#_TestingCD usei o programa isoinfo para obter informações do CD (gravado):

isoinfo -d -i /dev/cdrom

E com as informações das linhas:

  Logical block size is: 2048
  Volume size is: 76872

Gerei uma imagem iso do CD com o comando dd:

dd if=/dev/cdrom bs=2048 count=76872 > teste_debian.iso

E finalmente comparei o md5sum dos arquivos iso original e gerado a partir do CD.

md5sum debian-504-i386-netinst.iso
md5sum este_debian.iso

E eram idênticas. :^)