てっくらのーとは、触れた技術のメモと日常の記録が少し合わさった個人のサイトです。
AUR での aws-cli-v2 インストール
先日リリースされたaws-cli
のv2をArchlinux(のDockerコンテナ)にインストールしました。ユーザリポジトリ(AUR)にパッケージが存在しています。
$ yay -Syu --noconfirm aws-cli-v2
パッケージ (1) aws-cli-v2-2.0.0-3
合計インストール容量: 67.94 MiB
(1/1) インストール aws-cli-v2 [##################################################] 100%
ただこのパッケージには少し問題があり、インストール後のモジュールディレクトリが少々扱いづらいことと、同梱されるシンボリックリンクが機能していないことがあります。
$ pwd
/usr/share/aws-cli/v2
# 出来れば /usr/local/bin とか /usr/sbin がいいな…
$ ls -la /usr/share/aws-cli/v2/
合計 12
drwxr-xr-x 3 root root 4096 4月 12 14:08 .
drwxr-xr-x 3 root root 4096 4月 12 14:08 ..
drwxr-xr-x 4 root root 4096 4月 12 14:08 2.0.7
lrwxrwxrwx 1 root root 27 4月 12 14:07 current -> /usr/share/aws-cli/v2/2.0.0
# 2.0.0 ディレクトリは無いので current シンボリックリンクも使えない
実は AUR のパッケージの詳細ページで既にこの件についてレポートされており、メンテナとは異なる方が修正したPKGBUILD
ファイルをGistに提示されていました。そのため、このPKGBUILD
ファイルをもとに必要なパッケージをインストールした上でビルド(makepkg
)することでインストールパッケージが出来上がります。あとはpacman -U
あたりでインストールすることで問題は解決され目的は達成されます。
PKGBUILDの私的更新
というわけでパッケージを使用したいという目的は達成はされるのですが、
aws-cli
の最新版が使用したい- 上の修正された
PKGBUILD
だと2.0.4
であり少し古い
- 上の修正された
- そのための
PKGBUILD
ファイルが欲しいsed
あたりで編集してもよかったけど面倒くさそう…
という私のやんごとなき事情により上述のGistをforkさせていただき現在の最新版(2.0.7
)がインストール出来るようにしました。
$pkgver
を2.0.7
に変更sha256sums
が異なるため修正- 依存パッケージに
python-cryptography
を追加
としました。2点目までの修正を加えた上でビルドしたところ、コマンド実行時に以下のエラーが発生したので3点目を追加しています。
$ aws
Traceback (most recent call last):
File "/usr/sbin/aws", line 27, in <module>
sys.exit(main())
File "/usr/sbin/aws", line 23, in main
return awscli.clidriver.main()
File "/usr/lib/python3.8/site-packages/awscli/clidriver.py", line 90, in main
driver = create_clidriver()
File "/usr/lib/python3.8/site-packages/awscli/clidriver.py", line 99, in create_clidriver
load_plugins(session.full_config.get('plugins', {}),
File "/usr/lib/python3.8/site-packages/awscli/plugin.py", line 48, in load_plugins
_load_plugins(BUILTIN_PLUGINS, event_hooks)
File "/usr/lib/python3.8/site-packages/awscli/plugin.py", line 62, in _load_plugins
modules = _import_plugins(plugin_mapping)
File "/usr/lib/python3.8/site-packages/awscli/plugin.py", line 76, in _import_plugins
module = __import__(path, fromlist=[module])
File "/usr/lib/python3.8/site-packages/awscli/handlers.py", line 28, in <module>
from awscli.customizations.cloudfront import register as register_cloudfront
File "/usr/lib/python3.8/site-packages/awscli/customizations/cloudfront.py", line 17, in <module>
from cryptography.hazmat.backends import default_backend
ModuleNotFoundError: No module named 'cryptography'
これで目的は達成されました。
感じたこと
とまあ、書いてきた内容は私の土曜日の行動の一部始終となるのですが、改めてこのような巨大なリポジトリを最新の状態に保つことは非常に困難であり、それであるからこそ達成するために修正を提案する方たちの行動は尊いものだなあ、と感じることができました。
せっかくPKGBUILD
を作った(更新した)ので、リポジトリにコメントの一つでも登録しようかと思いましたが、
PKGBUILD
ファイルを最新版にしたのみのコメントでよいのか- どういうレベルでコメントを投下すべきか良く分からない
- そもそもforkして最新化する行動は適切だったのか良く分からない
- 本来はGistへのコメントでよかったのでは
- AURの空気感が良く分からない
と改めて考えると良く分からないことが多かったので怯えて一旦止めています。後押しされることも無いので中々踏ん切りが付かないですね。結構メジャーなパッケージだとも思うので、サッとリポジトリが更新されることを期待しつつ、動きが無かったらコメントを投げようかと思います。