制作Linux下的一键安装包:从Hello, World开始

2023-06-30

Linux系统的应用程序通常需要在终端中使用命令行进行安装和部署,这使得用户感到有些困难,特别是对于不熟悉Linux命令的用户来说。因此,在Linux系统中,制作一键安装包可以让用户更方便地安装和部署应用程序。在本文中,我们将介绍如何使用Bash脚本制作一个简单的一键安装包。我们将编写一个Hello, World程序,并将其打包成一键安装包。

编写Hello, World程序

为了在Linux系统中制作一键安装包,我们首先需要有一个可执行程序。这里我们将编写一个Hello, World程序,并使用Go语言将其编译为适用于Linux的amd64可执行程序。

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

接下来,我们将其编译为Linux下的可执行文件:

go env -w GOARCH=amd64
go env -w GOOS=linux
go build

运行一下看看效果:

devzhi@devzhi:~/hello$ ls
hello  main.go
devzhi@devzhi:~/hello$ ./hello
Hello, World!

编写安装脚本

接下来,我们将编写一个Bash脚本,以便将Hello, World程序安装到系统中。在这个脚本中,我们将检查是否有root权限,并将可执行文件移动到/usr/local/bin目录下。

#!/bin/bash

# 检查是否有root权限
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install hello"
    exit 1
fi

# 将hello文件移动到/usr/local/bin目录下
cp -r ./hello /usr/local/bin/hello
echo "Installed hello to /usr/local/bin/hello"

运行一下看看效果:

devzhi@devzhi:~/hello$ sudo bash install.sh
Installed hello to /usr/local/bin/hello
devzhi@devzhi:~/hello$ hello
Hello, World!

合并安装脚本和可执行文件

现在,我们已经编写了Hello, World程序和安装脚本。但是,将它们作为两个文件发送到其他设备时稍显麻烦。为了解决这个问题,我们可以将它们合并为一个文件,并将其结构设为如下所示:

+----------------------+
|       shell脚本       |
+----------------------+
+----------------------+
|      二进制文件       |
+----------------------+

为了将这两个文件合并为一个文件,我们需要在安装脚本中添加一个特殊的行,然后使用cat命令将两个文件合并在一起:

#!/bin/bash

# 检查是否有root权限
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install hello"
    exit 1
fi

binStart=13
tail -n+$binStart $0 > /usr/local/bin/hello
echo "Installed hello to /usr/local/bin/hello"
exit 0

cat install.sh hello > install.bin

现在,我们只需要将install.bin文件发送到其他设备并执行它即可。

devzhi@devzhi:~/hello$ sudo bash install.bin
Installed hello to /usr/local/bin/hello

需要注意的是,第13行必须为空行,否则会报错。同时,我们使用了tail -n命令将另一个文件拆分出来,可以参考一下tail -n命令的关键介绍:

-n, --lines=[+]NUM output the last NUM lines, instead of the last 10; or use -n +NUM to output starting with line NUM

翻译一下:

-n,--lines=[+]NUM 选项表示输出最后 NUM 行,而不是最后 10 行;

或者使用 -n +NUM 选项从第 NUM 行开始输出。

结论

通过本文的介绍,我们学习了如何在Linux系统中制作一键安装包。我们从简单的Hello, World程序开始,使用Go语言编写程序并将其编译为适用于Linux的可执行文件。然后,我们编写了一个Bash脚本,以便将可执行文件安装到系统中。最后,我们将安装脚本和可执行文件合并为一个文件,以便在其他设备上安装程序。这些技能不仅可以应用于Hello, World程序,还可以轻松地将其他程序制作为一键安装包,也许您的程序有许多文件需要安装,您可以将其打包,然后追加到安装脚本后面,安装脚本再将其剥离、解压然后进行安装操作即可,赶紧试试吧!