У меня есть спокойное приложение, которое я хочу развернуть как 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 в файле постустановки.
Вы продержались, пример не имел-p аргумента в mkdir, таким образом, каталог не стал созданным в указанном пути. Остальные должны были работать. У Вас будут непрерывные проблемы с именами, содержащими специальные символы как кавычки, но если требование должно установить на таком имени, Ваш подход, чтобы просто сделать установку на нормальном каталоге, то переименуйте его в конце, хороший. Вы избегаете всей ерунды с необходимым заключением в кавычки в Вашем сценарии и позволяете соглашению об использовании конца с ним. Когда крик конечных пользователей, достаточно громкий, возможно, что-то разумное произойдет как не необходимость использовать такие имена в системе Linux, где они вызовут проблемы.
Это - прием
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
Желание, это может помочь Вам
Ну, Ваш заключительный подход для использования постустановки является хорошим способом сделать так. Но причина, для отказа Вашей первой попытки, состоит на самом деле в том, что, патч в сценарии установки Debian (который является debian/rules debian/install также, вероятно, что-то еще) основан на пакете Debian, не пути, Вы думаете на своем компьютере. Это - путь по сравнению с папкой целого пакета. Вот почему это даст Вам вывод что "никакой такой файл"
Извините за мой плохой английский язык я желаю, чтобы я имел Ваше проблемное право и объяснил это хорошо.
На вашем месте я достиг бы специалистов по обслуживанию Debian, которых я знал для справки, или посмотрите другие пакеты, упакованные другими. (Можно получить источники большинства пакетов легко в терминале),