Я знаю, что могу использовать yum
или apt-get
для установки vim, но это всего лишь пример пакета, и я хочу сделать это вручную для любого пакета.
Не существует надежного универсального рецепта для сборки из исходного кода, даже если вы ограничиваете область действия только пакетами на основе Autotools (что, очевидно, Vim не совсем). Это одна из причин, по которой упаковка программного обеспечения, репозитории пакетов и менеджеры пакетов стали настолько распространенными.
Как человек, который много занимался сборкой пакетов, я уверяю вас, что это редкая радость, когда я сталкиваюсь с проектом, который я могу упаковать с помощью эквивалента configure; make; make install
. Когда я встречаю одного, это делает мой день. В остальное время я должен выяснить любое количество деталей сборки для каждого пакета, например
- какая система конфигурации / сборки, , если есть , используется
- Автоинструменты / CMake / Python setuptools / и т. Д.
- Это влияет на необходимые команды сборки / установки и такие детали, как, например, рабочий каталог, который можно / нужно использовать для сборки
- какие параметры конфигурации необходимы или соответствуют целевым машинам и как их выражать в системе сборки
- может быть опциями для
configure
сценария, аргументами для make
, ручными настройками для Makefile
, ответами на интерактивный вопросник, ...
- какие зависимости требуются, в каких версиях и как их получить, если у меня их еще нет
- иногда, как убрать после установки, например,
- чтобы удалить файлы, которые я не хотел устанавливать
- для перемещения файлов, отправленных в неправильное место (несмотря на лучшее доступное использование конфигурации сборки)
- чтобы исправить права доступа к файлу или владение
- иногда дополнительные задачи установки, такие как
- добавление файлов конфигурации оболочки
- создание символических ссылок
- зачисление услуг с помощью подсистемы управления услугами системы
- установка файлов конфигурации динамического компоновщика
Все это относится как минимум к ручной сборке. Если вы не полагаетесь на то, что кто-то другой будет делать это (, т.е. с помощью пакетов, созданных кем-то другим), то вам нужно быть готовым выполнить для себя столько всего, что требуется для каждого создаваемого вами проекта. Невозможно автоматизировать его с этой отправной точки.