ファイルが見つからない場合、または権限エラーが発生した場合は、rpmbuildを使用してrpmパッケージを作成する方法は?

ファイルが見つからない場合、または権限エラーが発生した場合は、rpmbuildを使用してrpmパッケージを作成する方法は?

wgetユーティリティ用のRPMファイルを生成しようとしています。 rpmbuildコマンド(sudoを含むと除く)を使用した2回の試行で.rpmファイルを生成できませんでした。

仕様ファイルを使用するには、「sudo rpmbuild」コマンドを実行します。ただし、次のエラーが発生します。

エラー: ファイルが見つかりません: /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を使用しないことをお勧めします。 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/ を削除できません。[Eメール保護]': 権限が拒否されました 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

このエラー:

エラー: ファイルが見つかりません: /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ファイルが実際に配置された /root/rpmbuild/BUILDROOT/wget-1.19-1.x86_64/ の内容を確認できます。make install

推測するどちらか

%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

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

おすすめ記事