Linux中國

如何在 Linux 中切換相同程序的不同版本

幾天前,我們曾經討論如何在不同的 PHP 版本之間進行切換。在那篇文章中,我們使用 update-alternatives 命令實現從一個 PHP 版本切換到另一個 PHP 版本。也就是說,update-alternatives 命令可以將 系統範圍 system wide 默認使用的 PHP 版本設置為我們希望的版本。通俗的來說,你可以通過 update-alternatives 命令從系統範圍設置程序的版本。如果你希望可以在不同目錄動態設置不同的程序版本,該如何完成呢?在這種情況下,alt 工具可以大顯身手。alt 是一個命令行工具,可以讓你在類 Unix 系統中切換相同程序的不同版本。該工具簡單易用,是 Rust 語言編寫的自由、開源軟體。

安裝

安裝 alt 工具十分簡單。

運行如下命令,即可在 Linux 主機上安裝 alt

$ curl -sL https://github.com/dotboris/alt/raw/master/install.sh | bash -s

下一步,將 shims 目錄添加到你的 PATH 環境變數中,具體操作取決於你使用的 Shell。

對於 Bash:

$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

對於 Zsh:

$ echo 'export PATH="$HOME/.local/alt/shims:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

對於 Fish:

$ echo 'set -x PATH "$HOME/.local/alt/shims" $PATH' >> ~/.config/fish/config.fish

現在 alt 已經安裝完畢!

使用 alt 工具在 Linux 系統中切換相同程序的不同版本

如我之前所述,alt 隻影響當前目錄。換句話說,當你進行版本切換時,只在當前目錄生效,而不是整個系統範圍。

下面舉例說明。我在我的 Ubuntu 系統中安裝了兩個版本的 PHP,分別為 PHP 5.6 和 PHP 7.2;另外,在 myproject 目錄中包含一些 PHP 應用。

首先,通過命令查看系統範圍默認的 PHP 版本:

$ php -v

示例輸出:

查找 PHP 版本

如截圖中所示,我系統中默認的 PHP 版本為 PHP 7.2。

然後,我將進入放置 PHP 應用的 myproject 目錄。

$ cd myproject

使用如下命令掃描可用的 PHP 版本:

$ alt scan php

示例輸出:

掃描 PHP 版本

可見,我有兩個 PHP 版本,即 PHP 5.6 和 PHP 7.2。按下 <空格> 鍵選中當前可用的版本。選中全部可用版本後,你可以看到圖中所示的 叉號 cross mark 。使用上下方向鍵在版本間移動,點擊回車即可保存變更。

選取 PHP 版本

下面運行該命令並選取我們希望在 myproject 目錄中使用的 PHP 版本:

$ alt use php

我希望使用 PHP5.6 版本,故我(使用方向鍵)選取該版本並點擊回車鍵。

設置 PHP 版本

現在,你可以在 /home/sk/myproject 目錄下使用 PHP 5.6 版本啦。

讓我們檢查一下,在 myproject 目錄下是否默認使用 PHP 5.6 版本:

$ php -v

示例輸出:

檢查 PHP 版本

只要你不設置成其它版本,(在該目錄下)將一直使用 PHP 5.6 版本。清楚了嗎?很好!請注意,我們僅在這個目錄下使用 PHP 5.6 版本。在系統範圍內(LCTT 譯註:當然是沒單獨設置過其它版本的目錄下),PHP 7.2 仍是默認的版本。讓我們檢驗一下,請看下圖。

比對 PHP 版本

從上面的截圖中可以看出,我有兩個版本的 PHP:在 myproject 目錄下,使用的版本為 PHP 5.6;在 myproject 外的其它目錄,使用的版本為 PHP 7.2。

同理,你可以為每個目錄設置你希望的程序版本。我這裡使用 PHP 僅用於說明操作,但方法適用於任何你打算使用的軟體,例如 NodeJS 等。

下面是 NodeJS 的示例視頻。

如果你希望在不同軟體包版本下測試你的應用,那麼 alt 是你不錯的選擇。

本次分享到此結束。後續還有更多內容,敬請期待!

乾杯!

via: https://www.ostechnix.com/how-to-switch-between-different-versions-of-commands-in-linux/

作者:SK 選題:lujun9972 譯者:pinewall 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國