저는 이 프로그램을 위한 RPM 파일을 구축해 왔으며 이 사양 파일은 대부분의 경우 작동합니다.
Name: unix-runescape-client
Version: 4.3.5
Release: 1
License: GPL-2.0
Summary: A lightweight wrapper for the legacy Java client of RuneScape
Group: Amusements/Games
Packager: Brenton Horne
Source: https://github.com/HikariKnight/rsu-client/archive/v%{version}.tar.gz
Requires: perl perl(List::MoreUtils) perl(Config::IniFiles) perl(Archive::Extract) perl-Wx java-1.8.0-openjdk
%description
The Unix RuneScape Client developed by HikariKnight on GitHub. It is an
open-source wrapper for the old legacy Java client of RuneScape.
%prep
%setup -q -n rsu-client-%{version}
%install
_instdir=%{buildroot}/usr/share/runescape
cd runescape
mkdir -p "$_instdir" "%{buildroot}"/usr/{bin,share/applications}
# copy the stuff
cp -t "$_instdir" *.txt runescape updater rsu-settings AUTHORS
cp -Rt "$_instdir" share rsu
cp -Rt %{buildroot}/usr/bin templates/packaging/usr/games/*
cp -Rt %{buildroot}/usr templates/packaging/usr/share
# these libraries are old, and they are not needed anymore with current cairo
rm -rf "$_instdir"/rsu/3rdParty/linux/cairo-nogl
%files
%{_datadir}/applications/runescape*.desktop
%{_datadir}/runescape/*
%{_datadir}/kde4/services/jagex-jav.protocol
%{_bindir}/runescape*
%{_bindir}/rsu-settings
%{_bindir}/update-runescape-client
RPM 파일을 빌드하는 동안 이 RPM 파일을 설치하려고 할 때마다 오류가 발생합니다.
Last metadata expiration check: 0:35:12 ago on Mon Jan 2 15:10:06 2017.
Error: nothing provides perl(JSON::backportPP) needed by unix-runescape-client-4.3.5-1.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages)
이 --allowerasing
옵션을 사용하여 설치해도 이 오류가 해결되지 않습니다. 나는 좋은 오래된 Google 검색을 수행했으며 perl(JSON::backportPP)
적어도 Mageia의 경우 perl-JSON이 이 요구 사항을 제공한다는 것을 발견했습니다(출처:ftp://www.rpmfind.net/linux/RPM/mageia/cauldron/i586/media/core/release/perl-JSON-2.900.0-5.mga6.noarch.html), 그래서 실행 sudo dnf install -y perl-JSON
(해당되는 경우 Fedora 25에서 실행 중임)이 perl-JSON
이미 설치되어 있음을 확인했습니다... 또한 위의 사양 파일에 종속성을 추가하고 RPM 패키지를 다시 빌드하려고 시도했지만 perl-JSON
실패했습니다. 이 종속성 문제를 해결하세요.
범용 설치 프로그램을 사용하여 이 클라이언트를 설치했는데 제대로 작동하므로 실제로 실행하는 데 perl(JSON:backportPP)이 필요하지 않다는 것을 알고 있습니다...
답변1
해결책을 찾았습니다. 다음 줄을 추가하면 됩니다.
Provides: perl(JSON::backportPP)
사양에 따라 문제가 해결되었습니다. 이것은 내 현재 사양 파일입니다.
Name: unix-runescape-client
Version: 4.3.5
Release: 1
License: GPL-2.0
Summary: A lightweight wrapper for the legacy Java client of RuneScape
Group: Amusements/Games
Packager: Brenton Horne
Url: https://github.com/HikariKnight/rsu-client
Source: https://github.com/HikariKnight/rsu-client/archive/v%{version}.tar.gz
Requires: perl perl(List::MoreUtils) perl(Config::IniFiles) perl(Archive::Extract) perl-Wx java-1.8.0-openjdk
Provides: unix-runescape-client
Provides: perl(JSON::backportPP)
%description
The Unix RuneScape Client developed by HikariKnight on GitHub. It is an
open-source wrapper for the old legacy Java client of RuneScape.
%prep
%setup -q -n rsu-client-%{version}
%install
_instdir=%{buildroot}/usr/share/runescape
cd runescape
mkdir -p "$_instdir" "%{buildroot}"/usr/{bin,share/{applications,pixmaps}}
# copy the stuff
cp -t "$_instdir" *.txt runescape updater rsu-settings AUTHORS
cp -Rt "$_instdir" share rsu
cp -Rt %{buildroot}/usr/bin templates/packaging/usr/games/*
cp -Rt %{buildroot}/usr templates/packaging/usr/share
# these libraries are old, and they are not needed anymore with current cairo
rm -rf "$_instdir"/rsu/3rdParty/linux/cairo-nogl
sed -i -e 's|/opt/runescape/share/img/runescape.png|runescape|g' %{buildroot}/usr/share/applications/*.desktop
sed -i -e 's|/opt/runescape||g' %{buildroot}/usr/{bin/*,share/applications/*.desktop,share/runescape/*.txt}
mv %{buildroot}/usr/share/runescape/share/img/runescape* %{buildroot}/usr/share/pixmaps
rm -rf %{buildroot}/usr/share/runescape/share/img/
%files
%{_datadir}/applications/runescape*.desktop
%{_datadir}/runescape/*
%{_datadir}/kde4/services/jagex-jav.protocol
%{_datadir}/pixmaps/*
%{_bindir}/runescape*
%{_bindir}/rsu-settings
%{_bindir}/update-runescape-client