Ubuntu 20.04 的 rsync 內建只有 3.1.3 (參考「Ubuntu – Package Search Results — rsync」這邊),但 --mkpath
這個參數需要 3.2.3+ 才能跑:「How can I configure rsync to create target directory on remote server?」,所以就要找 PPA 看看有沒有人有包新版的可以用。
在「Utilities – various (Xenial & newer)」這邊可以看到 Rob Savoury 有包,但發現這包有一堆軟體,我不想要裝這麼多,所以就用 Pinning 限制。
用 apt-cache policy
可以看到 o=
的值,然後就可以在 /etc/apt/preferences.d/savoury1-utilities
裡設定 rsync 的 Pin-Priority
是 1001
,而其他的都掛到 -1
。
Package: *
Pin: release o=LP-PPA-savoury1-utilities
Pin-Priority: -1
Package: rsync
Pin: release o=LP-PPA-savoury1-utilities
Pin-Priority: 1001
但跑 apt upgrade
沒看到可以升級,而直接 apt install rsync
的時候可以看到是因為 libxxhash0
跟不上新版而產生錯誤訊息:
The following packages have unmet dependencies:
rsync : Depends: libxxhash0 (>= 0.8.0) but 0.7.3-1 is to be installed
E: Unable to correct problems, you have held broken packages.
所以一起加進去變成:
Package: *
Pin: release o=LP-PPA-savoury1-utilities
Pin-Priority: -1
Package: libxxhash0 rsync
Pin: release o=LP-PPA-savoury1-utilities
Pin-Priority: 1001
然後就可以 apt upgrade
升級上去了。