私はCentOS Linuxサーバーセットの最新のgitバージョンを維持する作業をしてきました。私は簡単なインストールのためにローカルYumミラーに公開できるバイナリRPMを作成し、定期的なメンテナンスの一環として、残りのOSですべてを簡単に最新の状態に保ちたいと思います。
通常、オペレーティングシステムのパッケージマネージャ(yum)からgitバイナリをインストールすることをお勧めします。ただし、最新のCentOS / RHEL 7でも利用可能な最新のパッケージは、最新の2.7.1に比べて比較的古い1.8.3.1にとどまります。 RPMForgeは最新のgitパッケージを提供するために使用されているように見えますが、EL 6以降は提供されません。したがって、ソースからビルドすることは、実際にここに残った唯一のオプションのようです。ただし、ここではカスタムRPMパッケージを使用してそれを維持することをお勧めします。
- 引用:
- https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- https://stackoverflow.com/questions/21820715/how-to-install-latest-version-of-git-on-centos-6-x-7-x
- https://stackoverflow.com/questions/28365026/update-to-latest-git-version-2-2-x-in-centos
- https://www.digitalocean.com/community/tutorials/how-to-install-git-on-centos-7
- https://serverfault.com/questions/709433/install-a-newer-version-of-git-on-centos-7
RPMパッケージングにFedoraの「模擬」を使用することがこの問題を解決するための最良の方法であるようです。最悪のことは、SPECファイルをインポート、生成、維持するようです。幸いなことに、Fedora Rawhideはこの作業に非常に便利なようです。https://rpmfind.net/linux/RPM/fedora/devel/rawhide/src/g/git-2.7.0-1.fc24.src.html。
SRPMで簡単な再構築を成功させました。
$ mock -r epel-7-x86_64 rebuild /tmp/git-2.7.0-1.fc24.src.rpm
しかし、既存のオペレーティングシステムが提供するgitインストールと競合が多く、インストールに失敗しました。いずれにせよ、他のOS提供パッケージ(以前のgitバージョンが必要な場合があります)との互換性や依存関係の問題が発生する危険性があるため、OS提供バージョンを削除/交換したくありません。私はプレフィックス付きのカスタムRPMを使用することを好みます/usr/local
。
rpm -qpi
デフォルトのRPMレポートは、これらの代替場所にインストールするフラグを使用してrpmを(not relocatable)
実行できないことを意味します。--prefix
ただし、yumでデフォルトのインストールを実行するのは複雑になるため、この方法を使用したくありません。生成されたRPMがクラッシュしないように、ソースRPMビルドで簡単にカスタマイズできると思います。
私は_prefix
次のようにSPECファイルでマクロの代替値を定義するのと同じくらい簡単だと思いました。
$ mock -r epel-7-x86_64 -D "_prefix /usr/local" rebuild /tmp/git-2.7.0-1.fc24.src.rpm
完全に失敗するまではうまくいくようです。次のエラーで終わりました。
+ sed -e 's@^/builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64@@'
find: '/builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/share/perl5/vendor_perl': No such file or directory
+ find /builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/share/perl5/vendor_perl -mindepth 1 -type d
+ sed -e 's@^/builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64@%dir @'
find: '/builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/share/perl5/vendor_perl': No such file or directory
+ grep Git/SVN perl-git-files
error: Bad exit status from /var/tmp/rpm-tmp.sw2Kfy (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.sw2Kfy (%install)
ERROR: Exception(/tmp/git-2.7.0-1.fc24.src.rpm) Config(epel-7-x86_64) 2 minutes 39 seconds
INFO: Results and/or logs in: /var/lib/mock/epel-7-x86_64/result
ERROR: Command failed. See logs for output.
# bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/git.spec
または、SPECSとSOURCESを最初に抽出して(from)inprefix
に変更してから再構築すると、問題はまだ失敗しますが、別の場所にあります。/usr/local
%{_prefix}
SPECS/git.spec
+ install -pm 644 contrib/emacs/git.el /builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/share/emacs/site-lisp/git
+ install -Dpm 644 /builddir/build/SOURCES/git-init.el /builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/share/emacs/site-lisp/site-start.d/git-init.el
+ install -pm 755 contrib/credential/gnome-keyring/git-credential-gnome-keyring /builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/libexec/git-core
install: cannot create regular file '/builddir/build/BUILDROOT/git-2.7.0-1.el7.centos.x86_64/usr/libexec/git-core': No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.CJFTef (%install)
Bad exit status from /var/tmp/rpm-tmp.CJFTef (%install)
RPM build errors:
ERROR: Exception(git-build/2/git-2.7.0-1.el7.centos.src.rpm) Config(epel-7-x86_64) 1 minutes 37 seconds
INFO: Results and/or logs in: /var/lib/mock/epel-7-x86_64/result
ERROR: Command failed. See logs for output.
# bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps /builddir/build/SPECS/git.spec
(私は以前にマクロを定義しようとすると、SPECファイルを強制的に変更するよりも成功に近かったと思います_prefix
。prefix
_prefix
- 引用:
- https://fedoraproject.org/wiki/How_to_create_an_RPM_package
- https://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
- https://wiki.centos.org/HowTos/RebuildSRPM
- http://www.thegeekstuff.com/2015/02/rpm-build-package-example/
- (不適格、ルートとしてソースRPMビルド!)
- http://blog.packagecloud.io/eng/2015/05/11/building-rpm-packages-with-mock/
どうすればいいのか分かりません。別のインストールプレフィックスを別々に指定する必要がありますか、それとも別の方法を試すことができますか?
答え1
私はいくつかのgit repoの人々がgit 2.7.2用のSRPMを持っていることを発見しました。それがあなたにとって十分に新しいものであれば。
Centos 6でうまく構築しました。
https://github.com/nkadel/git27-srpm
それは私のためにすべてのパッケージと依存関係を作成し、それを私のプライベートリポジトリに追加してgitをインストールすることができました。 2.9.3の変更ログで私の推測では、2.9.3を得るには仕様ファイルのバージョン番号を修正するだけです。 (作成時の最新バージョン)
答え2
プレフィックスを設定しようとすると部分的に有効なようです/usr/local
。
CentOS SRPMをダウンロードして解凍し、.spec
ファイルを読みます。設定が設定されている場所を確認し、そこでプレフィックスを修正してください。最新のgit tarballをダウンロードし、ソース(およびバージョン!)への参照を変更してビルドしてみてください。ほとんどのパッチは適用できない場合があり、そのパッチの適合性/要件を確認する必要があります。
パッケージ名をgit-local
、または同様の名前に変更します。そうでない場合、パッケージマネージャはそれを公式のgitパッケージの代替エントリと見なし、パッケージがインストールされたときに削除する可能性が高くなります。