libcurl 报告命令之间的不同版本

BT6*_*643 5 ubuntu installation curl ubuntu-12.04

我以前在 Ubuntu 12.04 Server 上有 cURL 7.22.0..但我现在需要升级到 cURL 7.30.0。

我已执行以下操作来为 Ubuntu 编译此版本:

wget http://curl.haxx.se/download/curl-7.30.0.tar.gz

tar -xvzf curl-7.30.0.tar.gz

cd curl-7.30.0/

./configure --prefix=/usr

make clean

make

make install
Run Code Online (Sandbox Code Playgroud)

完成所有操作后,我curl --version期待看到安装的新版本。cURL 已按预期更新到 7.30.0,但 libcurl 没有:

curl 7.30.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 libssh2/1.2.8 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

但是,如果我运行,curl-config --version我会得到libcurl 7.30.0正确的结果。

谁能解释一下为什么版本号不同?以及如何让它们全部显示正确的 7.30.0?

有没有人有关于升级与更高版本相关的所有 cURL 的正确方法的任何教程/建议/任何帮助。这个话题在网上似乎非常缺乏,不知道为什么:/

谢谢

编辑 -根据其中一条评论,这里有一些附加信息:

which curl-config给出/usr/bin/curl-config

which curl给出/usr/bin/curl

whereis curl给出curl: /usr/bin/curl /usr/include/curl /usr/share/man/man1/curl.1.gz /usr/share/man/man1/curl.1

whereis libcurl给出libcurl: /usr/lib/libcurl.a /usr/lib/libcurl.so /usr/lib/libcurl.la /usr/share/man/man3/libcurl.3

echo $PATH给出/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

daw*_*wud 1

我正在复制我为zabbix wiki编写的一个小教程,希望它有用。

在 Debian 及其衍生版本(Mepis、Mint、Ubuntu)中从源代码重建软件包

本指南将主要关注 Debian,尽管在其他衍生版本中从源代码构建应该基本上是相同的过程。包管理的上游 文档 最终是最权威的智慧来源。

为什么应该选择打包而不是“make install”?

套餐在很多方面让您的生活更轻松:

  1. 您可以使用存储库在许多系统上轻松部署包
  2. 您可以以干净的方式安装和删除它们
  3. 为您跟踪对其他包的依赖关系
  4. 有一个更新配置文件的策略

源码包在哪里?/

检查DebianUbuntu的官方存储库中可以找到哪些版本

本指南适用于以下场景

  1. 您正在使用 Debian stable,并且想要从源代码重建以更改一些默认选项
  2. 您正在使用 Debian stable,并希望使用测试版或不稳定版
  3. 您想要从上游源构建 deb 包
  4. 官方 Debian 打包系统的替代品

本指南的其余部分将假设命令由具有 sudo 访问权限的非 root 用户运行

$ sudo -l
Run Code Online (Sandbox Code Playgroud)
  • 在您的sources.list中激活源存储库
  • 安装构建、重新编译和打包所需的基础设施

    $ sudo aptitude install build-essentials devscripts 被子

1. 您使用的是 Debian stable,并且想要重建源代码

当您想要激活/停用预编译二进制文件中默认构建的某些功能、应用额外补丁、向后移植功能、使用编译时优化(针对特定平台、强化选项)时,就会出现这种情况。步骤是:

创建一个临时目录来工作

$ mkdir ~/temp && cd ~/temp
Run Code Online (Sandbox Code Playgroud)

获取源码包

$ apt-get source curl 
Run Code Online (Sandbox Code Playgroud)

或者(如果您没有指向稳定版本的deb-srcsources.list ),您可以从网络获取 .dsc 文件,对于当前的稳定版本,这将是

$ dget http://security.debian.org/debian-security/pool/updates/main/c/curl/curl_7.21.0-2.1+squeeze3.dsc 
Run Code Online (Sandbox Code Playgroud)

两种替代方法中的任何一种都将

  1. 从存储库中获取源
  2. 验证包的加密签名
  3. 应用所有发行版特定补丁

检查 debian/rules makefile

