จะอัพเกรดเป็น git ล่าสุดบนเดเบียน 7 ได้อย่างไร?


14

ฉันได้ติดตั้งคอมไพล์ผ่าน apt-get on debian 7 ซึ่งให้ฉัน:

# git --version
git version 1.7.10.4

ฉันต้องการที่จะยกระดับรุ่น git latests ฉันเหนื่อย:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

แต่นั่นทำให้เกิดข้อผิดพลาดดังต่อไปนี้:

Fetched 6,944 B in 0s (10.1 kB/s)
W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/source/Sources  404  Not Found

W: Failed to fetch http://ppa.launchpad.net/git-core/ppa/ubuntu/dists/wheezy/main/binary-amd64/Packages  404  Not Found

ฉันได้ลองทำตามคำแนะนำนี้แล้ว:

http://backports.debian.org/Instructions/

แต่ฉันยังไม่ได้รับคอมไพล์ล่าสุดคำแนะนำใด ๆ


1
ทำไมไม่รวบรวมจากแหล่งที่มา (เอกสารติดตั้งมีความช่วยเหลือเกี่ยวกับเรื่องนั้นถ้าคุณยังใหม่กับมัน)
nerdwaller

ฉันจะดาวน์โหลดไฟล์เก็บถาวรโดยตรงสำหรับเว็บไซต์ที่มีถ้าแหล่งที่มาของ Launchpad เสีย
Ramhound

2
คุณต้องการจริงๆเหรอ? ในกรณีส่วนใหญ่การติดตั้งเวอร์ชันที่ใหม่กว่านั้นไม่คุ้มค่ากับปัญหา มีคุณสมบัติเฉพาะในเวอร์ชั่นใหม่ที่คุณต้องการหรือไม่? คุณมีเวอร์ชันใดและคุณต้องการติดตั้งรุ่นใด อย่างไรก็ตามคุณไม่สามารถใช้ PPA กับ Debianได้พวกมันเป็นของ Ubuntu
terdon

คำตอบ:


12

อัปเดตเมื่อวันที่ 2016-07-27: ตอนนี้มีWheezy -backport สำหรับ Git 1.9.1 ยังคงมีคำแนะนำในการติดตั้งเวอร์ชันที่ใหม่กว่าหรือสำหรับเจสซี


เมื่อแพ็คเกจ backport รุ่นใหม่ไม่พร้อมใช้งานคุณมีสองตัวเลือก:

  1. ขอให้ผู้ดูแลแพคเกจเตรียม backport มันไม่ได้รับประกันว่าจะทำงานได้ แต่ผู้ดูแลบางคนมีความมั่นใจในการสร้าง backport ดังนั้นฉันแค่ลอง

    ดูแล e-mail อาจจะพบมี

  2. สร้างด้วยตัวคุณเองจากแหล่งที่มา สามารถทำได้สองวิธี:

    • สร้าง "ตามสภาพ" จากแหล่ง tarball คุณควรเลือกเส้นทางนี้ให้แน่ใจว่าการกำหนดค่าระบบสร้าง Git เพื่อติดตั้งทุกอย่างภายใต้~/gitหรือ/opt/gitหรือบางอย่างเช่นนี้มิฉะนั้นต่อมาคุณจะมี PITA ดีเอาสิ่งที่คุณติดตั้ง

      ปัญหาก็คือวิธี Unix แบบดั้งเดิมของการติดตั้งซอฟต์แวร์โดยการกระจายไปทั่วทั้งระบบไฟล์นั้นมีเหตุผล แต่เมื่อคุณมีรีจิสทรีบางประเภทที่ "รู้" ว่าไฟล์ใดเป็นของแพคเกจและในทางกลับกันและระบบบรรจุภัณฑ์เช่น Debian's ทำสิ่งนี้ หากคุณติดตั้งแพคเกจ "ปกติ" ที่สร้างขึ้นจากแหล่งที่มาคุณส่วนใหญ่จะไม่มีวิธีถอนการติดตั้งซอฟต์แวร์ชิ้นนี้ในภายหลัง (ขาดการใช้งานcheckinstallแทนmake installแต่นี่เป็นวิธีสุดท้าย) ในทางกลับกันหากคุณกำหนดค่าซอร์สโค้ดให้ติดตั้งทุกอย่างภายใต้ไดเรกทอรีเดียวคุณจะมีปัญหาเล็กน้อยในการใช้งานซอฟต์แวร์ (ไดเรกทอรี "ไบนารี" จะไม่อยู่ในของคุณ$PATH) ในการแลกเปลี่ยนการถอนการติดตั้งในภายหลังจะไม่ใช่เรื่องง่าย - rm -rf /path/to/that/dirเป็นหนึ่งเดียว

    • ทำ backporting ด้วยตัวคุณเอง มีส่วนร่วมมากกว่านี้ แต่ในกรณีง่าย ๆ มันอาจใช้งานได้ดังนั้น IMO จึงควรลองดู

      โดยทั่วไปคุณจะเป็นเช่นนี้ (ลิงก์ไปยัง.dscไฟล์นั้นมาจากหน้าของแพ็คเกจในสถานการณ์ที่ไม่เสถียร ):

      # apt-get install devscripts
      $ mkdir ~/devel && cd $_
      $ dget http://ftp.de.debian.org/debian/pool/main/g/git/git_2.1.4-2.1.dsc
      $ dpkg-source -x git_2.1.4-2.1.dsc
      $ cd git
      

      ตรวจสอบว่าคุณมีการพึ่งพาบิลด์ทั้งหมดที่พอใจหรือไม่โดยการรัน:

      $ dpkg-checkbuilddeps
      

      และติดตั้งทุกสิ่งที่เครื่องมือบอกไว้ว่าหายไป บางครั้งแพ็กเกจอาจอ้างถึงเวอร์ชันของบางสิ่งที่ใหม่เกินไปที่จะให้บริการใน distro ที่คุณย้อนกลับไป ในกรณีนี้มันก็โอเคที่จะพยายามโกงและแก้ไขเวอร์ชันของแพ็คเกจดังกล่าวในdebian/controlไฟล์

      ตอนนี้แก้ไขเวอร์ชันของแพ็กเกจที่จะสร้างขึ้น วิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คือให้เครื่องมือทำสิ่งที่ถูกต้อง:

      $ dch --bpo
      

      มันจะเพิ่มรายการลงในdebian/changelogไฟล์และเปิดโปรแกรมแก้ไขข้อความที่คุณเลือกเพื่อดูแลมัน เพียงปิดตัวแก้ไข - เวอร์ชันสำหรับแพ็คเกจที่จะสร้างจะถูกนำมาจากรายการอันดับต้น ๆ ในไฟล์นี้

      ตอนนี้เราลองสร้างจริง:

      $ dpkg-buildpackage -uc -us -b
      

      หากคุณโชคดี ณ จุดนี้คุณจะมี.debแพ็คเกจGit ใหม่ ๆ..ที่คุณสามารถติดตั้งdpkg -i <packagename> ...ได้

      (เรียกใช้debuild cleanเพื่อกำจัด crud ในตัวหรือเพียงลบgitไดเรกทอรีทั้งหมดคุณอาจต้องการลบสิ่งที่คุณติดตั้งหลังจากใช้งานdpkg-checkbuilddep)

      น่าเสียดายที่หากการสร้างล้มเหลวด้วยเหตุผลบางอย่างมันต้องใช้ความรู้บางอย่างในการพยายามแก้ไข แต่มันอยู่นอกขอบเขตของการสนทนานี้


