![Debian 升级后,我可以使用我的工具而不重建它们吗?](https://linux22.com/image/127877/Debian%20%E5%8D%87%E7%BA%A7%E5%90%8E%EF%BC%8C%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%88%91%E7%9A%84%E5%B7%A5%E5%85%B7%E8%80%8C%E4%B8%8D%E9%87%8D%E5%BB%BA%E5%AE%83%E4%BB%AC%E5%90%97%EF%BC%9F.png)
我想知道在 Debian 从 Jessie 升级到 Stretsh 后,是否必须重新编译/重建我之前从源代码构建的工具。
我的主要工具是:
- Omnet++网络模拟器(基于Eclipse)
- 相扑交通模拟器
- 用Python编写的各种程序
- 旧版本的 R (2-11)
我认为我的工具会全部损坏,因此我需要重建它们,但是当我尝试其中一些(Omnet ++,Sumo)时,似乎它们工作正常,但我不确定它们的连贯性,
那么,如果它有效,是否有可能以不一致的方式工作?
答案1
这取决于工具使用的库,以及 Stretch 中是否有新版本,以及这些新版本的 ABI 是否向后兼容。这也意味着可能只有程序中的某些功能出现问题。
我不知道你的工具,但一般来说,安全的方法是重新编译所有内容。
答案2
它们是否有效取决于这些工具所依赖的东西(它们能否在新操作系统中找到它们所依赖的东西)。
但由于它们仍然使用基于 Debian 的操作系统,因此它们应该可以继续工作而不会出现任何问题。
答案3
如果自定义编译的程序在升级后的操作系统中启动,则意味着它找到了必要的动态库,并且在这方面应该可以正常工作。 (由于其他不兼容性,它仍然可能失败,但重新编译无济于事。)但是,它可能在过时的包中找到了其动态库,这些包不是新操作系统的一部分,但在新操作系统期间不会自动删除。升级。因此,如果您稍后删除这样一个过时的包(包管理前端通常以某种方式突出显示它们),您的自定义编译程序将会崩溃。 (但是,如果您通过自定义包安装它,并且依赖于现已过时的库包,则包管理器会发出警告。)您可以使用该ldd
工具发现动态库依赖项,然后使用 找到相应的包dpkg -S
,最后找到它们的状态经过apt-cache policy
。
长期使用过时的软件包会带来安全风险,因为它们不会收到安全更新。启用适当的 LTS 存储库通常会在一段时间内对此有所帮助。特别是,Xerces 在这方面的代码质量并没有得到很好的声誉。