如何在不编译的情况下安装ImageMagick的最新上游版本?


15

我在使用ImageMagick时遇到了一些问题,并被告知Ubuntu的默认ImageMagick软件包是一个古老的版本,我应该升级以解决问题。

我怎样才能做到这一点?我拥有最新的Ubuntu版本(12.10)。Synaptic将我显示8:6.7.7.10-2ubuntu4为IM的最新版本。这意味着我的IM版本是6.7.7.10convert --version输出相同)。IM 本身不提供deb二进制文件。Debian 有一些较新的东西,但是如果我了解的话,可以在一些测试/实验分支中使用。我在Launchpad上找到了IM,但是没有说明如何将其添加到我的资源中,似乎它不是我在搜索最新/测试版软件时遇到的常见PPA之一。我不知道该如何处理。

有什么方法可以标记要从某些前沿资源获取的包装,而使系统的其余部分要从标准资源获取的?升级到IM(6.8)的最新稳定版本可能是最好的选择,但这可能是科幻小说,因为甚至在Debian中也是如此。但是,我至少需要6.7.9


注意:我想避免从源代码编译。我讨厌已经安装了某些东西,而无法使用apt-getSynaptic 轻松地对其进行操作。此外,编译程序没有更新。我经常编译,就像使用胶水,电线和鸭子胶带一样,感觉就像是在违背系统。不,我不确定要编译它。


获得新版本的最简单方法是实际帮助打包新版本并将其上传给维护人员。建议加入launchpad.net/imagemagick团队,或者最好在上游工作。
fossfreedom

那会很好,但是我是Python开发人员,对Ubuntu / Debian打包绝对不了解,所以对于那些更接近DevOps / packaging / UNIX管理的人来说,这是一个任务。我将通过编写开源Python库来帮助世界:)
Honza Javorek 2013年

据我所知,除了编译和打包之外,没有其他答案。
fossfreedom

我知道您说过您不想编译,但这可能很有趣:您可以imagemagick使用此方法保留现有软件包及其依赖项。您可以运行configure with --prefix=/opt,编译程序,然后再安装到/optwith checkinstall,因此可以通过打包管理已编译的版本apt-get。如果要使用新版本,除非您创建了一些符号链接,否则必须指定 /opt/bin/convert运行的时间convert。无论哪种方式,您都可以保留标准软件包版本和已编译版本

1
好吧,我不知道checkinstall。如果我理解正确,它应该将程序的编译版本安装到我的系统中,然后将其表示为Synaptic中的软件包,这意味着我以后可以安全,轻松地将其删除。那太好了!
Honza Javorek

Answers:


18

请注意:尽管Honza最初表示他不想进行编译,但我们checkinstall在上面的评论中讨论了如何安装已编译的软件包。这正是Honza想要的,因为checkinstall与软件包管理器中的任何其他软件包一样,可以删除与之一起安装的程序。


当我们在构建后安装/opt使用时checkinstall,我们可以将原始imagemagick软件包保留在原位。(实际上,如果尚未安装存储库版本,则安装它。)可以保留依赖关系,对于最新版本的,它们没有什么不同imagemagick。我们需要做的是首先安装构建依赖项和其他一些工具:

sudo apt-get install build-essential checkinstall && sudo apt-get build-dep imagemagick

官方站点下载源代码,然后使用终端将源代码下载cd到源软件包所在的位置并解压缩它:

tar -xzvf ImageMagick-6.8.3-9.tar.gz

现在移动到该文件夹

cd Imagemagick-6.8.3-9

现在,如果您要查找构建的可用选项,请运行

./configure --help

但是,几乎所有内容都已设置为enabled,因此除了必要的内容外,几乎不需要进一步指定任何内容--prefix。您可以使用其他位置,但是我们将/opt在这里使用。现在运行configuremake

./configure --prefix=/opt/imagemagick-6.8 && make

现在,最后要做的就是使用checkinstall安装程序包。确保您在Imagemagick-6.8.3-9文件夹中并运行

sudo checkinstall

当然,您可以checkinstall使用诸如之类的参数来运行,也可以在运行--pkgversion=后选择它们sudo checkinstall,但是此处使用所有默认值都可以。将创建将被调用的程序包名称,imagemagick-6.8.3-9并将其安装在中/opt/imagemagick-6.8

现在,您还可以像查看Synaptic其他任何软件包一样查看该软件包并对其进行管理,并且删除它不会对其他软件包造成问题。

如果要运行新版本,则需要使用/opt/imagemagick-6.8/convert,例如,而/opt不是中的$PATH,并且仅在运行convert时调用回购版本。如果您想始终运行/opt程序的版本,则可以创建一些符号链接。

请注意,这是Honza想要的,尽管他最初不喜欢编译,直到checkinstall被讨论为止。


谢谢!实际上,我的问题原本只是“如何安装ImageMagick的最新上游版本”,fossfreedom主持人添加了“无需编译”部分,可能是在阅读了问题末尾的注释之后。
Honza Javorek

1
正确的路径convert/opt/imagemagick-6.x/bin/convert。至少我现在安装的6.9.1版本就是这种方式。你的路不见了/bin/
拉法尔2015年

尝试安装构建依赖项时出现以下错误:Unable to find a source package for imagemagick。我能够以这种方式安装依赖项:sudo apt-get install imagemagick libmagick++-dev如此处所述
bwroga '16

您可能会看到的另一个原因Unable to find a source package for imagemagick是,您需要在/etc/apt/source.list中取消注释deb-src源,以便找到该软件包。
迈克尔

注意,在更新绑定ldconfig之后,我必须要做checkinstall
约书亚·品特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.