# apt-get no portage?

## fernandotcl

Seria possível ter o apt-get no portage?

Eu acho que seria uma boa idéia. Algumas pessoas têm computadores realmente lentos, e compilar o X ou o KDE deve ser uma tortura. Que tal um "emerge apt-get" e "apt-get install kde"?  :Very Happy: 

Idéias...

----------

## fernandotcl

Passando pelo site do Debian, eu vi o pacote apt. Está no site também os sources, eu acredito que não seria tão difícil assim portar para o Gentoo. Eu acho que vou experimentar  :Very Happy: .

Outra coisa que me chamou a atenção foi o pacote rpm no portage, para instalar rpms. Mas é claro que o apt-get é mais interessante, pois reflete melhor a "filosofia" do Gentoo.

Eu vou baixar os sources e tentar instalar aqui  :Very Happy: . Vocês já pensaram numa integração entre Debian e Gentoo? Pacotes do Debian sendo "apt-getados" pelo portage e no Debian o apt-get compilando? Eu acho que isso pode ser alguma coisa produtiva.

Eu já ouvi falar de Debtoo, mas acho que não é necessário criar uma nova distro, somente um novo pacote  :Very Happy: .

Não teríamos que fazer mais mozilla-firebird-bin e afins. O que quiséssemos instalar como binário usaríamos o apt.

----------

## fernandotcl

Deu parcialmente certo... Compilou tudo bem, mas depois o apt ficou reclamando de uma "biblioteca.so.3.3".

O interessante é que existe uma "biblioteca.so.3.3.0" e um link para ela que tem o nome "biblioteca.3.3". Tá tudo numa pasta só, tanto as libs quanto os binários, então não acredito num erro de PATH...

----------

## fernandotcl

Não tinha visto isso, o dpkg está no portage. Vou instalar e a partir dele tentar instalar o apt...  :Rolling Eyes: 

----------

## Operador Nabla

Tendo em vista as semelhanças entre o APT e o Portage, eu imagino que também seria interessante se pudéssemos portar o Synaptic (consagrado front-end, com contribuições brasileiras, para o APT) para tornar-se um poderoso front-end para o Portage.

----------

## fernandotcl

 *Operador Nabla wrote:*   

> Tendo em vista as semelhanças entre o APT e o Portage, eu imagino que também seria interessante se pudéssemos portar o Synaptic (consagrado front-end, com contribuições brasileiras, para o APT) para tornar-se um poderoso front-end para o Portage.

 

Eu estava pensando nisso também. E estou quase conseguindo colocar o dpkg pra funcionar. Depois disso, eu acho que é suficiente instalar o apt e pronto.

O que me mata é a minha total inexperiência com o Debian. Mas eu vou continuar tentando, estou quase lá  :Very Happy: . É esse o futuro do Linux: Debian no Gentoo, Gentoo no Debian. O melhor dos dois lados.

E aí eu quero ver a desculpa que instalar o Gentoo é demorado  :Very Happy: .

Vamos pensar num jeito de integrar o apt no portage, ou pelo menos o dpkg, vai ser muito útil, estou tendo que mexer nums arquivos de configuração a mão que não deveriam ser mexidos por causa disso... Dependências...

----------

## fernandotcl

Primeiro passo concluído: instalei o apt e o apt-get update funcionou  :Very Happy: .

Agora vou ver se eu instalo um jogo pra testar... Interessante, se o dpkg tivesse uma opção como a inject do emerge eu teria feito isso há uma hora atrás!  :Very Happy: 

EDIT: Estaria aí a facilidade que tanto se busca para instalar o Gentoo? Uma interface gráfica com o Synaptic é relativamente fácil!

----------

## fernandotcl

Funcionou.  :Very Happy: 

Nesse exato momento estou escrevendo do Blackbox, que eu baixei com um:

```
apt-get install blackbox
```

Estou me sentindo no Kurumim.  :Very Happy: 

----------

## fernandotcl

O maior desafio de integrar o Portage e o Dpkg são os pacotes. Os pacotes do Debian tem nomes e versões diferentes no Gentoo.

