Skip to main content

Aptly - менеджер apt репозиториев

Aptly allows you to mirror remote repositories, manage local package repositories, take snapshots, pull new versions of packages along with dependencies, publish as Debian repository.

You can try it right now for free, aptly is available both as CLI tool and HTTP REST service.

Official site https://www.aptly.info

Подготовка gpg ключа

Можно и без ключа (Trusted: yes), но лучше не надо.

cat >gpg-script <<EOF
%echo Generating a OpenPGP key
Key-Type: rsa
Key-Length: 4096
Name-Real: mixa3607
Name-Comment: gfx906 apt repo key
Name-Email: 30209772+mixa3607@users.noreply.github.com
Expire-Date: 20360601T000000
%commit
%echo done
EOF
gpg --batch --generate-key gpg-script
rm gpg-script
gpg --list-secret-keys --keyid-format LONG

Если нужно экспортировать ключ то это делается как

gpg --export-secret-keys '<keyid>' > ./exported-key.key
...
gpg --import ./exported-key.key

Создаём репозиторий

aptly repo create \
-comment="AMD ROCm for gfx906 https://github.com/mixa3607/ML-gfx906" \
-component="main" \
-distribution="$(. /etc/os-release && echo "$VERSION_CODENAME")" \
rocm-gfx906

Публикуем на s3

Сам S3 должен быть сконфигурирован под public read

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::apt-gfx906/*"
]
},
...
]
}

Далее нужно прописать для aptly настройки

~/.aptly.conf
{
...
"S3PublishEndpoints": {
"s3-gfx906": {
"region": "none",
"bucket": "apt-gfx906",
"endpoint": "https://s3.test.com",
"awsAccessKeyID": "<AccessAccessAccessAccessAccess>",
"awsSecretAccessKey": "<SecretSecretSecretSecretSecretSecret>",
"awsSessionToken": "",
"prefix": "",
"acl": "public-read",
"storageClass": "",
"encryptionMethod": "",
"plusWorkaround": false,
"disableMultiDel": false,
"forceSigV2": false,
"debug": false
}
},
...
}

Публикуем и проверяем:

$ aptly publish repo -architectures=amd64 rocm-gfx906 s3:s3-gfx906:ubuntu
$ aptly publish list
Published repositories:
* s3:s3-gfx906:ubuntu/noble [amd64] publishes {main: [rocm-gfx906]: AMD ROCm for gfx906 https://github.com/mixa3607/ML-gfx906}

Выгружаем gpg pub key:

$ gpg --export --armor > ./gpg
$ # manual upload or with cli

Добавляем пакеты

aptly repo add rocm-gfx906 *.deb

Список пакетов

aptly repo show -with-packages rocm-gfx906

Удаляем пакеты

Удалть ВСЕ пакеты:

aptly repo remove rocm-gfx906 'Name (% *)'

Снепшотим стейт и пушим

aptly snapshot create 20260802001858 from repo rocm-gfx906
aptly snapshot show 20260802001858
aptly snapshot list

aptly publish snapshot 20260802001858 s3:s3-gfx906:ubuntu

See also