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

时间:2018-09-16 19:59:07

标签: github

我刚刚创建了我的第一个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代码的评论也将受到赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

默认情况下,它将使用755模式,但是如果需要其他功能,可以使用-m选项覆盖它。

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

答案 1 :(得分:1)

  1. 您说:“我首先想到的是有人下载文件后,没有文件被标记为可执行文件吗?” git允许您将文件标记为可执行文件并保留权限。在执行git commit -a -m 'Some changes';git push之前,只需在文件上运行chmod +x

  2. 当前,您的所有文件都位于目录的顶层。这看起来有点杂乱无章。最好有目录并组织事物。如果您查看专业组织,则它们具有doc/scr/目录,或者至少是项目的顶级模块名称目录,其中包含子模块。

    当用户下载zip文件并提取所有内容时,他们会看到什么?在提取文件的目录中遍布大量文件。因此,在项目中包含目录有助于最大程度地减少混乱。

    我拥有的某些存储库也遵循相同的规定-一切都在顶层。但是我没有改变,因为我已经在Ask Ask Ubuntu答案中写了说明,所以回去尝试找出要更改的答案太有问题了。

  3. 具有安装脚本。不必为用户写太多指令,这件事可以为他们和您节省时间。

  4. 弄清楚如何使用developmaster分支。您可以在master中保留工作版本,并在develop中进行更改。这样,用户即可使用有效的代码,而您不必担心代码被破坏和用户不满意。

  5. 您的README.md是裸露的。添加一些有用的信息。特别是,概述了作为项目依赖项所必需的东西,特别是未安装在默认Ubuntu系统上的命令(这通常是您的项目通常针对的命令)。