Perl 使用cpanspec创建安装桌面文件的RPM
我正在尝试将一些Perl代码转换为RPM。cpanspec很好地完成了这项工作,它接受了一个包含Perl代码的.tar.gz文件,并生成了一个.SPEC文件,该文件实际上生成了一个工作RPM 但是,我无法确定如何修改.SPEC文件以使其安装桌面文件。原则上,只需添加以下行即可:Perl 使用cpanspec创建安装桌面文件的RPM,perl,rpm-spec,Perl,Rpm Spec,我正在尝试将一些Perl代码转换为RPM。cpanspec很好地完成了这项工作,它接受了一个包含Perl代码的.tar.gz文件,并生成了一个.SPEC文件,该文件实际上生成了一个工作RPM 但是,我无法确定如何修改.SPEC文件以使其安装桌面文件。原则上,只需添加以下行即可: Source1: myapp.desktop ... desktop-file-install \
Source1: myapp.desktop
...
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
%{SOURCE1}
xdg-desktop-icon install --novendor %{SOURCE1}
这不起作用,任何其他变化也不起作用。通常,我会遇到如下错误:
error: Installed (but unpackaged) file(s) found:
/usr/share/applications/myapp.desktop
我彻底搜索了谷歌,显然,在计算史上没有人尝试过这种操作。要么这样,要么我错过了一些非常明显的东西
编辑:按照下面的建议,这个最小的.SPEC文件将生成所需的结果。我使用了rpmbuild,并在/rpm/SOURCES中复制了桌面文件及其相应的图像文件
Name: perl-MyApp
Version: 1.0
Release: 1%{?dist}
Summary: MyApp Perl module
License: Distributable, see COPYING COPYING.LESSER
Group: Development/Libraries
URL: http://search.cpan.org/dist/MyApp/
Source0: http://www.cpan.org/modules/by-module/MyApp-%{version}.tar.gz
Source1: myapp.desktop
Source2: myapp.png
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
BuildRequires: perl(ExtUtils::MakeMaker)
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%description
blah blah blah
%prep
%setup -q -n MyApp-%{version}
%build
%{__perl} Makefile.PL INSTALLDIRS=vendor
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
%{_fixperms} $RPM_BUILD_ROOT/*
mkdir %{buildroot}/usr/share/pixmaps/
cp -a %{SOURCE2} %{buildroot}/usr/share/pixmaps/myapp.png
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
%{SOURCE1}
xdg-desktop-icon install --novendor %{SOURCE2}
%check
make test
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc CHANGES COPYING COPYING.LESSER README
%{perl_vendorlib}/*
%{_mandir}/man3/*
/usr/share/applications/myapp.desktop
/usr/share/pixmaps/myapp.xpm
您需要将该桌面文件添加到
%files
部分。我不知道如何使用cpanspec
自动化它,但是您的specfile示例没有列出它,这正是rpmbuild
告诉您的错误