Eu instalei um programa obtendo seu código fonte e executando o `sudo make install`; como fazer com que o `apt-get` saiba?

46

Instalei o programa (chame-o, por exemplo progA), construindo-o a partir do código-fonte e, finalmente, chamando sudo make installe sudo ldconfig.

No entanto, parece apt-getque não recebi o memorando, porque ao instalar progB, o que depende progA, apt-getrecomenda que eu também instale progA. Por que isso e o que eu poderia fazer?

Braiam
fonte
Eu acho que você tem que instalar progBmanualmente também ...
Parto
11
Não se pode presumir que a versão 'personalizada' que você criou é igual ao pacote, que é uma dependência. Um atalho (não recomendado) seria instalar o pacote real e substituir o binário pelo seu 'especial'. Como você não foi específico, não posso dar mais conselhos.
David6
6
Só não faça isso. Sempre mantenha o software gerenciado pelo gerenciamento de pacotes estritamente separado do software que você mesmo compila.
Reinier pós

Respostas:

56

TL; DR checkinstall é seu amigo ;)

sudo apt-get install checkinstall

Após uma instalação com sudo make installo gerenciador de pacotes, você não sabe absolutamente nada sobre essa instalação. Mas ele sabe tudo sobre um pacote com o mesmo nome nos repositórios Ubuntu ou em um PPA.

Use em sudo checkinstallvez de sudo make installe use uma versão superior como a versão no repositório para garantir que seu gerenciador de pacotes aceite essa versão como dependência correta ProgB.


Outras informações:

checkinstallé realmente bacana, pois segue o que o make installcomando faria, para descobrir como criar um pacote.

Isso significa que se você instalar um programa usando make install, mas depois se arrepender por seus pecados, tudo o que você precisa fazer é sudo checkinstall -D make install, e esse comando:

  1. siga make installpara descobrir o que faz

  2. copy-cat make install, exceto no formato do pacote * .deb

  3. instale a partir do pacote (exatamente como make installteria, dado o ponto 1)), exceto também informe apt-get-o e, portanto, substitua todos os arquivos exatamente onde make installos colocaria, desde que você escolha SIM para incluir os arquivos colocados make installno diretório inicial também no pacote - algumas opções durante o checkinstallprocesso permitem que você escolha (obviamente, a escolha existe para que você possa exercitá-lo caso a caso)

Bônus: você também pode remover um pacote (chame-o progAnovamente) instalado usando os make installodes que não têm make uninstallsuporte , seguindo o checkinstallprocesso descrito até o momento e depois fazendo o seguinte:

dpkg -r progA
AB
fonte
18
Uau checkinstall- o mundo precisa saber disso!
Adicionei mais alguns detalhes à sua resposta, com base na tentativa de implementá-la ontem e nas recomendações desta meta questão - sinta-se à vontade para editá-la ainda mais!
Quais detalhes você quer dizer?
AB
Ah, acho que eles ainda não apareceram, porque está em revisão de edição - se você clicar no link da meta questão, verá o que eles são (originalmente, eu os coloquei no corpo da pergunta, mas o A recomendação era que eu os colocasse no corpo de resposta aceito).
O diretório de documentação do pacote ./doc-pak não existe. Devo criar um conjunto padrão de documentos do pacote?
N8chz 11/12/2015
13

Três opções:

  1. crie um pacote falso para progA: Como falsificar uma versão do pacote instalada? (existe um exemplo extenso para o TeXlive) .

  2. crie um pacote para progA, mais fácil se tiver uma checkinstallopção: Como enganar dependências do apt?

  3. Crie também a progBpartir de fontes.

Rmano
fonte
1
4. Desinstale a versão progAcompilada e instale a apt-getversão. 5. Instale o apt-getpacote sobre a versão compilada e espere o melhor.
jwodder
1

Eu recomendo usar uupdatea partir devscriptse criar um pacote como o original foi construído antes.

Instale os pacotes necessários

$ sudo apt-get install build-essential devscripts

Faça o download do pacote antigo do repositório oficial (será usado MediaWikicomo exemplo) e do novo tar-ball do upstream.

$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz

Execute uupdatepara criar uma nova pasta de origem a partir do tar-ball upstream e do antigodebian/control

$ cd mediawiki-1.19.14+dfsg   # depends on your Ubuntu version
$ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0
$ cd ../mediawiki-1.26.0

Agora você deve verificar se precisa fazer alterações nos debian/controlarquivos etc. Se estiver pronto, você pode criar o pacote deb e instalá-lo

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
Germar
fonte