私はRedline rpm packageのいくつかの変更に取り組んでおり、アーキテクチャの指定について質問がありました。アーキテクチャは、rpmファイル名内の文字列として指定されます。 xyz-1.2.3-noarch.rpm
またはxyz.1.2.3-i386.rpm
で、前者はバイナリコンポーネント(Javaパッケージ、Pythonパッケージ、スクリプトファイルコレクションなど)を持たないパッケージに適しており、後者はintel 386プロセッサ用のネイティブコードライブラリを含むパッケージに適しています。RPMヘッダーのLead.archnum変数は、どのような目的にも役立ちますか?
これはかなり明確です。
ただし、rpmファイルのヘッダーにはLead
という内部値があり、このセクションにはarchnum
という短いメンバーが含まれています。これが記述されているhere:私たちは、以下の構造がarchnum
に配置する必要がありますどのような値
struct rpmlead {
unsigned char magic[4];
unsigned char major, minor;
short type;
short archnum;
char name[66];
short osnum;
short signature_type;
char reserved[16];
} ;
を説明参照ここで説明されていません。
old and somewhat cryptic reference to this subject hereがあります。 文書が書かれた時点で使用されていたアーキテクチャをリストアップした後、次のようになります。
このリストはほぼ確実に変更されます。最新のリストについては、 ファイル/ usr/lib/rpmrcを参照してください。 RPMに内部的に使用されている の情報が含まれています。これには、アーキテクチャーのリストとそれに相当する のコード番号が含まれます。
などrpmrcファイルその中で古くなっているコメント
/usr/lib/rpm/rpmrc
で、より近代的なシステム上で発見し、ここで我々が定義されたアーキテクチャといくつかのコード番号、および互換性の適応症の数を見つけるのですかさ、
これはすべて非常に曖昧です。どのアーキテクチャーがどのコード番号を使用すべきかについての権威的なリストはどこにもなく、あなた自身のシステム上のファイルから「最新のリスト」を得ることへの言及はむしろ奇妙なようです。
これは、rpmインストーラがこれらのツールと何をしていますか?
archnum回転数
グーグルで私は私にarchnumに言及したソースコードを示すページを取るヒット数を見つけます。
http://rpm.org/api/4.4.2.2/rpmlead_8c-source.htmlには、readLead()メソッドとwriteLead()メソッドが表示され、これらの値を読み書きするコードが含まれます。このソースファイルの他のバージョンには他にも多くのリンクがありますが、これらはすべて同様のコードを持っています。 rpmParse.cへのリンクと上記の構造を定義するヘッダーファイルもあります。
この検索で見つけられないものは、この値をチェックしてそれに基づいて何かを行うコードです。
私の質問です。今日の重要な意味を持つ値はLead.archnum
ですか、またはこれらのパッケージがどのように処理されるかについての初期概念の痕跡であり、現在の重要性はありませんか?
Redline-RPMパッケージの変更を正確にしたいので、これは私にとって重要です。これが実際にどの程度深刻な問題であるかは完全には明らかではありません。 私はlead.archnumがもはや重要ではないと思うし、これを読んでいる人がそれを確認できることを期待している。
更新: archnumがもはや有意でないことを別の手がかりは、(回転数v.4.8.0インストールから)rpmrcファイルのこのビットは、次のとおり
#############################################################
# Canonical arch names and numbers
arch_canon: athlon: athlon 1
arch_canon: geode: geode 1
arch_canon: pentium4: pentium4 1
arch_canon: pentium3: pentium3 1
arch_canon: i686: i686 1
arch_canon: i586: i586 1
arch_canon: i486: i486 1
arch_canon: i386: i386 1
arch_canon: x86_64: x86_64 1
arch_canon: amd64: amd64 1
arch_canon: ia32e: ia32e 1
arch_canon: em64t: em64t 1
x86_64のアーキテクチャが使用それらが確かに同じではないという事実にもかかわらず、i386と同じコード番号です!
Lead.archnumが使用されていない場合、アーキテクチャーはどのように決定されるのでしょうか?私はこれを使ってRPMを構築します:https ://ctron.github.io/rpm-builder/rpm-mojo.html – mm759
私はその名前で、あなたの検索がどのように成し遂げられるのか疑いがないと思いますが、確かに、それはより効率的であろうたくさんのファイルを読み込むのではなく、ファイル名のリストに基づいて実行してください。あなたが参照するctronパッケージを認識していなかった。ありがとう。しかし、私はGradleを使っていて、gradle-os-packageプラグインはRedlineを使っているので、オプションではありません。 Redlineのユーザーインターフェイスは、アーキテクチャを指定するためのString(実際にはenum値)も指定します。 –