はじめに
ラズパイ(Ubuntu 20.10)に Vapor をいれたけど動かなかった話です。。。
もうわからない。。。でもとりあえず Swift は動きました!!
ラズパイは 3B です。
Ubuntu 20.10インストール
Ubuntu 20.10 のインストールはこれを参考。
Swiftインストール
Swift のインストールは下記を参考にしました。
参考:Raspberry Pi で Swift を使えるようにする【Swift 5】
1 2 3 4 5 6 7 8 9 10 11 |
# これやらないとE: Unable to locate packageとか出ることがある $ sudo apt update # OSにあったやつインストール $ curl -s https://packagecloud.io/install/repositories/swift-arm/release/script.deb.sh | sudo os=Ubuntu dist=bionic bash # Swiftインストール $ sudo apt-get install swift5 # 下記のエラー出たのでインストール $ sudo apt install libncurses5 |
swift --version をやると下記エラーが出たので libncurses5 もインストールしました。(参考:stackoverflow)
swift: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
これで swift が使えるようになりました!
色々ハマったとこ
最初は下記参考にやってましたがラズパイの場合はたぶんダメっぽい。。。
x84 とか arm とかプロセッサのアーキテクチャを気にしないといけなくてラズパイの場合は arm なので下記ダウンロードサイトから取得するのはダメ!(たぶん)
ふだん Xcode でしか使わないから気にしたことがなかった。。。
上記のコマンドみたいに OS にあった swift-arm をインストールしないといけないのですが Ubuntu 20.10(groovy)はなく下記参考に新しそうな 18.04 LTS(bionic)を指定してインストールしました。
Vaporインストール
Vapor のインストールは下記を参考にしました。色々依存ライブラリのインストールでエラーになったのでところどころ書き換えています。。。
参考:Installing Vapor (and Swift) on the Raspberry Pi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# libssl-devのインストール $ sudo apt install libssl-dev # vapor/toolboxのtar.gzファイルダウンロード $ wget https://github.com/vapor/toolbox/archive/18.0.0-beta.27.tar.gz # tar.gzファイルの解凍 $ tar zxvf 18.0.0-beta.27.tar.gz # 解凍したディレクトリに移動 $ cd toolbox-18.0.0-beta.27 # Package.swift編集 $ vim Package.swift |
Package.swift を下記のように修正します。
1 2 3 4 5 6 7 8 |
// 省略 dependencies: [ .package(url: "https://github.com/apple/swift-nio.git", .branch("main")), // <- ここ修正 .package(url: "https://github.com/jpsim/Yams.git", .branch("master")), .package(url: "https://github.com/tanner0101/mustache.git", .branch("master")), .package(url: "https://github.com/vapor/console-kit.git", from: Version(4, 0, 0, prereleaseIdentifiers: ["beta", "2.3"])), // <-ここ修正 ], // 省略 |
まだエラーが出るので修正。
1 2 |
# exec.swift編集 $ vim Sources/VaporToolbox/exec.swift |
exec.swift を下記のように修正します。
1 2 3 4 5 6 7 8 9 |
// 省略 func exec(_ program: String, _ arguments: [String]) throws { var pid = pid_t() var fileActions: posix_spawn_file_actions_t! // ここ?を!に修正 // 省略 let argv = ([program] + arguments).map { $0.withCString(strdup)! // !追加 } //省略 |
ツールをビルドして /usr/local/bin に置きます。
1 2 3 4 5 |
# ツールのビルド $ swift build -c release # /usr/local/binにコピー $ sudo cp .build/release/vapor /usr/local/bin/vapor |
これで vapor コマンドができるようになりました!
Vaporプロジェクト作成
いよいよ Vapor プロジェクト作成していきます!
1 2 3 4 5 6 |
# 作成時に色々いわれるので設定しておきます $ git config --global user.email "you@example.com" $ git config --global user.name "Your Name" # プロジェクト作成 $ vapor new VaporTest |
Fluent と Leaf はとりあえず no にしときました。
できた!!
Vaporビルド
ビルドしてみます。
1 2 3 4 5 6 7 8 |
# ディレクトリに移動 $ cd VaporTest # LinuxMain.swift必要らしいので記載 $ echo -e "import XCTest\n@testable import AppTests\n\nXCTMain([\n testCase(AppTests.allTests),\n])" | tee Tests/LinuxMain.swift # ビルド $ vapor build |
Trace/breakpoint trap (core dumped)
こうなりました。。。
swift build するとパッケージのインストールでエラーになってたので Package.swift を修正します。
1 2 3 4 |
// swift-tools-version:5.1 // ここ // 省略 .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0-beta.3.15"), // ここ // 省略 |
swift build すると。。。
パッケージのインストール後動かなくなりました。。。3 時間位放置してみましたがコマンドも受け付けず強制終了させました。。。
おわりに
プロジェクトの作成はできたけど結局動かなかった。。。
何がいけないんだろう。。。
Vapor は動きませんでしたが Swift は使えるようになりました!
参考
- Installing Vapor (and Swift) on the Raspberry Pi
- Raspberry Pi で Swift を使えるようにする【Swift 5】
- Swift Programming Ubuntu 20.10 Getting-Started Guide
- Swift on Ubuntu Server 18.04 & 20.04 LTS
コメント
[…] 前回 Ubuntu 20.10 で Vapor を入れようとして失敗したので今回は下記のサイトと色々バージョンを合わせるため Ubuntu 18.04.5 LTS でやってみました。 […]