Какие файлы `make install` скопировали и куда? - PullRequest
11 голосов
/ 02 октября 2009

Есть ли способ получить список имен файлов / путей, которые make install копирует в файловую систему? Некоторые пакеты поставляются с файлом MANIFEST, но не с теми, с которыми я работаю.

Ответы [ 5 ]

15 голосов
/ 11 марта 2013

Я просто исследовал это сам при составлении пользовательской версии QEMU. Я использовал следующий метод, чтобы выяснить, что было установлено и где (а также использовать его в качестве основы для файла .deb):

mkdir /tmp/installer
./configure --target-list=i386-softmmu
make
sudo make install DESTDIR=/tmp/installer
cd /tmp/installer
tree .

Tree - это утилита, которая рекурсивно отображает содержимое каталога визуально привлекательным способом - sudo apt-get install tree для пользователей Debian / Ubuntu

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

11 голосов
/ 02 октября 2009

Самый надежный способ - использовать chroot: запустить make make внутри тюрьмы chroot; вычислите список файлов, которые у вас были до установки, и сравните его со списком файлов после установки.

Многие установки поддерживают либо параметр конфигурации --prefix, и / или переменную среды DESTDIR. Вы можете использовать их для более легкой версии chroot (полагая, что установка не удастся, если она попытается выполнить запись в другое место, если вы запускаете установку как непривилегированный пользователь).

Другой подход заключается в замене программы установки. Многие пакеты поддерживают переменную среды INSTALL, которая, в общем, является программой установки; Есть версии трассировки установки.

4 голосов
/ 02 октября 2009

Отличается для каждого проекта, в котором вы запускаете 'make install'. Установленные файлы контролируются целью установки в используемом Makefile. Лучше всего открыть Makefile и выполнить поиск «install:» - оттуда вы можете увидеть, какие файлы будут скопированы в вашу систему.

3 голосов
/ 01 февраля 2016

make uninstall может показывать файлы при их удалении, если автор инструкций по компиляции предоставляет информацию, позволяющую удалить программу (прошло некоторое время с тех пор, как я ее сделал, поэтому не могу сказать точно). *

Также make -n install выполнит «dry ru n » процесса установки, и может быть разумно извлечь информацию из его результатов.

0 голосов
/ 10 декабря 2013

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

  1. Начните с максимально возможной очистки системы (предпочтителен свежий образ виртуальной машины)
  2. Скомпилируйте программное обеспечение, подождите несколько минут.
  3. Установите пакет программного обеспечения.
  4. Поиск файлов, измененных за последние 5 минут: sudo find / -mmin -5 -type f (команда find имеет массу параметров для запросов, основанных на времени модификации / создания файла, но для меня это работало довольно хорошо; вам просто нужно сузить временной интервал так что вы выбираете файлы, созданные установщиком, но не более).
...