以前のLinuxサーバーに最新バージョンのソフトウェアをインストールしようとした場合(rootアクセス権がない)、時々XXX-devまたはXXX-develパッケージが必要になることがあります。ここで、XXXはライブラリ名です。たとえば、CentOSにPython 3.7.4をインストールするには、libffi-develがプリインストールされている必要があります。 root権限yum
またはroot権限でapt
XXX-devをインストールします。 XXXとXXX-devのソースコードを配布することは、一般ユーザーがさまざまなソフトウェアを簡単にインストールできるようにするための良い方法のようです。
それでは、私の質問はなぜXXX-devのソースコードが配布されないのですか?妥当な理由はありますか?
ベストアンサー1
XXX-devのソースコードはなぜ公開されないのですか?
これは、Python用のffiコードをコンパイルするときに使用するすべてのライブラリをコンパイルする必要がないか、コンパイルしたくないからです。使いたい共有オブジェクトファイル、(WindowsではDLL)は、目的のライブラリに動的にリンクされます。実際には、他の答えからわかるように、ソースコードを使用できます。しかし、Python用のffiを構築するためにこれは必要ありません。あなたはする必要がありますヘッダーそして共有オブジェクトファイル。
yum
root権限またはroot権限でapt
XXX-devをインストールします。
ソースコードをインストールしないというわけではありません。これはシステムレベルで動作するためです。ソースコードをインストールする必要はありませんが、する次の条件が必要です。
XXX
、これコンパイル済みライブラリ共有オブジェクトファイルXXX-dev
,ソースコードヘッダーコードで使用できますが、動的にリンクできるようにライブラリで関数を定義します。
ルートが所有している場所にいる必要はありませんが、するコンパイラ/リンカー/ビルドツールチェーンが見つかる場所にある必要があります。これはソースからビルドするかどうかにかかわらず同じです。ただし、ビルドプロセスのすべての小さな部分を正しく実行するのは簡単な作業ではないため、ディストリビューションはこれを行います。
残念ながら、これはCで多く借用されていますが、これらのライブラリを標準のビルドプロセスの一部として提供するためにオペレーティングシステムに依存するPythonの一般的なシナリオです。おそらく、Pythonはあなたが持っているビルドコンポーネントを使うように説得されるかもしれません。私は何をすべきかわかりません。これを目的としないで、「ライブラリをインストールする必要がありますが権限がありません」の問題を解決する方法を見つけてください。
- コンテナ技術を使用すると、プロセスはさまざまなユーザースペースファイルシステムを使用できますが、管理者はそのアクセス権を付与しない可能性があります。
- 管理者に必要なすべてのパッケージをインストールするよう依頼してください。
- 必須パッケージをインストールできる他のシステムを使用して開発
- システムライブラリとより強力な関係を持つ言語を使用してください(Golangは通常ライブラリのため、この問題はありません)。はい一般的にGolangソースコードとして配布され、ビルドプロセス全体がより現代的で、実行するためにroot権限を必要としません.)