私はマシンのアーキテクチャに基づいて動作を決定するスクリプトを書こうとしています。以前にアーキテクチャラインを集めてみましたが、ARMアーキテクチャが何個あるのか、そのうちの1つが、、、、認知はよくわかりませんuname -m
。armhf
armel
arm64
armhf
このスクリプトは、スクリプトの特定の部分が実行できることを確認する必要があるため、アーキテクチャがあるかどうかをarmel
確認する簡単な方法を見つけようとしますarm64
。出力に使用できる単一行コマンドまたは単純なコマンドはありますかarmhf
?armel
arm64
スクリプトはDebianとUbuntuシステム用に特別に書かれており、それを念頭に置いてタグ付けしました(これらのディストリビューションの1つにない場合は自動的に終了しますが、コマンドが存在する場合はより広い方法で適用されます)。
編集:最近armelが死亡し、arm64ソフトウェアビルダー(PPAまたは仮想ベース)が最も安定していないことがわかりました。したがって、armhfを探して仮定するためのワイルドカード検索がありますが、arm*
まだ3つのうちの1つ(Ubuntu / Debianコマンド、カーネル呼び出し、またはその他のコマンド)を返す単一の行を見つける必要があります。
答え1
Debianとその派生物では
dpkg --print-architecture
プログラムが実行されているマシンの基本アーキテクチャを出力します。これはarmhf
、32ビットARM DebianまたはUbuntu(または派生製品)を実行しているコンピュータとarm64
64ビットARMを実行しているコンピュータで機能します。
RPMベースのシステムでは
rpm --eval '%{_arch}'
現在のスキーマ名を出力します(他のパラメータの影響を受ける可能性がある、例えば --target
)。
実行中のアーキテクチャは、ハードウェアアーキテクチャまたはカーネルアーキテクチャとは異なる場合があります。 Debian は 64 ビット Intel または AMD CPU 上で動作し、64 ビット ARM CPU 上でも動作するとi386
信じています。カーネルにarmhf
ほとんどのバイナリ(基本アーキテクチャを含む)がある場合もありi386
、QEMUがサポートしている場合はまったく異なるアーキテクチャのバイナリもあります(一般的な用途はクロスコンパイルのためのchrootです)。i386
amd64
debootstrap
答え2
このコマンドは、システムにdpkgがインストールされていない場合(削除されたドッカーコンテナなど)に役立ちます。
$ arch