无法“制作”旧版本的 ImageMagick

无法“制作”旧版本的 ImageMagick

我需要为我维护的旧版 Rails 应用程序安装 6.9 版本的 ImageMagick(在 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

ETC。

由于这是一个新安装,我怀疑我可能缺少一些构建工具或开发工具或其他东西。有人可以帮忙吗?抱歉,如果这有点模糊。

编辑:我已安装的软件包的完整列表:http://pastebin.com/bJg4qC0M

编辑2:完整输出makehttp://pastebin.com/qXu5FUC4

编辑3:输出make installhttp://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=/opt.请注意sudo make install,除非您在安装层次结构中具有写入权限,否则这可能仍需要您运行。

  2. 配置项目以安装在我们的主目录下的某个位置。如果您不需要在系统范围内安装该东西,这可能是最好的选择。只需按照上面的操作,但将安装前缀设置为$HOME/local, 或什至$HOME/tmp(然后在完成后删除该目录)。

第一种方法并不能完全解决稍后卸载软件的问题,而第二种方法只有在安装到空层次结构(只是rm -rf整个东西)时才能解决该问题。为此,我可以推荐GNU 斯托公用事业。这使得卸载您自己构建的软件变得更加容易。如果没有它,如果您想卸载某些东西,就很难确定必须删除哪些文件。

相关内容