![检查核心实用程序和旧版 GNU/Linux 系统之间的兼容性](https://linux22.com/image/45201/%E6%A3%80%E6%9F%A5%E6%A0%B8%E5%BF%83%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%92%8C%E6%97%A7%E7%89%88%20GNU%2FLinux%20%E7%B3%BB%E7%BB%9F%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7.png)
我有非根访问计算机网格。安装的操作系统如下:
$ uname -mrs
Linux 2.6.18-274.el5xen x86_64
$ cat /etc/*-release
Scientific Linux SL release 5.1 (Boron)
我在本地构建了最新版本的 core utils
./configure --prefix=<some_path>
make
make install
但在将这个新安装添加到我的PATH
&之前LD_LIBRARY_PATH
,我不愿意开始使用可能与我的操作系统不兼容或安全使用的核心实用程序版本。
我知道一个答案是“测试一下是否有效”,但我更愿意确保以后在使用核心实用程序进行实际工作时不会遇到问题(例如移动/删除文件、使用chmod
等)
这是合理的担忧吗? core utils 是否完全向后兼容这么旧的 GNU/Linux 版本?我怎样才能知道?
答案1
只要系统调用存在于内核本身中,所使用的 coreutils 版本就无关紧要。而且 coreutils 不使用任何外来的(对于 Linux)系统调用,因此您不太可能遇到任何不兼容的实用程序。
话虽如此,抓住 SRPM,替换里面的 tarball,重建它,然后使用它。
答案2
这很难知道,也无法得到任何保证。例如,在某些时候,某些版本的 GNU head
/tail
停止支持head -1
(已弃用的 变体head -n 1
),导致许多脚本损坏(后来又恢复了)。
您会发现一些已弃用的选项已被删除。例如,GNUtouch
就不再有--file
选择了。一般来说,这些不太可能被使用过,但在遇到问题之前你永远不会知道。