Я пытаюсь создать локальное зеркало репозитория ubuntu, используя метод aptly, и при публикации выдает ошибку «операция не разрешена». Вот что я делаю;
Я создал 3 зеркала
$ aptly mirror create -with-udebs xenial \
http://archive.ubuntu.com/ubuntu xenial main universe multiverse
$ aptly mirror create -with-udebs xenial-updates \
http://archive.ubuntu.com/ubuntu xenial-updates main universe multiverse
$ aptly mirror create -with-udebs xenial-security \
http://archive.ubuntu.com/ubuntu xenial-security main universe multiverse
$ aptly mirror update xenial
$ aptly mirror update xenial-updates
$ aptly mirror update xenial-security
создал 3 снимка
$ aptly snapshot create snap-xenial from mirror xenial
$ aptly snapshot create snap-xenial-updates from mirror xenial-updates
$ aptly snapshot create snap-xenial-security from mirror xenial-security
объединил их
$ aptly snapshot merge snap-merged snap-xenial snap-xenial-updates snap-xenial-security
и теперь я хочу опубликовать, и здесь я обнаружил ошибку
$ aptly publish snapshot -distribution=xenial snap-merged
Loading packages...
Generating metadata files and linking package files...
ERROR: unable to publish: unable to process packages: link /media/user/usbdrive/aplty/full/pool/00/6f/a3e766cc601510d78861ac2f15d2_0ad_0.0.20-1_amd64.deb /media/user/usbdrive/aplty/full/public/pool/main/0/0ad/0ad_0.0.20-1_amd64.deb: operation not permitted
Мой файл .aptly.conf выглядит так
{
"rootDir": "/media/user/usbdrive/aplty/full",
"downloadConcurrency": 4,
"downloadSpeedLimit": 0,
"architectures": ["amd64"],
"dependencyFollowSuggests": false,
"dependencyFollowRecommends": false,
"dependencyFollowAllVariants": false,
"dependencyFollowSource": false,
"dependencyVerboseResolve": false,
"gpgDisableSign": false,
"gpgDisableVerify": false,
"gpgProvider": "gpg",
"downloadSourcePackages": false,
"skipLegacyPool": true,
"ppaDistributorID": "ubuntu",
"ppaCodename": "",
"skipContentsPublishing": false,
"FileSystemPublishEndpoints": {},
"S3PublishEndpoints": {},
"SwiftPublishEndpoints": {}
}
Я посмотрел разрешения в каталогах, и они выглядят нормально
$ ls -al /media/user/usbdrive/aplty/full/public/pool/main/0/0ad/
total 64
drwxr-xr-x 2 user user 32768 Aug 19 20:29 .
drwxr-xr-x 3 user user 32768 Aug 19 20:29 ..
Я использую ubuntu 16.04, и я использую внешний диск с разделом fat32 поверх thunderbolt3 для хранения файлов. И я знаю, что в пути допущена опечатка, но не думаю, что это проблема.
Я бы очень признателен за несколько указаний о том, что я делаю неправильно или как еще это отладить. Спасибо.
aptly по умолчанию использует жесткие ссылки при публикации репозиториев: он жестко связывает файлы в пуле пакетов (кэш для всех файлов пакетов) с расположением в каталоге public/
.
FAT32 не поддерживает жесткие ссылки, поэтому публикация завершается с ошибкой. Я бы рекомендовал использовать файловую систему Unix для большей эффективности, но если это невозможно, вы можете настроить другая конечная точка публикации с участием copy
link, который копирует файлы (поэтому каждый опубликованный репозиторий занимает дополнительное место), но он должен работать в FAT32.