私は Arch Linux に移行しようとしています。AUR でパッケージをチェックアウトすると、"プロジェクト名-git 日付" という命名規則に従うパッケージがたくさんあります。例:
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
それに応じて特別なケースを処理します。
( の 1687-1771 行目makepkg
、関数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
]
( の 1773-1792 行目makepkg
、関数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 からダウンロードして自分でコンパイルするのが、おそらくパッケージの「最新」バージョンを入手する最良の方法です。
一方、少なくともわずかにテストされ、適度に安定していることが確認された、既にコンパイルされたバージョンが必要な場合は、リポジトリからのパッケージをお勧めします。