Tag: ubuntu

如何在没有电缆的情况下(无头)使用Ubuntu 16.04设置Raspberry Pi 2/3

我正在研究一个机器人项目,该项目的核心是具有Ubuntu最小(无GUI)和Swift 3.0的Raspberry Pi。 普通Ubuntu的问题在于,它要求您具有监视器,键盘和鼠标。 所有这些都给您带来不便,我很乐意通过将其插入机器来完成所有操作。 可悲的是,这是不可能的。 经过一些试验,我已经能够实现这一目标。 接下来是这个强大的书呆子的故事。 步骤1:准备 获取Raspberry Pi 2或3,具有8Gb或更多内存(10类或更多)的SD存储卡,微型USB电缆(用于供电),以太网电缆和Wifi USB软件狗。 第2步:在SD卡上最少刷新Ubuntu 16.04服务器 从此处或此处下载Ubuntu服务器经典版。 这是Ubuntu服务器的一种风格,已从并非严格必需的所有内容中删除了它,因此它非常轻便。 现在,您必须刷新SD卡上的图像。 在网络上,您会发现很多多步骤命令行指南。 但这很疯狂,因为有一个很棒的应用程序,叫做Etcher.io,可以使流程变得异常简单,快速和安全。 下载Etcher应用程序(适用于所有平台),然后选择Ubuntu映像,SD卡(您必须将其插入计算机中)并进行刷新。 几分钟,它将完成并验证。 将SD卡放入RPi,您就可以摇滚了! 步骤3:将Rsh插入RPi 将新备份的SD卡插入RPi之后,请在RPi与路由器之间连接以太网电缆。 通过将Micro USB电缆连接到电源或计算机上,打开RPi。 请耐心等待几分钟,因为首次启动的时间比平时长。 然后打开路由器的仪表板,查看与以太网连接的设备。 您将看到设备主机名ubuntu-minimal 。 记下该设备的IP。 打开您的终端并输入: ssh ubuntu @ THE_IP_YOU_JUST_FOUND (密码ubuntu) 你应该在里面! 现在,您已通过网络连接到RPi。 唯一的问题是,您仍然需要通过以太网电缆将RPi保持与网络的连接。 但是,让我们解决这个问题。 步骤4:走向无线 首先,我们需要更新操作系统: sudo apt-get更新 sudo apt-get升级 安装wifi支持: sudo apt-get install wireless-tools wpasupplicant 现在重启。 […]

在Ubuntu 16.04上使用Swift 3.0控制Raspberry Pi 2/3 GPIO引脚

在这里,我们使用的是Raspberry Pi,配置了最低Ubuntu 16.04并安装了Swift 3.0。 现在,让我们使用Swift打开和关闭LED! 步骤1:了解GPIO引脚号 核心概念是板上并非所有可用的引脚都是GPIO(通用输入/输出)。 有些是电源,有些是接地,有些是其他东西 。 圆圈内的数字是图钉号 。 这些引脚中的一些与GPIO引脚匹配。 例如, 引脚7与GPIO4引脚匹配。 我们只能控制GPIO引脚,而不能控制其他引脚。 其他的用来给电路加电或做其他事情 。 步骤2:连接电路 我们想创建一个简单的电路,其中通过GPIO4(引脚7)打开LED。 因此,我们创建了一个简单的电路,如下所示: 步骤3:确保我们可以实际在GPIO引脚上设置值 WiringPi是一套从端子控制GPIO引脚的工具。 实际上,出于测试目的,这非常方便。 遗憾的是,这并不像安装deb包那么简单,但是我们需要获取源代码并进行构建。 在确保我们已经安装了一些编译依赖项之前,请执行以下操作: sudo apt-get install build-essential git-core 然后让我们构建WiringPi: 光盘〜 git clone git://git.drogon.net/wiringPi CD接线Pi 。/建立 现在,您可以通过读取所有Raspberry Pi引脚的状态来测试二进制文件是否已正确编译: gpio readall 应该打印这样的东西: 让我们将gpio二进制文件移到根级别,以使其更方便调用: 须藤cp gpio / gpio / usr / bin / 现在让我们设置引脚7 (wPi列中的数字) 作为输出并将其关闭,然后再打开,然后再次关闭: […]

