2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PKGBUILDでチェックサムを動的に取得する

Posted at

Arch LinuxでFileZillaのパッケージのPKGBUILDを書いてる時、ふとsha512sumsを動的に生成したくなったのでそのためのメモです。

やりたいこと

ネット上にチェックサムがあるのでそれを使用してsourceで取得したファイルを検証したい。

問題点

makepkgsha512sum関連の確認はsourceの取得前に行うのでsourcesha512のファイルを含めてcatという方法は使えない。
またsha512sumsを生成する関数は存在しない。

解決策

sha512sums配列の中に無理やりコマンドを入れてネット上のテキストファイルをcurlで取得する。

sha512sums=(
    "$(
        _url='https://dl2.cdn.filezilla-project.org/client/FileZilla_3.49.1.sha512?h=Is3dK9yMEdrdZ_TqQmoXJA&x=1597380525'
        _sum=$(curl -L "${_url}" | grep "FileZilla_${pkgver}_${machine_arch}-linux-gnu.tar.bz2" | awk '{print $1}')
        if [[ ! "${?}" = 0 ]] || [[ ! -v "_sum" ]]; then
            echo -n "SKIP"
        else
            echo -n "${_sum}"
        fi
    )"
)

curlが異常終了した際にはSKIPを返して検証をスキップする。
正常終了してしっかりと値を取得できた場合にのみ値を返して検証する。

$ makepke -sf
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1152  100  1152    0     0   1050      0  0:00:01  0:00:01 --:--:--  1050
==> パッケージを作成: filezilla-bin 3.49.1-1 (2020年08月14日 13時12分01秒)
==> ランタイムの依存関係を確認...
==> ビルドタイムの依存関係を確認...
==> ソースを取得...
  -> ダウンロード FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2...
--2020-08-14 13:12:01--  https://dl3.cdn.filezilla-project.org/client/FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2?h=B4YMUwovpvAXnVxTDxxU6w&x=1597378984
CA証明書 '/etc/ssl/certs/ca-certificates.crt' をロードしました
dl3.cdn.filezilla-project.org (dl3.cdn.filezilla-project.org) をDNSに問いあわせています... 2a01:4f8:1c0c:5ed7::1, 195.201.38.126
dl3.cdn.filezilla-project.org (dl3.cdn.filezilla-project.org)|2a01:4f8:1c0c:5ed7::1|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 9768095 (9.3M) [application/octet-stream]
`FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2.part' に保存中

FileZilla_3.49.1_x86_64-linux-g 100%[======================================================>]   9.32M  1.75MB/s 時間 5.8s     

2020-08-14 13:12:09 (1.59 MB/s) - `FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2.part' へ保存完了 [9768095/9768095]

==> source で sha512sums ファイルを検証...
    FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2 ... 成功
==> ソースを展開...
  -> FileZilla_3.49.1_x86_64-linux-gnu.tar.bz2 を bsdtar で展開
==> fakeroot 環境を開始します...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1152  100  1152    0     0   1327      0 --:--:-- --:--:-- --:--:--  1325
==> package() を開始...
==> インストールを整理...
  -> libtool ファイルを削除...
  -> 不要なファイルを削除...
  -> スタティックライブラリファイルを削除しています...
  -> バイナリとライブラリから不要なシンボルを削除...
  -> man と info ページを圧縮...
==> パッケージの問題をチェック...
==> パッケージを作成 "filezilla-bin"...
  -> .PKGINFO ファイルを生成...
  -> .BUILDINFO ファイルを生成...
  -> .MTREE ファイルを生成...
  -> パッケージの圧縮...
==> fakeroot 環境を終了。
==> 作成完了: filezilla-bin 3.49.1-1 (2020年08月14日 13時12分18秒)

パッケージの作成開始の前の段階でcurlでチェックサムが生成されています。
しっかりと「成功」と表示されて検証されているのがわかります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?