Можно ли настроить `brew` для установки пакетов из репозиториев Debian?

Можно ли настроить `brew` для установки пакетов из репозиториев Debian?

Я недавно установилbrewкоманда на моей машине Debian для установкиtldrman pages в моей системе. Команда выглядит полезной для установки программ, которые не упакованы Debian, также она не требует sudoустановки пакетов. Однако есть ограничение: только несколько пакетов могут быть установлены с помощью команды brew.

Можно ли настроить brewустановку пакетов из репозиториев Debian?

решение1

Возможно ли это? Да. Обе программы с открытым исходным кодом. Удобно ли это? Не очень.

Почему?

Менеджеры пакетов работают примерно так:

  • Они отслеживают пакеты, установленные в вашей системе (и их версии)
  • Для этого они указывают собственный формат пакетов (например, .deb) и используют эти пакеты в качестве инструкций по установке программы и ее отслеживанию.
  • Они также отслеживают зависимости (например, «для работы этой программы необходим openssl!»)

Вот почему иметь систему, использующую мало менеджеров пакетов, — не лучшая идея:

  1. Каждый менеджер пакетов должен быть проинформирован об устанавливаемом пакете (например, brewдолжен знать, что вы установили firefox, и aptдолжен знать, что вы установили tldr)
  2. Каждому менеджеру пакетов придется разрешать зависимости от других менеджеров пакетов (например, «Brew: этой программе нужны ncurses, но aptони уже установлены ncurses, поэтому мне не нужно их извлекать!»).

Видите ли, проблема в 2том, что менеджеры пакетов являются абстракцией для базовых репозиториев. Такие люди, как ребята из Debian, выбирают пакеты, которые хотят, чтобы пользователи использовали, и делают их доступными для других. Однако они также выбирают эти пакеты, чтобы система была согласованной; они хотят, чтобы наименьшее количество пакетов предлагало наибольшую функциональность. Зачем устанавливать ncurses версии 1, 2 и 3, когда можно заставить все работать с версией 2?

Первая проблема — тоже плохая новость. Менеджерам пакетов придется информировать друг друга о том, что они делают, иначе они могут столкнуться ( brewне будут знать, что ncursesуже установлено).

Так почему же это сложно?

  1. Менеджерам по упаковке необходимо будет тесно сотрудничать
  2. Менеджерам по упаковке придется иметь строгую политику относительно того, что делать, если они не могут договориться о упаковке.
  3. Менеджеры пакетов должны быть способны работать практически взаимозаменяемо, при этом единственной видимой разницей будут доступные программы.
  4. Менеджеры пакетов должны будут иметь возможность отслеживать репозитории друг друга в случае обновлений.

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

Так что я могу сделать?

Прежде всего, я бы спросил себя: «Зачем мне это делать?». Честно говоря, ваш дистрибутив должен предоставлять вам множество пакетов. Если вас не устраивает количество имеющихся у вас пакетов, вы можете рассмотреть возможность перехода на другой дистрибутив, в котором больше пакетов, чем вам нужно.

Если тыДействительноОтчаявшись заставить это brewработать, я бы предложил следующее решение, хотя и не уверен, что оно полностью осуществимо:

  1. Возьмите исходники brew.
  2. Изучите формат рецептов приготовления напитков.
  3. Напишите программу, которая автоматически переводит рецепты в пакеты Debian.
  4. Измените его brewтак, чтобы при каждом запуске он вызывал программу для перевода рецептов в .debпакеты/поиска программ в репозиториях вашего дистрибутива, а затем вызывал aptустановку этого пакета.

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

решение2

Да, но это было бы нетривиальной тратой усилий. Было бы разумнее сделатьппадля tldr или чтобы он был принят в основные репозитории Debian, или просто использоватьhttps://tldr.ostera.io.

Связанный контент