libcurl 報告命令之間的不同版本
我以前在 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 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
我正在複製我為zabbix wiki編寫的一個小教程,希望它有用。
在 Debian 和衍生產品(Mepis、Mint、Ubuntu)中從原始碼重建軟體包
本指南將主要關注 Debian,儘管在其他衍生產品中從原始碼建構應該是基本相同的過程。包管理的上游 文件 最終是最權威的智慧源泉。
為什麼要選擇打包而不是“make install”?
套餐在許多方面讓您的生活更輕鬆:
- 您可以使用儲存庫在許多系統上輕鬆部署包
- 您可以以乾淨的方式安裝和刪除它們
- 為您跟踪對其他包的依賴關係
- 有更新配置文件的策略
源碼包在哪裡?/
檢查可以在 Debian和 Ubuntu的官方儲存庫中找到哪些版本
本指南針對以下場景
- 您正在使用 Debian stable,並希望從原始碼重建以更改一些預設選項
- 您正在使用 Debian stable,並希望使用正在測試或不穩定的版本
- 你想從上游源建構一個 deb 包
- 官方 Debian 打包系統的替代品
本指南的其餘部分將假定命令由具有 sudo 訪問權限的非 root 使用者執行
$ sudo -l
- 在您的 sources.list 中啟動源儲存庫
- 安裝建構、重新編譯和打包所需的基礎架構
$ sudo aptitude install build-essentials devscripts 被子
- 您使用的是 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
兩種替代方法中的任何一種都將
- 從儲存庫中獲取源
- 驗證包的加密簽名
- 應用所有發行版特定更新檔
檢查 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
包裹。
- Debian 官方打包系統的替代品
有些人發現 Debian 打包系統過於復雜,但仍想從使用打包軟體的優勢中受益。存在一些試圖解決這種情況的項目。這裡給出了一個列表,但使用這些工具的細節留給讀者作為練習。
- 檢查安裝
- fpm及其配套工具fpm-cookery