如何确保安装脚本安装的二进制文件是可执行的?

问题描述 投票:1回答:2

我刚刚创建了我的第一个github存储库:https://github.com/WinEunuuchs2Unix/eyesome

我上传了所有文件,但担心最终用户下载后如何复制它们。

这是他们将运行的copy-files脚本(删节):

!/bin/sh

if [ $(id -u) != 0 ]; then # root powers needed to call this script
    echo >&2 $0 must be called with sudo powers
    exit 1
fi

cp -v ./eyesome.sh              /usr/local/bin/
cp -v ./eyesome-cfg.sh          /usr/local/bin/
cp -v ./eyesome-src.sh          /usr/local/bin/
cp -v ./eyesome-sun.sh          /usr/local/bin/
cp -v ./wake-eyesome.sh         /usr/local/bin/
cp -v ./start-eyesome           /etc/cron.d/
cp -v ./daily-eyesome-sun       /etc/cron.daily/
cp -v ./systemd-wake-eyesome    /lib/systemd/system-sleep/

exit 0

我的第一个想法是在有人下载文件之后没有人被标记为可执行文件?

copy-files脚本有一个“卸载”部分,它处于非活动状态。这是一种常见的礼貌吗?

关于进一步阅读以改进我的github和改进我的copy-files代码的评论也值得赞赏。

github
2个回答
1
投票
  1. 你说:“我的第一个想法是,在有人下载文件后,没有人被标记为可执行文件?” git允许您标记可执行文件并保留权限。在做git commit -a -m 'Some changes';git push之前,只需在文件上运行chmod +x
  2. 目前,您的所有文件都位于目录的顶级。这看起来有点乱,杂乱无章。最好有目录和组织事物。如果你看专业组织,他们有doc/scr/目录,或至少项目的顶级模块名称目录,里面有子模块。 当用户下载zip文件并提取所有内容时,他们会看到什么?大量文件在他们提取它的目录中进行了搜索。因此,在项目中安装目录有助于最大限度地减少混乱。 我做的一些存储库也遵循同样的事情 - 一切都在顶级。但是我没有改变它,因为我已经在我的Ask Ubuntu答案中写了指令,所以回过头来试图弄清楚改变的答案是有问题的。
  3. 有一个安装脚本。而不是向用户写太多指令,这一件事可以为他们和你节省时间。
  4. 弄清楚如何使用developmaster分支。您可以在master中保留一个工作版本并处理develop中的更改。这样,用户就可以使用正常工作的代码,并且您不会因为代码被破坏而用户不满意而感到害怕。
  5. 你的README.md是裸露的。添加一些有用的信息。特别是,概述了作为项目依赖项所必需的东西,特别是默认的Ubuntu系统上没有安装的命令(这是您的项目通常倾向于的目标)。

1
投票

而不是使用cp,看看install,例如

install ./eyesome.sh /usr/local/bin/

默认情况下,它将使用模式755,但如果您需要不同的东西,可以使用-m选项覆盖它。

下一个合乎逻辑的步骤可能是为您要定位的操作系统构建适当的包。

© www.soinside.com 2019 - 2024. All rights reserved.