Apt

如何讓自編譯包與包管理器(例如 apt-get、yum)配合使用

  • August 4, 2015

假設我想:

  • 編譯並安裝我自己的自定義應用程序
  • 這需要下載、編譯和安裝最新版本 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這樣的東西,這也是一個很好的案例,它可以很容易地設置與主機隔離的獨立開發/執行時環境。

引用自:https://unix.stackexchange.com/questions/220186