Skip to content

Publishing with a crates.io mirror has a confusing error message #6722

Closed

Description

@ehuss

Problem
If one is using a mirror of crates.io, the error message you get when you attempt to publish is confusing. It says:

error: crates cannot be published to crates.io with dependencies sourced from other
registries either publish `bitflags` on crates.io or pull it into this repository
and specify it with a path and version
(crate `bitflags` is pulled from registry `https://github.com/rust-lang/crates.io-index`)

The last line clearly says that it is from "crates.io".

Steps

  1. Check out crates.io index (https://github.com/rust-lang/crates.io-index)
  2. Create a project with a dependency from crates.io.
  3. Add a .cargo/config file to set up the mirror:
[source.crates-io]
replace-with="mirror"

[source.mirror]
registry = "file:///path/to/crates.io-index"
  1. cargo publish --dry-run

Possible Solution(s)

  • Display a better error message, possibly instructing the user to disable the mirror.
  • Detect that a mirror is being used, and allow it to proceed. This seems like it could be tricky.

Notes

  • cargo 1.34.0-nightly (5c6aa46 2019-02-22)
  • Reported by user "calidion" on Discord #crates-io

Activity

  1. clearloop commented on May 23, 2019

    @clearloop

    Same problem, annotated ~/.cargo/config temporarily.

    # [source.crates-io]
    # registry = "https://github.com/rust-lang/crates.io-index"
    # replace-with = 'ustc'
    # [source.ustc]
    # registry = "git://mirrors.ustc.edu.cn/crates.io-index"
  2. kmod-midori commented on Dec 14, 2020

    @kmod-midori

    Connection to GitHub is basically trash for some ISPs in China, so a mirror is sometimes required. Having to comment out ~/.cargo/config every time I need to publish a crate can be annoying.

  3. ehuss commented on Dec 7, 2022

    @ehuss
    ContributorAuthor

    Closing since I believe this is now fixed via #10907. The new error message is:

    error: crates-io is replaced with non-remote-registry source registry `mirror`;
    include `--registry crates-io` to use crates.io
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions