我正準備遷移到 Arch Linux。查看 AUR 中的包,有很多包遵循命名方案“project-name-git date”,例如:
adonthell-git 20100408-1
akonadi-facebook-git 20111117-1
wesnoth-svn 40587-1
vimprobable-git 20110829-1
vimprobable2-git 20111214-1
這些包是什麼?它們只是 adonthell/wesnoth/etc 儲存庫在指定時間點的快照嗎?如果是這樣,那麼如果不更改套件名稱就無法更新套件,這會使套件管理變得更加複雜。
如果我想要 git 儲存庫中的 vimprobable 的最新版本,我應該使用 AUR 還是自己編譯它?
答案1
簡而言之:只需建置包,它將是 Git 儲存庫中的最新版本;這是由 . 自動處理的makepkg
。
從讀取包PKGBUILD
的檔案-git
(例如adonthell git),你可以看到:
cd $_gitname && git pull origin
msg "The local files are updated."
因此,每次makepkg
運行時,它都會從 Git 儲存庫下載最新版本。
該pkgver
參數是因為需要在最終包中makepkg
提供版本號;PKGBUILD
在這裡,約會是最有意義的。
如果偵測到它是來自 Git 的包,則makepkg
相應地處理特殊情況:
(makepkg
函數的第 1687-1771 行devel_check
)
elif [[ -n ${_gitroot} && -n ${_gitname} ]] ; then
if ! type -p git >/dev/null; then
warning "$(gettext "Cannot find the %s binary required to determine latest %s revision.")" "git" "git"
return 0
fi
msg "$(gettext "Determining latest %s revision...")" 'git'
newpkgver=$(date +%Y%m%d)
[剪掉了很多其他案例darcs
,hg
等等svn
...]
(makepkg
函數的第 1773-1792 行devel_update
)
# This is lame, but if we're wanting to use an updated pkgver for
# retrieving svn/cvs/etc sources, we'll update the PKGBUILD with
# the new pkgver and then re-source it. This is the most robust
# method for dealing with PKGBUILDs that use, e.g.:
因此,您最終會得到一個包,其版本號是您建立它的日期。
答案2
使用 Git 日期與使用任何其他形式的版本編號一樣有效。
至於如何取得最新版本的軟體包/程序,從 git 下載並自行編譯可能是獲取軟體包「最新」版本的最佳方法。
另一方面,如果您想要一個已編譯的版本,至少已經過少量測試並發現具有一定的穩定性,那麼我會推薦儲存庫中的套件。