【问题标题】:Find the files related to a software查找与软件相关的文件
【发布时间】:2011-01-17 09:43:37
【问题描述】:

我有一个疑问。我正在做一个与 Linux 中的系统还原概念相关的项目。我计划在失败的情况下执行应用程序明智的回滚。有什么方法可以找出系统中应用程序使用的所有文件是什么?

好的。我会说清楚一点。例如考虑 Firefox 应用程序。安装时,许多文件从 .deb 文件写入 /etc、/usr、/opt 等文件夹。在 Windows 中,所有文件都安装在程序文件下的一个文件夹中,而在 linux 中则没有。那么有没有办法找出属于软件的文件呢?

谢谢。

【问题讨论】:

  • 你是什么意思“应用程序”。用户可以从命令行向应用程序提供 any 文件名。 “应用方面”是什么意思?请提供某种定义或规则来定义“应用程序方面”。
  • 是的!来了!!在 linux 中,现有的软件确实将整个系统作为一个整体进行备份。但是我的计划是,如果某些应用程序说在某些版本中工作的 Firefox 在更新到 2.5 后说 2.4 不起作用!在那种情况下,我计划通过恢复已备份的文件将版本回滚到 2.4!所以要做到这一点,我需要找到与软件相关的文件!!有没有办法找到这个?谢谢
  • 许多系统已经通过包管理提供了这种功能

标签: linux file package


【解决方案1】:

这可以涵盖几件事。

如果您的意思是,您的应用程序的安装提供了哪些文件?那么答案是,使用合适的包管理,将您的软件作为 rpm/deb/... 提供任何包,然后卸载会处理其余的问题。

如果您的意思是,我们的应用程序引用了哪些库?然后您可以使用 ldd 这将告诉您在执行此应用程序时使用了哪些动态库。

如果您的意思是,我的应用程序正在积极使用哪些文件?然后查看 lsof (lsof = list open files)(或者 ls /proc//fd/)的输出,这将显示您的应用程序打开的所有文件描述符(文件、套接字、管道、tty... )

或者您可以使用以上所有方法。

您无法跟踪的一件事(除非您自己记录)是您的应用程序在其生命周期内创建了哪些文件。

【讨论】:

  • 你的回答更完整,点赞。
  • 来了!!在 linux 中,现有的软件确实将整个系统作为一个整体进行备份。但是我的计划是,如果某些应用程序说在某些版本中工作的 Firefox 在更新到 2.5 后说 2.4 不起作用!在那种情况下,我计划通过恢复已备份的文件将版本回滚到 2.4!所以要做到这一点,我需要找到与软件相关的文件
  • 这正是你的发行版中的包管理应该为你做的。但是,这不会涵盖在运行时创建的文件(例如 firefox 缓存),因为此链接不会保存在任何地方。请记住,软件包需要库,而回滚包可能意味着回滚库,这可能意味着其他应用程序使用相同库时出现问题(感到困惑吗?)。
  • 非常感谢哥们!!是的,我明白你的意思,我也想过!好吧,我打算研究 apt 代码来实现这一点。我认为这就是这样做的方法!还有其他建议吗??
【解决方案2】:

确定与应用程序一起安装的所有文件取决于包管理器。我接触过的所有人(apt、pacman)都具备这种能力。

要确定应用程序当前打开的所有文件,请使用 lsof。

【讨论】:

    【解决方案3】:

    嗯,这取决于...

    大多数 Linux 系统都有某种包管理软件,例如 debian 和 ubuntu 中的 aptitude。在那里,您可以获得有关属于数据包的内容的信息。您也许可以使用该信息。不过,这不包括在应用程序运行时创建的文件。

    【讨论】:

      【解决方案4】:

      如果您使用的是基于 RPM 的发行版

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

      将重新打包旧文件并在事务中升级,以便您以后可以在出现问题时回滚。例如回滚到昨天的状态

      # rpm -Uvh --rollback yesterday
      

      有关其他示例,请参阅 this article

      【讨论】:

        猜你喜欢
        • 2011-01-11
        • 1970-01-01
        • 2016-06-20
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-12
        相关资源
        最近更新 更多