Как вывести список всех пакетов, установленных глобально через cargo install?
Основной способ: команда cargo install --list
В Cargo действительно есть встроенная команда для вывода списка всех глобально установленных пакетов — cargo install --list. Она показывает не только названия пакетов, но и их версии, а также все исполняемые файлы, которые были установлены вместе с каждым пакетом.
cargo install --list
Пример вывода:
bat v0.24.0:
bat
fd-find v9.0.0:
fd
ripgrep v14.1.0:
rg
cargo-edit v0.12.2:
cargo-add
cargo-rm
cargo-upgrade
Как видите, для каждого пакета указана версия и список бинарников. Это гораздо удобнее, чем рыться в ~/.cargo/bin/.
Как это работает под капотом
Cargo хранит информацию об установленных пакетах в файле ~/.cargo/.crates.toml (или ~/.cargo/.crates2.json в новых версиях). Команда cargo install --list просто читает этот файл и форматирует вывод. Вы можете открыть его вручную, если хотите увидеть более детальную информацию:
cat ~/.cargo/.crates.toml
Пример содержимого:
[v1]
"bat 0.24.0" = ["bat"]
"fd-find 9.0.0" = ["fd"]
"ripgrep 14.1.0" = ["rg"]
"cargo-edit 0.12.2" = ["cargo-add", "cargo-rm", "cargo-upgrade"]
Дополнительные полезные команды
- Удаление пакета:
cargo uninstall <package-name>(например,cargo uninstall cargo-edit) - Установка с указанием версии:
cargo install <package-name> --version <version> - Обновление всех пакетов:
cargo install-update -a(требуется установкаcargo install cargo-update) - Проверка установленных бинарников:
ls -la ~/.cargo/bin/— но помните, что там могут быть и вручную добавленные файлы
Пример для начинающих
Допустим, вы установили несколько пакетов и хотите убедиться, что они отображаются:
// Устанавливаем два пакета
cargo install bat
cargo install ripgrep
// Проверяем список
cargo install --list
// Вывод:
// bat v0.24.0:
// bat
// ripgrep v14.1.0:
// rg
// Удаляем один пакет
cargo uninstall bat
// Снова проверяем
cargo install --list
// Вывод:
// ripgrep v14.1.0:
// rg
Обратите внимание: команда cargo install --list работает на всех платформах (Windows, macOS, Linux) и не требует дополнительных инструментов. Это официальный способ управления глобальными пакетами в Rust.
Альтернативный подход: просмотр через файловую систему
Если по какой-то причине команда cargo install --list не работает (например, у вас старая версия Cargo или повреждён конфигурационный файл), можно получить список установленных пакетов, проанализировав содержимое директории ~/.cargo/bin/ и сопоставив его с метаданными.
Самый простой способ — использовать утилиту ls с фильтрацией, но она не покажет, откуда взялся каждый бинарник. Более надёжный вариант — прочитать файл ~/.cargo/.crates.toml напрямую:
cat ~/.cargo/.crates.toml 2>/dev/null || cat ~/.cargo/.crates2.json 2>/dev/null
Если файл существует, вы увидите структуру, аналогичную той, что выводит cargo install --list. Если файла нет — значит, пакеты не устанавливались глобально, или вы используете очень старую версию Cargo (до 1.40). В этом случае можно проверить, какие бинарники были установлены через Cargo, по их происхождению: обычно они имеют символические ссылки или скрипты-обёртки, созданные Cargo.
Также можно написать небольшой скрипт на Rust или Bash, который парсит содержимое ~/.cargo/bin/ и пытается определить установщик каждого файла, но это уже избыточно для повседневного использования.