我在 AWS 中运行 AWS Linux AMI,它似乎是 RHEL 并使用 yum (kernel 3.4.62-53.42.amzn1.x86_64) 。amazon repo 包括 nginx 1.4.2,它已经过时了,所以我删除了它并使用 nginx 网站上给出的 repo 重新安装。我这样做了:
sudo yum remove nginx*
sudo yum --disablerepo="*" --enablerepo="nginx" install nginx
请注意,yum 优先级已禁用。我尝试在 repo 文件中设置 priority=,但在阅读后决定禁用优先级是有意义的。
/etc/yum.repos.d 文件:amzn-main.repo 包含:
[amzn-main]
name=amzn-main-Base
mirrorlist=http://repo.us-east-1.amazonaws.com/$releasever/main/mirror.list
mirror_expire=300
metadata_expire=300
priority=10
failovermethod=priority
fastestmirror_enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
enabled=1
retries=5
timeout=10
report_instanceid=yes
[amzn-main-debuginfo]
name=amzn-main-debuginfo
mirrorlist=http://repo.us-east-1.amazonaws.com/$releasever/main/debuginfo/mirror.list
mirror_expire=300
metadata_expire=300
priority=10
failovermethod=priority
fastestmirror_enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-amazon-ga
enabled=0
retries=5
timeout=10
report_instanceid=yes
nginx.repo 包含:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/6/$basearch/
gpgcheck=0
enabled=1
priority=1
现在在安装 nginx 1.4.3 后进行更新,它会尝试从 amazon main repo 安装旧版本:
$ sudo yum update
Loaded plugins: update-motd, upgrade-helper
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:1.4.3-1.el6.ngx will be updated
---> Package nginx.x86_64 1:1.4.2-1.12.amzn1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
所以不知道为什么它会选择旧版本。有没有办法将 yum 配置为仅在版本比当前安装的版本新时才更新?如果没有办法,有没有办法在我进行常规更新时跳过 nginx 包,然后使用如上所述的另一个命令更新 nginx,该命令禁用所有存储库并仅使用 nginx 存储库,这里又是:
sudo yum --disablerepo="*" --enablerepo="nginx" install nginx