Instalei um programa obtendo seu código-fonte e, em seguida, executando 'sudo make install'; como fazer 'apt-get' saber sobre isso?

44

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

No entanto, parece que apt-get não recebeu o memorando porque, ao instalar progB , que depende de progA , apt-get recomenda também instalar progA . Por que isso e o que eu poderia fazer?

    
por Braiam 03.12.2015 / 07:41

3 respostas

54

TL; DR checkinstall é seu amigo ;)

sudo apt-get install checkinstall

Após uma instalação com sudo make install , seu gerenciador de pacotes não sabe absolutamente nada sobre esta instalação. Mas sabe tudo sobre um pacote com o mesmo nome nos repositórios do Ubuntu ou em um PPA.

Use sudo checkinstall em vez de sudo make install e use uma versão superior como a versão no repositório para ter certeza de que o gerenciador de pacotes aceita essa versão como uma dependência correta para ProgB .

Mais informações:

checkinstall é realmente bacana, já que segue o que o comando make install faria, para descobrir como construir um pacote.

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

  1. siga make install para descobrir o que ele faz

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

  3. instale do pacote (exatamente como make install teria, dado o ponto 1)), exceto também deixe apt-get saber sobre isso e, portanto, sobrescreva todos os arquivos exatamente onde make install os colocaria como Contanto que você escolha SIM para incluir também os arquivos colocados por make install no diretório inicial do pacote - algumas opções durante o processo checkinstall permitirão que você escolha (obviamente, a escolha está lá para que você possa exercê-lo caso a caso)

Bônus: você também pode remover um pacote (chame-o progA novamente) instalado usando make install que odes não têm make uninstall support seguindo o processo checkinstall delineado até agora, e simplesmente fazendo:

dpkg -r progA
    
por A.B. 03.12.2015 / 08:30
13

Três opções:

  1. crie um pacote falso para progA : Como falsificar uma versão de pacote instalada? (há um exemplo abrangente para o TeXlive .

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

  3. Compile também progB de fontes.

por Rmano 03.12.2015 / 07:51
1

Eu recomendaria usar uupdate de devscripts e criar o pacote como o original foi criado antes.

Instalar os pacotes necessários

$ sudo apt-get install build-essential devscripts

Faça o download do pacote antigo do repositório oficial (usará MediaWiki como exemplo) e da nova tar-ball do desenvolvedor.

$ 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 uupdate para criar uma nova pasta de origem a partir da tar-ball upstream e o antigo debian/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 arquivos debian/control etc. Se estiver pronto, você pode criar o pacote deb e instalá-lo

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
    
por Germar 04.12.2015 / 02:54