Para que os dois sistemas coexistam, um não pode sobreescrever o outro. Mas o Portage não "olha" o banco de dados do Dpkg e vice-versa. Então, nós temos que fazer isso manualmente (hoje, em breve por scripts).

Quando pegamos um pacote simples, como o Blackbox, sua nomenclatura e o seu conteúdo é o mesmo. Mas as bibliotecas libstdc++ são um pacote no Gentoo (libcompat), e vários no Debian. Então, para que tudo funcione, os scripts terão que olhar um banco de dados de pacotes "problemáticos" quais são os pacotes correspondentes no outro sistema, e assinalar as mudanças.

O sistema vai ter algumas limitações, onde o sistema mais flexível vai ter que submeter ao pacote menos flexível. Como no exmplo acima, os pacotes do Debian são mais flexíveis e não poderão ser instalados individualmente. Essa perda de funcionalidade é mínima, já que são poucos os casos onde essa diferença acontece (se resumem em grande parte a bibliotecas), e na maioria das vezes o sistema mais flexível acaba tendo os mesmos pacotes que o menos flexível.

Quem quiser tentar usar esse artifício, os passos não são complicados (uma vez que se aprende), e eu posto um guia aqui. Enquanto isso vou tentar fazer alguns scripts bem básicos pra facilitar.

Peguei gosto pela idéia  :Very Happy: .

----------

## fernandotcl

 *fernandotcl wrote:*   

>  *Operador Nabla wrote:*   Tendo em vista as semelhanças entre o APT e o Portage, eu imagino que também seria interessante se pudéssemos portar o Synaptic (consagrado front-end, com contribuições brasileiras, para o APT) para tornar-se um poderoso front-end para o Portage. 
> 
> Eu estava pensando nisso também. E estou quase conseguindo colocar o dpkg pra funcionar. Depois disso, eu acho que é suficiente instalar o apt e pronto.
> 
> O que me mata é a minha total inexperiência com o Debian. Mas eu vou continuar tentando, estou quase lá . É esse o futuro do Linux: Debian no Gentoo, Gentoo no Debian. O melhor dos dois lados.
> ...

 

Instalei o Synaptic. Surpreendentemente funciona. Só congela na hora de instalar os pacotes. Parece que fica esperando um evento acontecer, e esse evento nunca acontece.

Alguém aqui sabe se o dpkg ou o apt têm uma função similar à inject do portage? Se tivesse estariamos com meio caminho andado.

----------

## AngusYoung

Hey, já fizeram ebuilds para isso??? Meu, se quiserem a minha ajuda é só mandar mp, email ou falar comigo no ICQ. Gostei da idéia.

----------

## fernandotcl

 *AngusYoung wrote:*   

> Hey, já fizeram ebuilds para isso??? Meu, se quiserem a minha ajuda é só mandar mp, email ou falar comigo no ICQ. Gostei da idéia.

 

Agradeço muito a iniciativa de oferecer ajuda. Realmente o trabalho não vai ser fácil  :Very Happy: .

Ebuilds? Eu ainda mal consegui instalar alguma coisa  :Very Happy: . O que podemos fazer é corrigir um ebuild já existente, o dpkg, que não é funcional se você só instalar com emerge dpkg; tem uma série de outras coisas a serem feitas.

Vou postar aqui os passos, num formato de script (não é garantido que funcione, estou fazendo de cabeça):

* Editado * Peguem o deb do apt aqui e baixem para ~/deb/.

```
#!/bin/bash

# Pegar o dpkg

emerge dpkg

# Pegar o update-rc.d

# esqueci o endereço :D

# acho que não é necessário que o arquivo seja real

echo "#!/bin/bash" > /usr/sbin/update-rc.d

chmod +x /usr/sbin/update-rc.d

# Ajustar antes de instalar

touch /usr/lib/db/available

echo "Package: libc6" > /usr/lib/db/status

echo "Version: 2.3.2-9" >> /usr/lib/db/status

echo "Status: hold ok installed" >> /usr/lib/db/status

echo >> /usr/lib/db/status

echo "Package: libstdc++2.10-glibc2.2" >> /usr/lib/db/status

echo "Version: 1:2.95.4-0.010810" >> /usr/lib/db/status

echo "Status: hold ok installed" >> /usr/lib/db/status

mkdir /var/lib/dpkg

cp /usr/lib/db/status /var/lib/dpkg/status

# Instalar apt

dpkg -i ~/deb/apt.deb
```

