Я создал простой пакет, используя это руководство, но я не могу запустить скрипт внутри него.
Существует папка с именем mypack, которая включает в себя /usr/bin/myscript.sh с некоторой командой в ней (предположим, что она просто перекликается с сообщением типа «Hello World») и папкой с именем DEBIAN с control с этим текстом внутри:
Package: mypack
Version: 1.0-1
Maintainer: Alex
Architecture: all
Section: misc
Description: echo me
Я построил и установил его с помощью dpkg-deb --build mypack; dpkg -i mypack.deb, как говорится в руководстве.
Наконец, когда я захотел запустить скрипт сценария, чтобы убедиться, что он работает, я не мог. Я попытался:
myscript (возвращает myscript: command not found) myscript.sh (возвращает bash: /usr/bin/myscript.sh: Permission denied) sudo myscript.sh (возвращает sudo: myscript.sh: command not found) mypack myscript и mypack myscript.sh (оба возвращают mypack: command not found ])Как я могу его выполнить, так что это действительно работает или мне не хватает некоторых важных шагов, которые не позволяют запустить сценарий?
Ваш скрипт не установлен как исполняемый;
У вас есть два варианта:
При создании пакета убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в вашем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shOR ...
При создании пакета , убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в своем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shДля некоторых моих вещей я использую оба метода не , чтобы убедиться, что он задает все как исполняемые. Иногда это приводит к головной боли, но лучше убедиться, чем убедиться. По крайней мере, на мой взгляд.
Что касается того, что сценарий не может быть выполнен как myscript, это потому, что myscript и myscript.sh являются ИЛИ ... .
Если вы этого хотите, выполните следующие действия в своем .postinst скрипте для вашего пакета:
ln -s /usr/bin/myscript.sh /usr/bin/myscript
... и затем предположим, что вы исправить проблему с исполняемым битом, он должен «просто работать» для обеих версий, которые вы пытались, как myscript.sh, так и myscript.
ИЛИ ... Правильный способ сделать это - это просто упаковать сценарий как myscript и не включать расширение оболочки. Затем вы должны включить строку shebang в начале (#!), указывающую на использование интерпретатора. Поскольку .sh может быть чем угодно. Затем настройте пакет, чтобы установить myscript. Как сказал муру, вам следует избегать ссылок на ваш пост, но вам решать, что вы хотите сделать. Есть много убедитесь, что способы достижения вашей цели, но не очень строгое руководство в документации для упаковки.
Ваш скрипт не установлен как исполняемый;
У вас есть два варианта:
При создании пакета убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в вашем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shOR ...
При создании пакета , убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в своем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shДля некоторых моих вещей я использую оба метода не , чтобы убедиться, что он задает все как исполняемые. Иногда это приводит к головной боли, но лучше убедиться, чем убедиться. По крайней мере, на мой взгляд.
Что касается того, что сценарий не может быть выполнен как myscript, это потому, что myscript и myscript.sh являются ИЛИ ... .
Если вы этого хотите, выполните следующие действия в своем .postinst скрипте для вашего пакета:
ln -s /usr/bin/myscript.sh /usr/bin/myscript
... и затем предположим, что вы исправить проблему с исполняемым битом, он должен «просто работать» для обеих версий, которые вы пытались, как myscript.sh, так и myscript.
ИЛИ ... Правильный способ сделать это - это просто упаковать сценарий как myscript и не включать расширение оболочки. Затем вы должны включить строку shebang в начале (#!), указывающую на использование интерпретатора. Поскольку .sh может быть чем угодно. Затем настройте пакет, чтобы установить myscript. Как сказал муру, вам следует избегать ссылок на ваш пост, но вам решать, что вы хотите сделать. Есть много убедитесь, что способы достижения вашей цели, но не очень строгое руководство в документации для упаковки.
Ваш скрипт не установлен как исполняемый;
У вас есть два варианта:
При создании пакета убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в вашем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shOR ...
При создании пакета , убедитесь, что ваш скрипт имеет исполняемый бит, установленный перед созданием пакета, запустив его в своем рабочем каталоге. Перед созданием пакета: chmod +x /path/to/script.shДля некоторых моих вещей я использую оба метода не , чтобы убедиться, что он задает все как исполняемые. Иногда это приводит к головной боли, но лучше убедиться, чем убедиться. По крайней мере, на мой взгляд.
Что касается того, что сценарий не может быть выполнен как myscript, это потому, что myscript и myscript.sh являются ИЛИ ... .
Если вы этого хотите, выполните следующие действия в своем .postinst скрипте для вашего пакета:
ln -s /usr/bin/myscript.sh /usr/bin/myscript
... и затем предположим, что вы исправить проблему с исполняемым битом, он должен «просто работать» для обеих версий, которые вы пытались, как myscript.sh, так и myscript.
ИЛИ ... Правильный способ сделать это - это просто упаковать сценарий как myscript и не включать расширение оболочки. Затем вы должны включить строку shebang в начале (#!), указывающую на использование интерпретатора. Поскольку .sh может быть чем угодно. Затем настройте пакет, чтобы установить myscript. Как сказал муру, вам следует избегать ссылок на ваш пост, но вам решать, что вы хотите сделать. Есть много убедитесь, что способы достижения вашей цели, но не очень строгое руководство в документации для упаковки.