Я недавно установилbrew
команда на моей машине Debian для установкиtldr
man pages в моей системе. Команда выглядит полезной для установки программ, которые не упакованы Debian, также она не требует sudo
установки пакетов. Однако есть ограничение: только несколько пакетов могут быть установлены с помощью команды brew
.
Можно ли настроить brew
установку пакетов из репозиториев Debian?
решение1
Возможно ли это? Да. Обе программы с открытым исходным кодом. Удобно ли это? Не очень.
Почему?
Менеджеры пакетов работают примерно так:
- Они отслеживают пакеты, установленные в вашей системе (и их версии)
- Для этого они указывают собственный формат пакетов (например, .deb) и используют эти пакеты в качестве инструкций по установке программы и ее отслеживанию.
- Они также отслеживают зависимости (например, «для работы этой программы необходим openssl!»)
Вот почему иметь систему, использующую мало менеджеров пакетов, — не лучшая идея:
- Каждый менеджер пакетов должен быть проинформирован об устанавливаемом пакете (например,
brew
должен знать, что вы установилиfirefox
, иapt
должен знать, что вы установилиtldr
) - Каждому менеджеру пакетов придется разрешать зависимости от других менеджеров пакетов (например, «Brew: этой программе нужны
ncurses
, ноapt
они уже установленыncurses
, поэтому мне не нужно их извлекать!»).
Видите ли, проблема в 2
том, что менеджеры пакетов являются абстракцией для базовых репозиториев. Такие люди, как ребята из Debian, выбирают пакеты, которые хотят, чтобы пользователи использовали, и делают их доступными для других. Однако они также выбирают эти пакеты, чтобы система была согласованной; они хотят, чтобы наименьшее количество пакетов предлагало наибольшую функциональность. Зачем устанавливать ncurses версии 1, 2 и 3, когда можно заставить все работать с версией 2?
Первая проблема — тоже плохая новость. Менеджерам пакетов придется информировать друг друга о том, что они делают, иначе они могут столкнуться ( brew
не будут знать, что ncurses
уже установлено).
Так почему же это сложно?
- Менеджерам по упаковке необходимо будет тесно сотрудничать
- Менеджерам по упаковке придется иметь строгую политику относительно того, что делать, если они не могут договориться о упаковке.
- Менеджеры пакетов должны быть способны работать практически взаимозаменяемо, при этом единственной видимой разницей будут доступные программы.
- Менеджеры пакетов должны будут иметь возможность отслеживать репозитории друг друга в случае обновлений.
Это фактически означает, что вам понадобится менеджер пакетов, который будет состоять из двух менеджеров пакетов. Вам понадобится новая программа.
Так что я могу сделать?
Прежде всего, я бы спросил себя: «Зачем мне это делать?». Честно говоря, ваш дистрибутив должен предоставлять вам множество пакетов. Если вас не устраивает количество имеющихся у вас пакетов, вы можете рассмотреть возможность перехода на другой дистрибутив, в котором больше пакетов, чем вам нужно.
Если тыДействительноОтчаявшись заставить это brew
работать, я бы предложил следующее решение, хотя и не уверен, что оно полностью осуществимо:
- Возьмите исходники
brew
. - Изучите формат рецептов приготовления напитков.
- Напишите программу, которая автоматически переводит рецепты в пакеты Debian.
- Измените его
brew
так, чтобы при каждом запуске он вызывал программу для перевода рецептов в.deb
пакеты/поиска программ в репозиториях вашего дистрибутива, а затем вызывалapt
установку этого пакета.
Внесение таких изменений, вероятно, займет много времени и не является простым делом. Я предлагаю сменить дистрибутив или придерживаться вашего менеджера пакетов.
решение2
Да, но это было бы нетривиальной тратой усилий. Было бы разумнее сделатьппадля tldr или чтобы он был принят в основные репозитории Debian, или просто использоватьhttps://tldr.ostera.io.