Criando a partir do código-fonte no linux - bagunça em pacotes instalados [duplicado]

0

Toda vez que eu quero construir uma aplicação a partir do código fonte no linux, eu tenho que instalar bibliotecas de dependências no meu sistema operacional (Ubuntu).

Cenário típico:

Iniciar ./configure Tem erro sobre falta de biblioteca: xyz sudo apt-get instala libxyz-dev Vá para o passo 1. No final eu termino com bagunça no meu sistema operacional e problema com dependências. Por exemplo:

Os seguintes pacotes têm dependências não atendidas:

 librsvg2-dev : Depends: libglib2.0-dev (>= 2.12.0) but it is not going to be installed
                Depends: libgdk-pixbuf2.0-dev (>= 2.21.6) but it is not going to be installed
                Depends: libcairo2-dev (>= 1.2.0) but it is not going to be installed
                Depends: libgtk2.0-dev (>= 2.21.5) but it is not going to be  installed

Sempre me pergunto o que agora? Devo forçar o Ubuntu a instalar uma versão superior da biblioteca?

Aqui está a minha pergunta:

Talvez haja outra maneira de criar software no Linux (ubuntu) a partir do código-fonte. Alguns isolam o caminho. Não integrando ao meu sistema operacional? Estou vindo do mundo java e lá, construindo uma aplicação! = Instalo toda dependência no sistema. Alguma sugestão ? Melhor prática?

    
por chris 28.11.2013 / 21:50

2 respostas

3

Você tem mais de uma pergunta aqui, e acho que a principal é como lidar com "mas não será instalada". Eu não tenho uma resposta para isso, mas eu posso dizer que se isso acontecer porque você ficou frustrado e forçou uma instalação de algo em algum momento, então você tem que aprender a desacelerar e prestar atenção em especificidades . Simplesmente dizendo, "no final eu termino com bagunça" não fala muito.

Eu venho construindo a partir do código-fonte no linux por mais de uma década e, em termos do gerenciador de pacotes de distribuição, raramente tive problemas. Alguns empacotadores de fontes não fazem um trabalho muito bom de indicar dependências, ou obter .configure para fazê-lo corretamente, e isso pode ser um grande incômodo, mas não deve levar a problemas de "dependência não atendida" com seu material binário de distribuição, a menos que você tenha feito algo errado com o instalador da distro.

Por exemplo:

librsvg2-dev : Depends: libglib2.0-dev (>= 2.12.0) 

2.12 é antigo - não consegui encontrar um histórico de versões online, mas acho ~ 10 anos antigo. Não há como você ter uma versão do Ubuntu que use um slib mais antigo que isso. Então algo deu errado com o seu gerenciamento de pacotes.

Isso não tem muito a ver com o procedimento para as compilações de origem.

I'm coming from java world and...

Então, esse é o mundo C / C ++. O Java é mais monolítico e autocontido, o que torna certas coisas mais fáceis, mas há desvantagens - lembre-se de que o C / C ++ tem algumas vantagens próprias.

    
por 28.11.2013 / 22:29
0

O Java é fornecido com a maioria das bibliotecas já na máquina virtual; às vezes, os programas Java contêm bibliotecas externas compactadas no jar. No entanto, se você tem muitos programas que são empacotados com as mesmas bibliotecas, você está perdendo muito espaço. O próprio Java atrai muitas dependências e fornece ao seu software tudo o que elas precisam. Muitas vezes penso em Java como um wrapper para diferentes bibliotecas de sistemas operacionais, unificando sua funcionalidade. Embora isso não seja totalmente verdade e Java oferece muito mais.

Existe um ótimo gerenciador de pacotes que compila cada software a partir do código-fonte, cuida das dependências, instala-as quando necessário e as remove depois que elas não são mais necessárias. No entanto, o Portage é o núcleo do Gentoo Linux, é possível usá-lo junto com outros gerenciadores de pacotes, mas não tenho experiência em como isso realmente funciona.
Você pode conferir o Prefixo do Gentoo para apresentar o Portage a qualquer sistema operacional diferente do próprio Gentoo, mas Eu tenho que avisá-lo que isso provavelmente não é muito fácil de fazer, certamente altamente experimental e provavelmente quebrará tudo.

    
por 28.11.2013 / 22:35