我花了一些时间在我的 Mac Os X 10.6.8 上安装更新版本的 Apache2.x。
通过 ./configure 配置 apache 时,我指定了 Darwin 布局。此布局假定现有 apache 安装的路径设置,这是我想要的,因为我的目标是替换旧的。
我跑了make,然后当然是sudo make install。
我通过做检查了apache版本
apachetcl -v
Run Code Online (Sandbox Code Playgroud)
我得到了
Server version: Apache/2.4.1 (Unix)
Server built: Mar 31 2012 01:52:54
Run Code Online (Sandbox Code Playgroud)
哪个好。但这里是奇怪的部分。我检查了 /etc/apache2 中的“旧”httpd.conf 文件,它有一个旧的修改日期。
直到我尝试运行 apache 之后,我才真正弄清楚这一点。Apache 尝试加载一些与新版本不兼容的扩展。
这让我检查了 /usr/libexec/apache2 目录,我看到除了两三个模块外,这些模块最近没有被修改。基本上 sudo make install 并没有覆盖所有可能的文件。
What is the convention here? Should make install overwrite everything or not?
Run Code Online (Sandbox Code Playgroud)
我假设这仅取决于开发人员如何编写配置脚本和 Makefile。
在再次运行 make install 之前,我最终在我知道的任何现有 apache 目录上执行了一些 rm -rf 。在那之后,一切都是新鲜的。
我在 Manjaro 上使用bash
5.0.16(和bash-completion
2.10)。今天,我在移动一些文件时心不在焉地按了 Tab 键,并收到了一条意想不到的消息:
[charles@wirepile some_dir]$ mv ~down*** stack smashing detected ***: <unknown> terminated
Run Code Online (Sandbox Code Playgroud)
我必须^C
重新获得对外壳的控制。
看来,每当在波浪号字符上调用制表符补全(无论后面有或没有其他字符)时,我的(最新的 Manjaro)bash 版本都会触发堆栈保护器。以下确实有效:
[charles@wirepile some_dir]$ ls ~/
.this_dir/ .that_file another_file
Run Code Online (Sandbox Code Playgroud)
我的 中不应该有任何不寻常的行.bashrc
,除非 Manjaro 默认自定义它。
我想这是某种缓冲区溢出,应该被视为一个错误——这是故意的吗?我应该联系开发人员还是包维护人员?
我也很好奇——有人能重现这个问题吗?