如何转义 rpm 规范“源”项中的空格?

如何转义 rpm 规范“源”项中的空格?

我正在尝试构建一个 RPM,但是来自供应商的源文件的文件名中有一个空格,并且似乎没有任何好的方法来转义文件名以便构建它。

我试过\在空格前面放一个。我试过用 替换它们%20。我试过+。我试过在"它周围放一个 s,我试过'在它周围放一个。

目前,我正在解决这个问题,通过重命名供应商的源文件使其不包含空格,但我真的希望尽可能保持原始供应商源文件名的完整性。

无需转义或引用,我得到:

+ unzip .../Foo Bar.zip
unzip:  cannot find or open .../Foo, .../Foo.zip or .../Foo.ZIP.

使用\,解压缩可以成功,但是:

error: Bad file: .../Foo\ Bar.zip: No such file or directory

这是一个功能齐全的 test.spec 文件(我确实zip "Foo Bar.zip" test.spec获取了一个示例 zip 文件):

Summary: Test
Name: test
Version: 1
Release: 1
License: Whatever
URL: http://www.example.com/
Source1: Foo Bar.zip

%description
Just a test of escaping stuff...

%prep
%build
%install
%{__install} -d -m0755 %{buildroot}/foo
cd %{buildroot}/foo
unzip %SOURCE1

%clean
%{__rm} -rf %{buildroot}

%files
/foo

%changelog
* Wed May 8 2013 Example <[email protected]>
- Whatever

答案1

事实证明,保留Source未转义的内容并在 %install 中引用它可以达到目的:

Source1: Foo Bar.zip
...
%install
...
unzip "%SOURCE1"

相关内容