第 5 章 编译程序及工具

tail --follow 现在可以用于 Veritas 群集文件系统上的文件

Veritas 群集文件系统(Veritas Clustered file system,VXFS)是一个远程文件系统。对于远程文件系统,tail 命令在 --follow 模式下不能使用 inotify 功能。现已将 VXFS 添加至远程文件系统列表中,但它使用轮询模式而不是 inotify。现在,即使用于 VXFS 中的文件,tail --follow 也可以正常工作。

dd 命令现在可以显示传输进度

dd 是用来根据字节复制文件的命令,现在提供 --follow 选项来显示传输进度。对于传输大型文件尤为有用,因为这允许用户估计剩下的时间和检测可能存在的问题。

改进了 libcurl 等待时间

对于没有活跃文件描述符的动作,即使是短操作,libcurl 库都使用不必要的长时间阻塞延迟。这意味着某些动作,如用 /etc/hosts 解析主机名会人为地耗费过长的时间。我们已修改了 libcurl 处理阻塞的代码,现在的初始延迟很短,它会逐步增加,直至事件发生。现在可更迅速地完成快速 libcurl 操作。

libcurl 库现在实现了非阻塞的 SSL 握手

libcurl 库以前没有实现非阻塞的 SSL 握手,这会对基于 libcurl 多 API 应用程序的性能有负面影响。为了解决这个问题,我们在 libcurl 中实现了非阻塞的 SSL 握手,每当 libcurl 多 API 无法向底层网络套接字读/写数据时,它都可以立即将控制权交还给应用程序。

GDB 或 IBM Power 系统访问符号表时不再失败

GDB 或 64 位的 IBM Power 系统以前会错误地释放一个为正在调试的二进制文件保存符号表的重要变量,这会导致在 GDB 试图访问该符号表时出现分段错误。为了解决这个问题,我们持久化了这个专有变量,让 GDB 可以在调试会话期间访问所需信息,而不会读无效的内存区域。

将 nscd 更新为自动重新载入配置数据

命名服务器缓存守护进程(Name Server Caching Daemon,nscd)的这次更新为 nscd 配置文件添加了一个基于 inotify 和 stat-based 备份的监控系统,nscd 现在可以正确地检测其配置的改动,并重新加载数据。这样可防止 nscd 返回失效的数据。

dlopen 库函数在递归调用时不会再崩溃

之前库函数 dlopen 的缺陷可能导致对它的递归调用崩溃或出现库断言后中止。如果用户提供的 malloc 实现调用了 dlopen,递归调用是有可能出现的。
这个实施目前可重入,递归调用不会再崩溃或出现断言后中止。

operf 工具现在可以识别静态巨型页面标识符

之前,在分析启用了静态巨型页面且用 Java just-in-time (JIT) 编译的代码的性能时,OProfile 的 operf 命令会将大量的事件样本记录到匿名内存(在 anon_hugepage 中)而不是正确的 Java 方法。这次更新后,在使用静态分配的巨型页面时,operf 可以识别静态的巨型页面标识符,并正确地将样本映射至 Java 方法。

rsync -X 现在可正常工作

以前,rsync 工具在设置安全属性后,而不是之前修改文件所有权。因此,目标文件的安全属性会丢失,在某些情况下无法正确运行 rsync -X 命令。这次更新修改了操作顺序,rsync 现在在设置安全属性之前修改文件所有权,所以在上述情况下安全属性会如预期地存在。

Subversion 的执行文件用完整的 RELRO 数据构建

subversion 软件包附带的执行文件现在使用完全只读的重定位数据(RELRO)进行构建,它提供了对某些类型的内存损坏攻击的保护。因此,如果将来发现了安全漏洞,攻击 Subversion 会变得更困难。

现在可在 TCL 中正常使用线程扩展

以前,工具命令语言(Tool Command Language,TCL)中的线程支持实现得不理想。如果 fork() 调用与 TCL 拦截器中启用的线程扩展一起使用,进程可能变成无应答。由此,之前附带的 TCL 拦截器和 TK 应用程序禁用线程扩展。结果是依赖启用线程扩展的 TCL 或 TK 的第三方应用程序就无法正常运行。我们应用了一个补丁修复这个程序错误,现在 TCL 和 TK 默认启用线程扩展。

可为 TLS 明确启用或禁用 AES 加密套件

使用更新的 curl 软件包,可为 TLS 协议明确启用或禁用所使用的新高级加密标准(AES)加密套件。

OpenJDK 7 现在支持 ECC

在这个更新中,OpenJDK 7 支持椭圆曲线加密(ECC)及用于 TLS 连接的相关加密法。相比老的加密解决方案,大多数情况下均倾向使用 ECC 以保证网络连接安全。

ABRT 现在支持保存 core_backtrace 文件而不是整个 coredump

现在将 ABRT 配置为在不将 coredump 文件写入磁盘的情况下生成回溯。这样可在使用分配了超大内存块的进程时节省时间。可在 /etc/abrt/plugins/CCpp.conf 文件中将 CreateCoreBacktrace 选项设定为 yes,并将 SaveFullCore 选项设定为 no 启用该功能。

在 Python 标准库中添加的安全功能

在 466 Python 增强提案(http://legacy.python.org/dev/peps/pep-0466/)中所述的大量安全增强已移植到 Python 标准库中。这些安全增强包括 ssl 模块中的新概念,比如支持服务器名称指示(SNI),以及对新的 TLSv1.x 协议的支持,对 hashlib module 中的新哈希算法的支持等等。

Python 标准库中用来进行 SSL/TLS 证书验证的新全局设置

添加了新的选项以便用户在 Python 标准库的 HTTP 客户端(比如 urllib、httplib 或者 xmlpclib)中全局启用或禁用 SSL/TLS 证书验证。有关该选项的详情,请查看 493 Python 增强提案(https://www.python.org/dev/peps/pep-0493/)。默认值是不验证证书。详情请查看 https://access.redhat.com/articles/2039753