Gerenciando variáveis de ambiente JAVA_HOME no Mac, Linux, …

java

Existem diversas formas para gerenciar variáveis de ambiente em sistema Unix, uma forma simples é:

Adicionar ao ficheiro /etc/profile (é preciso ter permissão de root).

Exemplo:

sudo vi /etc/profile

/etc/profile

JAVA_HOME=/opt/java/jdk1.7.0_80
ANT_HOME=/opt/java/apache-ant-1.9.6
M2_HOME=/opt/java/apache-maven-3.3.3

PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$M2_HOME/bin

export PATH JAVA_HOME ANT_HOME M2_HOME 

Pronto!

Agora só fazer um reload do ficheiro, para não ter que reiniciar a máquina! 🙂

source /etc/profile

Para testar se tudo deu certo. Verificar a versão. Exemplo

java -version
# ant -version
# mvn -version
Anúncios

Fazendo login via ssh sem precisar usar senha

ssh

Quando trabalhamos fazendo conexões ssh em servidores remotos várias vezes ao dia via terminal precisamos saber sempre os utilizadores e senhas dos hosts remotos isto se torna um pouco entediante as vezes.

Exemplo, se voce tiver um servidor ssh instalado na sua máquina, pode testa-lo sem precisar se conectar em um servidor remoto, tente:

ssh localhost

Precisou de senha, não é mesmo?

Que tal se não fosse necessário digitar a senha?

Então é para isto que este script serve!

Basta usa-lo: ./sshnologin.sh ipservidorremoto


# Simple script for copy the ssh keys to a remote host.
# autor: matafe
#!/bin/bash

if [ "x$1" = "x" ]; then
echo 'Target hostname or IP required!'
exit 1;
fi

target_host_ip="$1"
file_key_local="~/.ssh/id_rsa.pub"

echo "Coping '$file_key_local' to host '$target_host_ip' ..."
scp ~/.ssh/id_rsa.pub $target_host_ip:~/

echo "Adding keys on remote host '$target_host_ip' ..."
ssh $target_host_ip 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi; chmod 700 ~/.ssh; cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; rm ~/id_rsa.pub; chmod 750 ~/'

echo "Testing configuration..."
ssh $target_host_ip 'echo "Configuration done!"'

Pode testá-lo, provavelmente agora já não precise mais de senha!

ssh localhost

DICA: Caso queira colocar seu script no path para de qualquer lugar do terminal poder executá-lo. É só criar um link simbólico em “/usr/local/bin“. Lembre de dar permissão de execução para seu script ssh! (chmod 755 /home/mferraz/Dev/Unix/Scripts/sshnologin.sh)

Ex: ./sshnologin.sh

sudo ln -s /home/mferraz/Dev/Unix/Scripts/sshnologin.sh /usr/local/bin/sshnologin.sh

Sei que talvez voce já sabia, mas é bem útil, não? 🙂

Compactando uma pasta em varios arquivos pelo Terminal no Mac

Para dividir uma pasta ou um arquivo em varios de mesmo tamanho no Mac ( ou Unix ) via terminal basta seguir os comandos:

Neste caso vamos dividir uma pasta de 350mb em 4 ficheiros de no máximo 100mb cada:

matafe@kratos:/tmp/movies$ ls -lh iGenius_How-Steve-Jobs-Changed-the-World/
total 716216
-rwxr-xr-x 1 matafe wheel 350M 15 Set 20:23 igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.avi
-rwxr-xr-x 1 matafe wheel 66K 15 Set 20:23 igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.srt

O primeiro passo é compactar a pasta e seus conteudo em um arquivo zip.
Neste caso vamos gerar o arquivo iGenius-full.zip

matafe@kratos:/tmp/movies$ zip -r iGenius-full.zip iGenius_How-Steve-Jobs-Changed-the-World/
adding: iGenius_How-Steve-Jobs-Changed-the-World/ (stored 0%)
adding: iGenius_How-Steve-Jobs-Changed-the-World/igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.avi (deflated 1%)
adding: iGenius_How-Steve-Jobs-Changed-the-World/igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.srt (deflated 63%)

Em seguida, vamos dividir este arquivo zip gerado em arquivos de 100Mb no máximo cada:

matafe@kratos:/tmp/movies$ zip iGenius-full.zip --out iGenius.zip -s 100m
copying: iGenius_How-Steve-Jobs-Changed-the-World/
copying: iGenius_How-Steve-Jobs-Changed-the-World/igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.avi
copying: iGenius_How-Steve-Jobs-Changed-the-World/igenius.how.steve.jobs.changed.the.world.hdtv.xvid-diverge.srt

Verificando o conteudo da pasta:

