Вопрос или проблема
При публикации нескольких приложений в одном снапе, snapcraft добавляет префикс “snapname.” к имени приложения, чтобы конечный пользователь видел исполняемое имя “snapname.appname”.
Мой снап – это коллекция из 7 утилит командной строки. Все с общим префиксом, скажем, “snapname”.
Но их имена следующие:
snapname-appname
с использованием минуса/дефиса вместо разделителя точки, что гораздо более распространено в утилитах командной строки Linux.
Мои утилиты также будут опубликованы через .deb и .rpm и так далее, поэтому я хотел бы, чтобы наименования были единообразными, иначе документация будет запутанной.
Существует ли способ обойти, по-видимому, фиксированную схему добавления префиксов с точкой?
Вам нужен псевдоним. Вы можете создать их вручную, но это не то, что вам действительно нужно: вы хотите псевдонимы, к которым имеют доступ ваши пользователи. В этом случае вам нужно запросить их, создав новый пост в категории store-requests форума. Почему? Чтобы процитировать вышеупомянутое:
Поскольку нет гарантии, что псевдоним будет уникальным, и потенциальные конфликты создают небольшие неудобства, стандартные псевдонимы снапа активируются только после простого публичного процесса рассмотрения.
Тот же процесс рассмотрения также обеспечивает, что любые стандартные команды, предоставленные снапом, либо названы в честь снапа, либо, когда они разные, проверены, чтобы убедиться, что псевдоним уместен в контексте приложения. Это помогает поддерживать разумное общее пространство имен для всех.
Ответ или решение
Для решения проблемы с именованием приложений в рамках одного snap, где вместо желаемого формата "snapname-appname" получается "snapname.appname", существует несколько возможностей, о которых следует упомянуть.
Понимание проблемы
Когда вы публикуете несколько приложений внутри одного snap, система автоматически добавляет префикс имени snap к имени каждого приложения, используя точку в качестве разделителя. Это может вызвать путаницу, особенно если ваши утилиты_cli имеют общее основание и вы хотите сохранить консистентное именование во всех пакетах, таких как .deb и .rpm. Использование дефиса "-" более распространено для утилит в стандартной среде Linux и облегчает понимание для пользователей.
Возможные решения
-
Использование алиасов:
Чтобы обойти проблему с префиксом, вы можете создать алиасы для ваших утилит с нужным именованием. Алиасы позволяют вам пользователям вызывать ваши программы с помощью желаемого формата. Для этого вы можете воспользоваться следующими шагами:- Создайте пост в категории store-requests форума Snapcraft и запросите создание алиасов. В этом запросе укажите, что вы желаете получить алиасы в формате "snapname-appname".
- Имейте в виду, что все алиасы проходят процесс общественного ревью. Это делается для обеспечения уникальности имен и предупреждения возможных конфликтов в будущем.
-
Используйте скрипты-обертки:
В качестве временной меры вы можете создать скрипты-обертки, которые будут запускать ваши CLI утилиты с нужными именами. Эти скрипты могут легко устанавливаться в каталог, который находится в пути поиска исполняемых файлов, и будут выглядеть аналогично:#!/bin/bash snapname.appname "$@"
Это решение не идеально, так как требует дополнительных манипуляций, но может быть полезным, пока вы ожидаете утверждения ваших алиасов.
-
Обновление документации:
Ваша документация должна ясно указывать на разницу между именами в snap и другими пакетами. Четко укажите, что для использования утилит в snap необходимо использовать формат с точкой, в то время как в других установках (например, .deb или .rpm) имена имеют желаемый вид с дефисом.
Заключение
Следуя приведенным рекомендациям, вы сможете достичь желаемого формата имен для ваших CLI утилит в Snapcraft. Использование алиасов представляется наилучшим способом решения данной проблемы, так как оно обеспечит легкость и единообразие в использовании ваших приложений как в snap, так и в других дистрибутивах. Также учитывайте, что создание поста в форуме требует времени, поэтому планируйте свои действия заранее.
Надеюсь, это поможет вам добиться желаемого результата и минимизировать путаницу для пользователей ваших утилит.