我正在尝试构建一个 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"