![自己コンパイルされたパッケージをパッケージマネージャ(例:apt-get、yum)とうまく機能させる方法[レプリケーション]](https://linux33.com/image/70329/%E8%87%AA%E5%B7%B1%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%95%E3%82%8C%E3%81%9F%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%EF%BC%88%E4%BE%8B%EF%BC%9Aapt-get%E3%80%81yum%EF%BC%89%E3%81%A8%E3%81%86%E3%81%BE%E3%81%8F%E6%A9%9F%E8%83%BD%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95%5B%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%5D.png)
私が欲しいとしましょう:
- 独自のカスタムアプリケーションのコンパイルとインストール
- これを行うには、最新バージョンのlibthriftソースコードをダウンロード、コンパイル、インストールする必要があります。
- 最新バージョンのlibboostをダウンロード、コンパイル、インストールする必要があります。
ここでは、システムにこれらのライブラリをインストールし、他のパッケージと対話することができます。多くのライブラリはlibthriftとlibboostに依存しています。
- これをインストールすると、apt-get / yumを使用してインストールされている既存のパッケージが破損する可能性があります。
また、後でapt-getまたはyumを実行すると、次のようになります。
- 私のカスタムlibthriftとlibboostが上書きされ、これらのライブラリのカスタムバージョンに依存するカスタムアプリケーションがクラッシュします。
それでは、ここで解決策は何ですか? /homeにインストールしたくありません(コード回帰ビルドクラスタの共有ユーザーがパッケージを使用できるようにしたい)。私は/ optが実際にこの目的に使用されていないことを読んだ(インストールされたパッケージは独立、しかしそうではありません)。これ引用する私は事件が十分に詳細であることがわかりました。
答え1
通常、解決策は「ソースからパッケージングシステムが管理するディレクトリにインストールしないでください」です。
たとえば、カスタムコンパイルされたコードをインストールし、ビルドシステムへの適切な呼び出し(たとえば、//を一般に設定)を使用して、それに依存するライブラリとインクルードファイルを見つけることができます/usr/local
。/usr/local
CPPFLAGS
CFLAGS
LDFLAGS
Makefile
アプリケーション固有のディレクトリ(たとえば、またはなど/usr/local/myapp
)/opt/myapp
にすべてのエントリをインストールすることもできます。
これも良いユースケースです。ルーストアバウト、ホストシステムと分離された分離開発/ランタイム環境を非常に簡単に設定できます。