VineSeed ML アーカイブ



[VineSeed:027617] rpm-4.12+ の external dependency generator について

  • From: Daisuke Suzuki <daisuke@xxxxxxxxxxxxx>
  • Subject: [VineSeed:027617] rpm-4.12+ の external dependency generator について
  • Date: Mon, 14 Dec 2015 06:48:00 +0900
鈴木です。

rpm-4.12 から external dependency generator は事実上廃止されています。
spec ファイルで external のを使うようにして、上書きしているパッケージ
もいくつかあるかと思いますが、動作の仕様が internal と全く同じになって
いますので、うまく動作しなくなっているものも有ると思います。
# Vineも結構前からデフォルトは internal dep gen です。

rpm-4.12 以降からは requires や provides をフィルタするためには、
find-{requires,provides} を上書きなどするのではなく、フィルタルールを
書いて internal dep gen に任せるようにすることになります。

一例として firefox の例をあげます。

これまでの spec ファイル
Source100:      find-external-requires
AutoProv: 0
%define _use_internal_dependency_generator 0
%define __find_requires %{SOURCE100}

これからのspecファイル
# filter requires/provides
%global _privatelibs lib.*[.]so\\(.*
%global __requires_exclude ^(%{_privatelibs})$
%global __provides_exclude_from ^%{ffdir}/.*$

__requires_exclude と __provides_exclude で AutoReq/Prov で Requres/Provides
検出後のフィルタが行えます

__requires_exclude_from と __provides_exclude_from で AutoReq/Prov の
対象をフィルタすることができます。

firefox の例では

 * /usr/lib*/firefox/ 以下にあるものについて自動 Provides を検出しない。
 * lib.*[.]\(.* (libnss.so(*)(*) といったバージョンなしのsharedライブラリ) をフィルタ

とすることで、プライベートなライブラリをAutoProv/Req対象から除外しています。

https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
あたりが参考になるかとおもいます。


-- 
--
Daisuke SUZUKI | daisuke@{linux.or.jp,dicey.org,vinecaves.com}
GnuPG Fingerprint = A03C F34B 830F FFA2 A8D0  48BF 412C 29B8 C979 4DCB
GnuPG Fingerprint = 7DE6 9AC6 5E5B 1AF8 B38E  0992 90BF 4C09 7432 2CB0
Founder,President&CEO, Vine Caves Ltd.         http://vinecaves.com/
Founder and President, Project Vine.           http://vinelinux.org/
Founder and President, Japan Linux Association http://jla.linux.or.jp/
_______________________________________________
VineSeed mailing list
VineSeed@xxxxxxxxxxxxx
http://lists.vinelinux.org/mailman/listinfo/vineseed