本文示範Distrobox的其中一種用途:幹其他發行版的套件來用並與桌面環境整合,例如在Ubuntu使用pacman安裝Arch Linux的套件。
目標:在Ubuntu宿主機,使用Arch Linux容器,安裝AUR獨有的特製版MPV,配合VapourSynth MVTools補幀影片。在那之後,將容器裡安裝的MPV匯出到桌面,供宿主機無縫使用。
影片版解說
1. 目標說明#
AUR(Arch User Repository)是Arch Linux官方儲存庫以外的重要套件補充來源,套件庫收錄許多實用與第三方修改過的套件,使用者可從此處取得許多專有軟體。若某AUR套件投票夠熱門則該套件就能進入官方儲存庫。
實際上AUR網站並無收錄真的套件,提供的是編譯指令碼(PKGBUILD),用戶下載AUR的儲存庫後,使用指令makepkg
,系統即會自動按照PKGBUILD所寫內容,建置應用程式。由於此一特性,AUR得以收錄許多發行版無法打包,需要手動編譯的軟體。
本文要安裝的軟體「特製版MPV」之所以叫特製版,是由於大多數發行版在編譯MPV時並未啟用VapourSynth,所以Ubuntu要使用VapourSynth就得手動重新編譯MPV;Arch Linux則是有寫好的AUR套件能大幅簡化編譯流程。
若採用Ubuntu手動編譯,則未來更新不方便,安裝至系統亦很難解除安裝,編譯又會裝一堆多餘的依賴套件。故採用將MPV裝在Arch Linux容器內部的作法,依賴套件只會影響容器本身。在編譯好後將MPV暴露給主機使用。
2. 建立Arch Linux容器#
安裝 Distrobox
建立使用Nvidia的Arch Linux容器,設定家目錄為
~/distrobox/archlinux
distrobox create --name archlinux --image archlinux --home ~/distrobox/archlinux --nvidia
distrobox enter archlinux
- 安裝yay套件管理器,用於管理AUR套件
sudo pacman -Syy
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
sudo makepkg -si
3. 安裝mpv-vapoursynth#
- 安裝mpv-vapoursynth-git
yay -S mpv-vapoursynth-git
- 安裝vapoursynth-plugin-mvtools
sudo pacman -S vapoursynth-plugin-mvtools
參考 MVTools一文的說明,建立播放設定檔。由於我容器家目錄設定在
~/distrobox/archlinux
,所以.config/mpv
等相關目錄要放在此。將MPV匯出至宿主機
distrobox-export --app mpv
- MPV的dekstop檔案
/home/user/.local/share/applications/archlinux-mpv.desktop
可能要改成下述內容才能正常開啟
Exec=/home/user/.local/bin/distrobox-enter -n archlinux -- mpv --player-operation-mode=pseudo-gui
自此桌面環境便可啟動容器內的MPV
如果部份程式需要用到二進位檔(如 mpv-handler),則將容器的MPV二進位檔匯出至
~/.local/bin
。雖然匯出的二進位檔實際是一個shell指令稿,但跟一般應用程式沒二樣,MPV照樣可以接受傳入的參數。
distrobox-export --bin /usr/bin/mpv --export-path /home/user/.local/bin
/home/user/.local/bin/mpv
的檔案內容應該改成如下才能正常以指令播放影片
exec "/home/user/.local/bin/distrobox-enter" -n archlinux -- /usr/bin/mpv --player-operation-mode=pseudo-gui "$@"
- 再將該路徑加入PATH,若宿主機有裝MPV,在這裡因容器路徑在前,會優先以容器的MPV來播放。
echo "PATH=~/.local/bin:$PATH" >> /home/user/.bashrc
source .bashrc