ImageMagick의 이전 버전을 "만들" 수 없습니다.

ImageMagick의 이전 버전을 "만들" 수 없습니다.

내가 유지 관리하는 레거시 Rails 애플리케이션을 위해 ImageMagick 버전 6.9(RVM에서 Ruby 1.8.6 사용)를 설치해야 합니다.

이것은 Linux Mint 18을 새로 설치한 것입니다.

"ImageMagick-6.9.6-7.tar.gz" 파일을 다운로드하고 압축을 푼 후 결과 폴더로 이동하여 빌드를 시도했습니다.

이 단계에서는 많은 결과가 나오지만 ./configure충분히 만족스러워 보입니다. 그러나 make많은 출력으로 인해 실패합니다. 다음과 같은 것들이 많이 있습니다.

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

등.

새로 설치하는 것이므로 일부 빌드 도구나 개발 도구 등이 누락된 것 같습니다. 누구든지 도와줄 수 있나요? 조금 모호했다면 죄송합니다.

편집: 내가 설치한 패키지의 전체 목록:http://pastebin.com/bJg4qC0M

편집 2: 전체 출력 make: http://pastebin.com/qXu5FUC4

편집 3: 출력 make install:http://pastebin.com/5TPeQScp

답변1

실제 상황을 봐실수메시지(질문에서 언급한 내용은경고하다, 이는 컴파일 프로세스를 종료하지 않습니다):

libtool: 설치: /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: 일반 파일 '/usr/local/lib/libMagickCore-6.Q16.so.2.0.0'을 생성할 수 없습니다: 권한이 거부되었습니다.

이는 을 실행할 때 디렉터리에 파일을 생성할 수 있는 권한이 없는 사용자로 실행하고 make install있음 을 의미합니다./usr/local/lib

이에 대한 몇 가지 해결책이 있습니다.

자신의 발에 총을 쏘는 해결책은 도망가는 것입니다 sudo make install. 이건 나쁘니까

  1. Makefile을 실행하면 그 파일이 무엇을 하는지 알 수 없으며 make install, 최악의 경우 악성코드가 실행될 수도 있습니다 root.

  2. 일반적으로 다양한 패키지 관리자가 파일을 설치하는 곳이기 때문에 Linux 시스템(또는 모든 Unix 시스템)에 항목을 설치하는 것은 /usr/local좋지 않습니다 . 이는 기존 파일을 덮어쓸 위험이 있음을 의미합니다.

  3. 소프트웨어를 어떻게 제거할 계획인가요?

몇 가지 더 나은 솔루션:

  1. /opt또는 /sw(시스템 및 패키지 관리자가 사용하지 않는 위치) 와 같은 중립 환경에 설치하도록 프로젝트를 구성합니다 . 예를 들어 configure옵션을 사용하여 실행 하면 됩니다 . 설치 계층 구조에 쓰기 권한이 없으면 계속 실행해야 할 수도 있습니다.--prefix./configure --prefix=/optsudo make install

  2. 홈 디렉터리 아래 어딘가에 설치되도록 프로젝트를 구성합니다. 시스템 전체에 설치할 필요가 없다면 이것이 아마도 최선의 선택일 것입니다. 위의 내용을 따르되 설치 접두어를 $HOME/local, 또는 even 로 설정하십시오 $HOME/tmp(완료되면 디렉토리를 삭제하십시오).

첫 번째 방법은 나중에 소프트웨어를 제거하는 문제를 정확히 해결하지 못하는 반면, 두 번째 방법은 빈 계층 구조(전체)에 설치할 때만 rm -rf문제를 해결합니다 . 이를 위해 나는 추천할 수 있다GNU 스토우유용. 이렇게 하면 직접 만든 소프트웨어를 더 쉽게 제거할 수 있습니다. 이 기능이 없으면 무언가를 제거하려는 경우 어떤 파일을 삭제해야 하는지 결정하기 어려울 수 있습니다.

관련 정보