Невозможно запустить файл конфигурации, если он не находится в том же каталоге - PullRequest
0 голосов
/ 30 августа 2018

Я не могу запустить файл конфигурации для ручной установки пакета tar.gz. Например, после распаковки моего файла я запускаю

$ sudo ./vim81/configure
[sudo] password for cli2:
./vim81/configure: line 6: cd: src: No such file or directory

Однако, если я нахожусь в каталоге, где находится файл конфигурации, я могу запустить файл конфигурации.

$ ./configure
configure: loading cache auto/config.cache
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
...

Мой вопрос: как мне выполнить файл конфигурации, если я не нахожусь в той же папке, что и исходный файл?

Я знаю, что могу использовать yum или apt-get для установки vim, но это всего лишь пример пакета, и я хочу сделать это вручную для любого пакета. Спасибо.

1 Ответ

0 голосов
/ 31 августа 2018

Я знаю, что могу использовать yum или apt-get для установки vim, но это всего лишь пример пакета, и я хочу сделать это вручную для любого пакета.

Не существует надежного универсального рецепта для сборки из исходного кода, даже если вы ограничиваете область действия только пакетами на основе Autotools (что, очевидно, Vim не совсем). Это одна из причин, по которой упаковка программного обеспечения, репозитории пакетов и менеджеры пакетов стали настолько распространенными.

Как человек, который много занимался сборкой пакетов, я уверяю вас, что это редкая радость, когда я сталкиваюсь с проектом, который я могу упаковать с помощью эквивалента configure; make; make install. Когда я встречаю одного, это делает мой день. В остальное время я должен выяснить любое количество деталей сборки для каждого пакета, например

  • какая система конфигурации / сборки, , если есть , используется
    • Автоинструменты / CMake / Python setuptools / и т. Д.
    • Это влияет на необходимые команды сборки / установки и такие детали, как, например, рабочий каталог, который можно / нужно использовать для сборки
  • какие параметры конфигурации необходимы или соответствуют целевым машинам и как их выражать в системе сборки
    • может быть опциями для configure сценария, аргументами для make, ручными настройками для Makefile, ответами на интерактивный вопросник, ...
  • какие зависимости требуются, в каких версиях и как их получить, если у меня их еще нет
  • иногда, как убрать после установки, например,
    • чтобы удалить файлы, которые я не хотел устанавливать
    • для перемещения файлов, отправленных в неправильное место (несмотря на лучшее доступное использование конфигурации сборки)
    • чтобы исправить права доступа к файлу или владение
  • иногда дополнительные задачи установки, такие как
    • добавление файлов конфигурации оболочки
    • создание символических ссылок
    • зачисление услуг с помощью подсистемы управления услугами системы
    • установка файлов конфигурации динамического компоновщика

Все это относится как минимум к ручной сборке. Если вы не полагаетесь на то, что кто-то другой будет делать это (, т.е. с помощью пакетов, созданных кем-то другим), то вам нужно быть готовым выполнить для себя столько всего, что требуется для каждого создаваемого вами проекта. Невозможно автоматизировать его с этой отправной точки.

...