Agora muita atenção:

Para cada pacote que você for instalar usando o apt-get install, você antes precisa ver suas dependências. Se você já tiver os pacotes, é melhor não os sobreescrever. Então você tem que editar

o status e colocar o nome e a versão do pacote que você tem. Parece complicado, mas depois que se acostuma melhora  :Very Happy: 

Outra coisa, antes de instalar, façam um updatedb antes como segurança se tudo der errado  :Very Happy: .

Corrijam o script se necessário, e me informem se der erro.

EDIT: Se vcs não entenderam, ou o script não der certo, não se preocupem, eu vou escrever um guia melhor em pouco tempo, ainda hoje provavelmente.

E outra coisa que eu esqueci de dizer... O packages.debian.org virou o melhor amigo de quem quiser fazer isso  :Very Happy: 

EDIT2: Link Errado! O link para o apt está errado, baixa um tar.gz. O link não é direto, baixem o arquivo manualmente aqui. Já mudei lá em cima.

----------

## fernandotcl

Deixa eu ver se eu consigo me explicar melhor, é uma limpeza de tudo que está no post anterior:

 Instalar o instalador de arquivos *.deb, o dpkg:

```
# emerge dpkg
```

 Este programa não roda sem um script nativo do Debian, o update-rc.d que não sei porque é utilizado. Esse arquivo terá que ser adaptado no futuro para o Gentoo, pois os runlevels do Gentoo não são compatíveis com os do Debian. Provavelmente um arquivo vazio pode substituí-lo, se não funcionar eu posto o original.

```
# touch /usr/sbin/update-rc.d
```

Caso ele exija um script "legítimo:

```
# echo "#!/bin/bash" > /usr/sbin/update-rc.d
```

Agora damos permissões de execução ao script:

```
# chmod +x /usr/sbin/update-rc.d
```

 Baixar o apt, criando uma pasta temporária para ele. Ele pode ser encontrado aqui. Vamos supor que o arquivo foi baixado para ~/deb/.

 O apt não vai ser instalado se não existirem os arquivos /usr/lib/db/status e /usr/lib/db/available. O arquivo available é dummy também:

```
# touch /usr/lib/db/available
```

Já o status também poderia ser. Este arquivo lista todos os pacotes instalados. O problema é que o apt tem duas dependências, os pacotes libc6 e libstdc++2.10-glibc2.2. Se essas dependências não forem resolvidas, o apt não vai instalar.

Poderíamos baixar as dependências e instalar, mas já as temos instaladas no Gentoo. Então, temos que "enganar" o dpkg. Com seu editor favorito, crie o arquivo /usr/lib/db/status assim:

```
Package: libc6

Version: 2.3.2-9

Status: hold ok installed

Package: libstdc++2.10-glibc2.2

Version: 1:2.95.4-0.010810

Status: hold ok installed
```

Isso faz com que ele pense que esses arquivos não devem ser atualizados (hold), obtiveram sucesso (ok) na instalação (installed). As versões são um problema. A da libc6 é a mesma versão que a minha do Portage. Já a libstc++ não dá pra saber, já que no Portage essa biblioteca não constitue um pacote inteiro. Então peguei por segurança a última versão do repositório do Debian.

Mesmo agora, o dpkg não iria instalar o apt. O dpkg requer um diretório /var/lib/dpkg. Então:

```
# mkdir /var/lib/dpkg
```

Ele também exige que uma cópia do arquivo status esteja lá:

```
# cp /usr/lib/db/status /var/lib/dpkg/
```

Esse último comando é muito utilizado. Sempre antes e depois de um apt-get é necessário copiar o status da pasta usr pra var. Ainda não descobri exatamente o porque. Me parece que o dpkg usa o /var/lib/dpkg como um diretório temporário.

Agora basta instalar o apt:

```
# dpkg -i ~/deb/apt-xxxx.deb
```

 Agora vem a parte mais difícl - instalar os pacotes.

