0

CentOS 6 で Mercurial をビルドしようとしているので、これまでに行ったことは次のとおりです。

Mercurial の最新ソースを入手しました。ファイル名はmercurial-2.4.1.tar.gz

その上で rpmbuild を実行しようとすると、次のようになります。

# rpmbuild -tb mercurial-2.4.1.tar.gz
error: File /home/someuser/rpms/mercurial/mercurial-snapshot.tar.gz: No such file or directory

だから私は、他の人からコピーして、必要なファイルを作成しようとします:

# cp mercurial-2.4.1.tar.gz mercurial-snapshot.tar.gz

もう一度試してみると、前のエラーに合格したようです:

# rpmbuild -tb mercurial-2.4.1.tar.gz
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.vV9ZXc
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf mercurial-snapshot
+ /usr/bin/gzip -dc /home/someuser/rpms/mercurial/mercurial-snapshot.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd mercurial-snapshot
/var/tmp/rpm-tmp.vV9ZXc: line 34: cd: mercurial-snapshot: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.vV9ZXc (%prep)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.vV9ZXc (%prep)

何が起こっているのかわかりません。私の推測では、rpmbuild がファイルを作成できていないということです...何かアイデアはありますか?

4

4 に答える 4

1

まだ利用できない CentOS 用の RPM を構築する最も簡単な方法は、Fedora からソース RPM を見つけて実行rpmbuild --rebuildすることです。CentOSはここにそれを文書化していますが、現在ダウンしているようです。

これは、最初に試すことができる src RPM です。

于 2012-12-23T13:32:11.593 に答える
0

/ var / tmp /ディレクトリがないか、書き込みできません。作成してみてくださいmkdir /var/tmp。-システムのセットアップによっては、これを機能させるために「sudo」を使用する必要がある場合があります。

于 2012-12-23T11:57:42.003 に答える
0

cpコマンドでtarballを作成するのは良くないと思います。

公式tarballを抽出した後に生成されたmercurial-[version]/ディレクトリの名前をmercuial-snapshot/に変更してから、mercurial-snapshot.tar.gzという名前のディレクトリのzip形式のtarアーカイブを作成する必要があります。

$ tar zxvf mercurial-2.4.1.tar.gz 
$ mv mercurial-2.4.1 mercurial-snapshot
$ tar zcvf mercurial-snapshot.tar.gz mercurial-snapshot
于 2012-12-25T01:47:47.917 に答える
0

問題は、バンドルされた仕様ファイルのバージョンのデフォルトが「snapshot」であるため、「mercurial-snapshot.tar.gz」という名前の tar ファイルを探し、抽出されたディレクトリが「mercurial-snapshot」であることを期待することです。 (そのため、tar ファイルの名前を変更することはできません)。

これを処理する最善の方法 (または少なくとも 1 つ方法) は、spec ファイルを抽出し、正しいバージョンとリリース番号で更新してから、それから rpm をビルドすることです。

プロセスは次のとおりです。

tar fxz mercurial-X.Y.tar.gz --strip-components=2 mercurial-X.Y/contrib/mercurial.spec

spec ファイルを rpmbuild/SPECS に配置して編集します。"Version: snapshot" 行を "Version: XY" に置き換え、"Release: 0" 行を "Release: 1.xyz" に置き換えます。xyz はカスタム タグであるため、自分でパッケージを作成したことがわかります。

次に、rpmbuild を実行します。

rpmbuild -bb --target=i686 SPECS/mercurial.spec

64 ビット システム用にビルドしている場合は、 --target=x86_64 を使用します。

これで、RPMS/$target ディレクトリに正しくビルドされ、名前が付けられた rpm ファイルが作成されます。

于 2013-08-10T05:25:34.163 に答える