Maven

Entendendo melhor Maven

O objetivo deste post é entender um pouco melhor o que é o Maven e como que o Maven lida com as fases do build, além de entender um pouco de como funciona a resolução de dependências.

O que é o Maven?

Um dos principais problemas desenvolvendo sistemas é como fazer com que toda a equipe construa o artefato final da mesma maneira com as bibliotecas e configurações corretas. Existem várias maneiras de tratar esse tipo de problema. Uma das maneiras mais comuns é usar alguma ferramenta que entenda alguma linguagem de script e copie as dependências e configurações para os lugares corretos e gere um pacote com a aplicação. Uma ferramenta comum muito usada no mundo Java é o Ant (http://ant.apache.org/). Com o Ant é possível escrever scripts de ‘build‘ para copiar bibliotecas de lugares específicos, arquivos de configurações e qualquer outro tipo de recurso para o artefato da aplicação. Com isso garantimos que qualquer desenvolvedor consiga gerar o artefato da aplicação localmente, sabendo que este artefato gerado é o mesmo que o resto da equipe irá usar e que possivelmente será usado em produção. Porém existem alguns problemas com essa abordagem. O primeiro problema que vem a cabeça é, onde guardamos as bibliotecas externas ao nosso projeto para que o Ant as encontre? A solução mais comum é guardá-las no repositório junto com o código fonte, assim todos os desenvolvedores compartilharão as mesmas dependências e os caminhos das pastas são mantidos.

Esse tipo de organização é muito adotada e funciona muito bem para projetos pequenos e com equipes bem pequenas. Quando começamos a prolongar um pouco a vida do projeto percebemos que o overhead de manutenção do mesmo começa a interferir no andamento do desenvolvimento. Isso porque o número de dependências começa a aumentar e com o tempo vão saindo versões novas de algumas dependências antigas(podemos entender dependências como sendo bibliotecas). Se todas as dependêcias estão na mesma pasta, fica muito difícil fazer o controle de versão e de transitividade das mesmas. Agora pense em um caso mais complicado: decidimos criar um novo módulo para o projeto. Nesse caso, todas as dependências que este novo módulo necessita e estão no módulo já existente, devem ser duplicadas no repositório. Deve-se fazer isso pois já que estamos falando de módulo, devemos ser capazes de construir o tal módulo independente da existência dos outros. Ou seja, duplicamos também o esforço para manter a organização das dependências.

Essa é uma das motivações pricipais pela qual a apache criou o Maven (http://maven.apache.org/).

O Maven é uma ferramenta de integração de projetos. É responsável por gerenciar dependências, controlar versão de artefatos, gerar relatórios de produtividade, garantir execução de testes, manter nível de qualidade do código dentre outras. Muitas pessoas confundem o maven como sendo uma alternativa para o Ant, ou para o Ivy (http://ant.apache.org/ivy/) o que não é verdade. O Maven inclusive disponibiliza a funcionalidade de rodar arquivos do Ant durante o build.

Voltando ao nosso problema citado anteriormente, com o Maven consiguimos isolar as bibliotecas usadas no projeto em um ‘repositório‘ compartilhado pela equipe, ou por toda internet no caso do repositório central do Maven. Dessa forma não nos preocupamos com duplicidade de dependências entre módulos do projeto e nem em disponibilidade das mesmas no repositório de código. Quanto a versão das dependências, estas ficam centralizadas em arquivos de configuração dos projetos de forma explícita e hierarquisada pelos módulos (POM). Com isso o Maven consegue se encarregar de fazer as devidas substituições de bibliotecas e identificar possíveis falhas no grafo de dependências.

O que torna o Maven muito poderoso é a facilidade que ele fornece para se trabalhar com vários módulos de um mesmo sistema e sua extensibilidade para novas funcionalidades com o uso de ‘plugins‘. Existem plugins de geração de código, de integração com plataformas de teste e inclusive suporte a IDEs como Eclipse e NetBeans. Isso torna o projeto muito mais flexível dentro da equipe, pois cada desenvolvedor pode escolher a IDE com que vai trabalhar sem se preocupar em atrapalhar o resto da equipe. Um outro plugin que será visto no post sobre Flex + Maven, é o flexmojos (http://flexmojos.sonatype.org/). Esse plugin é responável por integrar o Flex aos projetos do Maven de maneira transparente, executando o build da mesma forma que nos projetos Java. O plugin também disponibiliza a funcionalidade de preparar o projeto Flex para ser importado no FlexBuilder.

Vamos começar a entender melhor o Maven estudando seu funcionamento.

Fases do build

Algo interessante sobre este post é que o que será abordado é sempre referente a ‘um pouco’, ou ‘um pouco melhor’. Isso porque o maven é uma ferramenta bastante complexa dependendo do nível de customização e da necessidade que se tenha. A primeira parte do post cobre as fases executadas durante o build.

Uma fase nada mais é do que um estágio onde são executadas algumas regras sobre o projeto e se obtem algum resultado no final. Por exemplo, a fase de testes roda os testes da aplicação e obtém um ‘OK’ ou um ‘FAIL’, no segundo caso o build é interrompido. Tais fases são executadas dentro do ‘lifecycle‘ do build. O ‘lifecycle‘ é composto de ‘goals‘ e são estes:

  • Validate
  • Compile
  • Test
  • Package
  • Verify
  • Install
  • Deploy

Se você está lembrado do post anterior, usamos o comando do maven com os goals ‘clean‘ ‘install‘. Note que o goal ‘clean‘ não está presente no lifecycle do build, por isso tivemos que invocá-lo na linha de comando além do goal ‘install‘. O ‘clean‘ apenas apaga a pasta target, que como visto no post anterior contém os ‘.class‘ e os artefatos gerados pelo build. Os goals do lifecycle são executados nessa ordem mostrada acima. Um pouco sobre cada goal:

  • validate: valida que os ‘poms‘ dos projetos involvidos estão corretamente escritos e que todas as informações necessárias para o build estão presentes;
  • compile: compila todos os códigos do projeto, inclusive os códigos das classes de teste;
  • test: roda os testes que estão em ‘src/test/java‘, e certifica-se que todos estão passando, caso contrário o build é interrompido;
  • package: usa o código compilado e testado que está em ‘src/main/java‘ e cria um arquivo reusável, por exemplo jar;
  • integration-test: nesta fase serão rodados os testes que necessitam do jar do projeto ‘deploiado‘ para serem rodados;
  • verify: roda as verificações necessárias para se certificar que os pacotes gerados estão corretos e passam nos critérios de qualidade;
  • install: copia o arquivo gerado para o repositório local para que esteja disponível localmente para outros projetos;
  • deploy: copia o arquivo gerado para um repositório na rede ou remoto, para que esteja disponível para outros desenvolvedores.

Ainda lembrando o exemplo anterior, em um dos comandos executados possuia um goal que não está no lifecycle e que não foi citado: ‘eclipse:eclipse‘. Neste caso não se trata de um goal, mas sim da execução de um ‘plugin‘. ‘Plugins‘ no maven alteram o lifecycle adicionando novos goals em determinadas fases. No caso do ‘eclipse:eclipse‘, estamos invocando o método ‘eclipse‘ no plugin ‘eclipse‘, para isso usamos os ‘:‘. Esse plugin é responsável por criar os arquivos que o Eclipse entende e dessa forma consiga importar o projeto. Não está no objetivo deste post tratar de plugins, por isso se você se interessar pelo assunto existe uma boa documentação no site do próprio maven: http://mojo.codehaus.org/. Plugins do maven são chamados de ‘Mojos‘. Trataremos de ‘plugins‘ em um post futuro.

POM

Project Object Model – se trata do ponto de partida para o maven executar seu lifecycle. Nada mais é do que um arquivo XML que descreve propriedades e características do projeto, como por exemplo a versão do compilador que será usada (exemplo no post anterior):

004

Repare que todas as propriedades que foram escolhidas no momento em que geramos o projeto estão definidas aqui, por isso se for preciso editar alguma delas, podemos fazer direto aqui no XML. Lembrando que para as modificações surtirem efeito, temos que executar ‘$ mvn install‘ e ‘$ mvn eclipse:eclipse‘ para refletir os resultados no Eclipse.
Além de guardar as informações mínimas necessárias para se executar o build, no pom definimos também os plugins que serão utilizados, os repositórios de artefatos que serão buscados, os relatórios que serão gerados, o pom que servirá como ‘parent‘, as dependências do projeto, dentre outras coisas.

Nesse post trataremos das dependências, as outras funcionalidades serão abordadas em outros posts.

Para definir um pom que servirá como ‘parent‘ de seu projeto, basta adicionar no pom de seu projeto o ‘groupId‘, ‘artifactId‘ e ‘version‘ do parent:

005Nesse caso estamos falando que o pom do projeto ‘tec-versions‘ que pertence ao grupo ‘br.com.dclick.framework‘ na versão 1.0.4-SNAPSHOT será o parent do nosso pom, portanto nosso pom herdará todas as configurações, dependências e propriedades definidas no pom do ‘tec-versions’.

Dependências

Uma das funcionalidades mais poderosas do maven é a resolução de dependências. Não é uma funcionalidade exclusiva, mas a maneira com que é feita resolve muito bem a maioria dos problemas. Existem algumas outras ferramentas com o mesmo intuito, como por exemplo o Ivy da própria Apache, mas vimos que o maven é muito mais do que apenas uma ferramenta de resolução de dependências.

A definição das dependências do seu projeto é feita inteiramente no pom. Para isso usamos a tag <dependencies/> e dentro definimos cada dependência individualmente. Por exemplo, para definirmos a dependência do JUnit 4.8.1 basta adicionar o seguinte trecho no lugar do que já existe:

006

Repare que está definida uma tag que ainda não foi mencionada: ‘scope‘. ‘Scope‘ explicita o escopo em que o artefato definido será usado, nesse caso estamos dizendo para o maven adicionar a dependência do JUnit apenas no momento em que os testes forem executados, garantindo assim que a dependência não seja adicionada no artefato que será gerado. Alguns outros escopos:

  • compile: escopo padrão do maven para o momento em que o código é compilado e vai junto com o artefato;
  • provided: adicionado no momento da compilação, mas não vai junto com o artefato. Dessa forma você está dizendo que a dependência virá de maneira transitiva de alguma outra dependência;
  • runtime: não inclui no artefato, pois estará disponível em tempo de execução;
  • test: inclui apenas no escopo de testes;
  • system: não inclui no artefato, pois estará disponível no ambiente;
  • import: incluirá TODAS as dependências do ‘depencyManagement‘ que está definido no pom ‘parent’.

Não falamos ainda de ‘depencyManagement‘, mas será tratado mais a frente.

Toda dependência no maven é transitiva, ou seja, se alguma dependência precisa de uma outra não especificada no seu projeto, o seu projeto passará a depender dela também, e será incluida no artefato gerado. A única exigência do maven é que as dependências não sejam cíclicas, e não existe restrição quanto ao número de níveis de dependências.

Dependency Management

O dependency management é responsável por controlar as versões das dependências definidas no projeto. Por exemplo podemos definir a dependência do JUnit no dependency management, e apenas referenciar a dependência na tag depencies do projeto:

007

Uma boa prática é definir todas as versões das dependências em um dependency management do pom parent do seu projeto. Dessa forma todo projeto novo que surgir, basta herdar desse parent que as versões já estarão compartilhadas e continuarão centralizadas em um único projeto. Mesmo com a dependência definida no management, os projetos ainda podem definir suas próprias versões de artefatos e o maven dará prioridade para os mais próximos do projeto.

Nos próximos posts veremos como usar alguns plugins úteis para o ambiente de desenvolvimento. Também falaremos de outras funcionalidades como por exemplo geração de relatórios, ‘release‘ de projetos, entre outras.

Categorias:Java, Maven

Criando um projeto Maven no IntelliJ IDEA

Pessoal,

Hoje vou colocar em forma descrita como criar um projeto.
Essa vai ser meu ponto inicial para programação em Java EE & Java WEB.Vou utilizar como IDE o IntelliJ IDE, o site do desenvolvedor segue abaixo.

https://www.jetbrains.com/idea/

Para criar um projeto na IDE:
– Create New Project

Vai abrir uma tela auxiliar onde você pode escolher algumas configurações pré-definidas em questão linguagens na IDE, mais você escolhe a opção MAVEN.
– Tem que selecionar o Project SDK (“seria a versão JRE do java instalado”).
– Pode deixar desmarcado a archetype (“São templates de aplicação já feitas e prontas para uso.”).

Vai com o mouse na opção “Next” para setar alguns paramentro do projeto:
– GroupID: ex.: br.com.projeto1
– ArtifactID: ex.: projeto1
– Version: ex.: 1.0.0

Vai com o mouse na opção “Next”:

– Project name: ex.: projeto1
– Project Location: “eu deixo default”

Pronto criado o projeto MAVEN na IDE IntelliJ IDEA.

Para deixar as configurações 100% certa precisa adicionar no arquivo “pom.xml” o packaging, eu utilizei os pacotes “war” conforme a configuração abaixo.

003
Fim!

 

Categorias:IntelliJ IDEA, Java

Acertando openssh-server da Distro semplice linux

Segue os comandos para serem executados:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
sudo ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
sudo ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa1_key
sudo /etc/init.d/ssh reload

Categorias:Linux / Unix

Loading extension GLX: Manjaro não inicia !

O problema é que o driver proprietário da nVidia foi excluído na atualização em favor do driver livre nouveau, que também não é habilitado por padrão neste caso…

Para resolver, instale novamente o driver proprietário da nVidia:

sudo mhwd -a pci nonfree 0300

 

Ícones da Lixeira, Meu Computador e Pasta Pessoal na área de trabalho

Para quem acaba de chegar ao Ubuntu vindo do universo Windows, pode parecer estranha a ausência de certos ícones na área de trabalho. Aos que preferem ter acesso mais rápido a “Lixeira”, ao “Meu Computador” ou aos “Meus Documentos”, aí vai a dica:

1. # apt-get install gconf-editor

2. Aperte ALT-F2 e digite na caixa de diálogo que abrir logo em seguida o seguinte comando:gconf-editor

3. No Editor de Configurações do Gnome (é isto o tal gconf-editor), selecione Apps > Nautilus > Desktop.

4. Assinale os itens computer_icon_visible, documents_icon_visible ou trash_icon_visible.


Se o arrependimento bater, antes que ele mate, volte ao gconf-editor – agora um íntimo! – e reverta a operação: tudo como antes na configuração padrão.

Atalho para Google Chrome que some no menu do Debian Squeeze (solução)

Acredito que muitos tenham tido o mesmo problema que eu, quando instalaram o Google Chrome no Debian Squeeze.

O Chrome está instalado, o ícone dele aparece no menu de aplicações do GNOME. Mas depois que você reinicia, este ícone some.

A solução para este problema é bem simples. Basta executar o comando abaixo como ‘root’, no terminal:

# ln -s /opt/google/chrome/google-chrome.desktop /usr/share/applications/google-chrome.desktop

sources.list Debian Wheezy

### ——————
### Debian 7.0 Wheezy.
### ——————
### Chave GPG: sudo apt-get install debian-archive-keyring debian-keyring
#deb http://http.debian.net/debian/ wheezy main contrib non-free
#deb http://ftp.debian.org/debian/ wheezy main contrib non-free
deb http://sft.if.usp.br/debian/ wheezy main contrib non-free

### ————————————-
### Debian 7.0 Wheezy Security “Updates”.
### ————————————-
#deb http://http.debian.net/debian-security/ wheezy/updates main contrib non-free
#deb http://sft.if.usp.br/debian-security/ wheezy/updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free

### ——————————-
### Debian 7.0 Wheezy “Multimedia”.
### ——————————-
### Chave GPG: sudo apt-get install deb-multimedia-keyring
#deb http://sft.if.usp.br/debian-multimedia/ wheezy main non-free
deb http://www.deb-multimedia.org wheezy main non-free

#
#
#

### ————————
### Cairo Composite Manager.
### ————————
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 483170E9
deb http://download.tuxfamily.org/ccm/debian/ sid main

### ————-
### MATE Desktop.
### ————-
### Chave GPG: sudo apt-get install mate-archive-keyring
deb http://packages.mate-desktop.org/repo/debian/ wheezy main

### ———-
### MoBloquer.
### ———-
# Chave GPG: gpg –keyserver keyserver.ubuntu.com –recv-keys C0145138; gpg –export –armor C0145138 | sudo apt-key  –
deb http://moblock-deb.sourceforge.net/debian wheezy main

### ———-
### Plowshare.
### ———-
### INFO: http://migre.me/6jbUR
### Chave GPG: sudo apt-get –allow-unauthenticated install plowshare
deb http://mcrapet.free.fr/debian/ unstable/

### ——————
### Opera Web Browser.
### ——————
### Chave GPG: wget -O – http://deb.opera.com/archive.key | sudo apt-key add –
deb http://deb.opera.com/opera/ wheezy non-free

### ———————
### Oracle VM VirtualBox.
### ———————
### Chave GPG: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add –
deb http://download.virtualbox.org/virtualbox/debian wheezy contrib

### —-
### Tor.
### —-
### Chave GPG: sudo apt-get update && sudo apt-get install deb.torproject.org-keyring
deb http://deb.torproject.org/torproject.org wheezy main

#
#
#

### ——————
### AwOken Icon Theme.
### ——————
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys F0B5D826
deb http://ppa.launchpad.net/alecive/antigone/ubuntu oneiric main

### ——
### Tint2.
### ——
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys C26CCF8E
deb http://ppa.launchpad.net/killeroid/ppa/ubuntu maverick main

### ——————-
### Ubuntu Font Family.
### ——————-
### Chave GPG: sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com –recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/ubuntu-font-family/ubuntu maverick main

### ————-
### Ubuntu Tweak.
### ————-
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 0624A220
deb http://ppa.launchpad.net/tualatrix/ppa/ubuntu oneiric main

### ———————-
### WebUpd8 Ubuntu Themes.
### ———————-
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/themes/ubuntu oneiric main

sources.list Debian Squeeze Backports

Meu atual sources.list para o Debian Squeeze Backports 6.0.5.

Bastará adicionar o conteúdo abaixo no sources.list e executar os comandos referentes às chaves GPGs, os quais estão abaixo dos nomes de cada repositório.
Todos os repositórios extras e algumas PPAs do Ubuntu encontram-se desabilitados, caso desejem usá-los, descomentem a linha do repositório e sigam com:
# apt-get update
# comando-referente-a-chave-do-repo
# apt-get update

—————————————–

### INFO: http://pastebin.com/GMyKjfAQ
### INFO: http://www.vivaolinux.com.br/dica/Fstab-Montando-CD-de-instalacao-do-Debian/
### INFO: http://www.vivaolinux.com.br/etc/sources.list-16
### INFO: http://www.vivaolinux.com.br/etc/sourceslist-1
### INFO: http://www.vivaolinux.com.br/artigo/Espelhos-Mais-Rapidos-no-Debian-e-Derivados/
### INFO: http://vivaolinux.com.br/artigo/CrunchBang-Backported-Instalacao-e-Configuracao/

### ———————————-
### Debian Squeeze 6.0.5 DVD by fstab.
### ———————————-
#deb file:/media/debian_squeeze_DVD squeeze main contrib

### ————————-
### Debian Squeeze 6.0.5 DVD.
### ————————-
#deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ – Official i386 DVD Binary-1 20120512-13:45]/ squeeze contrib main

### —————————-
### Debian 6.0.5 Squeeze/Stable.
### —————————-
### Chave GPG: sudo apt-get install debian-archive-keyring debian-keyring
deb http://http.debian.net/debian/ squeeze main contrib non-free
deb http://sft.if.usp.br/debian/ squeeze main contrib non-free
deb http://ftp.debian.org/debian/ squeeze main contrib non-free

### ———————————————–
### Debian 6.0.5 Squeeze/Stable Security ‘Updates’.
### ———————————————–
deb http://http.debian.net/debian-security/ squeeze/updates main contrib non-free
deb http://sft.if.usp.br/debian-security/ squeeze/updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

### ———————————————–
### Debian 6.0.5 Squeeze/Stable ‘Updates’ Volatile.
### ———————————————–
deb http://http.debian.net/debian/ squeeze-updates main contrib non-free
deb http://sft.if.usp.br/debian/ squeeze-updates main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free

### —————————————-
### Debian 6.0.5 Squeeze/Stable ‘Backports’.
### —————————————-
### Chave GPG: gpg –keyserver hkp://subkeys.pgp.net –recv-keys 16BA136C && gpg –export 16BA136C | sudo apt-key add –
deb http://http.debian.net/debian-backports/ squeeze-backports main contrib non-free
deb ftp://sft.if.usp.br/debian-backports/ squeeze-backports main contrib non-free
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free

### ——————————
### Debian Backports Mozilla Team.
### ——————————
### Chave GPG: wget -O- -q http://mozilla.debian.net/archive.asc | gpg –import; gpg –export -a 06C4AE2A | sudo apt-key add –
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release

### —————————————–
### Debian 6.0.5 Squeeze/Stable ‘Multimedia’.
### —————————————–
### Chave GPG: sudo apt-get install debian-multimedia-keyring deb-multimedia-keyring
deb http://sft.if.usp.br/debian-multimedia/ squeeze main non-free
deb http://www.deb-multimedia.org squeeze main non-free
deb http://www.deb-multimedia.org squeeze-backports main

###
### Repositórios Extras.
###

### ————————
### XFCE 4.8 Debian Desktop.
### ————————
### Chave GPG: wget -O – http://www.debian-desktop.org/pub/linux/debian/debian-desktop.org_2011.key | sudo apt-key add –
#deb http://www.debian-desktop.org/pub/linux/debian/xfce48-squeeze debian-desktop main

### ————————-
### KDE 4.6.5 Debian Desktop.
### ————————-
### Chave GPG: wget -O – http://www.debian-desktop.org/pub/linux/debian/debian-desktop.org_2011.key | sudo apt-key add –
#deb http://www.debian-desktop.org/pub/linux/debian/kde46-squeeze debian-desktop main

### ——————-
### CrunchBang Waldorf.
### ——————-
### Chave GPG: wget -O – http://packages.crunchbang.org/statler-dev/crunchbang.key  | sudo apt-key add –
#deb http://packages.crunchbang.org/waldorf waldorf main
#deb http://packages.crunchbang.org/statler statler main
#deb http://packages.crunchbang.org/statler-mm squeeze main non-free
#deb http://packages.crunchbang.org/statler-mozilla squeeze-backports iceweasel-release

### ————————
### Cairo Composite Manager.
### ————————
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 483170E9
#deb http://download.tuxfamily.org/ccm/debian/ sid main

### ———-
### MoBloquer.
### ———-
### Chave GPG: gpg –keyserver keyserver.ubuntu.com –recv-keys C0145138; gpg –export –armor C0145138 | sudo apt-key add –
#deb http://moblock-deb.sourceforge.net/debian squeeze main

### ——————
### Opera Web Browser.
### ——————
### Chave GPG: wget -O – http://deb.opera.com/archive.key | sudo apt-key add –
#deb http://deb.opera.com/opera/ squeeze non-free

### ———————
### Oracle VM VirtualBox.
### ———————
### Chave GPG: wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add –
#deb http://download.virtualbox.org/virtualbox/debian squeeze contrib

### —-
### Tor.
### —-
### Chave GPG: sudo apt-get update && sudo apt-get install deb.torproject.org-keyring
#deb http://deb.torproject.org/torproject.org squeeze main

### —–
### Wine.
### —–
### Chave GPG: wget -O – http://www.lamaresh.net/apt/key.gpg | sudo apt-key add –
#deb http://www.lamaresh.net/apt squeeze main

###
### PPAs do Ubuntu.
###

### ——————
### AwOken Icon Theme.
### ——————
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys F0B5D826
#deb http://ppa.launchpad.net/alecive/antigone/ubuntu maverick main

### —————–
### Chromium Browser.
### —————–
### GPG Key: sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com –recv-keys 4E5E17B5
#deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu lucid main

### ———–
### Orta Theme.
### ———–
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 70C398A2
#deb http://ppa.launchpad.net/nikount/orta-desktop/ubuntu maverick main

### ——————-
### Tiheum Equinox PPA.
### ——————-
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 4631BBEA
#deb http://ppa.launchpad.net/tiheum/equinox/ubuntu maverick main

### ——
### Tint2.
### ——
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys C26CCF8E
#deb http://ppa.launchpad.net/killeroid/ppa/ubuntu maverick main

### ——————-
### Ubuntu Font Family.
### ——————-
### Chave GPG: sudo apt-key adv –recv-keys –keyserver keyserver.ubuntu.com –recv-keys EEA14886
#deb http://ppa.launchpad.net/webupd8team/ubuntu-font-family/ubuntu maverick main

### ———————-
### WebUpd8 Ubuntu Themes.
### ———————-
### Chave GPG: sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys EEA14886
#deb http://ppa.launchpad.net/webupd8team/themes/ubuntu maverick main

Categorias:Linux / Unix Tags:

Como restaurar seus painéis do GNOME

Se você apagou ou modificou os painéis do GNOME e agora não consegue mais deixá-los do jeito que eram, aqui vai uma dica rápida para você fazê-los voltar à configuração padrão do ambiente ou da sua distro: abra o terminal e digite como seu usuário:

$ gconftool-2 --shutdown
$ rm -rf ~/.gconf/apps/panel
$ pkill gnome-panel

Os painéis deverão aparecer do jeito que eram quando você usou o GNOME pela primeira vez.

Nvidia drivers for Ubuntu 12.04 Precise Pangolin/Ubuntu 11.10 Oneiric Ocelot/Linux Mint

Instalando Repositórios PPA

# sudo apt-add-repository ppa:ubuntu-x-swat/x-updates
# sudo apt-get update
# sudo apt-get install nvidia-current

Finalizando:

# sudo nvidia-xconfig
Alt+F2: gksudo nvidia-settings