我有一台运行 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
软件包可以生成它们的各种方式等。抱歉,我不知道一个简单的教程。