Dockerfile 内でコンテナの時刻を変数として流用し、年に対応した rpmパッケージ の GPG署名 をインストールするで試験した内容の続きとなります。
http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021
: OKhttp://rpms.famillecollet.com/RPM-GPG-KEY-remi2022
: Not Found.
remiリポジトリのGPG署名が2022年版が存在しないので、条件分岐で2021を最大値とするように処理を書いてみました。
検証
# date
2022年 1月 11日 火曜日 20:42:53 JST
今回の検証環境はこのような表示がされる CentOS の日本語版の環境。
# NOWYEAR=$(sudo date | sudo awk 'END{print $1}' | sudo sed -e 's/年//g') && [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} && echo ${ALTERYEAR}
2021
早速完成したワンライナーですが、このようになりました。
説明
わりと複雑になってしまったので順番に読んでいきます。
NOWYEAR=$(sudo date | sudo awk 'END{print $1}' | sudo sed -e 's/年//g') \ # date コマンドの結果から、 awk でスペース区切り1つ目の値(2022年) を抽出し、 `sed -e` で`年`を落とす。結果、`2022`が得られる
&& [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} \ # 三項演算子的な処理。 {コマンドとして実行可能な式} && {前述式が true の場合の処理} || {前述式が false の場合の処理} 。今回は得られた現在の年が2021年以降ならば2021を変数に代入、そうでなければ現在の年を変数代入
&& echo ${ALTERYEAR} # 上の三項演算子的な処理で代入された変数の値を echo
こんな感じです。
RUN MELUSINE=$(sudo date | sudo awk 'END{print $6}') \
&& [ ${NOWYEAR} -gt 2021 ] && ALTERYEAR=2021 || ALTERYEAR=${NOWYEAR} \
&& rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-8.rpm \
&& rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi${ALTERYEAR}
今回はこんな感じで http://rpms.famillecollet.com/RPM-GPG-KEY-remi2021
か、 http://rpms.famillecollet.com/RPM-GPG-KEY-remi{2020以下}
かを読み込む分岐に。