tkdiff erro no Linux Redhat 5.5

3

Eu instalei tkdiff como root, e ele corre bem sob esse usuário, mas quando eu mudo para um usuário local, recebo o erro:

Application initialization failed: Can't find a usable init.tcl in the following directories:
/usr/local/lib/tcl8.0 /pune/tools/synopsys/vera/2009.12-6/vera_vD-2009.12-6_linux/lib/tcl8.0 /pune/tools/synopsys/vera/2009.12-6/tcl8.0/library /pune/tools/synopsys/vera/2009.12-6/vera_vD-2009.12-6_linux/library

Isso provavelmente significa que o Tcl não foi instalado corretamente.

Error in startup script: can't find package Tk 8.0
while executing
"package require Tk 8.0"
(file "./tkdiff" line 32)

Como corrijo isso?

    
por user45898 26.08.2013 / 15:59

2 respostas

1

De onde veio a instalação do TCL / Tk? Parece que vem junto com o Synopsys, particularmente o software Vera. Você realmente quer usar sua versão do TCL / Tk com o tkdiff?

Isso parece ser um problema de $PATH . Você não está pegando a instalação correta que tkdiff foi construída para usar, você está usando a instalação fornecida pela Synopsys.

embalagem tkdiff

Estou no CentOS 5.8 e tenho o seguinte pacote disponível nos repositórios que fornecem tkdiff .

$ yum search tkdiff
Loaded plugins: fastestmirror
========================================================= Matched: tkdiff ==========================================================
tkcvs.noarch : Graphical interface to the CVS and Subversion

Você pode ter certeza de que o executável, tkdiff , de fato faz parte deste pacote usando este comando:

$ repoquery -l tkcvs |  grep tkdiff
/usr/bin/tkdiff

Este pacote depende dos seguintes pacotes:

$ yum deplist tkcvs
Loaded plugins: fastestmirror
Finding dependencies: 
package: tkcvs.noarch 8.2.2-1.el5.rf
  dependency: /usr/bin/env
   provider: coreutils.x86_64 5.97-34.el5_8.1
  dependency: /bin/sh
   provider: bash.x86_64 3.2-32.el5
   provider: bash.x86_64 3.2-32.el5_9.1
  dependency: tcl
   provider: tcl.x86_64 8.4.13-6.el5
   provider: tcl.i386 8.4.13-6.el5
  dependency: tk
   provider: tk.x86_64 8.4.13-5.el5_1.1
   provider: tk.i386 8.4.13-5.el5_1.1

Para confirmar

Você poderia testar minha hipótese removendo temporariamente o software Synopsys de seu $PATH e, em seguida, tentando lançar tkdiff sem as referências à Synopsys.

Basta definir a variável $ PATH sem incluir nenhum destes caminhos:

  • /usr/local/lib/tcl8.0
  • /pune/tools/synopsys/vera/2009.12-6/vera_vD-2009.12-6_linux/lib/tcl8.0
  • /pune/tools/synopsys/vera/2009.12-6/tcl8.0/library
  • /pune/tools/synopsys/vera/2009.12-6/vera_vD-2009.12-6_linux/library

Verifique também se as variáveis $TCL ou $TCL* type não estão referenciando esses diretórios.

Funciona para userA não para userB, como depurar?

Se você se deparar com a situação em que isso está funcionando para o userA, mas não para o userB, provavelmente é um problema de configuração do ambiente. Para depurar isso eu faria o seguinte:

[userA]$ env > userA_env.txt
[userB]$ env > userB_env.txt

Então diff os 2 arquivos para ver o que é diferente:

$ diff -y userA_env.txt userB_env.txt | less
rvm_gemsets_path=/home/saml/.rvm/gemsets                        rvm_gemsets_path=/home/saml/.rvm/gemsets
MANPATH=/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:   MANPATH=/home/saml/apps/perl5/perlbrew/perls/perl-5.14.0/man:
ORBIT_SOCKETDIR=/tmp/orbit-saml                                 ORBIT_SOCKETDIR=/tmp/orbit-saml
rvm_scripts_path=/home/saml/.rvm/scripts                        rvm_scripts_path=/home/saml/.rvm/scripts
PERLBREW_VERSION=0.59                                           PERLBREW_VERSION=0.59
HOSTNAME=grinchy                                                HOSTNAME=grinchy
rvm_bin_path=/home/saml/.rvm/bin                                rvm_bin_path=/home/saml/.rvm/bin
IMSETTINGS_INTEGRATE_DESKTOP=yes                                IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/tmp/keyring-Xewu2I/gpg:0:1                      GPG_AGENT_INFO=/tmp/keyring-Xewu2I/gpg:0:1
PERLBREW_PERL=perl-5.14.0                                       PERLBREW_PERL=perl-5.14.0
...

As entradas à esquerda serão do userA e as entradas à direita serão do userB.

    
por 26.08.2013 / 18:56
0

Um atalho comum para descobrir esses problemas é strace do programa quando executado como root, grep para o arquivo que você tem dificuldade em encontrar como usuário (no seu caso init.tcl ) e fazer essa parte do sistema de arquivos utilizável por usuários normais e não apenas por root via chmod .

    
por 26.08.2013 / 16:43