Ubuntu

libcurl 報告命令之間的不同版本

  • April 29, 2013

我以前在 Ubuntu 12.04 伺服器上安裝了 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 curlcurl: /usr/bin/curl /usr/include/curl /usr/share/man/man1/curl.1.gz /usr/share/man/man1/curl.1

whereis libcurllibcurl: /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

我正在複製我為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
  • 在您的 sources.list 中啟動源儲存庫
  • 安裝建構、重新編譯和打包所需的基礎架構

$ sudo aptitude install build-essentials devscripts 被子

  1. 您使用的是 Debian stable,並且想要重建原始碼

當您想要啟動/停用某些在預編譯二進製文件中預設建構的功能、應用額外更新檔、反向移植功能、使用編譯時優化(針對特定平台、強化選項)時,就會出現這種情況。步驟是:

創建一個臨時目錄來工作

$ mkdir ~/temp && cd ~/temp

獲取源碼包

$ apt-get source curl 

或者(如果您沒有 指向穩定版本的deb-src行),您可以從網上獲取 .dsc 文件,對於目前穩定版本,這將是sources.list

$ dget http://security.debian.org/debian-security/pool/updates/main/c/curl/curl_7.21.0-2.1+squeeze3.dsc 

兩種替代方法中的任何一種都將

  1. 從儲存庫中獲取源
  2. 驗證包的加密簽名
  3. 應用所有發行版特定更新檔

檢查 debian/rules 生成文件

$ cd curl*
$ vi debian/rules

這是打包過程的主要生成文件,您可以在此處查看可選配置選項,還可以啟用/禁用有關將要建構的所有包(伺服器、代理、代理)的功能

用被子復習更新檔

假設您對一個或多個 應用的發行版更新檔感興趣。要檢查源中可用的更新檔程序,請使用

$ 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 stable,並希望使用testing或unstable的版本

此過程稱為反向移植

以下預防措施適用

  • 該軟體包可能根本無法為您建構
  • 為了建構它可能需要更新的依賴項
  • 為了建構它可能需要額外的包
  • 包裝佈局可能已更改

該過程與重建穩定版本的過程相同,但源包除外,它可以從 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 中找到的版本更新的版本,您仍然可以檢查實驗 儲存庫和 mantainer 的git 儲存庫,看看是否有任何東西在工作。除此之外,您需要使用上游項目 repo,但可以從 Debian 打包結構中受益。為此,可以下載最新穩定或 alpha 版本的快照。因此,在如上所述從發行版(Debian 或 Ubuntu,視情況而定)repo 下載源包後,接下來的步驟將是(使用的版本可能存在差異):

$ 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 中的所有更新檔,以​​確定它們是否仍然有用或必須丟棄。如上所述使用被子。完成重新編譯過程標記

$ dch -l ~local 'Upstream packaging'

重建

$ debuild -us -uc

並安裝

$ sudo dpkg -i $deb_package

包裹。

  1. Debian 官方打包系統的替代品

有些人發現 Debian 打包系統過於復雜,但仍想從使用打包軟體的優勢中受益。存在一些試圖解決這種情況的項目。這裡給出了一個列表,但使用這些工具的細節留給讀者作為練習。

引用自:https://serverfault.com/questions/503555