Список всех пакетов, установленных с помощью Homebrew

448

Можно ли и как получить список всех пакетов, установленных на моем Mac, используя Homebrew? Я не заинтересован в пакетах, установленных вне Homebrew.

amphibient
источник

Ответы:

564

brew list а также brew cask list

Запуск brew listпокажет список всех ваших установленных пакетов Homebrew.

Кроме того, brew cask listпредоставим предметы, установленные с помощью Homebrew Cask .

варит список

Grg
источник
2
Если у вас был этот список в текстовом файле. Как бы вы их установили? brew install < list.txtне похоже на работу.
Джонатан
26
@Jonathan Не xargs brew install < list.txtстесняйтесь задавать отдельный вопрос для более подробной информации или разъяснений.
grg
3
@grgarside - люблю твою терминальную подсказку. Вы хотели бы поделиться своими конфигурационными файлами, чтобы моя подсказка выглядела так?
Каушик Гопал
2
@Kaushik Наконец-то я написал сообщение в блоге о настройке терминала / оболочки - не стесняйтесь задавать там любые вопросы.
grg
1
@ Джонатанbrew install $(< list.txt )
Фил Пирожков
279

brew leavesпоказывает вам все пакеты верхнего уровня. Это пакеты, которые не являются зависимостями. Это должно быть наиболее интересно, если вы используете список для переустановки пакетов.

Джонатан
источник
3
Хороший ответ. Знаете ли вы, как получить список пакетов, которые были установлены пользователем? Это может отличаться от leaves.
Стивен Шоу
Да, например java, нет в списке, leavesпотому что это зависимость от другого проекта, хотя я сам установил его.
Саад Малик
61

brew bundleтакже может быть интересно, если вы спрашиваете, потому что вы хотите управлять своей установкой brew. Это включает в себя бочки, которых brew listнет. Он нацелен на создание воспроизводимых настроек Homebrew.

# creates Brewfile in the current directory from currently-installed packages
brew bundle dump
# edit Brewfile
# install everything from the Brewfile
brew bundle

Вы можете использовать этот --globalфлаг для работы с вашим файлом ~/Brewfileи -fдля принудительной перезаписи существующего файла (для установки это приведет к удалению не перечисленных пакетов).

Сэм Брайтман
источник
Это отлично! Я понятия не имел, что это существовало. Спасибо. Я только хотел бы, чтобы это были как brew leavesи пропущенные пакеты, которые вы не установили напрямую, а получили только как зависимости. В будущем пакет может изменить зависимости, но вы все равно установите его и не будете нуждаться в нем.
Бруно Броноски
Да. Кажется, что каждый менеджер пакетов проходит через эту фазу, не разделяя их.
Сэм Брайтман
1
Недавняя моя свалка предполагает, что bundleтеперь исключаются зависимости. Есть некоторые другие изменения, такие как стиль цитат и порядок, которые усложняют понимание различий, но в целом похоже, что по крайней мере некоторые библиотеки отсутствуют, Brewfileно установлены.
Сэм Брайтман,
20

Выполнение brew listкоманды показывает простой отсортированный по алфавиту список всех установленных пакетов.

Однако различные необходимые пакеты (зависимости) автоматически устанавливаются при установке пакета с помощью Homebrew. Можно просмотреть список всех установленных пакетов в виде красиво отформатированного дерева зависимостей. Чтобы просмотреть его, выполните следующую команду:

brew deps --tree --installed

Пример вывода такой, как показано ниже:

gdbm

openssl

python
├── gdbm
├── openssl
├── readline
├── sqlite
│   └── readline
└── xz

readline

sqlite
└── readline

xz

Независимо перечисленные пакеты (например, gdbmи opensslв приведенном выше примере вывода) не имеют зависимостей. Пакеты, изображенные как часть древовидной структуры, имеют свои зависимости, перечисленные на более низком уровне (например, пакет sqliteтребует, чтобы пакет readlineбыл установлен) Пакеты, перечисленные в конечных узлах в древовидных структурах, не имеют зависимостей.

Зависимости, отображаемые в древовидной структуре, могут помочь легко избавиться от ненужных пакетов.

Нимеш Нима
источник
1
brew leavesУпоминалось выше команда полезна в этом отношении; в нем перечислены только пакеты верхнего уровня.
Пол Биссекс
6

Вы можете использовать brew list | grep 'package-name'или, если ищете конкретный пакет.
brew list 'package-name'также работает и предоставляет дополнительную информацию.

Рахул Прасад
источник