AUR 中的「*-git date」套件怎麼了?

AUR 中的「*-git date」套件怎麼了?

我正準備遷移到 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)

[剪掉了很多其他案例darcshg等等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 下載並自行編譯可能是獲取軟體包「最新」版本的最佳方法。

另一方面,如果您想要一個已編譯的版本,至少已經過少量測試並發現具有一定的穩定性,那麼我會推薦儲存庫中的套件。

相關內容