Apt
如何讓自編譯包與包管理器(例如 apt-get、yum)配合使用
假設我想:
- 編譯並安裝我自己的自定義應用程序
- 這需要下載、編譯和安裝最新版本 libthrift 的原始碼
- 這需要下載、編譯和安裝最新版本的 libboost
在這裡,我將這些庫安裝在我的系統中,它們可能與其他包互動——很多庫依賴於 libthrift 和 libboost。
- 安裝這些可能會破壞使用 apt-get/yum 安裝的現有軟體包
另外,如果我稍後執行 apt-get 或 yum:
- 我的自定義 libthrift 和 libboost 將被覆蓋,從而破壞了依賴於這些庫的自定義版本的自定義應用程序。
那麼,這裡的解決方案是什麼?我不想安裝到 /home 中(我希望程式碼回歸建構集群中的共享使用者可以使用這些包)。我還讀到 /opt 並不是真的用於此目的(安裝的軟體包應該是自包含的,但它們不是)。我找到的參考資料似乎足夠詳細地涵蓋了這個案例。
通常,解決方案是“不要嘗試從原始碼安裝到您的打包系統管理的目錄中”。
例如,您可以將自定義編譯的程式碼安裝到
/usr/local
中,並使用建構系統的適當呼叫(例如,將/ /設置為典型的)來/usr/local
查找庫和包含文件。CPPFLAGS``CFLAGS``LDFLAGS``Makefile
您甚至可以將所有內容安裝到特定於應用程序的目錄中(例如
/usr/local/myapp
, 或/opt/myapp
)。對於像Docker這樣的東西,這也是一個很好的案例,它可以很容易地設置與主機隔離的獨立開發/執行時環境。