Подтвердить что ты не робот

Какие файлы сделали "сделать установку", и где?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

  1. Сделайте снимок содержимого места установки перед установкой
  2. Установить
  3. Сравните текущее содержимое со старым.

Пример:

./configure --prefix /usr/local
make -j'nproc'

find /usr/local | sort -u > /tmp/snapshot1
make install
find /usr/local | sort -u > /tmp/snapshot2
comm -3 /tmp/snapshot{1,2} # this prints the files added by 'make install' to stdout