httpリモートMD5ハッシュを使用する

httpリモートMD5ハッシュを使用する

md5sums機能を使いたい新しいものを追跡しない更新するたびにpkgver変数のみを変更すると、私のパッケージの新しいバージョンが構築されます。

md5許可される公式ウェブサイト私が興味のあるプロジェクトのソースアーカイブのダウンロード範囲classmd5sum

私が知る限り常にspanそれ自体がそのうちの2つの後ろにあります。どのように抽出できますか?class md5sumspanclass releasedatea hreftar.xz~からウェブサイト通常、コンピュータにプリインストールされているツールを呼び出すことができるシェルスクリプトを使用します。厳密に含まれる変数にインストールされます。

答え1

ページからハッシュを削除する場合は、次の方法が機能します。これはレイアウトが変更されると壊れる可能性があるため、ワンタイム使用のために作成する一種のシングルライナーです。

hashsum=$(curl http://php.net/downloads.php |
 grep -A1 -F ">php-${pkgver}.tar.xz<" |
 sed 1d |
 tr '>' '<' |
 cut -d '<' -f3 )

これが非常に柔軟でないアプローチである理由を理解するために、各ステップの結果を調べると便利です。

  • curlページを取得し、標準出力に送信します。 (curl利用可能な商品がなくてもwget -O -大丈夫です。)

    出力には以下が含まれます。

    ...
    <ul>
              <li>
          <a href="/get/php-7.0.7.tar.bz2/from/a/mirror">php-7.0.7.tar.bz2</a> <a href="/get/php-7.0.7.tar.bz2.asc/from/a/mirror">(sig)</a> [13,776Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">cc231de15146ca14a69610f695995ab8</span>
          <span class="sha256">474f2925c4782b94016e3afbb17b14ff9cc6f4fdb6f6e231b36a378bb18a3d1a</span>
                  </li>
              <li>
          <a href="/get/php-7.0.7.tar.gz/from/a/mirror">php-7.0.7.tar.gz</a> <a href="/get/php-7.0.7.tar.gz.asc/from/a/mirror">(sig)</a> [17,792Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">197ec66d134da8968ddd0b89f1cfac2a</span>
          <span class="sha256">66282ff4a9f88fe9607d9574e15bf335885b964245591a1740adb3f79c514a67</span>
                  </li>
              <li>
          <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
          <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
          <span class="sha256">9cc64a7459242c79c10e79d74feaf5bae3541f604966ceb600c3d2e8f5fe4794</span>
                  </li>
            <li>
        <a href="http://windows.php.net/download#php-7.0">
          Windows downloads
        </a>
      </li>
    </ul>
    ...
    
  • grep -A1パターン(必要なソースファイルの名前)を含む行とそれに続く1行を返します。

      <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
      <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
    
  • 2行目だけに興味があるので、sed 1d最初の行を削除します。 (md5sumであることを確認するには、代わりにmd5sumを使用してくださいgrep 'class="md5sum"'。)

      <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
    
  • このtrコマンドはすべてに>なります。このコマンド自体はあまり役に立ちませんが、次の行を使用できるものに<置き換えます。cut

      <span class="md5sum"<75f8d1693a470cefe2a50abd283eb291</span<
    
  • 最後に、これらのs(以前のsを含む)を区切り文字としてcut扱い、3番目の項目を抽出します。ハッシュ時:<>

    75f8d1693a470cefe2a50abd283eb291
    

関連情報