自宅のラズパイにパッケージレジストリを追加しました。特にやりたかったのはnpmです
Nodeは本当にやれることが多く、グローバルインストールしておけばCLIツールとして色々使えたりもします。 作成したツール類やライブラリは単にパックしたアーカイブでローカルでインストールしても良いのですが、いくつかのプラットフォームで再利用する時に、可能であればこの手順は短縮したいところがありました。
npm
npmのレジストリとしてはverdaccioを導入しました。 Giteaの機能でも存在しているのですが、やや面倒そうなので独立して導入。
Unity Packageのセルフレジストリとしても推奨されており、Docker Imageがあるので導入がラクです。
ハマりポイントとしてはリバースプロキシ対応と権限対応でした。
まず、config.yaml
はURLをroot/verdaccio
としたかったのと、ファイルサイズを調整したかったので以下で調整できます。
url_prefix: "/verdaccio/"
max_body_size: 10000mb
次に権限対応。これはボリュームをホストに回しているものの、実行ユーザが非root(verdaccioってユーザになってる)ために書き込みができないなどのエラーが起こってしまうため。
まあ本来Docker Volumeに回すべきだろうけど、本当にローカルのライズパイなのでまあ問題ないだろう。
# dockerコンテナ内での対応
sudo docker exec --user root -it {container_id} sh
cd /
chown -R 10001:65533 verdaccio
exit
# ホストの対応
sudo chmod -R 777 data
sudo chmod -R 777 config
あとはクライアント側の対応。npmでレジストリに対してユーザ設定を追加する際、以下のようにしてアカウントを作成する
npm adduser --registry {url} --scope=@{scope_name}
これで@{scope_name}/foo
のようなパッケージ名に設定しておけば、以下のようなコマンドの時に自動的にローカル側のレジストリを取ってくれるようになります。
npm install @{scope}/foo
nuget
Nugetの方はGiteaの設定で上手く行きそうだったので、Giteaの機能を利用します。が、HTTPでの対応は廃止予定の模様、、
基本的に公式ドキュメントの通りでした
まず、以下のコマンドによりAppData\Roaming\NuGet\Nuget.Config
にリポジトリの設定を追加します
# フィード設定
dotnet nuget add source --name {source_name} --username {username} --password {password} https://gitea.example.com/api/packages/{owner}/nuget/index.json
で、以下のようにすればOK
dotnet nuget push --source {source_name} foo.1.0.0.nupkg
基本的にはVisual Studioでも自動で反映されてるので、これでローカルのフィードも取りに行けます。パッケージの削除とかはGitea経由からでもできます
いやー、これでちょっとしたツール類の落とし込みは楽になりますね。そこそこ上手く行ってよかった。