Для POSIX $'...'
, известный как экранирование ANSI -C, не определен.
Вместо этого вы можете использовать$(printf '\t')
:
column -t -s "$(printf '\t')"
$(printf '\011')
можно использовать, так как011
(восьмеричное представление десятичного числа 9 )— код ANSI для символа горизонтальной табуляции:
column -t -s "$(printf '\011')"
Тем не менее, см. ниже комментарий Стефана Шазеласа о том, почему это может быть несовместимо между версиями оболочки.
Если вы хотите напрямую распространять среди своих пользователей, обычно просто предоставляете исходники в .tar.gz
файле. Пользователь извлекает его и запускает ./configure && make && sudo make install DESTDIR=/usr/local
или что-то подобное, что вы задокументировали.
Разница между созданием установщика Windows/MacOS и тем, что я только что сказал, заключается в распространении исходных текстов и двоичных файлов. Вы можете развернуть двоичные файлы, если хотите.
Если вместо этого вы хотите развернуть пакет arch, deb или rpm, рассмотрите возможность использования cpack
. Это особенно полезно, если вы уже работаете с cmake
. Просто добавьте несколько команд в конец вашего CMakeLists.txt
, и cpack
будет использовать команды install
, которые вы уже написали, для сборки архива в выбранном вами формате. Существует множество генераторов , поддерживающих упомянутые вами форматы и многое другое.
Следующий вопрос, который вы задали, касается того, как развернуть этот установщик. Для этого нет простого ответа на дистрибутив cross -. Но эквивалент Windows/macos будет использовать магазины Windows/Apple, и я не думаю, что вы пошли по этому пути, поэтому вы уже находитесь в «эквивалентном» состоянии. Похоже, вас больше интересует прямое развертывание, а не отправка через издателя.
Если для вас важно, чтобы ваши пользователи обновлялись, вы можете:
/etc/apt/sources.list.d/myrepo.list
с первоначальной прямой -загрузкой *.deb
и сохраните свой собственный архив (и сделайте то же самое для других дистрибутивов ). Я использую для этого reprepro
. Наконец, я полагаю, что snaps
, appimage
или flatpak
также являются альтернативами.