背景
Ubuntuの環境構築を行う際、パッケージの更新やインストールを行いますが、環境によってはインターネット接続が制限されるケースもあると思います。そのような場合、Debianパッケージのローカルリポジトリを構築して、そこからパッケージをインストールしたくなりますが、その際の手順を調べたので記事にまとめてみます。本記事では aptly というDebianリポジトリ管理ツールを扱います。
環境
- Ubuntu 18.04 (Amazon EC2 Instance)
実施手順
まずaptlyをインストールします。
# sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-keys ED75B5A4483DA07C
# apt-get update
# apt-get install aptly
ローカルミラーを作成し、リモートミラーコンテンツと同期します。筆者の環境では2時間くらいかかりました。
# gpg --no-default-keyring --keyring trustedkeys.gpg --key-server keys.gnupg.net --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32
# aptly mirror create -architectures=amd64 ubuntu-mirror http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ trusty
# aptly mirror update ubuntu-mirror
出力
Downloading http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/InRelease...
Downloading http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/Release...
Downloading http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg...
gpgv: Signature made Thu May 8 14:20:33 2014 UTC
gpgv: using DSA key 40976EAF437D05B5
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>"
gpgv: Signature made Thu May 8 14:20:33 2014 UTC
gpgv: using RSA key 3B4FE6ACC0B21F32
gpgv: Good signature from "Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>"
Downloading & parsing package files...
Downloading http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/main/binary-amd64/Packages.bz2...
Downloading http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/dists/trusty/restricted/binary-amd64/Packages.bz2...
(...略...)
スナップショットを作成します。
# aptly snapshot create ubuntu-mirror-20210304 from mirror ubuntu-mirror
リポジトリコンテンツを格納するS3バケットを作成し、静的ウェブサイトホスティングを有効にします。作成したS3バケットに対してpublishします。
# export AWS_ACCESS_KEY_ID="xxxxxxxx" AWS_SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxx"
# aptly publish snapshot --skip-signing ubuntu-mirror-20210304 s3:your-repo-bucket:
~/.aptly.conf
ファイルの "S3PublishEndpoints"
を以下のように編集します。
~/.aptly.conf
{
"rootDir": "/root/.aptly",
(...略...)
"S3PublishEndpoints": {
"your-repo-bucket": {
"region": "ap-northeast-1",
"bucket": "your-repo-bucket",
"acl": "public-read"
}
},
"SwiftPublishEndpoints": {}
}
2回目以降のpublishには以下のコマンドを実行します。
# aptly publish --skip-signing switch trusty s3:your-repo-bucket: ubuntu-mirror-20210304
動作確認
構築したリポジトリからインストールするよう /etc/apt/sources.list
を編集します。
/etc/apt/sources.list
deb http://your-repo-bucket.s3-website-ap-northeast-1.amazonaws.com/ trusty main
例として apache2
をインストールしてみます。
# apt-get update --allow-insecure-repositories --allow-unauthenticated
# apt-get install apache2
筆者の環境では無事インストール出来ました。