linux - كيفية تثبيت أحدث إصدار من بوابة على CentOS 7.x / 6.x




git installation yum (10)

اعتدت على المعتاد:

yum install git

لم تقم بتثبيت أحدث إصدار من بوابة Git على جهاز CentOS 6. كيف يمكنني التحديث إلى أحدث إصدار من git لـ CentOS 6؟ يمكن تطبيق الحل على الإصدارات الأحدث من CentOS مثل CentOS 7.


Answers

قد يكون من المربك للغاية ، والخطير ، استبدال مستودعات قاعدة المنبع بمستودعات إضافية بدون اختبار وفكر كبيرين. RPMforge ، على وجه الخصوص ، هو احتضار بفعالية ولا يحصل على التحديثات.

أنا شخصيا بنشر أدوات لبناء بوابة 2.4 ، ملفوفة باسم حزمة "git24" بدلا من ذلك ، في https://github.com/nkadel/git24-srpm/ . لا تتردد في الوصول إلى تلك الشوكة وتمييزها إذا كنت ترغب في الحصول على حزم مميزة من حزم النظام القياسية ، بقدر ما يتم تمييز حزم "samba" و "samba4".


أفضلي الشخصي هو إنشاء حزم rpm لـ CentOS عند تثبيت برنامج غير قياسي واستبدال المكونات الموزعة. لهذا نوصي باستخدام Mock لإنشاء بيئة بناء نظيف.

