conan remove¶
$ conan remove -h
usage: conan remove [-h] [-v [V]] [-cc CORE_CONF] [-f FORMAT]
[--out-file OUT_FILE] [-c] [-p PACKAGE_QUERY] [-r REMOTE]
[-l LIST] [--lru LRU] [--dry-run]
[pattern]
Remove recipes or packages from local cache or a remote.
- If no remote is specified (-r), the removal will be done in the local conan cache.
- If a recipe reference is specified, it will remove the recipe and all the packages, unless -p
is specified, in that case, only the packages matching the specified query (and not the recipe)
will be removed.
- If a package reference is specified, it will remove only the package.
positional arguments:
pattern A pattern in the form
'pkg/version#revision:package_id#revision', e.g:
"zlib/1.2.13:*" means all binaries for zlib/1.2.13. If
revision is not specified, it is assumed latest one.
options:
-h, --help show this help message and exit
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-f FORMAT, --format FORMAT
Select the output format: json
--out-file OUT_FILE Write the output of the command to the specified file
instead of stdout.
-c, --confirm Remove without requesting a confirmation
-p PACKAGE_QUERY, --package-query PACKAGE_QUERY
Remove all packages (empty) or provide a query:
os=Windows AND (arch=x86 OR compiler=gcc)
-r REMOTE, --remote REMOTE
Will remove from the specified remote
-l LIST, --list LIST Package list file
--lru LRU Remove recipes and binaries that have not been
recently used. Use a time limit like --lru=5d (days)
or --lru=4w (weeks), h (hours), m(minutes)
--dry-run Do not remove any items, only print those which would
be removed
conan remove
命令会从本地缓存或指定的远程仓库中移除包的元数据(recipes)和包。根据指定的模式,可以移除一个完整的包,或者只移除二进制文件,而保留包的元数据。您还可以在包的修订版本部分使用关键词 !latest
来避免移除某个 Conan 包的最新包元数据或包修订版本。
使用 --dry-run
来避免实际删除,而是获取一份将要被删除的元素列表。
它有 2 种可选且互斥的输入方式:
conan remove <pattern>
基于模式匹配移除包的元数据。conan remove --list=<pkglist>
将移除pkglist
JSON 文件中指定的构件。
还有其他命令,例如 conan list(请参见那里的模式文档 conan list)、conan upload 和 conan download,它们使用相同的模式。
从本地缓存中移除包的元数据及其关联的包二进制文件。
$ conan remove "*"
# Removes everything from the cache
$ conan remove "zlib/*""
# Remove all possible versions of zlib, including all recipes, revisions and packages
$ conan remove zlib/1.2.11
# Remove zlib/1.2.11, all its revisions and package binaries. Leave other zlib versions
$ conan remove "zlib/[<1.2.13]"
# Remove zlib/1.2.11 and zlib/1.2.12, all its revisions and package binaries.
$ conan remove zlib/1.2.11#latest
# Remove zlib/1.2.11, only its latest recipe revision and binaries of that revision
# Leave the other zlib/1.2.11 revisions intact
$ conan remove zlib/1.2.11#!latest
# Remove all the recipe revisions from zlib/1.2.11 but the latest one
# Leave the latest zlib/1.2.11 revision intact
$ conan remove zlib/1.2.11#<revision>
# Remove zlib/1.2.11, only its exact <revision> and binaries of that revision
# Leave the other zlib/1.2.11 revisions intact
要仅移除包的二进制文件,而保留包的元数据,需要在模式中指定包含 package_id
的 :
分隔符。
$ conan remove "zlib/1.2.11:*"
# Removes all the zlib/1.2.11 package binaries from all the recipe revisions
$ conan remove "zlib/*:*"
# Removes all the binaries from all the recipe revisions from all zlib versions
$ conan remove "zlib/1.2.11#latest:*"
# Removes all the zlib/1.2.11 package binaries only from the latest zlib/1.2.11 recipe revision
$ conan remove "zlib/1.2.11#!latest:*"
# Removes all the zlib/1.2.11 package binaries from all the recipe revisions but the latest one
$ conan remove zlib/1.2.11:<package_id>
# Removes the package binary <package_id> from all the zlib/1.2.11 recipe revisions
$ conan remove zlib/1.2.11:#latest<package_id>#latest
# Removes only the latest package revision of the binary identified with <package_id>
# from the latest recipe revision of zlib/1.2.11
# WARNING: Recall that having more than 1 package revision is a smell and shouldn't happen
# in normal situations
请注意,您可以使用 --package-query
参数来过滤要删除的包。
$ conan remove zlib/1.2.11:* -p compiler=clang
# Removes all the zlib/1.2.11 packages built with Clang compiler
您可以通过设置(settings)和选项(options),包括自定义的,来查询包。要查询选项,您需要显式添加 options.
前缀,这样 -p options.shared=False
会生效,而 -p shared=False
则不会。
以上所有命令默认都在 Conan 缓存中操作。要从服务器移除构件,请使用 -r=myremote
参数。
$ conan remove zlib/1.2.11:* -r=myremote
# Removes all the zlib/1.2.11 package binaries from all the recipe revisions in
# the remote <myremote>