Como exemplo vou tomar o Blackbox, meu primeiro apt-get com sucesso.

Se formos em packages.debian.org e procurarmos por blackbox em stable, vamos achar esta página. Os círculos vermelhos em "Other packages related to blackbox" são suas dependências.

A única dependência que não está no status é "xlibs". Agora é necessário um pouco de dedução. Xlibs são as bibliotecas do XFree. Quem tem XFree tem essas bibliotecas, reinstalá-las não é uma boa idéia. Então, temos que dizer ao dpkg que já temos o pacote instalado. Em /usr/lib/db/status:

```
...

Package: xlib

Status: hold ok installed # = não mexa, foi bem sucedida, está instalada

Version: 4.3.0-3
```

Repare a versão: é a versão do XFree retornada em "emerge -s xfree". Repare também que "-3" significa "-r3" na notação Gentooísta.

 Agora:

```
# cp /usr/lib/db/status /var/lib/dpkg/

# apt-get install blackbox
```

Lembrando sempre da cópia do status para var entre apt-gets.

É isso, por enquanto, bem básico  :Very Happy: .

O próximo desafio é automatizar essa rotina, até que seja prático instalar pacotes binários assim. E depois, construir um banco de dados relacionando os pacotes das duas distros. E um ebuild  :Very Happy: .

----------

## jcarlos

Seria interessante o portage ter uma opção como --bin-package que instalasse os pacotes binários caso necessários, e usando um emerge -v --bin-package ele mostraria as opções de compilação utilizadas no pacote, só não seria possível fazer alteração nestas opções, caso queria uma alteração pode-se compilar o pacote no modelo tradicional do gentoo =) 

Mas não sei, talvez o ideal /p umas pessoas seja fazer uma instalação binaria e personalizar apenas alguns pacotes utilizando um fonte. Sendo que em uma distribuição binária é bem mais trabalhoso personalizar o programa pelo fonte que no Gentoo enquanto que no Gentoo é bem mais trabalhoso encontrar e atualizar pacotes binarios (apenas instalando uma nova grp? com exceção dos pacotes que possuem -bin)

Acho que um dia o portage também terá gerenciamento de pacotes binários (de forma mais prática e polida que os atuais .tar.bz2) . Não sei ao certo quantos .ebuilds o portage possuí mas sei que tem uma quantidade enorme, e cada .ebuild tem seu mantedor, não seria impossível cada mantedor de um .ebuild manter uma versão compilada do pacote.

Manter uma base de dados atualizada entre uma porção de .ebuilds e .debs seria extremamente trabalhoso.

Em todo caso boa sorte em seu projeto, acho que a idéia de poder instalar QUALQUER pacote através dos fontes ou dos binários quando quiser é muito boa. Fora que deve ser uma diversão /p você tentar instalar o apt-get no Gentoo  :Very Happy: 

OFF: O que mais me agrada no gentoo não é o desempenho extra que se granha compilando os pacotes do fonte, mas sim a maneira como é fácil manter os pacotes atualizados sem dores de cabeça e manter as configurações feitas. Fora a flexibilidade e a forma como o sistema fica enxuto /c apenas os pacotes que utilizo. Sempre tive dores de cabeça com gerenciadores de pacotes até conhecer o portage.   :Cool: 

OFF2: Essa mensagem ficou maior do que eu esperava    :Surprised: 

----------

## fernandotcl

Ate que o trabalho nao e tao grande assim. Eu estava vendo, os unicos pacotes com nomes diferentes sao bibliotecas. E essas sao faceis "traduzir", basta juntar todas num so pacote  :Very Happy: . Eu acho que e viavel.

Eu estou instalando agora uma instalacao limpa do Gentoo pra ver se e viavel mesmo. Vou traduzir todos os meus pacotes  :Very Happy: .

O que eu pretendo e instalar programas que nao estao no portage (o repositorio do Debian e maior que o do Gentoo) e de uma maneira mais simples.

Minha nova instalacao do Gentoo (isso mesmo, eu cheguei a esse ponto  :Very Happy: ) vai ter toda a parte grafica (X e afins) binaria, assim eu evito muita dor de cabeca  :Very Happy: .

