Arch-Linux
如何修改使用 git 源僅提取淺複製的 PKGBUILD?
前幾天我嘗試在 Arch Linux 上
opencv-git
從AUR安裝。makepkg
當然,顧名思義,它是從git儲存庫中提取的。這拉了 1Gb。我正在閱讀有關使用git
. 當我查看PKGBUILD
文件時,使用grep git PKGBUILD
,我看到:pkgname="opencv-git" makedepends=('git' 'cmake' 'python2-numpy' 'mesa' 'eigen2') provides=("${pkgname%-git}") conflicts=("${pkgname%-git}") source=("${pkgname%-git}::git+http://github.com/Itseez/opencv.git" cd "${srcdir}/${pkgname%-git}" git describe --long | sed -r 's/([^-]*-g)/r\1/;s/-/./g' cd "${srcdir}/${pkgname%-git}" cd "${srcdir}/${pkgname%-git}" cd "${srcdir}/${pkgname%-git}" install -Dm644 "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname%-git}/LICENSE"
有沒有辦法修改配方或
makepkg
命令以僅提取淺層複製(我想要的是最新版本的原始碼)而不是完整的儲存庫以節省空間和頻寬?閱讀man 5 PKGBUILD
並不能提供我正在尋找的洞察力。還快速瀏覽了makepkg
手冊pacman
頁- 似乎找不到如何做到這一點。
這可以通過使用自定義dlagent來完成。我不太了解 Arch 打包或 dlagents 的工作原理,所以我只有一個 hack 答案,但它可以完成工作。
這個想法是修改 PKGBUILD 以使用自定義下載代理。我修改了源
"${pkgname%-git}::git+http://github.com/Itseez/opencv.git"
進入
"${pkgname%-git}::mygit://opencv.git"
然後定義了一個名為的新 dlagent
mygit
,它通過makepkg DLAGENTS='mygit::/usr/bin/git clone --depth 1 http://github.com/Itseez/opencv.git'
另請注意,正在複製的儲存庫已硬編碼到命令中。同樣,這可能是可以避免的。最後,下載位置不是 PKGBUILD 所期望的。為了解決這個問題,我只需在下載後移動儲存庫。我通過添加來做到這一點
mv "${srcdir}/../mygit:/opencv.git" "${srcdir}/../${pkgname%-git}"
在
pkgver
函式的開頭。我認為更清潔的解決方案是弄清楚
git+http
dlagent 正在做什麼並暫時重新定義它。這應該避免解決方案的所有黑客方面。