如何在Linux上使用Git安装软件

您是否被告知要“克隆回购并构建它”,并且不知道下一步该做什么?我们将向您展示如何在Linux上运行GitHub上的程序,即使您是初学者。

组成计算机程序的指令被编写、编辑并保存在文本文件中。然后,一个称为编译器的程序处理这些文件。这将生成程序的可执行版本。指令的文本文件称为源代码。可以在计算机上实际运行的程序版本称为二进制或可执行文件。

这是事件的简化版本,但它描绘了一幅正确的(如果是概括的)图景。在实践中,您会发现该模型的各种变体。有时,其他程序会生成文本文件。其他时候,源代码在解释器中运行,不需要编译,依此类推。

然而,所有软件项目的一个普遍事实是:源代码文件是皇冠上的明珠,需要同样仔细地照顾它们。

版本控制程序

项目中的所有源代码文件都称为代码库。大型项目通常有许多开发人员在代码库上工作。每一次代码更改都必须被跟踪和识别。如果需要,更改必须是可逆的。如果不同的开发人员对同一源代码文件进行更改,则必须合并他们的编辑。

因此,称为版本控制系统的软件程序的存在使代码库更改的管理变得更容易也就不足为奇了。版本控制系统在代码库中保存每个文件的所有以前版本,并且记录、评论和跟踪每个更改。

一个叫Git的小东西

Linux内核的创建者Linus Torvalds开发了一个名为Git的版本控制程序来管理Linux内核代码库。它现在是世界上采用最广泛的版本控制软件。从字面上看,有数百万人在使用它。

使用Git,项目的代码库存储在存储库中。除了位于开发人员计算机上的本地存储库,或者可能位于网络上的中央服务器上的本地存储库之外,拥有一个异地或远程存储库是一种很好的做法。

这就是GitHub发挥作用的地方。

GitHub

GitHub就是因为Git的成功而诞生的。创始人们看到了对安全托管的远程git存储库的新兴需求。他们启动了一项业务,提供云平台,允许开发团队托管远程存储库。截至2019年4月,GitHub托管了超过1亿个存储库。

如果一个应用程序是一个开源项目,那么它托管在GitHub上的可能性非常高。还有其他可用的存储库平台,如BitBucket和GitLab,但GitHub在开源存储库中占有最大份额。

存储库剖析

GitHub存储库由文件夹组成,其中包含非常重要的源代码文件等文件。通常,存储库中还有许多其他类型的文件。可能有文档文件、手册页、软件许可证文件、构建说明和shell脚本文件。对于存储库应该或必须包含的内容没有规定,但有约定。

如果你熟悉一个厨房,你可以在任何一个厨房里导航。存储库也是如此。一旦您了解了约定,您就知道到哪里去寻找您需要的东西。

那么,如何在您的计算机上获取存储库的副本,以及如何将程序构建为二进制可执行文件呢?

自述文件

传统做法是在存储库中包含自述文件。它可能被称为自述文件、自述文件或自述文件。它的扩展名可能是“.md”,或者根本没有扩展名。

让我们来看看Atom编辑器的GitHub存储库。您会看到一长串文件夹和文件。向下滚动,您会看到readme.md文件的内容。

GitHub自动将自述文件的内容放在存储库的首页。如果自述文件的扩展名为“.md”,则它将包含Markdown Markup Language。这允许开发人员使用样式元素,如字体、项目符号和图像。

通常,自述文件包含一些部分,告诉您项目是关于什么的、类型许可证是什么、由谁维护项目、如何参与以及如何构建和运行应用程序。

如果它没有列出实际的构建说明,它会告诉您在哪里可以找到此信息。其他对构建应用程序有用的信息,如所需的构建工具和其他依赖项,可能会在此处列出,或者链接可能会将您带到该信息。

盒子储存库

我们的任务是克隆BOXS存储库,然后构建BOXS应用程序。

存储库遵循与Atom存储库相同的布局。这里有一个文件夹和文件列表,下面是自述文件的内容。它遵循存储库的标准布局,但它是一个较小的项目,因此文件夹和文件较少。

自述文件也更简短。它有一个叫做“发展”的部分。在该部分中有一个标题为“从源代码构建”的链接。如果我们沿着那个链接走,我们应该能找到我们需要的信息。

通常需要一些轻量级的侦察工作来导航存储库并找到您需要的信息,但这并不困难。仔细阅读存储库页面上的所有内容。有时,信息在那里,但可能不会突出显示。

“依附性”(The Dependency)

“从源代码构建”页面有一个名为“在Linux上构建”的部分,这正是我们需要的。它说我们必须安装C编译器、Bison和Flex。

构建说明说要发出make命令,所以我们也需要make。