@Dereckson ขอบคุณสำหรับคำแนะนำการแก้ไขของคุณ - ฉันขอขอบคุณ! แต่คุณสามารถอธิบายได้อย่างละเอียดว่าทำไมdgetไม่จำเป็น? จุดรวมของมันคือที่จะนำคุณทุกไฟล์ที่ประกอบเป็นแพคเกจที่มาจริงเพื่อให้คุณมีสิ่งที่จะแกะ, ปรับแต่งและสร้าง การดึง.dscไฟล์เดียวจะทำเช่นนั้น แต่แหล่งที่มาและการทำให้ดีอกดีใจจะหายไป
kostix

โอ้ความผิดของฉัน ลำดับของคำสั่งหลอกฉันเป็นไฟล์ git_2.1.4-2.1.dsc เท่านั้นที่ใช้หลังจากนั้นอย่างชัดเจนเป็นอาร์กิวเมนต์ ฉันคิดว่า dpkg-source ดึงข้อมูลมา แต่จริง ๆ แล้วต้องการไฟล์แพ็กเกจเพื่อให้มีอยู่จริง
Dereckson

7

คุณยังคงสามารถใช้ Git PPA สำหรับ Ubuntu Precise ได้โดยบอกให้ apt สร้างจากแหล่งล่าสุดที่พบที่นั่น การแจกแจงมีความคล้ายคลึงกันมากพอที่จะให้ผลดี

ฉันใช้มันกับความสำเร็จใน Raspbian (ซึ่งขึ้นอยู่กับเสียงฮืด ๆ ) เพื่อรับแพ็คเกจสำหรับ armhf แต่ควรใช้กับสถาปัตยกรรมใดก็ได้

เพิ่มคีย์ GPG สำหรับ PPA ก่อน:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E1DF1F24

เพิ่ม URL สำหรับแพ็กเกจซอร์สไปยัง apt:

cat > /etc/apt/sources.list.d/git.list << EOF
deb-src http://ppa.launchpad.net/git-core/ppa/ubuntu precise main
EOF

อัปเดตฉลาด:

apt-get update

ติดตั้ง build dependencies:

apt-get build-dep git

ดาวน์โหลดและสร้างคอมไพล์จากแหล่งที่มา คุณอาจต้องการทำเช่นนี้เป็นไดเรกทอรีชั่วคราวเนื่องจากกระบวนการสร้างสร้างบิตของ cruft:

apt-get -b source git

ติดตั้งแพ็คเกจที่คุณเพิ่งสร้างและทำความสะอาด (ไม่จำเป็นต้องใช้ git-core อีกต่อไป):

dpkg -i git_*.deb git-man_*.deb
dpkg -P git-core

7

หากคุณต้องการอัพเกรดแพ็คเกจเฉพาะใน Debian 7 (Wheezy) คุณมีตัวเลือกในการใช้ backports โดยเพิ่มไปยัง/etc/apt/sources.listบรรทัดต่อไปนี้:

deb http://cloudfront.debian.net/debian wheezy-backports main
deb-src http://cloudfront.debian.net/debian wheezy-backports main

จากนั้นสำหรับการติดตั้ง / อัพเกรดgitให้รันคำสั่ง:

$ aptitude update
$ aptitude -t wheezy-backports install git

นอกจากนี้คุณยังสามารถกำหนดค่า backport ในไฟล์แยกต่างหากใน /etc/apt/sources.list.d/ ฉันชอบใช้ไฟล์/etc/apt/sources.list.d/backports.listเป็นพิเศษ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.