私が保守するレガシー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
。これは悪いから
Makefileを実行すると、そのファイルが何をしているのかわからず、
make install
最悪の場合、マルウェアが実行される可能性がありますroot
。通常、さまざまなパッケージマネージャがファイルをインストールする場所なので、Linuxシステム(またはすべてのUnixシステム)にエントリをインストールすることはお
/usr/local
勧めできません。これは、既存のファイルを上書きする危険があることを意味します。ソフトウェアをどのように削除する予定ですか?
いくつかのより良い解決策:
/opt
または/sw
(システムやパッケージマネージャが使用しない場所)などの中立環境にインストールするようにプロジェクトを設定します。たとえば、configure
オプションを使用して実行します。インストール階層に書き込み権限がない場合は、引き続き実行する必要があります。--prefix
./configure --prefix=/opt
sudo make install
ホームディレクトリの下のどこかにインストールするようにプロジェクトを設定します。システム全体にインストールする必要がない場合、これはおそらく最善の選択です。上記に従いますが、インストールプレフィックスを 、
$HOME/local
または even に設定します$HOME/tmp
(完了したらディレクトリを削除します)。
最初の方法は後でソフトウェアを削除する問題を正確に解決しませんが、2番目の方法は空の階層(全体)にインストールした場合にのみrm -rf
問題を解決します。このために私は推薦できるGNUストー便利です。これにより、自分で作成したソフトウェアを簡単に削除できます。この機能がないと、何かを削除したい場合は、どのファイルを削除する必要があるかを判断するのが難しい場合があります。