![如何在 Arch Linux 中列出軟體包的[可用]版本?](https://rvso.com/image/95517/%E5%A6%82%E4%BD%95%E5%9C%A8%20Arch%20Linux%20%E4%B8%AD%E5%88%97%E5%87%BA%E8%BB%9F%E9%AB%94%E5%8C%85%E7%9A%84%5B%E5%8F%AF%E7%94%A8%5D%E7%89%88%E6%9C%AC%EF%BC%9F.png)
我想知道如何列出全部Arch Linux 中給定軟體套件的可用版本(已安裝和未安裝),而不僅僅是最新版本。我知道 Gentoo ( eix <package>
)、CentOS/Suse/Redhat/... ( yum list <package>
) 和 Debian ( apt-cache policy <package>
)。我知道我曾經在 Arch 中這樣做過,但我不記得是怎麼做的。假設我想要的包包是不是在 pacman 快取中。
有了 Arch 我有這個:
$ pacman -Ss gcc
core/gcc 6.2.1-1 (base-devel)
The GNU Compiler Collection - C and C++ frontends
core/gcc-ada 6.2.1-1
Ada front-end for GCC (GNAT)
core/gcc-fortran 6.2.1-1
...
以下是 Gentoo 的範例:
eix gcc
...
[I] sys-devel/gcc
Available versions:
(2.95.3) ~*2.95.3-r10^s
(3.3.6) ~3.3.6-r1^s
(3.4.6) 3.4.6-r2^s
(4.0.4) **4.0.4^s
(4.1.2) 4.1.2^s
(4.2.4) ~4.2.4-r1^s
(4.3.6) 4.3.6-r1^s
(4.4.7) 4.4.7^s
(4.5.4) 4.5.4^s
(4.6.4) 4.6.4^s
(4.7) 4.7.4^s
(4.8) ~4.8.0^s ~4.8.1-r1^s ~4.8.2^s 4.8.3^s 4.8.4^s 4.8.5^s
(4.9) ~*4.9.0^s ~*4.9.1^s ~4.9.2^s ~4.9.3^s
(5.1) **5.1.0^s
(5.2) **5.2.0^s
{altivec awt boundschecking cilk +cxx d debug doc fixed-point +fortran gcj go graphite hardened libssp mudflap multilib multislot +nls nopie nossp +nptl objc objc++ objc-gc +openmp regression-test +sanitize vanilla}
Installed versions: 4.8.5(4.8)^s(10:57:39 02/09/15)(cxx fortran multilib nls nptl openmp sanitize -altivec -awt -debug -doc -fixed-point -gcj -go -graphite -hardened -libssp -mudflap -multislot -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla)
Homepage: http://gcc.gnu.org/
Description: The GNU Compiler Collection
...
這裡有 GCC 的所有可用版本,已安裝的版本以反色影片突出顯示(此處看不到)。在我運行這個的系統上,安裝的 GCC 版本是 4.8.5。
那麼在 Arch Linux 下如何做到這一點呢?
編輯:雖然我的機器上不再有 Arch,但我想我必須添加一些細節以提高精度。我當時想要的不是[如何]降級一套。我需要的是知道我想要的包的可用版本列表升級,不只是最新的版本。例如,當我知道軟體包的最新版本(在升級時)有錯誤並且我想嘗試前一個版本(如果它也恰好是我係統上當前安裝的版本的升級)時,這非常有用。
答案1
一個簡單的例子pacman -Ss <package>
將向您展示該資訊:
↪ LC_ALL=en_US.utf8 pacman -Ss evince
testing/evince 3.22.0+1+gc1dd9eb-1 (gnome) [installed: 3.20.1-2]
Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt))
extra/evince 3.20.1-2 (gnome) [installed]
Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt))
在您的問題中的範例之後更新:
在 Arch Linux 中,您只能擁有(除非您使用非官方儲存庫)可用軟體包的兩個版本:核心/額外/社群/multilib 儲存庫之一中的穩定版本和測試中的一個版本。
如果您真的非常想安裝較舊的軟體包,您有多種選擇來尋找這些軟體包:
使用Arch Linux 檔案尋找舊版的軟體包。
使用以下工具之一降級維基文章來查找它們,例如
agetpkg -l gcc
或downgrader gcc
。
請注意,Arch Linux 中的套件通常不會指定其依賴項的版本界限,因為不支援部分升級,因此安裝某些軟體包的舊版本並不是一個好主意。
答案2
來自Arch Linux 維基(我的重點):
查看舊版本和新版本可用套餐,取消註解該
"VerbosePkgLists"
行/etc/pacman.conf.
有關安裝特定版本的更多信息這裡。
編輯:
這是它在我的 Arch 系統上的樣子,VerbosePkgLists
沒有註解:
sudo pacman -Sy firefox
:: Synkroniserar paketdatabasen...
core är senaste versionen
extra är senaste versionen
community är senaste versionen
löser beroenden...
Söker efter paket med konflikter...
Paket (1) Gammal Version Ny Version Nettoskillnad Hämtningsstorlek
extra/firefox 48.0.2-1 49.0.1-1 -0,35 MiB 39,82 MiB
Total hämtningsstorlek: 39,82 MiB
Total installationsstorlek: 89,81 MiB
Nettouppgraderingsstorlek: -0,35 MiB
:: Fortsätt med installation? [Y/n]
我的系統(顯然)是瑞典語的,但“ Gammal Version
”表示Old version
,“ Ny Version
”表示New version
。正如您在上面看到的,[Y/n]
在安裝任何東西之前都會提示我。