服务器端Swift:制作机盖(3/6)

上周,我谈到了如何选择Perfect作为Canopy服务器的基础。 本周,我将讨论云提供商,Linux上的Swift,开发过程和部署。 什么是天篷? 现在输入swift run将运行您的服务器。 我建议您使用Xcode,但是要执行这种类型的swift package generate-xcodeproj ,您将获得一个Xcode项目,该项目将在您R时运行您的服务器。 在开发过程中,您需要在Mac上运行服务器应用程序的本地实例,并使您的应用程序与此相对应。 这大大减少了调试周期。 就像我在本系列的第1部分中所说的那样,如果您有一个用于客户端和服务器的项目,则可以共享代码并降低Rev-lock的严重性。 但是,您不可避免地要部署这些开发版本,并且使用rsync很容易: 该脚本将源与服务器同步,构建应用程序,然后要求systemd重新启动它。 在脚本中,我使用了foo ,在其中您可以将foo更改为.ssh/config服务器的名称。 下周我将讨论systemd和其他生产问题。 值得注意的是,使用最便宜的实例编译代码将花费很多时间。 也许有足够的理由升级您的实例,或者直接进入本地交叉编译,接下来我将讨论这些选项。 在某个时候,您将决定现在的时间:上线的时间! 生产似乎很可怕,但实际上您只需要做好准备。 此时,您需要进行大量练习,并且您会非常了解自己的应用及其代码,因此对自己有信心。 首先为您的用户配置密码,以便sudo要求输入密码(默认情况下, sudo AWS实例不提供密码) 您应该在本地或Docker Ubuntu实例上设置交叉编译,以便可以在本地构建应用程序,然后将其scp到您的服务器。 现在,您可以删除服务器上的Swift,并将远程软件包安装减少到最低限度。 Swift二进制文件需要一些内容,尤其是libicu和libcurl才能保留。 我发现由于SwiftPM团队做出了许多奇怪的决定,导致交叉编译不起作用:特别是#if os(Linux)在Package清单中不起作用,事实证明我的依赖关系图充满了此类声明。 我理解为什么有这些陈述: 这是一种语言功能 。 我不明白为什么苹果公司决定在Package.swift文件中不支持此语言功能 。 相反,他们打算强迫用户指定平台作为清单声明的一部分。 海事组织,这可能会使每个地方平台规范(即DSL每个子部分的每个子部分)肿,这将需要数年(基于当前进展),这意味着该功能将无法使用(因此强制#if os因为还没有其他选择)。 毕竟,#if os仍然更加灵活。 SwiftPM团队为什么要与这种语言作斗争 ? 你告诉我。 总而言之,我别无选择,只能使用Docker实例来构建我的Linux二进制文件,因为SwiftPM无法交叉编译我的依赖图。 幸运的是,Docker可以正常工作。 您可以使用简单的脚本在本地进行构建,使用scp二进制文件并调用systemctl restart foo来重新启动服务器应用程序。 请注意,指定–static-swift-stdlib进行swift build否则生成的二进制文件在未安装Swift的情况下将无法工作(严格来说,如果没有LD_PATH中的libswift.so和libFoundation.so ,它将无法工作)。 另外,不要忘记使用发行版优化( -c release […]

在DigitalOcean上部署Vapor Web应用程序

