2010-02-16 2 views
1

У меня есть одно сомнение. Я выполняю проект, связанный с концепцией восстановления системы в Linux. Там я планирую выполнить прикладной мудрый откат в случае сбоя. Есть ли способ выяснить, какие файлы используются приложением в системе?Найти файлы, связанные с программным обеспечением

Хорошо. Я сделаю это немного ясно. Например, рассмотрите приложение firefox. Когда он установлен, многие файлы записываются из файла .deb в такие папки, как/etc,/usr,/opt и т. Д. В Windows все файлы устанавливаются в одной папке под программными файлами, а в Linux - нет. Так есть ли способ определить файлы, принадлежащие программному обеспечению?

Спасибо.

+0

Что значит «приложение-мудрый». В командной строке пользователь может указать * любое * имя файла для приложения. Что вы подразумеваете под «прикладным»? Просьба указать какое-то определение или правило, определяющее «применение». –

+0

Да! Вот оно! В linux существующее программное обеспечение делает резервную копию всей системы в целом. Но то, что я запланировал, - это если какое-то приложение говорит, что firefox, который работал в некоторой версии, говорит, что 2.4 после обновления до 2.5 не работает !!В этом случае я планировал отменить версию до версии 2.4, восстановив файлы, которые были скопированы !! Поэтому для этого мне нужно найти файлы, связанные с программным обеспечением! Есть ли способ найти это? Благодаря –

+0

многие системы уже предоставляют эту возможность с помощью управления пакетами. –

ответ

5

Ну, это может охватывать несколько вещей.

Если вы имеете в виду, какие файлы предоставляются при установке вашего приложения? Тогда ответ: используйте приличное управление пакетами, предоставляйте свое программное обеспечение в виде rpm/deb/... любого пакета, а unstallation позаботится обо всем остальном.

Если вы имеете в виду, на какие библиотеки ссылается наше приложение? Затем вы можете использовать ldd, это укажет, какие динамические библиотеки используются при выполнении этого приложения.

Если вы имеете в виду, какие файлы активно используют мое приложение? Затем взгляните на вывод lsof (lsof = list open files) (или, альтернативно, ls/proc // fd /), это покажет все дескрипторы файлов, открытые вашим приложением (файлы, сокеты, каналы, tty, ...)

Или вы могли бы использовать все вышеперечисленное.

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

+0

. Ваш ответ более полный, выдержка. – dubiousjim

+0

Вот оно! В linux существующее программное обеспечение делает резервную копию всей системы в целом. Но то, что я запланировал, - это если какое-то приложение говорит, что firefox, который работал в некоторой версии, говорит, что 2.4 после обновления до 2.5 не работает !! В этом случае я планировал отменить версию до версии 2.4, восстановив файлы, которые были скопированы !! Поэтому для этого мне нужно найти файлы, связанные с программным обеспечением –

+1

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

1

Для определения всех файлов, установленных вместе с приложением, зависит от менеджера пакетов. Все те, с которыми я имел дело (apt, pacman), имели такую ​​возможность.

Чтобы определить все файлы, открытые в настоящее время приложением, используйте lsof.

0

Ну, это зависит ...

система Большинства Linux имеет какое-то программное обеспечение для управления пакетом, как например в Debian и Ubuntu. Там у вас есть информация о том, что принадлежит пакету. Возможно, вы сможете использовать эту информацию. Тем не менее, это не распространяется на файлы, созданные во время работы приложений.

0

Если вы используете дистрибутив на базе RPM

# rpm -Uvh --repackage pkg-1-1.i386.rpm 

будет переупаковка старые файлы и обновления в транзакции, так что вы можете позже откатить если что-то пошло не так. Для того, чтобы откатить вчерашнего состояния, например

# rpm -Uvh --rollback yesterday 

См this article другие примеры.

Смежные вопросы