ubuntu软件包版本问题

切换apt-cache的sources.list来源,apt-get安装某个软件的不同版本。

和朋友业余捣鼓项目,继续全(zhe)栈(teng)的感觉。在前东家申请了企业免费试用后,买买买之后就是安装软件。 Ubuntu的包管理机制安装软件通常比较方便。但是软件版本可能不是想要的。例如Ubuntu 18.04默认的Nginx包版本是1.14,但是我想安装1.16。

查看软件包的版本

# apt-cache madison nginx
     nginx | 1.14.0-0ubuntu1.2 | http://mirrors.cloud.aliyuncs.com/ubuntu bionic-updates/main amd64 Packages
     nginx | 1.14.0-0ubuntu1.2 | http://mirrors.cloud.aliyuncs.com/ubuntu bionic-updates/main i386 Packages
     nginx | 1.14.0-0ubuntu1.2 | http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security/main amd64 Packages
     nginx | 1.14.0-0ubuntu1.2 | http://mirrors.cloud.aliyuncs.com/ubuntu bionic-security/main i386 Packages
// 后面省略 

或者

# apt-cache policy nginx

要安装其他版本的Nginx,除了从官网下载源码构建,还可以切换软件包来源实现。 完整步骤参考Nginx官网 nginx: Linux packages

设置stable的源(此时1.16是stable version):

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

把nginx的签名安装到apt-key:

curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

接着更新apt和安装

sudo apt update
sudo apt install nginx

然而安装报错

Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'xxx' doesn't support architecture 'i386'

找到一篇资料 Skipping acquire of configured file ‘main/binary-i386/Packages’ as repository ‘xxx’ doesn’t support architecture ‘i386’,是因为安装包的arch问题,i386对应32bit,我的ecs是64bit,强制设置为amd64。

# cd /etc/apt/sources.list.d

# ll 
total 24
drwxr-xr-x 2 root root 4096 May 31 09:25 ./
drwxr-xr-x 7 root root 4096 May 31 09:23 ../
-rw-r--r-- 1 root root   64 May 31 09:25 nginx.list
-rw-r--r-- 1 root root  110 May 31 09:03 nodesource.list

# cat nginx.list 
deb http://nginx.org/packages/ubuntu bionic nginx

nginx.list修改为

deb [arch=amd64]  http://nginx.org/packages/ubuntu bionic nginx

再次安装即可。

这时再看看软件包版本

# apt-cache policy nginx
nginx:
  Installed: 1.16.0-1~bionic
  Candidate: 1.16.0-1~bionic
  Version table:
 *** 1.16.0-1~bionic 500
        500 http://nginx.org/packages/ubuntu bionic/nginx amd64 Packages
        100 /var/lib/dpkg/status
     1.14.2-1~bionic 500
        500 http://nginx.org/packages/ubuntu bionic/nginx amd64 Packages
// 后面省略
Built with Hugo
Theme Stack designed by Jimmy