A ideia e que isso nao se torne um substituto do Portage, e sim um complemento. Os pacotes que precisam de desempenho (de jogos ao gcc) serao compilados, enquanto os pacotes que se atualizam com rapidez, sao lentos para compilar e podem gerar erros devido a flags agressivas e coisas do tipo poderiam entao ser baixados como binarios.

Isso sem contar que nao sao todos os pacotes que precisam ser traduzidos. Alguns nao existem no Portage, nem suas dependencias. Esses nao precisam. O numero de pacotes que exigem essa traducao eu estimo em 500 ou menos.

----------

## fernandotcl

Acabei a instalacao e conclui que isso e realmente inviavel...  :Sad: 

Seria facil se so os nomes dos pacotes ou suas versoes mudassem, e um pouco mais complicado quando o conteudo dos pacotes tambem fosse diferente.

Agora o que me fez concluir que nao e viavel foi uma variavel que eu nao contava... As versoes dos pacotes sao totalmente diferentes. Na maioria dos pacotes isso e solucionavel. Mas alguns sao totalmente incompativeis, sem contar os patches que as distros aplicam e as releases diferentes dos mesmos pacotes...

Em alguns casos e impossivel ter os dois sistemas juntos, ao menos sem intervencao do usuario.

Pelo menos deu pra distrair. O ruim e que o X ainda esta compilando...  :Very Happy: .

Eu queria ver mesmo mais pacotes binarios no portage. Quem sabe uma opcao -bin...

----------

## tscolari

hehe

as vezes é complicado compilar...

Eu to tentando instalar gentoo num pentium 166... tortura total (o xorg demorou em média 20 horas pra compilar)...

To tentando usar aquele distcc pra fazer compilação remota mas estou tendo problemas com ele

----------

## malloc

A ideia sinceramente é realmente apelativa. Gosto mt do Gentoo, mas sinceramente n tenho paciencia para perder 4 ou 5 horas a instala-lo, assim so tenho gentoo no meu desktop e no resto (server e 2 laptops) tenho debian. 

Como uso os dois em paralelo cada vez tenho mais consciencia dos pros e contras de cada distro. 

Por exemplo, no debian acho q a forma de distribuição de packages deles e simplesmente má (exemplo, libncurses, libncurses-dev, os xservers todos separados, etc), penso q podia melhorar se criassem mais meta-packages para facilitar a instalação, neste campo o gentoo e mt superior ao debian. 

Tambem n gosto mt do facto do debian usar uma configuração tipo sysv em vez de bsd para os init scripts, aq o gentoo tb leva vantagem. 

Depois temos o facto de q sabemos q qq coisa q instalamos no debian vai funcionar, e aq tá muito a frente do gentoo  :Smile: 

Enfim acho q a filosofia das distros sao diferentes, eu pessoalmente considero o gentoo como uma distro perfeita para desktops e o debian para servidores, devido a facilildade de instalação e manutenção.

Quanto ao porting do apt para gentoo, já existe uma distro (Debtoo se n me engano) q está a fazer o contrário, portar o portage pro debian. 

Acho que ainda é mt beta mas de qualquer maneira tenho curiosidade em ver como é que essa distro vai evoluir.

De qualquer maneira parabéns ao fernandotcl pela ideia e caso ainda esteja interessado em continuar teria muito gosto em ajudar no q puder.

----------

## fernandotcl

 *malloc wrote:*   

> caso ainda esteja interessado em continuar teria muito gosto em ajudar no q puder.

 

Na verdade, a idéia é velha. Encontrei alternativas como o Arch Linux, então dificilmente vou voltar à continuar esse projeto.

----------

## malloc

 *fernandotcl wrote:*   

>  *malloc wrote:*   caso ainda esteja interessado em continuar teria muito gosto em ajudar no q puder. 
> 
> Na verdade, a idéia é velha. Encontrei alternativas como o Arch Linux, então dificilmente vou voltar à continuar esse projeto.

 

Realmente devia ter visto a data dos posts   :Embarassed: 

O arch é uma boa distro, no entanto axo q peca pelo pouco software q ainda tem.

----------

