2011-08-11 10 views
2

私は、ローカルの/ usrプレフィックス値を/使用して、インストール後のスクリプトとRPMパッケージを作成しました。私は--prefix =/tmpに/ mylocationスクリプトの実行が新しい場所の下のファイルを探しに失敗して、RPMをインストールするとき。スクリプトで%{接頭辞}を使用はどのようにRPMのインストール時に、インストール後のスクリプトで値を--prefix指定されたユーザーにアクセスするには?

%ポスト MVは/ usr/local/PACKAGE /ファイル/ etc

もない作品(MV%{プレフィックス}/PACKAGE /ファイル/など)を行います。場合

答えて

2

、誰が$のRPM_INSTALL_PREFIXの作品を使用して、知りたいです。

2

はい、あなたは$ RPM_INSTALL_PREFIXとスクリプトレットで本物の接頭辞にアクセスすることができますが、あなたのRPMが正しく作成されている場合、それを使用する理由は、通常はありません。

実際にあなたがしていることを知っていれば、スクリプトレット(%post /%postun code)でうんざりすることはOKです。ただし、すべてのRPMマクロはビルド時に展開されることに注意してください。エルゴのようなもの:

%post 
echo %{_prefix} 

いつもecho /usrに拡張されます。実際に生成されたRPM内のスクリプトレットを見て、どのように拡大して見えるかを見ることができます。それはあなたが間違ってインストールを行っているようで短いスニペットから

...と述べました。ファイルのコピー/移動は%post /%postunスクリプトレットでは通常行われません。これらはユーザーのシステム(通常はroot)上で実行され、ユーザーのシステムを完全に破壊する壊滅的な間違いをするのはかなり簡単です。

だから、やや有効スニペット:(あなたがあなた自身の使用のためのRPMを作成している場合を除き)別の注意点として

SourceX: <config_file> 
... 
%install 
... 
mkdir -p %{buildroot}%{_sysconfdir} 
cp %{SOURCEX} %{buildroot}%{sysconfdir} 
... 


%files 
%config(noreplace) %{_sysconfdir}/<config_file> 
... 

は、ローカル/の/ usrへのインストールは、一般的に眉をひそめるされます。

関連する問題