Hi Team,
Here is an example of the page I would like to download the Conan package from:
It would be handy if we had a link somewhere for each project ID to download the associated package.
Thanks,
Manish
Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.
If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!
Hi Team,
Here is an example of the page I would like to download the Conan package from:
It would be handy if we had a link somewhere for each project ID to download the associated package.
Thanks,
Manish
Hi team,
We're encountering a problem with the conan upload
command to our ProGet (2025) Conan remote.
When we try to force re-upload an existing package using --force
, we receive a several of 404 Client Error
messages from ProGet when uploading files like conan_export.tgz
, conan_sources.tgz
, and conanfile.py
. The command gives us a ConanException
.
So we see that ProGet reports that the package already exists (in the server so forcing an upload):
boost/1.88.0: Recipe 'boost/1.88.0#b471bc5106b868d250cc39fec7411f2e' already in server, forcing upload
...
boost/1.88.0: Package 'boost/1.88.0#b471bc5106b868d250cc39fec7411f2e:da39a3ee5e6b4b0d3255bfef95601890afd80709#a7577c828425a7737edc52feef1817ca' already in server, forcing upload
However, Conan fails to upload as ProGet returns 404 errors on the expected v2 file endpoints:
HttpRequest: put: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/boost/1.88.0/_/_/revisions/.../files/conan_export.tgz
WARN: network: 404 Client Error: Not Found
...
ERROR: Error uploading file: conan_export.tgz, '404 Client Error: Not Found'
This is using the --force
flag which should allow for overwriting files?
It might be the case that ProGet might be internally inconsistent? It knows about the recipe revision but the actual file blobs is missing, or is blocking us from overwriting with the uploads.
There is the possibility that it could be due to an earlier corrupted/incomplete upload, so could you confirm if ProGet should allow overwrites via Conan --force
? Also, is there a known issue exists where metadata is present but backing files are missing? Finally, is there a cleanup or repair process available on ProGet to fix recipe in these broken states?
Let me know if you need more details/logs.
Thanks,
Manish
By default the command operate in the local cache, but with the -r=remote argument it removes artifacts from the server.
Ref: https://docs.conan.io/2/reference/commands/remove.html
Hi @stevedennis,
Running conan remove freetype/2.13.2:* -r=ccdc-3rdparty-conan-2 -c -vvv
we get:
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v1/ping
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/search
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/0b9eabda69d299e0c26d9c8317ddd1621897aa07/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/2bc290d37f8ba2643b676474fd64176f8b8de109/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/2c78a73f698fca3c09a1748a63533228464ad95e/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/330feb85e7c7f73d79b8dcd7d66b0dfcb300d055/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/43faaf581cf6a121854a451651cf2ff235f19f7c/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/56ab506ea707052770ee3fe2c74d207e03eb913b/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/5a368093f9a03ee939b6113024e4e050e0b8ab85/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/824d26f8edc07cf9d12c6e3a7bcc11c9ce0005e9/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/8465556e8df301d7ad4d45939533bd110dc4fc9f/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/871fc4926cbe6ce3b4b4042931c0b98e1ed1553c/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/8fab62d98251e0c58e525e58a5ddbc9d03762335/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/bab1ebe447bc8c2837e705948cb15e08d1d7c49f/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/c47e9d1a66bc77b47abc78dfebcae9d0b554d34b/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/d87280ec3b4af24f27d50d5e0df28450bce31aea/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/e0458180222f4e39fcff2bfa680bfa6468ca7198/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/users/check_credentials
HttpRequest: delete: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/0b9eabda69d299e0c26d9c8317ddd1621897aa07/revisions/5af71bb11e7691ed2a1d95bf2156b5f8
With the -p
ie. conan remove freetype/2.13.2:* -p os=Linux -r=ccdc-3rdparty-conan-2 -c -vvv
we get:
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v1/ping
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/search
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/43faaf581cf6a121854a451651cf2ff235f19f7c/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/d87280ec3b4af24f27d50d5e0df28450bce31aea/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/e0458180222f4e39fcff2bfa680bfa6468ca7198/revisions
HttpRequest: get: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/users/check_credentials
HttpRequest: delete: https://proget.ccdc.cam.ac.uk/conan/ccdc-3rdparty-conan/v2/conans/freetype/2.13.2/_/_/revisions/012f2e384087877914dbac626c3978e2/packages/43faaf581cf6a121854a451651cf2ff235f19f7c/revisions/b698aa74ca56cfc1edeca40d1939a310
In both cases we get the same error:
Traceback (most recent call last):
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/cli/cli.py", line 193, in run
command.run(self._conan_api, args[0][1:])
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/cli/command.py", line 179, in run
info = self._method(conan_api, parser, *args)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/cli/commands/remove.py", line 119, in remove
conan_api.remove.package(pref, remote=remote)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/api/subapi/remove.py", line 50, in package
app.remote_manager.remove_packages([pref], remote)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/internal/rest/remote_manager.py", line 210, in remove_packages
return self._call_remote(remote, "remove_packages", prefs)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/internal/rest/remote_manager.py", line 269, in _call_remote
return self._auth_manager.call_rest_api_method(remote, method, *args, **kwargs)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/internal/rest/auth_manager.py", line 60, in call_rest_api_method
ret = getattr(rest_client, method_name)(*args, **kwargs)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/internal/rest/rest_client.py", line 81, in remove_packages
return self._get_api().remove_packages(prefs)
File "/mnt/f/conan2/venv/lib/python3.10/site-packages/conan/internal/rest/rest_client_v2.py", line 385, in remove_packages
raise get_exception_from_error(response.status_code)(response.text)
conan.internal.errors.RequestErrorException: expected revision after package id. [Remote: ccdc-3rdparty-conan-2]
Hi Team,
We've been evaluating the new Conan feed UI in the 2025 version of ProGet and had some feedback to provide.
Multiple rows for same version
In the previous version of the ProGet UI, each package version (e.g. zlib/1.3.1) was shown as a single row, with a summary of downloads. In the new UI, the same version appears multiple times, once per package variant:
This makes it harder to quickly view the overall usage or find the version we’re interested in.
Would it possible to show the older summary view? Perhaps have an option to toggle between the classic view?
Missing Package Metadata
In the new file level view:
each .tgz file is listed without any metadata e.g. OS/arch, options, profiles or complier settings etc.
This makes it difficult to know which package is which without downloading. Showing the metadata in the column would help make it easier to inspect.
There seems to be an issue with ProGet's Conan V2, where the conan remove
command fails when using the -p
profile filter.
example:
conan remove freetype/2.13.2:* -p os=Linux -r=ccdc-3rdparty-conan-2 --dry-run -c
gives:
Remove summary: ccdc-3rdparty-conan-2 freetype/2.13.2#012f2e384087877914dbac626c3978e2: Removed binaries: ['43faaf581cf6a121854a451651cf2ff235f19f7c', 'd87280ec3b4af24f27d50d5e0df28450bce31aea', 'e0458180222f4e39fcff2bfa680bfa6468ca7198']
Whereas the non dry-run:
conan remove freetype/2.13.2:* -p os=Linux -r=ccdc-3rdparty-conan-2 -c
gives us:
ERROR: expected revision after package id. [Remote: ccdc-3rdparty-conan-2]
We reached out to the Conan team, where they tested and confirmed it should be working fine from their end, see thread: https://github.com/conan-io/conan/issues/18553
Could you investigate and confirm if this is a known limitation or bug?
Thanks!
Hi @stevedennis,
You're right, they are blobs, however the directory structure itself is still has value and reflects the layout of the package e.g. name/version/export/package etc.
Here's a screenshot of what we see:
So even though some of the folder/files have hashed names, the overall structure with export/,
package/, and files like conaninfo.txt are quite useful when trying to inspect/debug packages.
Something like this in the ProGet web UI would be much appreciated.
Thanks!
Hi @stevedennis,
Thanks for the quick reply, just to clarify based on our setup:
When we view our Conan feed (e.g. 3rdparty-conan), the web UI lists packages and shows basic metadata like name, version, and description, but when we click into a package, the view is still quite limited as we only see usage instructions and the version number, but not the actual internal folder structure or uploaded files.
We’re hoping for something where you can browse the actual assets or files. A Conan package usually hosts files and directories creating a structure which is accessible via the CLI or Conan V2 API, but it’s not shown properly in the UI.
We would like the ability to search assets across directories using metadata via pgutils.
Our workflows rely heavily on pgutils to query assets, but we're currently limited to basic filtering. The ability to query based on asset metadata (e.g. custom fields, timestamps, tags, etc.) would be incredibly helpful.
We would like to request a feature for ProGet's web UI, this would be the ability to browse the directory structure under /v2/conans/ for Conan feeds.
Currently the Conan V2 API endpoint: https://proget.<domain>/v2/conans/ can be queried directly, so it would also be helpful to navigate the directory structure within the web interface.
This would help our Devs quickly inspect available Conan packages, verify uploads and better understand the structure of feeds without needing to interact with the API or run Conan CLI commands.
I have a custom github action that runs the commands explicitly:
pgutil sources add --name=Default --url=<myURL> --api-key=<myKey>
pgutil packages list --feed=<myFeed>
pgutil packages download --source=Default --feed=<myFeed> --package=7zip --version=latest
which results in:
Storing credentials. Note: Sensitive values are obfuscated but not securely encrypted.
<long list of available packages appended by latest version>
Downloading 7zip latest from <myFeed> feed...
Saving package to 7zip.24.9.0.nupkg...
Download complete (0 bytes)
a simple list shows the file is actually 0 bytes.
This happens for Mac/Windows/Linux github runners and self hosted runners.
When I run the above on my PC in powershell it downloads fine with a non-zero file size.
Is this to do with permissions, it's able to get the right version? Same thing happens with Assets.
The Api key has download permissions to the feed.
I'm Currently developing a custom GitHub action to download assets via pgutils as per documentation.
A challenge I've encountered is that when running "pgutil assets list", the output lacks metadata such as modification date/time. This is crucial to many of our workflows where we need to selectively download files in various folders based on the recency.
Is it possible if pgutils could implement a "sort by" flag that allows for sorting either alphabetically or by modification date in both ascending and descending order?
Please let me know if you would like any further information.