Gocenter поддерживает несколько версий модулей от 1.13 во все предыдущие версии, такие как 1.12. Начиная с GO 1.13, Client Go проверяет компоненты Pseudo-версии против метаданных управления версией. Согласно Выпуск ноты он проверяет конкретно:
- Префикс версии должен иметь форму VX.0.0 или вытекать из тега на предком именованной ревизии или полученный из тегов, который включает в себя сборные метаданные на названную ревизию.
- Строка даты должна соответствовать отметку UTC пересмотра.
- Короткое название ревизии должно использовать одинаковое количество символов, что и что будет генерировать команду GO. (Для хэшей SHA-1 как используется GIT, 12-значный префикс.)
Сервер Checksum также обеспечивает эти правила при обслуживании содержимого контрольной суммы.
Перейдите до версий до 1.13 Не соблюдайте эти правила о псевдо-версиях компонентов. Это означает, что, хотя пользователи не должны были генерировать псевдо версий вручную, они могли бы иметь одинаковое фиксирующее хеш, используемое в нескольких псевдо-версиях без каких-либо проблем.
GOCENTER стремится к версии версии (мы поддерживаем все версии Go Module еще до 1.13), при этом одинаковые пользователи опыта были использованы при разрешении зависимостей от источника. Это заставляет его также подавать несколько псевдо-версий для одного и того же HASHH HASH, если пользователи запрашивают их. Это вызывает проблемы для прохождения 1.13 пользователей, когда неверная псевдо-версия является последней доступной для модуля в Gocenter. После разрешения модуля из прокси-сервера Client Go попытается извлечь контент контрольной суммы с сервера Checksum, который обеспечивает правила компонента PSEUDO-версий и отказывается от служения содержимого контрольной суммы.
→ go get golang.org/x/crypto go: finding golang.org/x/crypto latest verifying golang.org/x/crypto@v0.0.0-20191227151644-53104e6ec876/go.mod: golang.org/x/crypto@v0.0.0-20191227151644-53104e6ec876/go.mod: reading https://gocenter.io/sumdb/sum.golang.org/lookup/golang.org/x/crypto@v0.0.0-20191227151644-53104e6ec876: 404 Not Found
Чтобы полностью совместимы с другими услугами в экосистеме, нам нужно прекратить обслуживание этих неверных псевдо-версий для пользователей 1.13 во время перенаправления GO 1.12 пользователей в правые псевдо-версий.
Для достижения этого нам нужно изменить метаданные, которые мы служим на запросе .info протокола загрузки модулей, когда запрошена неверная псевдо-версия для перенаправления пользователей в правую псевдо-версию.
→ curl https://gocenter.io/github.com/creack/pty/@v/v0.0.0-00000000000000-8ab47f72e854.info { "Name":"v1.1.10-0.20191209115840-8ab47f72e854", "ShortName":"v1.1.10-0.20191209115840-8ab47f72e854", "Version":"v1.1.10-0.20191209115840-8ab47f72e854", "Time":"2020-01-09T06:29:04Z" }%
Это перенаправление будет полностью прозрачно для пользователей Go 1.12, и они получит правильную псевдо-версию в их файлах GO.MOD:
→ go get -v github.com/creack/pty@v0.0.0-00000000000000-8ab47f72e854 go: finding github.com/creack/pty v0.0.0-00000000000000-8ab47f72e854 Fetching https://gocenter.io/github.com/creack/pty/@v/v0.0.0-00000000000000-8ab47f72e854.info Fetching https://gocenter.io/github.com/creack/pty/@v/v1.1.10-0.20191209115840-8ab47f72e854.mod go: downloading github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 Fetching https://gocenter.io/github.com/creack/pty/@v/v1.1.10-0.20191209115840-8ab47f72e854.zip go: extracting github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 → cat go.mod module jfrog.com/eliom/module go 1.12 require github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 // indirect
Для GO 1.13 пользователей The Client завершит неудачу по разрешению зависимостей и отображает правильную псевдо-версию Gocenter, хочет служить вместо этого:
→ go get -v github.com/creack/pty@v0.0.0-00000000000000-8ab47f72e854 go: finding github.com v0.0.0-00000000000000-8ab47f72e854 go: finding github.com/creack v0.0.0-00000000000000-8ab47f72e854 go: finding github.com/creack/pty v0.0.0-00000000000000-8ab47f72e854 go get github.com/creack/pty@v0.0.0-00000000000000-8ab47f72e854: github.com/creack/pty@v0.0.0-00000000000000-8ab47f72e854: proxy returned info for version v1.1.10-0.20191209115840-8ab47f72e854 instead of requested version
Перейти 1.13 Пользователям нужно будет исправить команду GO GET, чтобы указать на правильную псевдорегующую версию или использовать рекомендуемую GO, получить подход к псевдо-версиям, используя только HASH HASH в качестве версии и делегированием к прокси-серверу, чтобы перевести это на фактическое Псевдо-версия:
→ go get -v github.com/creack/pty@8ab47f72e854 go: finding github.com 8ab47f72e854 go: finding github.com/creack/pty 8ab47f72e854 go: finding github.com/creack 8ab47f72e854 go: downloading github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 go: extracting github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 github.com/creack/pty → cat go.mod module jfrog.com/eliom/module go 1.13 require github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 // indirect
Кроме того, если пользователь не уверен в том, что псевдо версии, объявленные в их файлах Go.mod, они могут полагаться на Gocenter, чтобы обеспечить фактические псевдо-версий для своих зависимостей, удаляя все компоненты Pseudo-Version, кроме фиксации HASH, а затем запуска Команда GO GET.
→ cat go.mod module jfrog.com/eliom/module go 1.13 require github.com/creack/pty 8ab47f72e854 → go get -v go: finding github.com/creack/pty 8ab47f72e854 go: downloading github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 go: extracting github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854 jfrog.com/eliom/module → cat go.mod module jfrog.com/eliom/module go 1.13 require github.com/creack/pty v1.1.10-0.20191209115840-8ab47f72e854
Цель Gocenter — продолжать поддерживать модульные версии до 1.13, и, конечно, мы будем продолжать поддерживать модульные версии в 1.13, а также 1.14 в ближайшем будущем. Чтобы узнать больше о Gocenter.io , Оформить заказ наш Вики и присоединяйтесь к нам на Слабый На канале #gocenter.
Оригинал: «https://dev.to/elioengcomp_41/gocenter-1-12-and-1-13-incorrect-pseudo-versions-fix-o4g»