你是否被告知要“克隆回购并构建它”,却不知道下一步该怎么办?我们将向您展示如何让GitHub上的程序在Linux上运行,即使您是初学者。
组成计算机程序的指令被编写、编辑并保存在文本文件中。然后一个叫做编译器的程序处理这些文件。这将生成程序的可执行版本。指令的文本文件称为源代码。实际上可以在计算机上运行的程序版本称为二进制或可执行文件。
这是事件的一个简化版本,但它描绘了一个正确的,如果概括的图片。在实践中,你会发现这个模型有各种各样的变化。有时,其他程序会生成文本文件。其他时候,源代码在解释器中运行,不需要编译,等等。
然而,在所有软件项目中,一个普遍的事实是:源代码文件是王冠上的宝石,它们需要同样小心地加以照顾。
项目中的所有源代码文件都称为代码库。大型项目通常有许多开发人员在代码库上工作。每一个代码更改都必须被跟踪和识别。如果需要,更改必须是可逆的。如果不同的开发人员对同一源代码文件进行更改,则必须合并他们的编辑。
因此,毫不奇怪,称为版本控制系统的软件程序的存在使得对代码库的更改的管理更容易。版本控制系统保存代码库中每个文件的所有以前版本,并且记录、评论和跟踪每个更改。
Linux内核的创建者linustorvalds开发了一个名为Git的版本控制程序来管理Linux内核的代码库。它现在是世界上使用最广泛的版本控制软件。有数以百万计的人在用它。
使用Git,项目的代码库存储在存储库中。除了位于开发人员计算机上的本地存储库,也许还有位于网络中央服务器上的本地存储库之外,最好有一个非现场或远程存储库。
这就是GitHub的用武之地。
GitHub是git成功的结果。创始人们看到了对安全托管的远程git存储库的需求。他们推出了一项提供云平台的业务,允许开发团队托管远程存储库。截至2019年4月,GitHub拥有超过1亿个存储库。
如果一个应用程序是一个开源项目,那么它被托管在GitHub上的可能性非常大。还有其他可用的存储库平台,如BitBucket和GitLab,但GitHub在开放源代码存储库中占有最大份额。
GitHub存储库由包含诸如所有重要源代码文件之类的文件的文件夹组成。通常,存储库中还有许多其他类型的文件。可能有文档文件、手册页、软件许可证文件、构建说明和shell脚本文件。没有关于存储库应该或必须包含什么的规则,但是有一些约定。
如果你熟悉一个厨房,你就可以在任何一个厨房导航。存储库也是如此。一旦你了解了惯例,你就知道去哪里找到你需要的东西。
那么,如何在计算机上获得存储库的副本,以及如何将程序构建成二进制可执行文件?
传统的做法是在存储库中包含自述文件。它可能被称为自述、自述或自述。它可能有扩展名“.md”,或者根本没有扩展名。
让我们看看Atom编辑器的GitHub存储库。你会看到一长串的文件夹和文件。向下滚动,您将看到自述文件.md文件。
GitHub会自动将自述文件的内容放在存储库的首页上。如果自述文件有“.md”扩展名,它将包含标记标记语言。这允许开发人员使用样式元素,例如字体、项目符号和图像。
通常,自述文件有几个部分可以告诉您项目是关于什么的、类型许可证是什么、谁维护项目、如何参与以及如何构建和运行应用程序。
如果它没有列出实际的构建指令,它将告诉您在哪里可以找到这些信息。其他对构建应用程序有用的信息,如所需的构建工具和其他依赖项,可能会在此处列出,或者可以通过链接找到这些信息。
我们的任务是克隆box存储库,然后构建box应用程序。
存储库遵循与Atom相同的布局。有一个文件夹和文件列表,下面是自述文件的内容。它遵循存储库的标准布局,但它是一个较小的项目,因此文件夹和文件较少。
自述文件也更简短。它有一个叫做“开发”的部分,在这个部分有一个链接,名为“从源代码构建”。如果我们遵循这个链接,我们应该找到我们需要的信息。
通常需要一些轻量级的侦探来导航存储库并找到所需的信息,但这并不困难。仔细阅读存储库页面上的所有内容。有时,信息就在那里,但可能不会显著地显示出来。
“buildingfromsource”页面有一个叫做“buildingonlinux”的部分,这正是我们需要的。它说我们必须安装一个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 bison sudo apt-get install makeFedora必须安装Flex、Bison和make。以下是命令:
sudo dnf install flexsudo dnf install bison sudo dnf install makeManjaro必须安装GCC编译器、Flex和Bison。以下是命令:
sudo pacman -Syu gccsudo pacman -Syu flex sudo pacman -Syu bison每个GitHub存储库都有一个特定的web地址,与Git一起用于将存储库克隆到您的计算机上。在Box存储库的主页上,有一个绿色按钮,标记为“克隆或下载”
单击按钮查看网址。这是克隆存储库时必须传递给git命令的地址。
切换到要将存储库克隆到的目录,然后使用此命令。如果终端窗口支持,您可以将网址复制并粘贴到命令中。按Ctrl+Shift+V以粘贴到GNOME终端窗口中。
Git克隆远程存储库并在您的计算机上创建一个本地存储库。它告诉我们它正在克隆到一个名为“box”的目录中
boxes目录是在发出git命令的目录中创建的。如果我们切换到boxes目录并查看其内容,就会看到与GitHub页面上相同的文件和文件夹列表。
太好了!我们已经成功地将源代码和其他文件克隆到了我们的计算机上。现在,我们需要构建应用程序。
要构建应用程序,我们必须遵循GitHub存储库上的说明。有时,我们会运行一个特定的shell文件,其他的我们会运行make。我们遵循的构建说明告诉我们运行make。
make实用程序从makefile读取并执行一组指令。这些指令告诉make如何编译程序并将其链接在一起。make将指令传递给编译器和其他构建工具。
我们被告知要使用的命令将调用make两次。第一个调用生成应用程序,第二个调用运行一组测试。
生成指令告诉我们要使用的命令是:
make && make test许多行输出在终端窗口中快速滚动。大约一分钟后,您将返回到命令提示符。
应用程序已经构建,我们有一个可执行的二进制文件。我们现在必须将二进制文件复制到/usr/bin/目录。这允许shell在我们尝试使用它时找到它。
对于某些应用程序,这可能是您所要做的全部。在其他情况下,可能需要将其他文件(如手册页和配置文件)复制到文件系统中的位置。后者是我们必须对新应用程序执行的操作,因为它在构建说明中。
使用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让我们看看是否一切正常!尝试打开boxes命令的手册页。
man boxes真令人鼓舞!您会看到一个手册页,告诉您如何使用box命令。
按“Q”退出man系统,并尝试使用BOXS命令。
echo How-To Geek | boxes我们得到的答复是:
考虑到您所付出的所有努力,这似乎有点不令人满意,但本练习的重点是引导您从GitHub中提取存储库并构建应用程序。
boxes命令允许您将通过管道传输到它的文本包装到各种各样的框架中。其中一些可以用作源代码文件中的注释。例如,上面的格式可以作为C源代码文件中的注释。其他的纯粹是装饰性的。-d(设计)选项允许您选择框架的样式。
echo How-To Geek | boxes -d whirly echo How-To Geek | boxes -d c-cmt2有一长串的设计供你选择。要全部查看,请使用以下命令:
boxes -l | less从源代码构建的步骤通常很简单:
如果构建说明中有不清楚的步骤,请查看项目是否有可以向其发送问题的论坛或社区。如果应用程序有一个网站,他们可能会有一个“联系我们”页面。维护boxes项目的开发人员在boxes网站的“About”页面上有他的电子邮件。对他来说,这是一个慷慨的姿态,也是更广泛的开源社区的典型。
... 本课程将带您了解Linux的“如何”和“为什么”,并展示各种Linux命令的工作方式、它们的真实结构以及记住这些命令的正确方法。 ...
...交的第一步是“暂存”新的或更新的项。看看上面的输出如何让你知道有“未老化”的变化?您可以使用以下命令暂存目录中的所有内容(递归,即包括子文件夹及其文件): ...
...统上运行这些游戏仍然很困难(如果不是不可能的话)。使用Wine以及Wine前端PlayOnLinux的游戏增强了这种广泛的兼容性。随着Linux游戏的兴起,游戏中对gamepad的支持也越来越多。 ...
...。但它可能不会设置为备份系统的所有重要部分。此外,使用默认工具可能会导致备份比需要的更大、效率更低。 ...
...更多的特性。了解更多关于Bash-on-Windows的信息,从您应该如何以及为什么安装它,到您可能不知道的隐藏特性。 ...
...自夸拥有丰富的插件库,但它确实包含了人们在Notepad++上使用的大部分功能。其中包括文本标记、选项卡中的文件和查找/替换。 ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
为您的电视和电影收藏设计终极媒体服务器可能是一项挑战。你应该使用什么硬件,你应该安装什么操作系统,你应该运行什么样的软件? ...