VineSeed にて Requires: 2005-02-02 って何じゃこりゃ?
某所より.
22 login:Penguin [sage] Date:2008/03/01(土) 22:04:17 # apt-get faac-1.25-0vl1.i386.rpm 以下のパッケージは解決できない依存関係を持っています: faac: 依存: 2005-02-02 それをインストールすることができません E: 壊れたパッケージです Seed にて 2005-02-02 に依存って何? 42 login:Penguin [sage] Date:2008/03/02(日) 03:02:36 >>41 出る。 うちでも出る。何じゃこれ。 $ rpmbuild -ba ./rpm/SPECS/faac-vl.spec $ rpm -qp --requires ./rpm/RPMS/i386/faac-1.25-0vl1.i386.rpm | grep 2005 2005-02-02 すまんかった。ようやく本筋に入れるレベルまでおまいさんと同期した。 (つか、おまいさんも言葉足らないと思うぞ。色々酌まなきゃならん身にもなってくれ) だがここまで。 もう眠い…。 役立たずで申し訳ない。 明日以降時間があれば見てみるが、そっちもわかったら報告よろしく。 # 本スレじゃなくて隔離スレでまともな(?)話題があるとは正直意外だったぞ。 48 22 [sage] Date:2008/03/02(日) 09:39:30 faac 1.25 を Seed で普通に rpm をビルドすると $ rpm -qp --requires ./rpm/RPMS/i386/faac-1.25-0vl1.i386.rpm | grep 2005 2005-02-02 となってしまう件ですが,根本的な原因がまだ追求できていないが, 応急処置をとりあえず発見した.それは ChangeLog の頭に空行を入れる つまり,以下のようにする: %install %{__rm} -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} + mv ChangeLog ChangeLog.tmp + echo "" > ChangeLog + cat ChangeLog.tmp >> ChangeLog >>46-47 両氏,追試していただき有り難く存ずる 49 login:Penguin [sage] Date:2008/03/02(日) 10:49:03 chmod 644 ChangeLog 50 login:Penguin [sage] Date:2008/03/02(日) 11:10:14 ChangeLog周りで細工して色々な回避方法があるみたい。 パッケージに含めないとか中身加工するとか。 でも単に回避法なだけで、根本的な原因もわからんしなあ。 51 login:Penguin [sage] Date:2008/03/02(日) 11:13:16 >>49 これでも 2005-02-02 が無くなった でもこれは根本解決なん? 他のファイル COPYING, README, TODO も +x がついてるけど どうして ChangeLog の 1 行目の 2005-02-02 が沸いてくるのか? 52 login:Penguin [sage] Date:2008/03/02(日) 11:29:56 AutoReqの誤動作だと思う。
faac-vl.spec は以下の通り.
%define name faac %define version 1.25 %define release 0vl1 Summary: Reference encoder and encoding library for MPEG2/4 AAC Name: %{name} Version: %{version} Release: %{release} Source: http://dl.sf.net/faac/faac-%{version}.tar.gz License: LGPL Group: Applications/Multimedia URL: http://www.audiocoding.com/ #Requires: BuildRequires: autoconf, automake, libtool, gcc-c++ BuildRoot: %{_tmppath}/%{name}-%{version}-root %description FAAC is an AAC audio encoder. %package devel Summary: Development libraries of the FAAC AAC encoder Group: Development/Libraries Requires: %{name} = %{version} %description devel FAAC is an AAC audio encoder. %prep %setup -q -n %{name} find . -type f -print|xargs nkf --unix --overwrite cp configure.in configure.in.org sed -e 's/^CFLAGS=.*$/CFLAGS="-O2 -Wall"/' configure.in.org > configure.in %build sh bootstrap %configure %{__make} %{?_smp_mflags} %install %{__rm} -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} %clean %{__rm} -rf %{buildroot} %post /sbin/ldconfig 2>/dev/null %postun /sbin/ldconfig 2>/dev/null %files %defattr(-,root,root,-) %doc COPYING ChangeLog README TODO %{_bindir}/* %{_libdir}/*.so.* %files devel %defattr(-,root,root,-) %{_libdir}/*.la %{_libdir}/*.a %{_libdir}/*.so %{_includedir}/*.h
回避策は見つかったんやけど,根本的な解決に至っていない.
2005-02-02 が沸いてくる理由(2008/03/06 追記)
某所より.
57 login:Penguin [sage] Date:2008/03/06(木) 12:38:22 Fedoraでreview requestに提出されるsrpmを審査しているけど、 >>22 あたりからのfaac-vl.specの議論について もうdownloaderにspec fileが残っていないのでこのスレの話から 推察するに、結局>>49 が原因 例えばFedoraの場合 rpm --eval %__find_requiresとすると /usr/lib/rpm/redhat/find-requiresが帰ってくる。でそのファイルをみると、 ----------------------------------------------- 73 # --- Script interpreters. 74 for f in $scriptlist; do 75 [ -r $f -a -x $f ] || continue 76 interp=`head -n 1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1` 77 interplist="$interplist $interp" 78 case $interp in 79 */perl) perllist="$perllist $f" ;; 80 esac 81 done 82 [ -n "$interplist" ] && { echo "$interplist" | tr '[:blank:]' \\n | sort -u ; } ----------------------------------------------- つまりは「+xなスクリプト」があると、「一行目に」#!/bin/shとshebangが書いてあれば rpmbuildが勝手に/bin/shをdependencyに加える。で、これは%docにマークされている ファイルに対してもチェックされるので、結局問題が生じるわけ Fedoraにはrpmlintという道具があって、こういう事をしていると doc-file-dependencyという警告が出る
最も適切な解決は,
chmod 644 ChangeLog
ということになった.