2016-07-15 8 views
1

単にファイルを置くことに関しては、%installというマクロを明確にする人を探しています。私はエラーを出さずにRPMを作成しました。このRPMは、buildrootからファイルを取り出して、/ usr/libにcpします。 %installのSPECファイルには、以下があり、this postに基づいています。私は、rpmがbuildrootから/ usr/libにファイルをコピーするのに十分なはずです。rpmbuildファイルの単純コピー

これは私が試したものですし、それが構築します。

%install 
mkdir -p %{buildroot}/usr/lib 
install -d %{buildroot}/usr/lib/ 

再考、私はよく、私はファイルをコピーしたい回転数を伝えることができ、把握します。/usr/libに/場所は、私がビルドマシン上としてのrpmを作成していたユーザが書き込めされていない文句

%install 
mkdir -p %{buildroot}/usr/lib 
cp %{buildroot}/usr/lib/ /usr/lib/ 

うまく:SO私はこれを試してみました。スペックファイルの%installセクションは、RPMがインストール先サーバーにインストールされているときにファイルをコピーする場所に関する指示である必要があります。 rpmビルドサーバー用のローカルファイルシステムを調べるのは嫌です。私はこれの背後にあるが、RPMをビルドする必要がありますが、RPMを非特権ユーザーとしてインストールしようとするとrpmがインストールされるまで失敗しません。ビルド中は気にしないでください。私は単にrpmファイルをインストールするサーバ上の/ usr/libにいくつかのlibファイルをcp /解凍しようとしています。

rpmは、rpmroをインストールしているサーバーにBUILDROOTの場所を作成し、buildrootの場所から前述の宛先の場所に内容をコピーします。

+1

注: '%install'はspecfileセクションです。 'install'はあなたのシステム上で' cp'に似ていますが、パーミッションなどを維持する実行可能ファイルです。 –

答えて

5

%installセクションは、パッケージのビルド時にマシン上で実行されます。このセクションでは、ファイル構造を%{buildroot}に作成する必要があります。それはではないクライアントマシン上で最終宛先をコピーするタスクです。

%files 
/usr/lib/foobar.bin 
/usr/lib/somedir/ 

RPMは、その後%のbuildrootから%filesセクションにリストされたすべてのファイルをとりますし、それを配置します:%filesセクションで、その後

%install 
mkdir -p %{buildroot}/usr/lib 
cp -a some-your-file-from-extracted-targz %{buildroot}/usr/lib/ 

と:

だからあなたのような何かを行う必要がありますパッケージ。

+0

非常に長いPerlディストリビューションのリストはどうでしょうか?これらのファイルをすべて一覧表示する必要がありますか?基本的に私はPerlBrewを使ってデフォルトのOSからカスタムの場所にperlのバージョンをインストールしました。それから私はファイルをtarred。つまりperl-5.10.1.tgzを/ opt/custom/location/thatsにuntarするだけです。特定の場所にtgzファイルを展開するだけです。 –

+1

ディレクトリを%filesに指定すると、rpmbuildにそのディレクトリとその中のすべてが含まれます。したがって、上記の例では/ usr/lib/somedir/foo/barファイルも含まれています。または、そのリストを生成することもできます(ただし可能な場合は避けてください)。たとえば、https://github.com/rpm-software-management/mock/blob/devel/mock.spec.in#L138 https://github.com/rpm-software-management/mock/blob/devel/を参照してください。 mock.spec.in#L191 – msuchy

+0

すべての情報をありがとう。なんらかの理由で、rpmのビルドを実行すると、Perlの依存関係を探し出すようです。繰り返しますが、私がしたのは、カスタムの場所でPerbrewを使ってPerlディストリビューションをコンパイルし、cpanmを使ってすべてのPerlモジュールをインストールした後でした。私はフォルダ(つまりtar -xzvf)を作成し、そのファイルをSOURCESフォルダに配置しました。 rpmbuild -bb SPEC_FILEを実行すると、rpmが構築されます。 RPMをインストールすると、Perlの依存関係が見つからないというメッセージが表示されます。また、specファイルに "require"を指定していません。 –

関連する問題