matafe@kratos:/tmp/movies$ ls -lh
total 1414880
-rw-r--r-- 1 matafe wheel 345M 15 Set 20:39 iGenius-full.zip
-rw-r--r-- 1 matafe wheel 100M 15 Set 21:02 iGenius.z01
-rw-r--r-- 1 matafe wheel 100M 15 Set 21:02 iGenius.z02
-rw-r--r-- 1 matafe wheel 100M 15 Set 21:02 iGenius.z03
-rw-r--r-- 1 matafe wheel 45M 15 Set 21:02 iGenius.zip
drwxr-xr-x 4 matafe wheel 136B 15 Set 20:34 iGenius_How-Steve-Jobs-Changed-the-World

Pronto os ficheiros iGenius.z* foram gerados com o tamanho definido.

Instalando o TORA com suporte Oracle no Ubuntu 10.04 (Lucid Lynx)

tora

Resolvi escrever este post por causa de um problema que tive ao fazer a instalação do TOra com o suporte a banco de dados Oracle seguindo o tutorial no pythian.

O problema que tive foi ao suporte de characteres  WE8ISO8859P15 pelo pacote Instant Client Light do Oracle.

Entao fiz os seguintes passos:

1 – Obtendo os pacotes:


Crie uma diretorio, onde ficara armazenado o codigo fonte da distribuição do TOra. O Ubuntu 10.04 usa o TOra 2.1.1.

mkdir -p /path/to/deb/source/
cd /path/to/deb/source/
apt-get source tora

Agora obtenha os pacotes do Oracle no site da Oracle.

  • oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm
  • oracle-instantclient11.2-devel-11.2.0.1.0-1.i386.rpm
  • oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.i386.rpm

Obs: Atenção para o primeiro pacote! É o basic e nao o basiclite, como esta no tutorial do pythian

2 – Instalando as bibliotecas necessárias


É necessário instalar algumas bibliotecas de desenvolvimento:

sudo apt-get install libqt3-mt-dev libqt3-compat-headers libqscintilla-dev build-essential g++ gcc autoconf automake flex zlib1g-dev docbook-xsl debhelper alien libaio1 dpatch fakeroot xsltproc texi2html texinfo libqt3-mt-psql libqt3-mt-odbc config-package-dev cmake qt4-dev-tools

Convertendo os pacotes para .deb e instalando direto:

cd /path/to/oracle/rpms
sudo alien -i *386.rpm

3 – Configurando Variáveis de Ambiente


Faça isso no terminal:

export ORACLE_HOME="/usr/lib/oracle/11.2/client"
export LD_LIBRARY_PATH="${ORACLE_HOME}/lib"
export TNS_ADMIN="${ORACLE_HOME}"
export CMAKE_INCLUDE_PATH=/usr/include/oracle/11.2/client

Faça isso para que fique gravado no /etc/profile para caso voce reinicie a maquina nao perder as configurações:

sudo echo export ORACLE_HOME="/usr/lib/oracle/11.2/client" >> /etc/profile
sudo echo export LD_LIBRARY_PATH="${ORACLE_HOME}/lib" >> /etc/profile
sudo echo export TNS_ADMIN="${ORACLE_HOME}" >> /etc/profile

4 – Criando o pacote e Instalando o TOra


Mude para o diretório:

cd /path/to/tora/tora-2.1.1/

Execute o script para criar o pacote.


fakeroot debian/rules binary

Isto ira demorar um pouco dependendo da velocidade do seu sistema. Pronto agora é só instalar

dpkg -i ../tora_2.1.1-1_i386.deb

UPDATE 1 (16/08/2010):

Resolvendo problema de biblioteca “LD_LIBRARY_PATH”

Caso esteja tendo esse problema ao acessar o tora:

tora: error while loading shared libraries: libocci.so.11.1: cannot open shared object file: No such file or directory

As bibliotecas não estão sendo carregadas corretamente, então você terá que usar o ldconfig. Logo faça o seguinte:

1 – Vá para o diretório: /etc/ld.so.conf.d/

cd /etc/ld.so.conf.d/

2 – Crie um arquivo de configuração neste diretório ( exemplo libraries.conf ) e adicione  a seguinte linha, que se refere a pasta onde estão as bibliotecas:

/usr/lib/oracle/11.2/client/lib

3 – Atualize as configurações:

sudo ldconfig -v

Pronto! Agora ja é possivel acessar o TOra tanto do terminal quanto do gnome desktop!

UPDATE 2 (20/08/2010):

TOra nao reconhece o provedor de conexão do Oracle por causa de atualização de Ubuntu.

Caso voce tenha atualizado o kernel do Ubuntu e perdeu o suporte ao Oracle siga novamente os passos:”4- Criando o pacote e Instalando o TOra