Não é possível “fazer” versões antigas do ImageMagick

1

Eu preciso instalar uma versão 6.9 do ImageMagick para um aplicativo Rails mais antigo que eu mantenho (que usa o Ruby 1.8.6 em um RVM).

Esta é uma nova instalação do Linux Mint 18.

Eu fiz o download de um arquivo "ImageMagick-6.9.6-7.tar.gz", o descompactei, entrei na pasta resultante e tentei criá-lo.

Houve muitos resultados da etapa ./configure , mas pareceu bastante feliz. No entanto, make está falhando com muita saída: há toneladas de coisas assim:

coders/png.c: In function ‘ReadOnePNGImage’:
coders/png.c:2238:45: warning: passing argument 3 of ‘png_set_keep_unknown_chunks’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
        png_set_keep_unknown_chunks(ping, 1, mng_iCCP, 1);
                                             ^
In file included from /usr/include/libpng12/png.h:321:0,
                 from coders/png.c:101:
/usr/include/libpng12/png.h:2330:25: note: expected ‘png_bytep {aka unsigned char *}’ but argument is of type ‘const png_byte * {aka const unsigned char *}’
 extern PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp

etc.

Como esta é uma nova instalação, suspeito que possa estar faltando alguma ferramenta de construção ou utilitários de desenvolvimento ou algo assim. Alguém pode ajudar? Desculpe se isso é um pouco vago.

EDIT: Uma lista completa dos pacotes que eu instalei: link

EDIT 2: resultado completo de make : link

EDIT 3: saída de make install : link

    
por Max Williams 07.12.2016 / 18:15

1 resposta

1

Olhando para a mensagem atual erro (a coisa que você mencionou na pergunta é um aviso , que não terminará o processo de compilação):

libtool: install: /usr/bin/install -c magick/.libs/libMagickCore-6.Q16.so.2.0.0 /usr/local/lib/libMagickCore-6.Q16.so.2.0.0 /usr/bin/install: cannot create regular file '/usr/local/lib/libMagickCore-6.Q16.so.2.0.0': Permission denied

Isso significa que, quando você executou make install , fez isso como um usuário que não tem permissão para criar arquivos no diretório /usr/local/lib .

Há algumas soluções para isso.

A solução "arremesse-se-no-pé" é executar sudo make install . Isso é ruim porque

  1. Você não sabe o que o Makefile faz quando executa make install e, na pior das hipóteses, pode executar códigos maliciosos como root .

  2. Instalar coisas em /usr/local em um sistema Linux (ou qualquer sistema Unix) é ruim porque geralmente é um local onde os arquivos são instalados por vários gerenciadores de pacotes. Isso significa que você pode correr o risco de sobrescrever arquivos existentes.

  3. Como você planeja desinstalar o software?

Algumas soluções melhores:

  1. Configure o projeto para instalação em um ambiente neutro, como /opt ou /sw (onde não estiver sendo usado pelo sistema e pelo gerenciador de pacotes). Faça isso executando configure com a opção --prefix , por exemplo ./configure --prefix=/opt . Observe que isso ainda pode exigir que você execute sudo make install , a menos que tenha permissões de gravação na hierarquia de instalação.

  2. Configure o projeto para instalar em algum lugar em nosso diretório inicial. Esta pode ser a melhor opção se você não precisar instalar a coisa em todo o sistema. Basta fazer como acima, mas defina o prefixo de instalação para algo como $HOME/local , ou mesmo $HOME/tmp (e apenas remova esse diretório quando terminar).

A primeira dessas abordagens não resolve totalmente o problema de desinstalar mais tarde o software, e a segunda abordagem só resolve isso se estiver instalando em uma hierarquia vazia (apenas rm -rf a coisa toda). Para isso, posso recomendar o utilitário GNU Stow . Isso facilita a desinstalação do software que você está criando. Sem isso, é realmente difícil rastrear quais arquivos devem ser removidos se você deseja desinstalar algo.

    
por 31.12.2016 / 12:03