Formas de instalação de software em Linux

novembro 30, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Uma das principais diferenças no uso do Linux em relação ao Windows é a maneira de se instalar softwares no primeiro. Como muitas pessoas próximas a mim estão começando a usar Linux, resolvi dedicar um tempo para explicar de forma clara as principais coisas a se saber sobre isto no mesmo.No Windows todos estão acostumados ao famosíssimo Install Shield, que após a tradicional seqüência de Next -> Next -> Next deixa as aplicações prontas para utilização. No Linux, embora até exista o Install Anywhere (http://www.macrovision.com/products/installation/installanywhere.htm?link_id=rightnav), irmão do Install Shield, ele definitivamente não é muito popular, e portanto não entrarei em maiores detalhes sobre o mesmo.

Começarei então a falar sobre as formas clássicas de instalação de software no Linux.

Old School/Advanced

Esta forma era a mais comum inicialmente, e ainda é utilizada por algumas pessoas, principalmente quando se deseja instalar o software de forma otimizada para o hardware específico no qual ele irá rodar. Esta forma consiste em obter o código fonte da aplicação e executar os 3 passos mágicos:
./configure
make
make install

Isto respectivamente irá gerar um makefile para a aplicação, realizar o processo de construção(build) da aplicação e realizar os passos necessários para a efetiva instalação do software. Este processo otimiza a instalação da aplicação para o hardware específico da máquina, pois o compilador consegue identificar as propriedades do hardware e efetuar algumas otimizações baseadas na arquitetura do mesmo. Instalar desta forma é recomendado quando você quer otimizar a execução de uma aplicação ou serviço específico, como um servidor de banco de dados ou o Apache por exemplo. Conheço um cara da Globo(um tal de Coró… hehehehe) que usa a distribuição Gentoo, que instala TODOS os softwares compilando e construindo as aplicações de forma otimizada. Isso é purismo demais para mim, prefiro formas mais fáceis 🙂

Arquivo shell auto-suficiente

Uma outra forma de instalar softwares no Linux é com o uso de um instalador em formato shell (.sh). Tipicamente este arquivo conterá nele mesmo tudo o que ele precisa para instalar a aplicação. Uma execução simples do arquivo normalmente instala o programa perguntando algumas informações como local de instalação e uma ou outra opção de configuração. Entretanto, não é raro encontrar instaladores que ao serem executados fazem tudo sozinhos (a não ser que você mande-o fazer diferente) e instalam o software com opções padrão. Esta forma de instalação é quase sempre oferecida por aplicações que suportem múltiplos formatos de instalação, pois esta forma atende a qualquer versão de Linux.

Instalação através de gerenciadores de pacotes (package managers)

Esta é sem dúvida a forma mais fácil e recomendada de instalar a grande maioria dos softwares no Linux. Uma das coisas mais importantes que um novo usuário Linux deve aprender é como funciona o gerenciamento de pacotes. Existem 2 formatos principais de pacotes, os rpms e os debs (arquivos .rpm e .deb). A maioria das distribuições escolhe um destes 2 formatos para adotar como padrão, e acredito que a adoção de ambos seja parecida, sem haver um predominante.

O gerenciamento de pacotes no Linux armazena uma lista de fontes de pacotes. Esta lista contém repositórios de pacotes no quais poderão ser obtidos os instaladores das aplicações já no formato que a sua distribuição específica adotar como padrão. As distribuições derivadas do Debian (como Ubuntu e Kubuntu) guardam a lista de repositórios de pacotes no arquivo /etc/apt/sources.list. Não sei dizer onde ficam guardadas as listas de repositórios de rpm nas distribuições que utilizam este formato como padrão, mas geralmente as distribuições oferecem uma interface gráfica para gerenciamento destas listas de repositórios, então não é nada muito complicado de se acessar.

Para conseguir instalar uma determinada aplicação através do gerenciador de pacotes, você precisa basicamente saber se o pacote que você deseja instalar está contido nos repositórios cadastrados e então solicitar a instalação do pacote específico. Como exemplo, o comando que solicita a instalação do firefox no Kubuntu/Ubuntu é “sudo apt-get install firefox”. Caso o pacote do firefox por acaso não estivesse presente em nenhum dos repositórios cadastrados, seria exibida uma mensagem de falha na instalação com a descrição “no installation candidate for firefox”.

Além de instalar através dos repositórios cadastrados é possível instalar pacotes obtidos individualmente também. Você pode ter obtido diretamente o arquivo .deb ou .rpm da aplicação que deseja instalar, e aí você pode instalar diretamente a partir deste pacote obtido, em vez de baixar arquivos do gerenciador de pacotes. Para instalar diretamente um pacote .deb, você faz dpkg –install nome_pacote.deb. Para instalar diretamente um pacote .rpm você faz rpm –install nome_pacote.rpm.

Instalando as aplicações através do gerenciador de pacotes, você consegue remover e atualizar as aplicações pelo gerenciador, e então as instalações ficam sob controle centralizado e a manutenção do sistema fica mais fácil e padronizada.

Embora saiba que não ofereci nem de longe uma referência completa deste amplo tema, espero ter sido capaz de esclarecer um pouco do processo de instalação de softwares no Linux para usuários novos. Caso eu tenha deixado algum ponto mal explicado ou vocês desejem trocar alguma idéia a respeito disso, não hesitem em entrar em contato!


@dvogado.com aprovado no java.net!

novembro 28, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Caros amigos, já comentei aqui anteriormente que no meu tempo vago desenvolvo um software para advogados. Este projeto é open source e está em desenvolvimento, ainda não tendo nenhuma release.Algumas semanas atrás eu cadastrei o projeto no java.net, e hoje recebi o e-mail me informando que ele foi aprovado lá! O projeto está oficialmente incubado no java.net. A home do projeto lá é https://advogadocom.dev.java.net/

Os detalhes do projeto podem ser vistos na página do java.net, mas a arquiteturá básica terá Apache Tomcat 6.0.x + Apache Derby 10.x + Java RE 6 + Apache Wicket como framework web.

Quando tiver mais novidades do projeto, voltarei a postar aqui! 🙂


Google Hosted Apps

novembro 28, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Muitas empresas mantêm uma infra-estrutura própria de e-mail, calendário, contatos, etc e gastam esforço e dinheiro com isso. Uma alternativa bastante interessante hoje em dia é usar a estrutura do Google Hosted Apps.Eu fui conhecer este recurso oferecido pelo Google há pouco mais de 1 ano, quando a Concrete deixou de utilizar uma infra-estrutura própria para utilizar os serviços do Google Hosted Apps na modalidade gratuita. Com uma qualidade de serviço excepcional, a Concrete conseguiu se livrar do esforço de manutenção da infra-estrutura e pôde focar estes esforços em coisas mais estratégicas para a empresa. E desde que houve esta migração, não houve ainda nenhuma ocasião em que qualquer dos serviços oferecidos pelo Google estivesse indisponível quando eu tenha acessado.

Se for do interesse da empresa, os recursos da versão gratuita podem ser expandidos para os da versão comercial, e aí vem uma liberdade de configuração e personalização maior, e um suporte com SLA ainda maior. Portanto, se a sua empresa ainda se esforça para manter uma infra-estrutura própria destes serviços e julga que isto não é estratégico para a empresa, invista melhor seus recursos pessoais e financeiros em outra coisa mais importante.

Deixe o Google cuidar do seu e-mail que você não vai se arrepender!


Distrowatch

novembro 28, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Para quem ainda não conhece, aqui vai a dica de um site muito legal sobre Linux. O Distrowatch é um site que agrega informações sobre inúmeras distribuições Linux, incluindo todas as mais populares até algumas totalmente desconhecidas.Para os interessados em conhecer mais sobre Linux e suas principais distribuições, este site é um bom ponto de partida. Ele possui uma página para cada distribuição, informando o ambiente gráfico, notícias de lançamento de versões, análises da distribuição que tenham sido publicadas, screenshots, versões dos diferentes softwares, e muito mais coisa.

Eu já uso Linux em casa desde 2003, e já instalei uma boa quantidade de distribuições. Já há cerca de 1 ano eu uso o Kubuntu (gosto muito mais do KDE do que do Gnome), mas já usei Conectiva, Red Hat, Knoppix, Mandrake, Suse e instalei até o Solaris 10 (mas este só durou um dia, impossível usar aquele Java Desktop System pesadíssimo).

As preferências por distribuições variam muito de uma pessoa pra outra, mas atualmente eu recomendo utilizar ou o Kubuntu ou o Ubuntu. A diferença entre os 2 é que o primeiro usa o KDE e o segundo usa o Gnome como interface gráfica. Eu particularmente prefiro muito o KDE, mas várias pessoas gostam do Gnome também.

Quem estiver interessado em começar a usar e quiser umas dicas, estamos aí pra ajudar!


Novo companheiro na equipe

novembro 27, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Recentemente alguns novos companheiros estão se juntando à equipe. Ontem registramos a chegada de mais um membro, o Aedes, apelidado carinhosamente de “Dengoso”. Segue a foto do companheiro Aedes! Cliquem na foto para zoomDengoso


Caminho prático de São Paulo até Miami by Google Maps

novembro 27, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

O Silvano me passou algo muito interessante que pode ser visto no Google Maps. Nestes tempos do caos aéreo, com uma tremenda dificuldade para se embarcar, aeroportos lotados e pouco seguros, aqui vai uma dica para quem quer passar o final de ano em Miami. Vejam aqui como é prático! Pra quem está querendo emagrecer um pouco como eu, a instrução 36 é perfeita, você consegue chegar em Miami sem o caos aéreo e ainda por cima entrando em forma 🙂


REST e AtomPub

novembro 26, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Este fim de semana estudei mais um pouco de REST e Atom. O Atom Publishing Protocol é um protocolo de publicação de posts e feeds de blogs, que utiliza publicações no formato Atom (uma alternativa mais nova e mais rica do que o RSS)O motivo que me levou a estudar o Atom e o AtomPub é que o AtomPub está começando a ser usado como “implementação de referência” de web services REST. Não é que o protocolo do AtomPub em si seja voltado para web services em geral, mas ele é uma implementação muito inteligente e eficiente de web services REST para publicação em blogs, e então as idéias aplicadas para este tipo de aplicação estão começando a ser utilizadas de uma forma mais geral.

Embora não seja a mesma coisa, de certa forma podemos dizer que o AtomPub está para os web services REST assim como um framework como o Struts está para o desenvolvimento web. A comparação não é tão boa porque o AtomPub ainda é mais uma “inspiração” de implementação, um exemplo bem-sucedido de web services REST, enquanto o Struts é um framework para desenvolvimento web, no qual muitas aplicações estão baseadas e foram construídas por cima.

O AtomPub chega em ótimo momento, pois os web services REST vêm se firmando como uma ótima opção de implementação em boa parte dos casos, comparando com SOAP. Entretanto, REST é apenas um estilo de arquitetura, que permite uma enorme flexibilidade em termos de implementação. Como as idéias propostas pela arquitetura REST são abstratas em alguns aspectos, analisar como o AtomPub foi implementado é muito interessante e esclarecedor.

Um projeto open source que oferece uma API para criar, editar, ler e remover posts e feeds no formato Atom utilizando o Atom Publishing Protocol é o Apache Abdera. Este projeto ainda está incubado na Apache e ainda não está nem em beta, mas as releases atuais de desenvolvimento já permitem fazer algumas coisas interessantes e o projeto promete crescer, pois o Mule já está o utilizando como componente para implementação de web services REST no ESB deles.

Eu já consegui fazer uns exemplos legais com o Abdera, publicando através da API deles uns posts no blogger do Google e criando eventos no Google Calendar. Ainda estou estudando e conhecendo melhor o AtomPub, e o Abdera, mas tenho certeza de que veremos coisas boas daí, e penso que este é o caminho mais promissor de web services atualmente. Can’t wait to get to know it even better!

Quando souber de mais coisas interessantes nesse assunto, publicarei aqui!


Amazon Kindle, brinquedinho interessante. Estamos caminhando pro fim da mídia impressa?

novembro 25, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Eu gosto bastante de ler e estudar assuntos de software. Entretanto, algumas vezes tenho dificuldade de me concentrar no computador após um longo dia de trabalho, especialmente chegando em casa após as 21:00.Possivelmente uma solução interessante, e provavelmente bem mais agradável do que ler coisas no computador seria usar o Amazon Kindle. Não tenho certeza se este será o caminho do futuro quanto à forma de distribuição de conteúdo, quero dizer, se de fato a mídia impressa irá decair e então as formas de distribuição eletrônica serão plenamente dominantes. Entretanto, considerando a praticidade de uso, facilidade de venda de conteúdo e serviços e também a economia de papel e energia que este brinquedinho oferece, acredito bastante no potencial do mesmo.

Um sinal de que podemos mesmo estar caminhando rumo à drástica redução da mídia impressa é que o Kindle está esgotado na Amazon, e a Amazon não é exatamente uma lojinha de pequena escala. Nos EUA a venda de conteúdo e serviços digitais está muito à frente do que temos no Brasil, principalmente pela força do combate à pirataria por lá. Acredito que em breve este modelo de negócios crescerá muito, e isto abre uma bela oportunidade para quem souber entrar bem neste mercado.

Clássicas revistas e jornais como Veja, O Globo, Folha de São Paulo, Exame, etc.. conseguirão entrar e vencer neste novo mercado da mesma forma que estão fortes e presentes no mercado de mídia impressa? Como a qualidade de seu conteúdo é excelente, é bem capaz de conseguirem. Entretanto, como o conteúdo digital é consumido de forma um pouco diferente, muito mais “sob demanda” do que com “pacote padrão para todos os assinantes em cada edição”, é provável que estas revistas e jornais precisem rever e ajustar o seu modelo de negócios.

Na Veja e na Exame (excelentes revistas das quais sou assinante) é muito comum você encontrar algumas páginas de publicidade intercaladas com aqueles assuntos mais interessantes da edição, como a reportagem de capa e as entrevistas das páginas amarelas por exemplo. Este modelo de publicidade já ficou consagrado, e com certeza todos os leitores que estiverem folheando a revista serão atingidos por essa publicidade e com isso a revista pode cobrar um bom valor pelos anúncios, devido ao alto percentual de leitores que verão a publicidade. Podemos de certa forma dizer que a quantidade de pessoas que estão vendo um determinado anúncio pode ser estimada em função da quantidade típica de leitores de cada edição.

Agora, como ficará esta questão da publicidade quando o conteúdo for distribuído digitalmente em vez da mídia impressa? Com o conteúdo consumido sob demanda, será que a propaganda do seu anunciante será de fato vista por quem ele gostaria? Será que isto não diminui o valor dos anúncios, com uma garantia de visualização muito menor? Será que a redução do valor dos anúncios será compensada pelos gastos menores de produção edistribuição das publicações? E por outro lado, com a distribuição digital e personalizada, fica muito mais fácil conhece de forma mais precisa os reais interesses de consumo de cada pessoa. Com isso uma publicidade mais direcionada e de mais sucesso pode ser feita. Como estas publicações farão uso disto? Todas estas perguntas certamente estão nas cabeças dos líderes destas publicações, só não sei se a resposta será simples. Todas estas principais publicações já possuem sites e alguma forma de conteúdo digital, mas esta forma de distribuição ainda está engatinhando perto da tradicional forma da mídia impressa.

Bom, posso dizer que eu gostaria de poder ler blogs, livros, revistas, jornais em um dispositivo como o Amazon Kindle, pois eu muitas vezes fico cansado após longas horas diárias sentado no computador. Certamente seria agradável poder ler estes conteúdos sentado no sofá da sala ou mesmo em uma cidadezinha pequena e agradável onde eu fosse passar o fim de semana e nem tivesse computador.

A sensação de estar lendo uma publicação para a qual nenhuma árvore foi derrubada e com um consumo de energia infinitamente menor do que o de um computador também é reconfortante. Ah Kindle, você traz possibilidades tão interessantes… vê se chega logo no Brasil! 🙂


The Mylyn’s missing feature that would make me advocate it instead of just suggesting it

novembro 24, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

First a little disclaimer: I really like Mylyn and find it one of the most useful and certainly one of the most innovative development tools ever. I am using it for quite some time and started using its version 2.x since the JIRA Connector started working correctly with ISO-8859-1 againHowever, there is something in the use of Mylyn that I would really like to be customizable. I thought that maybe I would get used to the default plugin behavior after some time using it, but unfortunately it didn’t happen for me and for most of my working mates.

I would like to be able to configure Mylyn’s task context management so that files are added to the task context only when saving them, instead of adding at the time the file is opened.

For example, very frequently when developing some new feature I open some files that are not related to the current task just to see how something was implemented on some other class or file. I don’t want to have this file I just opened added to the context. I want to be able to add to the context only the files I actually changed during the task activity.

As I don’t know if this is a common desire among Mylyn’s users in general, the ideal solution would be to have the configuration option of adding files to task context at opening or only when saving the files.

As i said I can’t speak for Mylyn’s users in general, but at least here at Globo.com (where we have 100-200 Java developers) most of the guys who used Mylyn had the same opinion.

I have already requested this enhancement at Mylyn’s Bugzilla, and I would really appreciate having a nice feedback on that, telling if this could be done in the future, if it’s too complicated, if it’s just a misuse of the tool, et cetera.

I have previously talked directly to Mik and Eugene regarding the JIRA Connector and their response exceeded the best expectations I could have. So, in this humble space of mine, I would like to receive some feedback on this new feature I am requesting. I can assure that it would take my Mylyn satisfaction to an even higher level and it would turn a reasonable bunch of users into very happy advocates of this great tool, starting with me 😉


Instalação e configuração do DbVisualizer no Linux

novembro 23, 2007

Atenção, este blog foi migrado para: http://brunopereira.org

Com a crescente adoção do uso de Linux, algumas pessoas têm me perguntado qual software de acesso a banco de dados eu uso no Linux. Eu utilizo um software que já conheço desde os meus tempos de desenvolvimento para PDAs, quando o DbVisualizer era a única forma conhecida de se acessar as bases de dados dos dispositivos móveis.O software pode ser baixado a partir daqui, após preenchimento de um pequeno cadastro. Para que usa distribuições baseadas em pacotes rpm, a opção do download do rpm é mais conveniente, e a instalação pode ser feita com o comando rpm –install nome_arquivo_dbvis.rpm. Para Linux em geral, pode ser utilizado o instalador em formato .sh

Baixando o instalador .sh, basta copiar o arquivo para um diretório qualquer de sua preferência e executá-lo como ./dbvis_linux_6_0_2.sh para iniciar o processo de instalação.

Caso o instalador não se inicie normalmente, verifique se o arquivo .sh está com permissão de execução (caso não esteja, faça chmod a+x dbvis_linux_6_0_2.sh) e se você possui o Java no PATH do seu usuário. Para verificar se você possui o Java e a versão do mesmo, use o comando: java -version. O recomendado é ter uma versão de Java da Sun e que seja a partir do 1.5. Muitas distribuições Linux instalam uma versão do Java da GNU, mas não gosto e não recomendo esta versão. Coloque o diretório do Java da Sun no começo do PATH do usuário (se alguém não souber como, eu explico posteriormente).

O processo de instalação em si é bastante simples. Você precisa apenas aceitar os termos de uso do software e escolher o diretório de instalação. No resto, aceite as opções padrão apresentadas e Next -> Next -> Next 🙂 O processo de instalação cria um atalho no Desktop.

Com a aplicação instalada, vou mostrar agora como configurar a aplicação para conseguir acessar o Oracle. O driver jdbc do Oracle não vem incluído na instalação do DbVisualizer. Para conectar ao Oracle é necessário carregar o driver. Para isto, entre na opção Tools -> Driver Manager, conforme abaixo:

Carregar driver jdbc

Nesta tela que abrir, selecione no menu esquerdo a opção Oracle Thin e então na janela que se abrirá, você terá que selecionar o jar do driver jdbc do Oracle (ojdbc14.jar ou classes12.jar), conforme abaixo:

Escolher jar do driver jdbc

Se o jar foi corretamente carregado, a opção do Oracle Thin aparecerá verde. Tendo feito isso é hora de criar a conexão. Vá para a tela principal da aplicação, e no menu esquerdo, clique com o botão direito na opção Connections e então escolha Create Database Connection. Escolha por não usar o wizard, e você chegará na tela a seguir:

Nova conexão

Preencha os campos da seguinte forma:

  • Alias: nome que você quer dar à conexão
  • Database Type: Oracle
  • Driver (JDBC): Oracle Thin
  • Database URL: url jdbc de acesso, conforme será explicado abaixo.
  • Userid: usuário de banco
  • Password: senha do usuário

A URL jdbc varia de um servidor para o outro. No caso do Oracle, o formato é conforme publicado neste outro post. Como referência para o Oracle, se você tiver acesso a um tnsnames que acesse o servidor que você precisa, no tnsnames o formato da declaração é: nome_alias = string_conexao

Para criar uma URL jdbc do Oracle a partir de uma conexão declarada no tnsnames, você deve fazer jdbc:oracle:thin:@string_conexao

Pronto, após preencher este formulário de configuração, você está pronto para conectar-se ao Oracle! Caso alguma coisa não tenha ficado clara, por favor me indiquem para eu explicar melhor