我正在尝试下载ngx_pagespeed模块,以便我可以使用它从源代码编译Nginx。
我正在使用Ubuntu 16.04。
我正在使用https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source
中的说明所以我需要首先安装Ubuntu依赖项,没有特技。
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev
安装依赖项后,继续执行"构建指令"部分。这是我完全被抛弃的地方。这是我无法破译的代码。
NPS_VERSION=1.12.34.2-stable
cd
wget
https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}.zip
unzip v${NPS_VERSION}.zip
cd ngx_pagespeed-${NPS_VERSION}/
NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz
[ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
wget ${psol_url}
tar -xzvf $(basename ${psol_url}) # extracts to psol/
第一个问题 - 这两行似乎与我不一致。
NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
我没有bash专家,但第二行不会否定第一行吗?为什么它们会包含这两行,特别是当第一行指定" NPS_VERSION = 1.12.34.2-stable"?
第二个问题,如果我停止在" NPS_RELEASE_NUMBER = $ {NPS_VERSION / beta /}"然后运行
echo "$NPS_RELEASE_NUMBER"
它返回" 1.12.34.2-stable"
好的,很奇怪。它似乎只是回应变量" NPS_VERSION",完全忽略了部分字符串" / beta /"附加到" NPS_VERSION"在变量" NPS_RELEASE_NUMBER"。所以我设置了#34; NPS_RELEASE_NUMBER = $ {NPS_VERSION / stable /}"
再次回显变量,但这次它返回" 1.12.34.2 - "。说真的,这里发生了什么?
编辑:我开始认为文档存在严重错误。我以为这只是我,但事实上变量" NPS_RELEASE_NUMBER"正在回归这种奇怪的结果让我相信其他事情正在发生。
答案 0 :(得分:1)
我不是bash专家,但第二行不会否定第一行吗?
是的,第一行将是多余的。
再次回显变量,但这次它返回“1.12.34.2-”。 说真的,这里发生了什么?
这是bash substutution。构建${VAR/substring/to replace}
只会将substring
替换为to replace
中的$VAR
。所以,你只是剥离了“稳定”字符串,这种行为是正确的。
我开始认为某些事情严重错误了 文档。我以为这只是我,但事实是 变量“NPS_RELEASE_NUMBER”正在返回这样奇怪的结果导致我 相信其他事情正在发生。
看起来这个脚本过度设计了。忽略它。只需下载/解压缩nginx和你的模块的源代码,然后在nginx目录中执行:
./configure --add-module=/some/path/to/ngx_pagespeed-${NPS_VERSION} (any extra flags of nginx here)
make
sudo make install
这一切。请注意,最后一个命令将在您的系统中安装新的nginx,并且此安装在没有包管理器的情况下完成。如果您真的想要它,请删除以前安装过的任何版本的nginx。