自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在 Ubuntu 中安裝具體指定的軟件包版本

開發(fā)
這篇教程將涵蓋使用 apt 或 apt-get 命令來安裝一個具體指定的程序的版本的所有的重要的方面。

在 Ubuntu 中想安裝一個軟件包的一個特別指定的版本?你可以通過下面的方式來輕松地完成:

sudo apt install package_name=package_version

你如何知道某個軟件包有哪些可用的版本?可以使用這個命令:

apt list --all-versions package_name

在下面的屏幕截屏中,你可以看到,我有兩個可用的 VLC 版本,我使用命令來安裝較舊的版本:

install specific versions apt ubuntu

install specific versions apt ubuntu

聽起來像一個簡單的任務(wù),對吧?但是事情并非看起來那么簡單。這里有一些不確定是否會出現(xiàn),但是可能會涉及的東西。

這篇教程將涵蓋使用 apt? 或 apt-get 命令來安裝一個具體指定的程序的版本的所有的重要的方面。

安裝一個具體指定版本的程序需要知道的事

在基于 Ubuntu 和 Debian 發(fā)行版中,你需要知道一些關(guān)于 APT 和存儲庫是如何工作的知識。

同一個軟件包源沒有較舊的版本

Ubuntu 在其存儲庫中不保留較舊版本的軟件包。在特殊的情況下,你可以暫時性地看到多個版本。例如,你運(yùn)行 APT 更新(但不升級)時,可能會有一個可用的新版本。在 APT 緩存中,你可以看到同一個軟件包的兩個版本。但是,一旦軟件包被升級到了新的版本,較舊版本的軟件包將從 APT 緩存 和存儲庫中移除。

使用多個軟件包源來使用不同的版本

為獲取同一個的軟件包的多個版本,你必須得添加多個軟件包源。例如,VLC 是版本 3.x 系列。添加 VLC 每日構(gòu)建 PPA 將會提供(不穩(wěn)定的)版本 4.x 系列。

同樣,你可以下載不同版本的 DEB 文件,并安裝它。

較高版本編號的版本通常有優(yōu)先權(quán)

如果你有來自多個軟件包源的相同名稱的軟件,默認(rèn)情況下,Ubuntu 將安裝可用的最高版本編號的版本。

在前面的示例中,如果我安裝 VLC ,那么它將會安裝 4.x 系列的版本,而不是 3.x 系列的版本。

較舊版本將升級到可用的較新版本

這是另外一個可能存在的問題。即使你安裝較舊版本的軟件包,它也會升級到較新的版本(如果存在可用的較新版本)。你必須 保留該軟件包來防止其升級 。

依賴關(guān)系也需要安裝

如果軟件包有依賴關(guān)系,你也需要安裝必要的依賴關(guān)系軟件包。

現(xiàn)在,你已經(jīng)知道一些可能存在的問題,讓我們看看如何解決它們。

安裝一個軟件包的具體指定版本

在這篇教程中,我將以 VLC 為例。在 Ubuntu 的存儲庫中可獲得 VLC 版本。我添加了每日構(gòu)建 PPA ,它將向我提供 VLC 的 4.0 版本的候選版本。

如你所見,在現(xiàn)在的系統(tǒng)中,我有兩個可用的 VLC 版本:

install specific versions apt ubuntu

install specific versions apt ubuntu

~$ apt list -a vlc
Listing... Done
vlc/jammy 4.0.0~rc1~~git20220516+r92284+296~ubuntu22.04.1 amd64
vlc/jammy 3.0.16-1build7 amd64
vlc/jammy 3.0.16-1build7 i386

因?yàn)檩^高版本編號版本有優(yōu)先權(quán),使用 apt install vlc 命令將會導(dǎo)致安裝 VLC 的 4.0 版本。但是,因?yàn)檫@篇教程的緣由,我想安裝較舊的版本 3.0.16 。

sudo apt install vlc=3.0.16-1build7

但是,這里會有這樣的事。VLC 軟件包有一些依賴關(guān)系,并且這些依賴關(guān)系也需要具體指定的版本。因此,在 Ubuntu 為其嘗試安裝最新的版本時,你將會遇到經(jīng)典的 你已保留殘缺軟件包 錯誤。

problem installing specific version apt ubuntu

problem installing specific version apt ubuntu

為修復(fù)這個錯誤,你需要為其提供它所投訴的所有依賴關(guān)系的軟件包的具體指定版本。因此,該命令會變成這樣:

