Разработка приложений - основные вопросы
После окончания вскрытия приложений Ubuntu я хотел бы перенести некоторые из моих программ, запрограммированных для Windows, в Центр программного обеспечения. Поскольку я новичок в программировании для Linux, у меня все еще есть несколько вопросов:
1) У меня есть некоторые зависимости (например, BLAST). Я прочитал, что я могу быстро настроить зависимости, которые они будут автоматически установлены с моим инструментом. Что я должен добавить в файл, ссылку, название инструмента или что-то еще? Пример был бы великолепен.
2) Эти зависимости создают несколько (больших) выходных файлов. Где создаются такие файлы и нужно ли их перемещать в папку приложения для их анализа?
3) Мое приложение создает несколько файлов. Где лучше всего хранить их в структуре папок моего приложения, созданной быстро? Как насчет чтения и записи доступа к файлам?
4) Любые другие советы или предложения о том, что я должен позаботиться или которые отличаются от ОС Windows?
Любая помощь очень ценится!
1 ответ
Я являюсь разработчиком (и упаковщиком) Wallch, которое является приложением C++, и поэтому оно не собирается и не упаковывается вместе с Quickly.
По этой причине мой ответ будет включать общую информацию о ваших вопросах, которые (должны) применяться в любом случае (насколько я знаю).
Отвечая на ваши вопросы, сейчас:
(1)
Вы можете установить в качестве зависимостей вашего приложения только те, которые находятся в репозиториях по умолчанию Ubuntu. Вы не можете включать зависимости от PPA и т. Д. Вы можете добавить свои зависимости в файл debian/control. Вот пример файла debian/control для моего приложения: http://paste.ubuntu.com/1113694.
Как видите, есть 2 поля "Зависит", в "Построении-Зависит" вы должны указать, что необходимо для построения вашего приложения. Я уверен, что Quickly должен заполнить это поле автоматически. Другие пакеты, которые важны для запуска вашего приложения, должны быть перечислены в поле "Зависит". Это где вы должны указать любые дополнительные зависимости, которые у вас есть. Вам нужно указать имя пакета, которое пользователь должен загрузить и установить (конечно, этот процесс автоматический)
(2)
Насколько я понимаю из вашего вопроса, зависимости - это отдельные программы, которые могут запускаться и создавать большие выходные файлы. Теперь это действительно зависит от того, где хранятся эти файлы. Я бы сказал, что:
Если ваше приложение косвенно создает эти большие выходные файлы, вы можете сохранить их где угодно.
Если пользователь отдельно создает эти файлы, вы можете позволить пользователю из вашего приложения выбрать один из этих файлов для обработки.
Это действительно зависит от того, как создаются эти файлы и как они связаны с вашим приложением.
Если вы просто создаете некоторые файлы, а затем хотите обработать их в своем приложении, вам следует использовать каталог /tmp. Запустите зависимую программу и направьте ее для генерации файлов в /tmp, а затем попросите вашу программу прочитать и проанализировать файлы оттуда.
(3)
Насколько я знаю (поскольку я тоже участвовал в этом конкретном конкурсе), структура, которую создает Quickly, находится в /opt/extras.ubuntu.com/programname, где у пользователя нет прав на запись. Это означает, что если пользователь обычно открывает ваше приложение и из вашего приложения вы решили сохранить файлы своей программы в /opt/extras.ubuntu.com/programname, пользователь не сможет сохранить эти файлы. Вместо этого ему придется запускать ваше приложение с правами суперпользователя, что обычно не рекомендуется.
Опять же, это зависит от того, для чего эти файлы. Являются ли эти файлы читаемыми для пользователя или они могут использоваться только из вашего приложения (что-то вроде файлов конфигурации)? Если первое верно, то вы должны позволить пользователю выбрать, где сохранить эти файлы. Если последнее имеет значение true, то эти файлы следует поместить в ~/.config/ProgramName/ Каталог ~ /.config / ProgramName - это каталог, в котором все приложения сохраняют свои файлы конфигурации.
Редактировать после дополнительных запросов от комментария:
Как правило, вы должны сделать следующее:
- Ваша программа генерирует файлы в зависимости от ввода пользователя (что приводит к ~/.config/ProgName, потому что они могут быть использованы повторно и не должны быть удалены)
- Инструменты, от которых вы зависите, читают эти файлы (из ~/.config/ProgName) и генерируют некоторые другие файлы (которые приводят к /tmp)
- Ваша программа берет сгенерированные файлы (из инструментов) из /tmp и выполняет любые расчеты / рисование и т. Д. После выполнения того, что ваше приложение должно делать с конечными файлами в /tmp, было бы хорошо удалить их.
Что касается того, есть ли у вас разрешения на чтение / запись в папке конфигурации, у пользователя есть полные права на чтение / запись для всего в ~/ (ваш домашний каталог), и, таким образом, все в ~ /.config / также принадлежит ему. Обратите внимание, что пользователь также имеет права на чтение / запись в /tmp.
Совет: вы можете использовать команду mktemp для генерации временных файлов в /tmp со случайным именем