$ cd curl*
$ vi debian/rules
Run Code Online (Sandbox Code Playgroud)

这是打包过程的主要 makefile,您可以在此处查看可选的配置选项,还可以启用/禁用有关将构建的所有包(服务器、代理、代理)的功能

用被子检查补丁

假设您对 应用的一个或多个发行版补丁感兴趣。要检查源中可用的补丁,请使用

$ quilt series
Run Code Online (Sandbox Code Playgroud)

检查已应用的补丁(在此阶段列表应该相同)

$ quilt applied
Run Code Online (Sandbox Code Playgroud)

恢复所有补丁

$ quilt pop -a
Run Code Online (Sandbox Code Playgroud)

可选择删除不需要的

$ quilt delete -r $patch_name
Run Code Online (Sandbox Code Playgroud)

应用其余补丁

$ quilt push -a
Run Code Online (Sandbox Code Playgroud)

安装要重新编译的包的依赖项

$ apt-get build-dep curl
Run Code Online (Sandbox Code Playgroud)

可选择标记包裹

$ dch -l +local 'Rebuilt from sources'
Run Code Online (Sandbox Code Playgroud)

如果您需要添加更详细的变更日志条目,请检查 dch 联机帮助页。

最后重新编译包

$ debuild -us -uc
Run Code Online (Sandbox Code Playgroud)

处理完成后,在zabbix-*目录外,会发现刚刚编译好的deb包,准备安装

$ sudo dpkg -i $deb_package
Run Code Online (Sandbox Code Playgroud)

2.您正在使用Debian stable,并希望使用测试版本或unstable版本

此过程称为向后移植

以下预防措施适用

  • 该软件包可能根本不适合您
  • 为了构建它可能需要更新依赖项
  • 为了构建它可能需要额外的包
  • 包装布局可能已更改

该过程与稳定版本的重建相同,但源包除外,可以使用sources.list 中的一行从 apt 存储库获取源包(注意,只有两种选择之一)

deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.de.debian.org/debian/ unstable main non-free contrib
Run Code Online (Sandbox Code Playgroud)

或者再次使用网络

$ dget http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.30.0-1.dsc
Run Code Online (Sandbox Code Playgroud)

额外的预防措施是对软件包进行标记,以便在需要卸载时轻松识别。

$ dch -l ~local 'Sid backport'
Run Code Online (Sandbox Code Playgroud)

该过程的其余部分是相同的,结果将是向后移植的软件包,可以与其余部分一起安装。

3. 你想从上游源构建 deb 包

如果您想要或需要比 Sid 中可以找到的版本更新的版本,您仍然可以检查实验 存储库和 管理器的git存储库,以查看是否有某些内容正在开发中。除此之外,您还需要使用上游项目存储库,但仍然可以从 Debian 打包结构中受益。为此,可以下载最新稳定版或 alpha 版本的快照。因此,在如上所述从发行版(Debian 或 Ubuntu,视情况而定)存储库下载源包后,接下来的步骤将是(所使用的版本可能存在差异):

 $ wget https://github.com/bagder/curl/archive/curl-7_30_0.zip
 $ mv master.zip curl-7.30.0.zip
 $ cd curl-${stable}
 $ uupdate ../curl-7.30.0.zip -v 7.30.0
 $ cd ../curl-7.30.0
Run Code Online (Sandbox Code Playgroud)

此后,必须审查 debian/patches 中的所有补丁,以确定它们是否仍然有用或必须丢弃。如上所述使用被子。完成重新编译过程标记

$ dch -l ~local 'Upstream packaging'
Run Code Online (Sandbox Code Playgroud)

重建

$ debuild -us -uc
Run Code Online (Sandbox Code Playgroud)

并安装

$ sudo dpkg -i $deb_package
Run Code Online (Sandbox Code Playgroud)

包裹。

4. Debian 官方打包系统的替代方案

有些人发现 Debian 打包系统过于复杂,但仍然希望受益于使用打包软件的优势。有些项目试图解决这种情况。这里给出了一个列表,但使用这些工具的细节留给读者作为练习。