web-dev-qa-db-ja.com

ファイルが見つからない場合や権限エラーがある場合、rpmbuildを使用してrpmパッケージを作成するにはどうすればよいですか?

WgetユーティリティのRPMファイルを作成しようとしています。 rpmbuildコマンドを使用しようとした(SudoありとSudoなし)両方の試みで、.rpmファイルを作成できませんでした。

「Sudorpmbuild」コマンドを実行してスペックファイルを使用します。しかし、次のエラーが発生します。

エラー:ファイルが見つかりません:/root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wgetエラー:ファイルが見つかりません:/root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr /local/share/man/man1/wget.1

ディレクトリパスを手動で作成し、ファイルを手動でコピーすると、将来的に他の問題が発生します。 rpmbuildコマンドがキーファイルが上記の場所にあることを期待している場合、何かがおかしいと思います。

須藤は使わない方がいいと読んだ。 Sudoを使用しない場合、rpmbuildコマンド(rpmbuild -v -bb --clean SPECS/wget.spec)これを示しています:

実行中(%prep):/ bin/sh -e /var/tmp/rpm-tmp.NiuIFV + umask 022 + cd/home/ec2-user/mywget/BUILD + cd/home/ec2-user/mywget/BUILD + rm -rf wget-1.19 rm:「wget-1.19/po/[email protected]」を削除できませんrm:削除できません「wget-1.19/po/zh_CN.po」:アクセスが拒否されましたrm:「wget」を削除できません-1.19/po/id.gmo ':アクセスが拒否されましたrm:削除できません' wget-1.19/po/gl.gmo ':アクセスが拒否されました.。

他の「rmは削除できません...アクセスが拒否されました」という行が表示されます。 rpmbuildコマンドが機能することを期待していました。 wget-1.19フォルダーのアクセス許可を777(Sudo chmod経由)に変更しました。所有者とグループは、rpmbuildコマンドを実行しているユーザーと同じです。私はまだ問題を抱えていました。

WgetユーティリティのRPMパッケージを作成するにはどうすればよいですか?

# This is a sample spec file for wget

%define _topdir     /home/ec2-user/mywget
%define name            wget 
%define release     1
%define version     1.19
%define buildroot %{_topdir}/%{name}-%{version}-root

BuildRoot:  %{buildroot}
Summary:        GNU wget
License:        GPL
Name:           %{name}
Version:        %{version}
Release:        %{release}
Source:         %{name}-%{version}.tar.gz
Prefix:         /usr
Group:          Development/Tools

%description
The GNU wget program downloads files from the Internet using the command-line.

%prep
%setup -q

%build
./configure
make

%install
make install prefix=$RPM_BUILD_ROOT/usr

%files
%defattr(-,root,root)
/usr/local/bin/wget

%doc %attr(0444,root,root) /usr/local/share/man/man1/wget.1

上記は変更されましたが、ここのスペックファイルの例に大きく基づいています: https://www.ibm.com/developerworks/library/l-rpm1/index.html

1
Jermoe

このエラー:

エラー:ファイルが見つかりません:/root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/usr/local/bin/wget

このファイルを%filesセクションで指定したことを意味します。

%files
/usr/local/bin/wget

そのため、rpmbuildは$ RPM_BUILD_ROOT/usr/local/bin/wgetパスにこのファイルを予期していますが、そこにはありません。したがって、このエラー。マニュアルページの場合はその逆です。

rpmbuild -biフェーズの直後に停止する%installを実行し、make installが実際に配置した/root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/の内容を確認できます。ファイル。

推測どちらか

%install
make install prefix=$RPM_BUILD_ROOT/usr/local

または

%files
%defattr(-,root,root)
/usr/bin/wget
%doc %attr(0444,root,root) /usr/share/man/man1/wget.1

エラーを修正します。 (そのうちの1つだけです!)

2
msuchy