Я пытаюсь создать RPM, но в исходном файле от поставщика есть пробел в имени файла, и, похоже, нет никакого хорошего способа избежать имени файла, чтобы он строился.
Я пробовал поставить \
перед пространствами. Я пробовал заменить их на %20
. Я попытался +
. Я пробовал поставить "
вокруг, я пробовал '
вокруг него.
На данный момент я работаю над этим, переименовывая исходный файл от поставщика, чтобы в нем не было пробелов, но я действительно предпочитаю оставлять исходные имена исходных файлов поставщика без изменений, когда это возможно.
Без экранирования или цитирования я получаю:
+ 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 <example@example.org>
- Whatever
Получается, что оставив Source
unescaped, и цитирование его в% install дает трюк:
Source1: Foo Bar.zip
...
%install
...
unzip "%SOURCE1"