たとえば、私が書くとき
sudo apt-get install libjpeg-dev
libjpeg.so
私のシステムにライブラリがインストールされます。
オンラインパッケージストアには、.so
さまざまなシステムアーキテクチャ用のさまざまなファイルが含まれており、パッケージマネージャは正しいファイルのみをダウンロードしますか?または、パッケージマネージャはシステムからライブラリをコンパイルし、コンパイルされた.so
ファイルをインストールしますか?それとも私が考慮していない他のシナリオはありますか?
答え1
ほとんどの場合、パッケージリポジトリにはさまざまなアーキテクチャ用のさまざまなパッケージが含まれており、パッケージマネージャは適切なパッケージをダウンロードします。一部のパッケージはすべてのアーキテクチャで同じで、パッケージマネージャはローカルシステムのアーキテクチャに関係なく同じパッケージをダウンロードします。
したがって、パッケージがダウンロードされますamd64
。apt install libjpeg-dev
all
建築のため、それ自体はパッケージによって異なります。amd64
建築のため。
dpkg
/ベースのシステムでは、デフォルトのapt
アーキテクチャはパッケージアーキテクチャですdpkg
。これらのシステムが別のアーキテクチャを使用するように構成してからそのパッケージをインストールする場合は、デフォルト以外の適切なアーキテクチャ(マルチアーキテクチャに準拠している場合)を指定する必要があります。
sudo apt install libjpeg62-turbo:armhf
Gentooなどのバイナリベースのディストリビューションではなく、ソースベースのディストリビューションはソースコードをダウンロードし、システム用のライブラリを構築します。
答え2
最新のディストリビューションには、デフォルトで正しいアーキテクチャで構成されたdpkgが付属しています。
amd64用のディストリビューションがインストールされている場合は、まだamd64アーキテクチャで利用できないソフトウェアのバイナリディストリビューションを使用する必要がある場合は、アーキテクチャi386を追加して32ビット実行環境をインストールすることもできます。
オンラインパッケージストアには、
.so
さまざまなシステムアーキテクチャ用のさまざまなファイルが含まれており、パッケージマネージャは正しいファイルのみをダウンロードしますか?または、パッケージマネージャはシステムからライブラリをコンパイルし、コンパイルされた.so
ファイルをインストールしますか?それとも私が考慮していない他のシナリオはありますか?
分布によって異なります。多くの一般的なディストリビューション(APTやYUMを使用するディストリビューションなど)は、共有オブジェクトを構築する代わりにダウンロードします。しかし、繰り返しますが、分布によって異なります。
答え3
RPMベースのディストリビューションには、さまざまなアーキテクチャ用のパッケージ(Intel 32ビットや64ビット用などx86
)が含まれており、バイナリ(文書、スクリプトなど)を含まないパッケージもx86_64
あります。noarch
デフォルトでは、コンピュータアーキテクチャと一致するパッケージのみがインストールされ(noarchパッケージもサポートされています)、他のアーキテクチャ(クロスコンパイルなど)を明示的に要求できます。後でインストールされたパッケージは正常にアップグレードされます。