Создание debian пакет для установки на пути с пробелами

У меня есть спокойное приложение, которое я хочу развернуть как deb пакет. Я читал столько источников, все немного отличающиеся - большая часть того, что я сделал следует за этим Как К: подготовка приложения для представления к Центру программного обеспечения Ubuntu

Я должен создать структуру папок в /usr/share/My Company's Folder/ (Пробелы и специальные символы в пути являются неудачным требованием; прописные имена также... программа были портированы из окон).

/usr/share/My Company's Folder/MainProject/content

Я создал пакет..., и это, кажется, работает, установки в корректном месте, и удивительно программа даже работает после этого.

Проблема: Я не могу использовать пространство в путях. Я создал файл "установки" как показано в ссылке выше. Это делает то, что это предполагается к - но я получаю ошибку, если я пытаюсь поместить объекты в /usr/share/My Company's Folder/ - Я мог только заставить это работать при помощи /usr/share/MyCompanyFolder/ (никакие пробелы или специальные символы".

Установка:

~/working_directory
  mainproject-1.0
     mainproject_1
        content
  mainproject-1.0.tar.gz

Внутри mainproject-1.0 Я работал

dh_make --copyright gpl -f ../mainproject-1.0.tar.gz 

выберите s, нажмите Enter... Затем я изменил файлы в debian созданной папке.

Созданный файл "установки" в debian папке также:

mainproject_1/* /usr/share/My Company's Folder/MainProject

Работал

dpkg-buildpackage -rfakeroot -my@email.com

Это работает, создает установщик, работы установщика...

Но я не могу сделать путь к папке с пробелами, который является тем, в чем я действительно нуждаюсь.

Примечание:

Попробованный неудачно

"/usr/share/My\ Company\'s\ Folder/"
"/usr/share/My Company's Folder/"
/usr/share/My\ Company\'s\ Folder/
/usr/share/My\040Company's\040Folder/
/usr/share/My?Company's?Folder/

После большого поиска я нашел эту информацию

you can't install files with space with dh_install (= debian/*install files)
you have to rename/install them explicitly in debian/rules with install, mv or cp
e.g. with dh tiny rules:

override_dh_install
     dh_install
     install -m 644 "fi le" "debian/tmp/usr/share/fi_le"

Таким образом, я пытался добавить в debian/rules файле (показывая номера строки)

12 %:
13  dh $@ 
14
15 override_dh_install:
16  dh_install
17  install -m 644 "debian/mainproject/usr/share/MyCompanyFolder" "debian/mainproject/usr/share/My Company's Folder"

последняя ошибка - с этой командой:

make[1]: Entering directory `/home/me/working_directory/mainproject-1.0'
dh_install
install -m 644 "My Company's Folder" "debian/mainproject/usr/share/MyCompanyFolder"
install: cannot stat `My Company's Folder': No such file or directory
make[1]: *** [override_dh_install] Error 1
make[1]: Leaving directory `/home/me/working_directory/mainproject-1.0'
make: *** [binary] Error 2
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2

Кроме того, попробованный

12 %:
13  dh $@ 
14
15 override_dh_install:
16  dh_install
17  mv -r "debian/mainproject/usr/share/MyCompanyFolder" "debian/mainproject/usr/share/My Company's Folder"

И как результат структура папок внутри debian выглядит корректной, но я получил ошибки о недопустимых папках...

objdump: 'debian/mainproject/usr/share/My': No such file
objdump: 'Company's': No such file
.....

mkdir затем CP должно иметь тот же результат как mv, но к сожалению они продолжали помещать, одна папка в другом... * рассматривается как подлинное имя...

Действительно кажется, что я нигде не добираюсь.

Обновление: ответ на мой вопрос, используйте команду mv в файле постустановки.

1
задан 3 October 2014 в 11:22

3 ответа

Вы продержались, пример не имел-p аргумента в mkdir, таким образом, каталог не стал созданным в указанном пути. Остальные должны были работать. У Вас будут непрерывные проблемы с именами, содержащими специальные символы как кавычки, но если требование должно установить на таком имени, Ваш подход, чтобы просто сделать установку на нормальном каталоге, то переименуйте его в конце, хороший. Вы избегаете всей ерунды с необходимым заключением в кавычки в Вашем сценарии и позволяете соглашению об использовании конца с ним. Когда крик конечных пользователей, достаточно громкий, возможно, что-то разумное произойдет как не необходимость использовать такие имена в системе Linux, где они вызовут проблемы.

0
ответ дан 10 November 2019 в 23:31

Это - прием

There is directories layout:
mytest-0.1/debian/changelog
             /compat
             /control
             /install
             /rules
mytest-0.1/usr/share/my company/file_a
                               /file_b
                               /file_c'

, Изменяют установка файл следующим образом

usr/share/           /usr/

Затем пакеты Ваш deb пакет

$mytest-0.1>dpkg-buildpackage -rfakeroot -uc -us -tc

Желание, это может помочь Вам

1
ответ дан 10 November 2019 в 23:31

Ну, Ваш заключительный подход для использования постустановки является хорошим способом сделать так. Но причина, для отказа Вашей первой попытки, состоит на самом деле в том, что, патч в сценарии установки Debian (который является debian/rules debian/install также, вероятно, что-то еще) основан на пакете Debian, не пути, Вы думаете на своем компьютере. Это - путь по сравнению с папкой целого пакета. Вот почему это даст Вам вывод что "никакой такой файл"

Извините за мой плохой английский язык я желаю, чтобы я имел Ваше проблемное право и объяснил это хорошо.

На вашем месте я достиг бы специалистов по обслуживанию Debian, которых я знал для справки, или посмотрите другие пакеты, упакованные другими. (Можно получить источники большинства пакетов легко в терминале),

1
ответ дан 7 December 2019 в 14:05

Другие вопросы по тегам:

Похожие вопросы: