在 Ubuntu 14.04 上手动构建和配置 CURL。仍然显示旧版本?

在 Ubuntu 14.04 上手动构建和配置 CURL。仍然显示旧版本?

我有一台运行 Ubuntu 14.04 的机器,无法升级。我执行了“apt update”,然后执行了“sudo apt install curl”,它告诉我我安装的版本 7.3.5 已经是最新版本了。我至少需要 7.4 版本才能安装 homebrew。我发现这个要点提供了一个 shell 脚本来从源代码获取和构建 CURL 7.50.2:

https://gist.github.com/fideloper/f72997d2e2c9fbe66459

# Install any build dependencies needed for curl
    sudo apt-get build-dep curl

    # Get latest (as of Feb 25, 2016) libcurl
    mkdir ~/curl
    cd ~/curl
    wget http://curl.haxx.se/download/curl-7.50.2.tar.bz2
    tar -xvjf curl-7.50.2.tar.bz2
    cd curl-7.50.2

    # The usual steps for building an app from source
    # ./configure
    # ./make
    # sudo make install
    ./configure
    make
    sudo make install

    # Resolve any issues of C-level lib
    # location caches ("shared library cache")
    sudo ldconfig

我在主目录中创建了一个名为“curl-update”的目录。我在该目录中创建了一个 shell 脚本,其内容为上述脚本。然后我从同一目录运行它,所有内容都下载、构建和配置完毕,没有出现错误。但是,当我运行“curl --version”时,我仍然看到 7.3.5。我猜想虽然我现在有更新版本的 curl,但它的文件不在正确的位置。当我执行“whereis curl”时,我看到以下内容:

curl: /usr/bin/curl /usr/bin/X11/curl /usr/local/bin/curl /usr/include/curl /usr/share/man/man1/curl.1.gz

我是否需要将较新的 CURL 文件复制到这些目录中?是否有文档告诉我如何操作,以免我自己随意移动文件而造成混乱?

另外,我有点担心使用这个手动构建的版本可能会出现 SSL 问题,因为 14.04 有无法升级的旧 SSL 库。在使用与机器上当前的 SSL 库不兼容的较新的 Python 3.X 软件包时,我遇到过几次这样的问题。这会是个问题吗?

答案1

我的猜测是,虽然我现在有了较新版本的 curl,但它的文件并不在正确的位置。

是的。请检查执行脚本时看到的输出,特别是步骤sudo make install,以查看其安装位置(可能在/usr/local)。

还请尝试which curl查看您正在执行哪一个。

我需要将较新的 CURL 文件复制到这些目录中吗?

有多种方法可以解决这个问题:(1)您可以使用所需可执行文件的完整路径,(2)您可以PATH按照正确的顺序设置以获取所需的可执行文件。

PATH我确实在我的中设置了.profile

关于该评论:

要替换旧版本,配置如下: 1.(autotols):./configure --prefix=/usr ...

如果您这样做,首先您不能确定旧文件是否被完全覆盖(如果文件名已更改,则可能存在这种情况),其次,一旦包管理器安装了另一个版本的 curl,这种情况就会消失。

/usr/local将手动编译的程序放在另一个层次结构中(推荐这样做)会更简洁。但是,这通常需要您熟悉./configure整个过程,而不是盲目地执行您在互联网上找到的一些脚本来安装某些东西。

另外,我有点担心使用这个手动构建的版本可能会出现 SSL 问题,因为 14.04 有无法升级的旧 SSL 库。在使用与机器上当前的 SSL 库不兼容的较新的 Python 3.X 软件包时,我遇到过几次这样的问题。这会是个问题吗?

可能,也可能不是。但是,就像您可以手动编译和安装 curl 一样,您也可以手动安装和编译较新的 SSL 库(以及针对这些库编译 curl)。同样,这需要熟悉这些东西的工作方式,以及LDFLAGS软件包可以生成它们的各种方式等。抱歉,我不知道一个简单的教程。

相关内容