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

Hon*_*rek 16 package-management imagemagick

我在使用 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轻松操作它。此外,编译程序没有更新。我总是编译我觉得违背了系统,就像使用胶水、电线和胶带一样。不,我肯定不想编译它。

小智 20

请注意:尽管Honza最初说他不想编译,但我们checkinstall在上面的评论中讨论了使用来安装已编译的包。这正是Honza想要的,因为checkinstall使用包管理器安装的程序可以像任何其他包一样被删除。


当我们在构建后安装/opt使用时checkinstall,我们可以保留原始imagemagick包。(事实上​​,如果尚未安装存储库版本,请安装它。)依赖项可以保持安装状态,对于最新版本的imagemagick. 我们需要做的是首先安装构建依赖项和其他一些工具:

sudo apt-get install build-essential checkinstall && sudo apt-get build-dep imagemagick
Run Code Online (Sandbox Code Playgroud)

官网下载源代码,使用终端cd到源包所在的位置解压:

tar -xzvf ImageMagick-6.8.3-9.tar.gz
Run Code Online (Sandbox Code Playgroud)

现在移动到那个文件夹

cd Imagemagick-6.8.3-9
Run Code Online (Sandbox Code Playgroud)

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

./configure --help
Run Code Online (Sandbox Code Playgroud)

但是,大多数情况下所有内容都已设置为enabled,因此除了必要的--prefix. 您可以使用其他位置,但我们将使用/opt这里。现在运行configuremake

./configure --prefix=/opt/imagemagick-6.8 && make
Run Code Online (Sandbox Code Playgroud)

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

sudo checkinstall
Run Code Online (Sandbox Code Playgroud)

您当然可以checkinstall使用参数运行,--pkgversion=或者在运行后选择它们sudo checkinstall,但这里的所有默认值都很好。将调用将创建的包名称imagemagick-6.8.3-9并将其安装在/opt/imagemagick-6.8.

您现在还可以Synaptic像任何其他包一样查看和管理包,删除它不会导致其他包出现问题。

如果要运行新版本,则需要使用/opt/imagemagick-6.8/convert,例如 as /optis not in $PATH,并且仅运行convert将调用 repo 版本。如果您想始终运行/opt程序的版本,您可以创建一些符号链接。

请注意,这就是Honza想要的,尽管他最初反对编译,直到checkinstall被讨论。