构建此应用程序所需的工具是C编译器、Bison、Flex、Make和Git(将存储库克隆到您的计算机)。

本文针对运行Ubuntu、Fedora和Manjaro Linux发行版的计算机进行了研究。没有一个发行版安装了所有这些工具--每个工具上都必须安装一些东西。

安装工具集

Ubuntu必须安装Git、Flex、Bison和Make。以下是命令:

sudo apt-get install gitsudo apt-get install flexsudo apt-get install bisonsudo apt-get install make

软呢帽必须安装Flex、Bison和Make。以下是命令:

sudo dnf install flexsudo dnf install bisonsudo dnf install make

Manjaro必须安装GCC编译器、FlexTM和Bison。以下是命令:

sudo pacman -Syu gccsudo pacman -Syu flexsudo pacman -Syu bison

克隆存储库

每个GitHub存储库都有一个与Git一起使用的特定网址,用于将存储库克隆到您的计算机上。在盒子存储库的主页上,有一个标记为“克隆或下载”的绿色按钮。

单击该按钮查看网址。这是我们在克隆存储库时必须传递给git命令的地址。

切换到我们希望将存储库克隆到的目录,然后使用此命令。如果您的终端窗口支持,您可以将网址复制并粘贴到命令中。按Ctrl+Shift+V粘贴到GNOME终端窗口。

Git克隆远程存储库,并在您的计算机上创建一个本地存储库。它告诉我们它正在克隆到一个名为“box”的目录中。

Box目录是在发出git命令的目录中创建的。如果我们切换到Box目录并查看内容,我们看到的文件和文件夹列表与我们在GitHub页面上看到的相同。

太棒了!我们已经成功地将源代码和其他文件克隆到我们的计算机上。现在,我们需要构建应用程序。

构建应用程序

要构建应用程序,我们必须遵循GitHub存储库上的说明。有时,我们会运行特定的shell文件,而运行其他shell文件的时候会运行make。我们遵循的构建指令告诉我们要运行make。

Make_Utility从Makefile读取并执行一组指令。这些说明告诉make如何编译程序并将其链接在一起。Make将指令传递给编译器和其他生成工具。

我们被告知要使用的命令将调用make两次。第一个调用make会构建应用程序,第二个调用会运行一套测试。

构建说明告诉我们要使用的命令是:

make && make test

在终端窗口中,多行输出快速滚动。马上,您将返回到命令提示符。

部署箱式应用程序

应用程序已经构建好了,我们有了一个可执行的二进制文件。现在,我们必须将二进制文件复制到/usr/bin/目录。这允许外壳在我们尝试使用它时找到它。

对于某些应用程序,这可能是您需要做的全部工作。在其他情况下,您可能需要将其他文件(如手册页和配置文件)复制到文件系统中的位置。后者是我们必须对新应用程序执行的操作,因为它在构建说明中。

使用sudo运行这些命令。第一个命令将手册页复制到man1目录:

sudo cp doc/boxes.1 /usr/share/man/man1

接下来,将全局配置文件复制到/usr/share/中的目录:

sudo cp boxes-config /usr/share/boxes

最后,将二进制文件复制到/usr/bin:

sudo cp src/boxes /usr/bin

测试盒应用程序

让我们看看是不是都能用!尝试打开BOCKS命令的手册页。

man boxes

那太鼓舞人心了!您会看到一个手册页,告诉您如何使用BOCKS命令。

按“q”退出MAN系统,并尝试使用BOOKS命令。

echo How-To Geek | boxes

我们得到的回应是:

考虑到您所做的所有工作,这可能看起来有点平淡无奇,但本练习的重点是引导您完成从GitHub调出存储库并构建应用程序的过程。

Box命令允许您将通过管道传送到它的文本换行到各种框架中。其中一些可以用作源代码文件中的注释。例如,上面的格式可以作为C源代码文件中的注释。其他的纯粹是装饰性的。d(设计)选项允许您选择框架的样式。

echo How-To Geek | boxes -d whirlyecho How-To Geek | boxes -d c-cmt2

有一长串图案可供你选择。要全部查看它们,请使用以下命令:

boxes -l | less

构建完成

从源代码构建的步骤通常很简单:

查看存储库上的构建说明。 检查您是否安装了所需的工具,并安装任何缺少的工具。 将存储库克隆到您的计算机。 遵循构建说明,通常只需输入make即可。 将文件复制到所需位置。

如果构建说明中有不清楚的步骤,请查看该项目是否有可以向其发送问题的论坛或社区。如果应用程序有一个网站,他们可能会有一个“联系我们”页面。维护盒子项目的开发人员在盒子网站的“关于”页面上有他的电子邮件。这对他来说是一个慷慨的姿态,也是更广泛的开放源码社区的典型。

相关文章