zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux - Ubuntu里安装指定版本的package

Linux安装Ubuntu 版本 指定 package
2023-09-11 14:22:09 时间

如何查询已经安装的package的版本?

apt-cache policy <package name>

apt policy <package name>

上述命令将显示已安装的软件包的版本,以及根据你所运行的Ubuntu版本在软件库中的所有可用版本。它不会显示为其他版本的Ubuntu(不是你的版本)准备的软件包版本。

使用其他命令也能显示版本:

apt list -a <package>

apt-cache madison <package>

上面的madison命令是Debian的archive管理工具,在这里用来查询可安装package的版本信息。

例子:

$ apt-cache policy gparted

gparted:

  Installed: 0.16.1-1

  Candidate: 0.16.1-1

  Version table:

*** 0.16.1-1 0

        500 http://ubuntu.inode.at/ubuntu/ saucy/main amd64 Packages

        100 /var/lib/dpkg/status

那安装的版本就是0.16.1-1,建议就安装最新的版本就好,而显示的其他版本是老一些的版本。

那如何安装指定版本的package?

sudo apt-get -s install <package name>=<version>

这里-s --strip参数,是去除符号表的意思,strip the symbol tables。

比如:

$ sudo apt-get install gparted=0.16.1-1

Reading package lists... Done

Building dependency tree       

Reading state information... Done

gparted is already the newest version.

0 upgraded, 0 newly installed, 0 to remove and 265 not upgraded.

下载后安装的方法

使用wget下载deb软件包,卸载原来的包,安装下载的这个包,在这里下载的是一个老一些的包,然后防止apt自动更新这个包,如果想更新了,在取消这个包的版本固定。

wget -o ~/Downloads/ https://cdn.crate.io/downloads/apt/stable/pool/main/c/crate/crate_2.1.8-1~wheezy_all.deb

sudo apt remove crate

sudo apt install ~/Downloads/crate_2.1.8-1~wheezy_all.deb

sudo apt-mark hold crate

sudo apt-mark unhold crate <---- Someday (not today) you will need this to undo the hold

其他说明:

Debian软件库(包括Ubuntu)被设计成只有一个候选软件包可用。默认情况下,这是该版本的最新版本。你不能改变这一点--这是上游(up stream)版本,而且版本是在软件库的 Release 文件中指定的。

警告: 在Ubuntu中使用Debian软件包通常是不明智的,除非你真的知道自己在做什么。这其中有很多原因。

警告: 降级一个软件包是可能的,但不被支持。如果你尝试了,但由于某种原因没有成功,那么你能得到的最好的建议就是恢复到你所发布的Ubuntu的正确版本。一个错误版本的软件包可能会导致各种依赖性问题。(这就是为什么Debian软件库不这么玩的原因)

参考:

apt - Install a specific version version not listed using madison - Ask Ubuntu

software installation - How to install specific version of some package? - Ask Ubuntu

linux - Specific package version not available - Super User