الإجراء هو:

  1. احصل على RPMS المصدر أو ملف SPEC مناسب و troll ball المصدر المصدر. في هذه الحالة ، يمكن للمرء العثور على حزم RPM المصدر لـ git2X لـ CentOS-6 على: http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/ . الحزم لإصدارات CentOS الأخرى متوفرة أيضا.

  2. تثبيت برنامج الدعم الضروري:

    yum install epel-release  # you need this for mock
    yum install rpm-build
    yum install redhat-rpm-config
    yum install rpmdevtools
    yum install mock
    
  3. إضافة حساب مستخدم بناء rpm ( لا تبني كجذر أو كمستخدم حقيقي - ستعود مشاكل الأمان إلى عضة لك ).

    sudo adduser builder --home-dir /home/builder \
    --create-home --user-group --groups mock \
    --shell /bin/bash --comment "rpm package builder"
    
  4. بعد ذلك نحتاج إلى بيئة بناء.

    su -l builder
    rpmdev-setuptree
    

    هذا ينتج بنية الدليل التالي:

    ~
    └── rpmbuild
        ├── BUILD
        ├── RPMS
        ├── SOURCES
        ├── SPECS
        └── SRPMS
    
  5. نحن نستخدم SRPMS معدة بحيث يمكن تجاهل المصادر الكربونية لهذه الحالة ويمكننا الذهاب مباشرة إلى SRPMS.

    wget http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm \
    -O ~/rpmbuild/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm
    
  6. تكوين محاكاة (كجذر)

    cd /etc/mock
    rm default.cfg
    ln -s epel-6-x86_64.cfg default.cfg
    vim default.cfg
    

    تعطيل repos beta . تمكين base update repos.

  7. تهيئة شجرة الإنشاء (/ var / lib / mock الافتراضي)

    mock --init
    
  8. إذا كنا نبني من مصادر ، فهذا هو المكان الذي نستخدم فيه ملف SPEC ونستخدم mock --buildsrpm . . . mock --buildsrpm . . . . لكن في هذه الحالة نذهب مباشرة إلى خطوة البناء الثنائية:

    mock --no-clean --rebuild ~/rpmbuild/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm
    

    سيؤدي ذلك إلى حل تبعيات الإنشاء وتنزيلها (حوالي 95 حزمة أو ما إلى ذلك) في جذر الإنشاء النظيف. سوف يقوم بعد ذلك باستخراج المصادر وبناء الملف الثنائي من الـ SRPM المقدم وتركها في /var/lib/mock/epel-6-x86_64/result ؛ أو في أي موقع مخصص لبناء الجذر ومعمارية قدمتها. وسوف يستغرق وقتا طويلا. هناك الكثير لهذه الحزمة ؛ وثائق خاصة.

  9. إذا سارت الأمور على ما يرام ، فيجب أن تنتهي بمجموعة من حزم RPM المناسبة للتركيب بدلاً من نسخة التوزيعة. هذا ما انتهى به الأمر:

    ll /var/lib/mock/epel-6-x86_64/result
    total 34996
    -rw-rw-r--. 1 byrnejb mock   448455 Oct 30 10:09 build.log
    -rw-rw-r--. 1 byrnejb mock    52464 Oct 30 10:09 emacs-git2u-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock    47228 Oct 30 10:09 emacs-git2u-el-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock  8474478 Oct 30 09:57 git2u-2.5.3-1.ius.el6.src.rpm
    -rw-rw-r--. 1 byrnejb mock  8877584 Oct 30 10:09 git2u-2.5.3-1.ius.el6.x86_64.rpm
    -rw-rw-r--. 1 byrnejb mock    27284 Oct 30 10:09 git2u-all-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock    27800 Oct 30 10:09 git2u-bzr-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   112564 Oct 30 10:09 git2u-cvs-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   436176 Oct 30 10:09 git2u-daemon-2.5.3-1.ius.el6.x86_64.rpm
    -rw-rw-r--. 1 byrnejb mock 15858600 Oct 30 10:09 git2u-debuginfo-2.5.3-1.ius.el6.x86_64.rpm
    -rw-rw-r--. 1 byrnejb mock    60556 Oct 30 10:09 git2u-email-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   274888 Oct 30 10:09 git2u-gui-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock    79176 Oct 30 10:09 git2u-p4-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   483132 Oct 30 10:09 git2u-svn-2.5.3-1.ius.el6.x86_64.rpm
    -rw-rw-r--. 1 byrnejb mock   173732 Oct 30 10:09 gitk2u-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   115692 Oct 30 10:09 gitweb2u-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock    57196 Oct 30 10:09 perl-Git2u-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock    89900 Oct 30 10:09 perl-Git2u-SVN-2.5.3-1.ius.el6.noarch.rpm
    -rw-rw-r--. 1 byrnejb mock   101026 Oct 30 10:09 root.log
    -rw-rw-r--. 1 byrnejb mock      980 Oct 30 10:09 state.log
    
  10. التثبيت باستخدام yum أو rpm.

    سوف تحتاج إلى git2u-2.5.3-1.ius.el6.x86_64.rpm كحد أدنى ومجموعات الدعم الإضافية التي تتطلبها ( perl-Git2u-2.5.3-1.ius.el6.noarch.rpm ) أو رغبة.

    هذه git2u-2.5.3-1.ius.el6.x86_64.rpm تبعية دورية: git2u-2.5.3-1.ius.el6.x86_64.rpm تعتمد على perl-Git2u-2.5.3-1.ius.el6.noarch.rpm و perl-Git2u-2.5.3-1.ius.el6.noarch.rpm يعتمد perl-Git2u-2.5.3-1.ius.el6.noarch.rpm على git2u-2.5.3-1.ius.el6.x86_64.rpm . ومن ثم فإن التثبيت المباشر مع rpm سوف يفشل.

    هناك طريقتان للتعامل معها:

    • تثبيت كلاهما في نفس الوقت عبر yum:

      yum localinstall \
        git2u-2.5.3-1.ius.el6.x86_64.rpm \
        perl-Git2u-2.5.3-1.ius.el6.noarch.rpm`
      
    • إعداد المحلية repum yum.

      أقوم بتضمين ملف LocalFile.repo أدناه لأنه يحتوي على إرشادات حول كيفية القيام بذلك ويوفر ملف repo اللازم في نفس الوقت.

cat /etc/yum.repos.d/LocalFile.repo
# LocalFile.repo
#
#  This repo is used with a local filesystem repo.
#
# To use this repo place the rpm package in /root/RPMS/yum.repo/Packages.
# Then run: createrepo --database --update /root/RPMS/yum.repo.
#
# To use:
#  yum --enablerepo=localfile [command]
#  
# or to use only ONLY this repo, do this:
#
#  yum --disablerepo=\* --enablerepo=localfile [command]

[localfile]
baseurl=file:///root/RPMS/yum.repo
name=CentOS-$releasever - Local Filesystem repo

# Before persistently enabling this repo see the priority note below.
enabled=0
gpgcheck=0

# When this repo is enabled all packages in repos with priority>5
# will not be updated even when they have a more recent version.
# Be careful with this.
priority=5

قد تتم مطالبتك أيضًا بتثبيت حزم تبعية إضافية يدويًا مثل perl-TermReadKey المتوفرة من المستودعات المعتادة.


يمكنك استخدام WANDisco's CentOS مستودع لتركيب Git 2.x: لـ CentOS 6 ، لـ CentOS 7

  1. تثبيت حزمة repand WANDisco:

    yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm
    - or -
    yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm
    - or -
    yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
    
  2. قم بتثبيت أحدث إصدار من Git 2.x:

    yum install git
    
  3. تحقق من إصدار Git الذي تم تثبيته:

    git --version
    

اعتبارًا من 18 من آب 2017 ، أحدث إصدار متاح من WANDisco هو 2.14.1.


إضافة إجابة دوار هنا. كنت تكافح من أجل تثبيت بوابة على مثيل RHEL 6.0 أمازون ، وما انتهى به إنقاذ لي كان ... كوندا ، كما هو الحال في آنا كوندا بايثون.

لقد قمت بتثبيت conda على سطر الأوامر من archives (رمز على غرار this بعد):

wget http://repo.continuum.io/miniconda/Miniconda2-4.2.12-Linux-x86_64.sh -O ~/miniconda.sh
bash ~/miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"

ثم ركض

conda install git

وتم تركيب بوابة حديثة نسبيا. اليوم هو 12/26/2016 والنسخة 2.9.3.


هنا طريقي لتثبيت git على centos 6.

sudo yum groupinstall "Development Tools"
sudo yum install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel curl-devel
sudo yum install wget
cd ~
wget -O git.zip https://github.com/git/git/archive/v2.7.2.zip
unzip git.zip
cd git-2.7.2
make configure
./configure --prefix=/usr/local
make all doc
sudo make install install-doc install-html

لقد وجدت هذا الدليل اللطيف والسهل المتابعة بشأن كيفية تنزيل مصدر GIT وتجميعه بنفسك (وتثبيته). إذا لم تعطك الإجابة المقبولة الإصدار الذي تريده ، فجرّب التعليمات التالية:

http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/

(ولصق / تمت إعادة تنسيقه من المصدر أعلاه في حالة إزالته لاحقًا)

الخطوة 1: تثبيت الحزم المطلوبة

أولاً ، نحتاج إلى التأكد من تثبيت الحزم المطلوبة على نظامك. استخدم الأمر التالي لتثبيت الحزم المطلوبة قبل تجميع مصدر Git.

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install  gcc perl-ExtUtils-MakeMaker

الخطوة 2: إلغاء تثبيت Git RPM القديم

الآن قم بإزالة أي تثبيت مسبق لـ Git من خلال RPM file أو Yum package manager. إذا تم أيضًا تجميع إصدارك القديم من خلال المصدر ، فيمكنك تخطي هذه الخطوة.

# yum remove git

الخطوة 3: تنزيل وتجميع مصدر Git

قم بتنزيل git source code من kernel git أو ببساطة استخدم الأمر التالي لتنزيل Git 2.5.3.

# cd /usr/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.5.3.tar.gz
# tar xzf git-2.5.3.tar.gz

بعد تنزيل واستخراج شفرة مصدر Git ، استخدم الأمر التالي لترجمة شفرة المصدر.

# cd git-2.5.3
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
# echo 'pathmunge /usr/local/git/bin/' > /etc/profile.d/git.sh 
# chmod +x /etc/profile.d/git.sh
# source /etc/bashrc

الخطوة 4. فحص إصدار Git

عند الانتهاء من الخطوات المذكورة أعلاه ، لديك بنجاح تثبيت Git في النظام الخاص بك. استخدم الأمر التالي للتحقق من إصدار git

# git --version

git version 2.5.3

أردت أيضًا أن أضيف أن دليل "Getting Started" في موقع GIT الإلكتروني يتضمن أيضًا تعليمات حول كيفية تنزيله وتجميعه بنفسك:

http://git-scm.com/book/en/v2/Getting-Started-Installing-Git


بعد إلقاء نظرة على المدونة here وجدت الحل في أحد التعليقات. تأكد من أنك قمت بإضافة مستودع rpmforge إلى حسابك في CentOS yum وقم فقط بتشغيل الأمر المتدفق:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras install git

إذا كنت قد قمت بالفعل بتثبيت git ثم استخدم:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras update git

أسئلة ذات صلة):

  1. تواجه مشاكل أثناء ترقية بوابة إلى أحدث إصدار على CentOS 6.4

ملاحظة التحديث:

شكرا ل Anthony Hatzopoulos ، ل git v1.8x ستحتاج إلى استخدام git18 كما هو الحال في:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras install git18 

ملاحظة التحديث 2:

أيضا بفضلAxlrod للتلميح أدناه وHiphip للتغذية المرتدة:

قم بتغيير ملف rpmforge-extras yum update git . خلاف ذلك اشتكى من مشاكل التبعية.

ملاحظة التحديث 3:

تثبيت إصدار محدد من git يقول 2.x لقد عثرت على هذا الدليل اللطيف والسهل المتابعة حول كيفية تنزيل مصدر GIT وتجميعه بنفسك (وتثبيته). إذا لم تعطك الإجابة المقبولة الإصدار الذي تريده ، فجرّب التعليمات التالية:

http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/

(ولصق / تمت إعادة تنسيقه من المصدر أعلاه في حالة إزالته لاحقًا)

الخطوة 1: تثبيت الحزم المطلوبة

أولاً ، نحتاج إلى التأكد من تثبيت الحزم المطلوبة على نظامك. استخدم الأمر التالي لتثبيت الحزم المطلوبة قبل تجميع مصدر Git.

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install  gcc perl-ExtUtils-MakeMaker

الخطوة 2: إلغاء تثبيت Git RPM القديم

الآن قم بإزالة أي تثبيت مسبق لـ Git من خلال RPM file أو Yum package manager. إذا تم أيضًا تجميع إصدارك القديم من خلال المصدر ، فيمكنك تخطي هذه الخطوة.

# yum remove git

الخطوة 3: تنزيل وتجميع مصدر Git

قم بتنزيل git source code من kernel git أو ببساطة استخدم الأمر التالي لتنزيل Git 2.0.4.

# cd /usr/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.0.4.tar.gz
# tar xzf git-2.0.4.tar.gz

بعد تنزيل واستخراج شفرة مصدر Git ، استخدم الأمر التالي لترجمة شفرة المصدر.

# cd git-2.0.4
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
#
# echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
#  or
# echo 'export PATH=$PATH:/usr/local/git/bin' > /etc/profile.d/git.sh
#
# source /etc/bashrc

HINT 1: تم تحديث طريقة إضافة git bin إلى bashrc. نظرًا لأن echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc المستخدم "" بدلاً من "" ، echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc ذلك إلى توسيع قيمة جلسة العمل الحالية لـ PATH بدلاً من الاحتفاظ بها كمتغير ، ويمكن أن يؤثر سلبًا على النظام بأكمله. على الأقل ، يجب أن تستخدم "بدلاً من" ، ويجب أن تكون نصًا منفصلاً في /etc/profile.d/

HINT 2 (DJB): /usr/local/git/bin قبل $PATH ، نظرًا لأن الإصدار القديم من git كان بالفعل على PATH $: export PATH=/usr/local/git/bin:$PATH

الخطوة 4. فحص إصدار Git

واحد الانتهاء من الخطوات المذكورة أعلاه ، لديك بنجاح تثبيت Git في النظام الخاص بك. دعونا استخدام القيادة التالية للتحقق من إصدار git

# git --version

git version 2.0.4

أردت أيضًا أن أضيف أن دليل "Getting Started" في موقع GIT الإلكتروني يتضمن أيضًا تعليمات حول كيفية تنزيله وتجميعه بنفسك:

http://git-scm.com/book/en/v2/Getting-Started-Installing-Git


لبناء Git الحديثة على CentOS 6 وتثبيتها:

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
export GIT_VERSION=2.6.4
mkdir /root/git
cd /root/git
wget "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz"
tar xvzf "git-${GIT_VERSION}.tar.gz"
cd git-${GIT_VERSION}
make prefix=/usr/local all
make prefix=/usr/local install
yum remove -y git
git --version # should be GIT_VERSION

هذا قد يكون غير ذي صلة. هو للأشخاص الذين لا يريدون بناء أحدث بوابة على المضيف في الوقت نفسه لا يزال بإمكانهم الحصول على أحدث بوابة.

أعتقد أن معظم الناس لا يحبون بناء بوابة GIT الأخيرة على CentOS لأن التبعيات ستلوث المضيف ويجب أن تشغل الكثير من الأوامر. لذلك ، لدي فكرة بناء بوابة داخل حاوية Docker ثم قم بتثبيت الملف القابل للتنفيذ من خلال وحدة تخزين صندوق التحميل. بعد ذلك ، يمكنك حذف الصورة والحاوية.

نعم ، الجانب السلبي هو عليك تثبيت عامل ميناء. ولكن يتم تقديم أقل الاعتمادات للمضيف وليس لديك لتثبيت yum repo أخرى.

هنا هو بلدي مستودع. https://github.com/wood1986/docker-library/tree/master/git


الإجابات القصيرة

إذا كنت تريد مزيدًا من الشرح التفصيلي للأوامر التالية ، فراجع الإجابات الطويلة في القسم التالي.

حذف فرع بعيد:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

حذف فرع محلي:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

حذف فرع تتبع عن بعد محلي:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p      # Shorter

الجواب طويل: هناك 3 فروع مختلفة لحذفها!

عندما تتعامل مع حذف الفروع محليًا وعن بعد ، ضع في اعتبارك أن هناك 3 فروع مختلفة متضمنة :

  1. الفرع المحلي X
  2. فرع المنشأ البعيد X
  3. الفرع المحلي من فرع التتبع عن بُعد origin/X الذي يتتبع الفرع البعيد X

الملصق الأصلي المستخدم

git branch -rd origin/bugfix

التي لم تحذف إلا origin/bugfix فرع التتبع المحلي عن بعد origin/bugfix ، وليس origin/bugfix البعيدة الفعلي في origin .

لحذف هذا الفرع الفعلي البعيد ، تحتاج

git push origin --delete bugfix

تفاصيل اضافية

تصف الأقسام التالية التفاصيل الإضافية التي يجب مراعاتها عند حذف فروع التتبع عن بعد والبعيد.

يؤدي الضغط على حذف الفروع البعيدة إلى حذف فروع التتبع عن بعد

لاحظ أن حذف الفرع البعيد X من سطر الأوامر باستخدام git push سيؤدي أيضًا إلى حذف origin/X فرع التتبع المحلي عن بُعد origin/X ، لذلك ليس من الضروري تقليم فرع التتبع عن بعد git fetch --prune مع git fetch --prune أو git fetch -p ، على الرغم من أنه لن يضر إذا فعلت ذلك على أي حال.

يمكنك التحقق من أنه تم أيضًا حذف origin/X فرع التتبع عن بُعد origin/X عن طريق تشغيل ما يلي:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

تشذيب فرع فرع التتبع المحلي البعيدة المنشأ / X

إذا لم تقم بحذف فرعك عن بعد X من سطر الأوامر (كما في الأعلى) ، فستظل ريبوك المحلي الخاص بك يحتوي على فرع (بعيد الآن) تابع للفرع البعيد origin/X يمكن أن يحدث هذا إذا قمت بحذف فرع بعيد مباشرة من خلال واجهة الويب الخاصة بـ GitHub ، على سبيل المثال.

وهناك طريقة نموذجية لإزالة هذه الفروع القديمة للتتبع عن بعد (حيث أن الإصدار Git 1.6.6) هو ببساطة تشغيل git fetch مع - --prune أو أقصر -p . لاحظ أن هذا يزيل جميع فروع التتبع المحلي البالية لأي فروع بعيدة لم تعد موجودة على جهاز التحكم عن بعد :

git fetch origin --prune
git fetch origin -p # Shorter

هنا هو الاقتباس ذات الصلة من ملاحظات الإصدار 1.6.6 (التأكيد لي):

"git fetch" المستفادة - كل و - خيارات متعددة ، لتشغيل الجلب من العديد من المستودعات ، و --prune الخيار لإزالة فروع التتبع عن بعد التي لا معنى لها. هذه تجعل "git تحديث عن بعد" و "git البعيد تقليم" أقل ضرورية (لا توجد خطة لإزالة "التحديث عن بعد" ولا "تقليم البعيد" ، على الرغم من).

بديل لفرز التقليم الأوتوماتيكي لفروع التتبع البعيدة

بدلاً من تشذيب فروع التتبع المحلية البالية من خلال git fetch -p ، يمكنك تجنب إجراء عملية الشبكة الإضافية عن طريق إزالة الفرع (الفروع) يدويًا باستخدام --remote أو - -r :

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

أنظر أيضا







linux git installation centos yum