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

Github 如何确保安装脚本安装的二进制文件是可执行的?,github,Github,我刚刚创建了我的第一个github存储库: 我已经上传了所有的文件,但我担心最终用户在下载后会如何复制它们 以下是它们将运行的复制文件脚本(节略): /垃圾箱/垃圾箱 如果[$(id-u)!=0];然后#root powers需要调用此脚本 echo>&2$0必须使用sudo权限调用 出口1 fi cp-v./eyesome.sh/usr/local/bin/ cp-v./eyesome-cfg.sh/usr/local/bin/ cp-v./eyesome-src.sh/usr/local/b

我刚刚创建了我的第一个github存储库:

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

以下是它们将运行的
复制文件
脚本(节略):

/垃圾箱/垃圾箱
如果[$(id-u)!=0];然后#root powers需要调用此脚本
echo>&2$0必须使用sudo权限调用
出口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 eysome sun/etc/cron.daily/
cp-v./systemd-awke-eyome/lib/systemd/system-sleep/
出口0
我的第一个想法是在有人下载文件后,没有一个文件被标记为可执行文件

copy files
脚本中有一个非活动的“卸载”部分。这是一种常见的礼貌吗


对于进一步阅读以改进我的
github
和完善我的
复制文件
代码的评论,我们也表示感谢。

请看一下,而不是使用
cp

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

下一个合乎逻辑的步骤可能是为目标操作系统构建一个合适的包

  • 您会说:“我的第一个想法是,在有人下载文件后,没有一个文件被标记为可执行文件?”
    git
    允许您将文件标记为可执行文件并保留权限。在做
    git提交-a-m“一些更改”之前;git push
    只需在文件上运行
    chmod+x

  • 目前,您的所有文件都在顶级目录中。这看起来有点杂乱无章。最好有目录和组织东西。如果你看专业组织,他们有
    doc/
    scr/
    目录,或者至少是项目的顶级模块名目录,其中包含子模块

    当用户下载zip文件并提取所有内容时,他们会看到什么?数以吨计的文件散布在他们提取文件的目录中。因此,在项目中使用目录有助于减少混乱

    我拥有的一些存储库也遵循同样的原则——一切都是顶级的。但我没有改变这一点,因为我已经在Ask Ubuntu的答案中写了说明,所以回去尝试找出改变的答案太麻烦了

  • 有一个安装脚本。这一点可以为用户和你节省时间,而不是给用户写太多的指令

  • 了解如何使用
    开发
    分支。您可以在
    master
    中保留工作版本,并在
    develope
    中进行更改。这样,用户就有了工作代码,而你也不会因为代码被破坏和用户不满意而感到害怕

  • 您的
    README.md
    是空的。添加一些有用的信息。特别是,概述作为项目依赖项所必需的内容,特别是未安装在默认Ubuntu系统上的命令(这是您的项目通常的目标)


  • 一般来说,这种问题在这里是离题的。它主要是基于观点的,太广泛了,还可能需要我们离开现场去完全理解它。但我会这样解释:“我如何确保我的安装脚本安装的二进制文件成为可执行文件?”以后,请尽量停留在中定义的主题上。我应该提到安装到Ubuntu/Debian。程序都在bash中。使用Bash数组,所以我认为版本必须大于等于4。版本4已经快十年了,所以我没有测试它。@wineunuchs2unix,这些和我的推荐有什么关系?Ubuntu附带了。我对你的回答部分做出了回应:“下一个合乎逻辑的步骤可能是为你的目标操作系统构建一个合适的软件包。”我已经实现了你的
    安装
    技术,我认为它很有魅力。我还将脚本名称从
    copy files
    更改为
    install.sh
    ,并添加了额外功能:感谢您的帮助:)要摘要的内容。您能否提供指向示例“安装脚本”的链接?我还没有创建任何文档。使用.GIF等@wineunuchs2unix需要一周的时间。不太好,至少不太好。在我发现debian打包更适合我的需要之前,我曾经使用过一个。我现在做的事情可能会和以前大不相同。Chris回答中建议的
    install
    命令应该是脚本本身的一部分。权限,检查是否安装了某些命令,等等-所有这些都可以在安装脚本中完成。我刚刚根据Chris的建议将新版本的
    copy files
    上传到github。我想创建一个
    .deb
    会是一个很大的工作?尤其是因为程序不依赖于库之类的东西。感谢您指出不要使用lks指示符安装脚本,并选择更健壮的工具。@wineunuchs2unix,视情况而定。对于shell脚本,制作一个
    .deb
    是一项工作,但是如果你做得好,你可以在不到一个小时内制作一个。对于Python,有一些方法可以使其自动化。谢谢。我将四处寻找GUI或CLI脚本,以自动化为<10个文件到4个目录创建.deb脚本的过程。
    install ./eyesome.sh /usr/local/bin/