在Ubuntu上设置Web框架Vapor 本教程将引导您完成在Digital Ocean上设置Vapor应用程序的步骤。 本教程需要Unix / Linux命令的基本知识,并假定您使用macOS。 尽管本教程适用于Digital Ocean。 它可以应用于提供Ubuntu映像设置的任何VPS提供程序。 让我们开始吧。 DigitalOcean入门 请访问www.digitalocean.com 如果您还没有Digital Ocean帐户,请在此处注册。 拥有Digital Ocean帐户后,登录并进入Drops部分。 我们需要为我们的Vapor网站创建一个新的Droplet,为此,请单击右上角的Create Droplet按钮。 现在我们需要配置新的Droplet。 在发行版中,我们需要选择Ubuntu 14.04。 对于大小,我们可以选择最小的$ 5 / mo 。 这对于本教程或任何基本站点都应该很好。 如果需要更多服务器,则可以稍后升级Droplet。 在“ SSH密钥”部分,您可以为Droplet提供适用于您的机器的SSH密钥,这样就无需提供密码来登录Droplet。 您可以在此处找到有关如何为计算机生成SSH密钥的详细信息。 但是,对于本教程,为简单起见,我们将不提供任何内容。 最后,我们需要选择一个主机名,我将其命名为“ Vapor-Tutorial”,但是无论您喜欢哪种名称,都欢迎您使用。 连接到服务器 现在,我们已经设置了虚拟专用服务器或VPS。 我们需要连接到它,并设置Vapor。 为了连接到服务器。 如果您未提供SSH密钥,则我们需要它的IP地址和密码。 您可以从“ IP地址”列的“ Droplet”列表中获取服务器IP地址。 如果您不提供SSH密钥,那么您应该已经收到DigitalOcean的电子邮件,其中包含您的IP地址和密码详细信息。 现在我们有了需要连接的详细信息,我们现在可以SSH进入我们的服务器。 打开终端并输入 ssh root @ 将替换为服务器IP。 例如我的是ssh root@162.243.105.170。 可能会询问您是否要继续。 输入“是”。 如果提示您输入密码,请输入从DigitalOcean收到的ssh密码。 3.现在,我们已经通过SSH成功​​连接到服务器。 […]

Xcode Bots:为Linux构建命令行应用程序

苹果通过Xcode 9引入了XCS Bots,它使iOS开发人员能够以最小的努力在内置CI系统中维护其构建。 目前,XCS仅在Mac系统上运行,这意味着-应用只能针对Apple生态系统iOS,macOS,watchOS和tvOS的平台进行编译。 但是由于Swift是开源的,并且可以在Ubuntu等Linux发行版上运行,因此XCS缺乏为此类平台编译库和命令行应用程序的可能性。 Docker进行了救援。 Docker提供了强大的界面,可根据您的特定需求虚拟化您的构建基础架构。 Docker有点像虚拟机,但是它没有创建整个虚拟机,而是使用主机操作系统的内核,从而显着提高了性能并减小了映像的大小。 为了使用Xcode Bots构建应用程序,要在Linux发行版上运行,您首先必须创建一个具有Swift Toolchain功能的Linux映像。 如果您的目标系统上没有安装docker(= XCS的运行位置),请下载并安装Docker Desktop App。 下载适用于macOS的Docker Docker使用Dockerfile构建具有所有必需依赖项的映像。 幸运的是,Docker Hub已经提供了一个。 前往Docker Hub获取官方的Swift Dockerfile。 确保选择使用最低必需Swift版本的Dockerfile。 将其保存到您的SPM项目目录。 假设您已经配置了用于构建项目的Bot,请使用以下代码行添加一个新的post脚本。 如果您未创建一个,则可以按照本教程进行操作。 / usr / local / bin / docker build \ –no-cache \ -t swift:ubuntu \ -f路径/到/ Dockerfile“ $ {XCS_SOURCE_DIR} / your-git-folder-name” 生成映像后,现在就可以运行它,并提供您在上一个命令中创建的标签。 此外,在虚拟Docker容器中挂载主机系统的两个目录。 一个目录包含您的SPM项目,另一个目录包含您的项目的linux编译版本。 (注意:您必须使用绝对路径来挂载目录)。 将以下代码添加到Bot的发布脚本中。 / usr / […]

Ubuntu中的Worklight Studio 6.2.0.01不会创build.xcodeproj

我在Eclipse Luna和Ubuntu 14.04中使用Worklight Studio 6.2.0.01(也在Ubuntu 12.02和Eclipse Kepler中testing过)。 我已经按照以下步骤创build了一个iOS环境的混合应用程序: 创build一个Worklight项目 创build一个Worklight混合应用程序 新的Worklight环境(iPad) 以“ – >构build所有环境”运行 运行 – >在Worklight开发服务器上运行 Worklight和Server控制台中没有错误 问题:apps \ my-app \ ipad \ native内的本地文件夹仅包含2个文件夹,并且没有[project] .xcodeproj。 资源(空) 万维网 本地资源 – >资源(空)