我之前在 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
完成所有这些操作后,我运行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
答案1
我正在复制我为zabbix 维基希望对你有用。
在 Debian 和衍生产品(Mepis、Mint、Ubuntu)中从源代码重建软件包
本指南主要关注 Debian,尽管在其他衍生产品中从源代码构建应该基本相同。上游 文档 关于包管理的最终是最权威的智慧来源。
为什么应该选择打包而不是“make install”?
软件包在许多方面使您的生活在很多方面变得更加轻松:
- 您可以使用存储库轻松地在许多系统上部署软件包
- 您可以以干净的方式安装和删除它们
- 系统会为您跟踪对其他软件包的依赖关系
- 有一个更新配置文件的策略
源包在哪里?/
检查在官方存储库中可以找到哪些版本 Debian和 Ubuntu
本指南针对以下场景
- 您正在使用 Debian 稳定版,并希望从源代码重建以更改一些默认选项
- 您正在使用 Debian 稳定版,并希望使用测试版或不稳定版
- 你想从上游源构建一个 deb 包
- 官方 Debian 打包系统的替代品
本指南的其余部分将假设命令由具有 sudo 访问权限的非 root 用户运行
$ sudo -l
- 激活源存储库,在你的 sources.list 中
安装构建、重新编译和打包所需的基础设施
$ sudo aptitude 安装 build-essentials devscripts quilt
1. 您正在使用 Debian 稳定版,并希望重建源代码
当你想要激活/停用预编译二进制文件中默认构建的某些功能、应用额外的补丁、反向移植某个功能、使用编译时优化(针对特定平台)时,就会出现这种情况。硬化选项)。步骤如下:
创建临时目录以供工作
$ mkdir ~/temp && cd ~/temp
获取源码包
$ apt-get source curl
deb-src
或者(如果你的文件中没有sources.list
指向稳定版本的行),你可以从网上获取 .dsc 文件,对于当前稳定版本,该文件为
$ dget http://security.debian.org/debian-security/pool/updates/main/c/curl/curl_7.21.0-2.1+squeeze3.dsc
两种替代方法中的任何一种都可以
- 从存储库获取源代码
- 验证包的加密签名
- 应用所有发行版特定补丁
检查 debian/rules makefile
$ cd curl*
$ vi debian/rules
这是打包过程的主要 makefile,在这里您可以查看可选的配置选项,还可以启用/禁用有关将要构建的所有包(服务器、代理、代理服务器)的功能
使用以下方式查看补丁被子
假设你对一个或多个发行版补丁感兴趣 不是正在应用。要检查源代码中有哪些可用的补丁,请使用
$ quilt series
检查已应用的补丁(此阶段列表应该相同)
$ quilt applied
恢复所有补丁
$ quilt pop -a
可选择删除不需要的
$ quilt delete -r $patch_name
应用其余补丁
$ quilt push -a
安装要重新编译的包的依赖项
$ apt-get build-dep curl
选择性地标记包
$ dch -l +local 'Rebuilt from sources'
如果您需要添加更详细的变更日志条目,请查看 dch 手册页。
最后重新编译包
$ debuild -us -uc
完成此过程后,在 zabbix-* 目录之外,您将找到刚刚编译的 deb 包,可以进行安装。
$ sudo dpkg -i $deb_package
2. 你正在使用 Debian 稳定版,并且想要使用测试版或不稳定版
这一过程被称为向后移植
采取以下预防措施
- 该软件包可能根本不适合您
- 为了构建它可能需要更新依赖项
- 为了构建它可能需要额外的包
- 包装布局可能已改变
该过程与为稳定版本重建的过程相同,但源包除外,源包可以从 apt 存储库中获取,使用 sources.list 中的类似行(请注意,只能选择其中一种)
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
或者再次使用网络
$ dget http://ftp.de.debian.org/debian/pool/main/c/curl/curl_7.30.0-1.dsc
一个额外的预防措施是对软件包进行标记,以便在需要卸载时轻松识别。
$ dch -l ~local 'Sid backport'
该过程的其余部分是相同的,并且结果将是可以与其余部分一起安装的反向移植软件包。
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
此后,必须检查 debian/patches 中的所有补丁,以确定它们是否仍然有用或必须丢弃。使用 quilt 如上所述。完成重新编译过程标记
$ dch -l ~local 'Upstream packaging'
重建
$ debuild -us -uc
和安装
$ sudo dpkg -i $deb_package
包裹。
4. Debian 官方打包系统的替代品
有些人认为 Debian 打包系统过于复杂,但仍想从使用打包软件的优势中获益。有些项目正在尝试解决这种情况。这里给出了一个列表,但使用这些工具的细节留给读者作为练习。