いくつかのフォントをインストールすることのみを目的としたRPMを構築する必要があります。私はいくつかのチュートリアルを読みましたが、誰もが何か違うことを提案しているようで、それを行うための非常に基本的なセットアップのようなものを見つけることができませんでした。
仕様の%files
セクション内のファイルを単に参照することは可能ですか?しかし、私は試しましたが、RMPは常にtmp
ディレクトリ内のファイルを見つけようとします。必要なすべてをtmp
ディレクトリにコピーする特定のビルドステップを追加する必要がありますか?
RPMをビルドするときに、これらのファイルをSOURCE
またはBUILD
ディレクトリに配置する必要がありますか?私はそれについて多くの異なる情報を見つけてきました。ファイルを含むtarballを作成してSOURCE
ディレクトリの下に配置することをお勧めする人もいますが、フォントファイルは実際のソースファイルではないため、これは少し間違っているようです。
理想的には、BUILDフォルダー内のすべてのフォントファイルを./usr/share/fonts/
のようなディレクトリ構造の下に置き、SPECの%file
セクション内でそれを参照して、rpm
を実行させます魔法です。おそらく私はここで何かが足りないか誤解しています。
%files
セクションは常にtmp
ディレクトリ内のソースファイルを見つけることを期待していますか、それとも私の設定に問題がありますか?を含む~/.rpmmacros
を作成しました
%_topdir /Users/user/rpm
これは、ルートビルドディレクトリであり、BUILD、RPMS、SOURCES、SPECS、およびtmpディレクトリが含まれています。
それをきれいに動作させるために、スペックファイルで最低限必要なアイテムを誰かが提供できたらうれしいです。
編集
User3159253の提案に従い、次のスペックファイルを使用しています。
Name: test
Version: 1.0.0
Release: 1
Copyright: Copyright info
Group: Applications/System
BuildArch: noarch
%description
Brief description of software package.
%prep
%build
%install
mkdir -p %{buildroot}/usr/share/fonts
cp ./usr/share/fonts/* %buildroot/usr/share/fonts/
%clean
%files
/usr/share/fonts/*
フォントをBUILD/usr/share/fonts /ディレクトリにコピーしました。 rpmでファイルのリストを照会すると、すべてのフォントが存在します。しかし、rpmをインストールすると、
/usr/share/fonts is needed by test-1.0.0-1.noarch
ただし、このディレクトリが存在するかどうかは関係ないので、rpm
はこのリソースがデータベースにリストされていないことを報告しています。
%file
セクションを次のように変更することで、これを修正できました:
/usr/
/usr/share/
/usr/share/fonts/
/usr/share/fonts/*
しかし、これが良い考えだとは思えません。これを修正するより良い方法はありますか?
_%files
_セクションにファイルをリストすると、これらのファイルは%{buildroot}ディレクトリ内にあることが期待されます。 Fedoraのドキュメントには、Fedora 10 buildroot 再定義できない が仕様書に記載されているため、そうです、%buildroot内に必要なファイルシステム階層を作成し、そこにフォントファイルをコピーして、_%files
_:
_...
%install
mkdir -p %{buildroot}/usr/share/fonts
cp /path/to/existing/MyFont.ttf %buildroot/usr/share/fonts/
...
%files
%defattr(0644, root,root)
/usr/share/fonts/*
_
ディストリビューションにはおそらく標準フォントファイルの場所に便利なマクロがあり、rpmのインストール時にシステムに適切に登録されますが、これらのマクロのほとんどはベンダー固有です。また、フォントファイルをSOURCES /サブディレクトリにコピーし、rpm仕様の_Source:
_(_Source<N>:
_)タグでそれらを言及する必要があります(単なる例で、数値は任意です):
_Name: myfonts
Summary: my fonts package
...
Source5: MyFont.ttf
...
_
次に、_%install
_セクションで次のようなものを使用できます。
_cp %{SOURCE5} %buildroot/usr/share/fonts/
_
myFont.ttfへの絶対パスの代わりに。
Update:依存関係の欠如は正しい:これはファイルシステム上のアーティファクト(ファイル、ディレクトリなど)ではなく、RPM db(/var/lib/rpmにあります)。したがって、問題を解決するには、そのDBを使用する必要があります。
したがって、生成されたRPMパッケージに満たされていない依存関係がある場合は、2つのオプションがあります。
rpm
依存関係の自動計算。これらすべてを完全に無効にするには、_AutoReqProv: no
_を使用します。fontconfig
。残念ながら、異なるLinux rpmディストリビューションでは、それに関する慣習が少し異なります。実際には、このプロセスが既存のフォントパッケージのディストリビューションでどのように構成されているかを確認する必要があります。適切なソースrpmパッケージ( http://rpmfind.net または http://rpm.pbone.net RPM検索エンジンを確認してください)を取得し、.specを抽出することができます。 -仕様の_%prein
_、_%postin
_、_%preun
_および_%postun
_セクションがどのように構成されているかをファイルして調査します。明らかに、フォントパッケージは通常その名前に-fonts-を付けています:)結局のところ、依存関係を表示して、アンインストールしたrpmパッケージを_rpm --query --requires --package </path/to/file.rpm>
_および_rpm --query --provides --package </path/to/file.rpm>
_で提供できます。インストールされたパッケージのdepは_rpm --query --requires <rpm_name>
_などで示されます。
編集した質問に対する回答として、以下があなたが求める回答である可能性があります。
Name: test
Version: 1.0.0
Release: 1
Copyright: Copyright info
Group: Applications/System
BuildArch: noarch
%description
Brief description of software package.
%prep
%build
%install
mkdir -p %{buildroot}/
cp -r ./* %buildroot/
%clean
%files
/*
ここでは、BUILDディレクトリ内のすべてのファイルがパッケージの一部であると見なします。これは/*
下 %files
。
これがあなたの質問に正しく答えることを願っています。