Трек, где файлы устанавливаются во время установка приложения в Linux

Звучит хрупко - вместо git foo можно было набрать foo , а потом в один прекрасный день появляется новая команда foo и foo больше не вызывает git foo - но это можно сделать. Когда команда не найдена с обычным поиском (псевдоним, функция, builtin, исполняемая на PATH), zsh вызывает функцию command_not_found_handler (если она определена). В качестве аргументов эта функция получает команду и аргументы команды.

command_not_found_handler () {
  git "$@"
}

Если вы хотите выполнить более интенсивную фильтрацию, команда находится в $1, а ее аргументы можно назвать "$@[2,$#]".

command_not_found_handler () {
  if …; then
    git "$1" "$@[2,$#]"
  fi
}

2
28.03.2018, 16:50
2 ответа

Самый простой способ:find.

Самый простой способ (самый простой смысл, никаких дополнительных инструментов для установки, простота ввода )— это сохранить список всех файлов до и после установки, а затем сравнить списки.

Вы можете ввести

find / -xdev \( -name home -o -name mnt -o -name proc --o -name dev o -name sys \) -prune -o -print | sort > /root/files-before-install

Затем установите программу и

find / -xdev \( -name home -o -name mnt -o -name proc -o -name dev -o -name sys \) -prune -o -print | sort > /root/files-after-install

(обратите внимание на другое имя файла в конце)

После этого вы можете сравнить файлы следующим образом:

diff /root/files-before-install /root/files-after-install

Это покажет вам только новые файлы, а не измененные файлы. -Это было бы намного сложнее обнаружить. Существует также ненулевая -вероятность того, что ваша программа установки создаст файл или каталог с именем «home», «mnt», «sys», «proc» или «dev», которые мы бы проигнорировали, но шансы для этого довольно низко, на мой взгляд.

4
27.01.2020, 21:55

Checkinstall работает точно так же, как вы описываете :, он отслеживает изменения файловой системы, выполняемые процессом установки, и предоставляет способ их отката.

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

1
27.01.2020, 21:55

Теги

Похожие вопросы