【问题标题】:Use cpanspec to create an RPM that installs a desktop file使用 cpanspec 创建一个安装桌面文件的 RPM
【发布时间】:2018-09-26 17:27:21
【问题描述】:

我正在尝试将一些 Perl 代码转换为 RPM。 cpanspec 很好地完成了这项工作,接受一个包含 Perl 代码的 .tar.gz 文件,并生成一个实际生成工作 RPM 的 .SPEC 文件。

但是,我不知道如何修改 .SPEC 文件以使其安装桌面文件。原则上,它应该像添加这些行一样简单:

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

我在 google 上进行了详尽的搜索,显然,计算机史上没有人尝试过这种操作。要么,要么我错过了一些非常明显的东西。

编辑:按照以下建议,这个最小的 .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

【问题讨论】:

    标签: perl rpm-spec


    【解决方案1】:

    您需要将该桌面文件添加到%files 部分。我不知道如何使用cpanspec 使其自动化,但是您的规范文件示例没有列出它,而这正是rpmbuild 告诉您的错误。

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 1970-01-01
      • 2014-04-13
      • 2018-11-14
      • 2012-02-06
      • 2012-08-28
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多