如何 Docker 化編譯的軟體
| 2018-02-21 12:12
我最近在 docker-library/php 倉庫中關閉了大量問題,最老的(並且是最長的)討論之一是關於安裝編譯擴充套件的依賴關係,我寫了一個中等篇幅的評論解釋了我如何用常規的方式為我想要的軟體進行 Docker 化的。
我要在這裡複製大部分的評論內容,或許擴充套件一點點,以便有一個更好的/更乾淨的連結!
我第一步是編寫 Dockerfile
的原始版本:下載原始碼,執行 ./configure && make
等,清理。然後我嘗試構建我的原始版本,並希望在這過程中看到錯誤訊息。(對,真的!)
錯誤資訊通常以 error: could not find "xyz.h"
或 error: libxyz development headers not found
的形式出現。
如果我在 Debian 中構建,我會輸入 https://packages.debian.org/file:xyz.h
(用錯誤資訊中標頭檔案的名稱替換 “xyz.h”),或者在谷歌中搜尋像 “xyz.h debian” 這樣的東西,找出我需要的包的名稱。
如果我在 Alpine 中構建,我將使用 https://pkgs.alpinelinux.org/contents 進行類似的搜尋。
“libxyz development headers” 在某種程度上也是一樣的,但是根據我的經驗,對於這些用 Google 對開發者來說效果更好,因為不同的發行版和專案會以不同的名字來呼叫這些開發包,所以有時候更難確切的知道哪一個是“正確”的。
當我得到包名後,我將這個包名稱新增到我的 Dockerfile
中,清理之後,然後重複操作。最終通常會構建成功。偶爾我發現某些庫不在 Debian 或 Alpine 中,或者是不夠新的,由此我必須從原始碼構建它,但這些情況在我的經驗中很少見 —— 因人而異。
我還會經常檢視 Debian(透過 https://sources.debian.org)或 Alpine(透過 https://git.alpinelinux.org/cgit/aports/tree)我要編譯的軟體包原始碼,特別關注 Build-Depends
(如 php7.0=7.0.26-1
的 debian/control
檔案)以及/或者 makedepends
(如 php7
的 APKBUILD
檔案)用於包名線索。
就我個人而言,我覺得這種偵探工作很有趣,也很有收穫,但我意識到我可能是一個獨特的生物。我偶爾使用的另一個技術是看是否有人已經 Docker 化了我想要的東西,這樣我可以直接從他們的 Dockerfile
中知道我需要安裝的東西。
對於特定的 PHP 擴充套件,幾乎總是有人已經想出對於這個或那個模組需要的依賴,而我所要做的就是做一些輕量的工作找出它們。
不管怎樣,這就是我的方法!希望這個有幫助,玩得愉快!
via: https://tianon.github.io/post/2017/12/26/dockerize-compiled-software.html
作者:Tianon Gravi 譯者:geekpi 校對:wxy
相關文章
- 如何編譯安裝原始碼包軟體編譯原始碼
- 如何在Windows上編譯Docker?Windows編譯Docker
- c#寫的軟體如何防止被反編譯C#編譯
- 開源編譯工具和編譯軟體編譯
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- 【編測編學】軟體測試的就業如何?就業
- IDA Pro for Mac 靜態反編譯軟體Mac編譯
- IDA Pro for Mac(靜態反編譯軟體)Mac編譯
- 編譯安裝軟體就那麼回事兒編譯
- 防止用DeDe軟體反編譯delphi程式 (轉)編譯
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- 軟體推薦-Java反編譯軟體-jd-gui(附下載地址)Java編譯GUI
- [bazel]-如何編譯編譯
- 如何編寫一個 Redux 中介軟體Redux
- JAVA編譯軟體IDEA下載(2024)Java編譯Idea
- 【Linux】Linux軟體安裝管理3 編譯安裝原始碼軟體Linux編譯原始碼
- Linux 下如何繞過編譯器優化Linux編譯優化
- JVM編譯優化JVM編譯優化
- webpack 編譯優化Web編譯優化
- Docker環境編譯時的錯誤記錄Docker編譯
- 自編譯製作docker版本的onlyoffice映象編譯Docker
- docker安裝軟體Docker
- docker中介軟體搭建Docker
- 【譯】如何更好的編寫CSSCSS
- 編譯器是如何工作的?編譯
- 編譯器如何生成彙編編譯
- 翻譯軟體
- YOLOv4: Darknet 如何於 Docker 編譯,及訓練 COCO 子集YOLODocker編譯
- ubuntu下程式kidle_inject致使編譯軟體很慢Ubuntu編譯
- [譯]Reduce(軟體編寫)(第五部分)
- Centos7編譯安裝Docker教程。CentOS編譯Docker
- go的編譯優化問題Go編譯優化
- 有ppt文件翻譯軟體嗎?如何翻譯整篇ppt文件
- 如何用cmake編譯編譯
- python如何編譯Python編譯
- 中文翻譯英語的軟體哪個好?如何完成中翻譯英
- 【譯】新的 MSBuild 編輯體驗UI
- Android 編譯優化Android編譯優化