sudo apt install vlc=3.0.16-1build7 \
vlc-bin=3.0.16-1build7 \
vlc-plugin-base=3.0.16-1build7 \
vlc-plugin-qt=3.0.16-1build7 \
vlc-plugin-video-output=3.0.16-1build7 \
vlc-l10n=3.0.16-1build7 \
vlc-plugin-access-extra=3.0.16-1build7 \
vlc-plugin-notify=3.0.16-1build7 \
vlc-plugin-samba=3.0.16-1build7 \
vlc-plugin-skins2=3.0.16-1build7 \
vlc-plugin-video-splitter=3.0.16-1build7 \
vlc-plugin-visualization=3.0.16-1build7

說明一下,每行結(jié)尾處的 \ 只是用來將多行命令來寫入同一個命令的一種方式。

它有作用嗎?在很多情況下,它是有作用的。 但是,我選擇了一個復(fù)雜的 VLC 示例,它有很多依賴關(guān)系。甚至這些所涉及的依賴關(guān)系也依賴于其它的軟件包。所以,它就變得令人難以處理。

一種替代的方法是在安裝時指定軟件包源。

替代方式,指定存儲庫

你已經(jīng)添加多個軟件包源,因此,你應(yīng)該對這些軟件包的來源有一些了解。

使用下面的命令來搜索存儲庫:

apt-cache policy | less

注意存儲庫名稱后面的行:

500 http://security.ubuntu.com/ubuntu jammy-security/multiverse i386 Packages
release v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=multiverse,b=i386
origin security.ubuntu.com

你可以具體指定 o、l、a 等參數(shù)。

在我原來的示例中,我想安裝來自 Ubuntu 存儲庫的 VLC(獲取版本 3.16),而不是安裝來 PPA 的版本(它將向我提供版本 4)。

因此,下面的命令將安裝 VLC 版本 3.16 及其所有的依賴關(guān)系:

sudo apt install -t "o=ubuntu" vlc

install from repository source

install from repository source

看起來令人滿意?但是,當(dāng)你必須更新系統(tǒng)時,問題就來了。它接下來會控訴找不到指定的軟件包版本。

還能做什么?

為安裝較舊的軟件包版本,從你的系統(tǒng)中移除較新版本的軟件包源(如果可能的話)。它將有助于逃脫這些依賴關(guān)系地獄。

如果不能這么做,檢查你是否可以從其它一些軟件包的打包格式來獲取,像 Snap、Flatpak、AppImage 等等。事實(shí)上,Snap 和 Flatpak 也允許你從可用的版本中選擇和安裝。因?yàn)檫@些應(yīng)用程序是沙盒模式的,所以它很容易管理不同版本的依賴關(guān)系。

保留軟件包,防止升級

如果你完成安裝一個指定的程序版本,你可能想避免意外地升級到較新的版本。實(shí)現(xiàn)這一點(diǎn)并不太復(fù)雜。

sudo apt-mark hold package_name

你可以免除保留軟件包,以便它能稍后升級:

sudo apt-mark unhold package_name

注意,軟件包的依賴關(guān)系不會自動地保留。它們需要單獨(dú)地指明。

結(jié)論

如你所見,安裝選定軟件包版本有一定之規(guī)。只有當(dāng)軟件包有依賴關(guān)系時,那么事情就會變得復(fù)雜,然后,你就會進(jìn)入依賴關(guān)系地獄。

責(zé)任編輯:趙寧寧 來源: Linux中國
相關(guān)推薦

2019-08-19 09:19:02

LinuxVimUbuntu

2019-08-19 11:20:33

Linux軟件包命令

2018-07-10 08:59:07

LinuxArch Linux軟件包

2010-01-07 17:32:09

2018-06-11 08:50:46

LinuxArch Linux降級軟件包

2023-01-02 11:34:04

LinuxFlatpak軟件包

2023-01-03 15:53:00

LinuxFlatpak軟件包

2018-06-19 10:06:16

Linux軟件測試Nix包管理器

2018-10-15 11:00:28

Linux軟件包命令

2019-02-25 09:55:32

UbuntuDebian軟件包

2016-10-18 19:02:56

DebianUbuntu LinuMD5

2019-06-03 11:15:32

Linux軟件包命令

2020-07-16 19:24:31

UbuntuLinux

2010-01-07 17:46:09

Ubuntu apt-

2019-07-31 08:00:00

UbuntuLinuxapt-fast

2010-02-05 14:46:20

Ubuntu軟件包

2020-11-11 08:00:00

Linux系統(tǒng)修復(fù)

2022-01-28 08:15:36

UbuntuAPT軟件包

2022-05-09 10:51:26

Snap軟件包Ubuntu

2011-03-29 15:52:38

Cacti配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號