Score:0

Debian: วิธีติดตั้งแพ็คเกจโดยไม่ต้องพึ่งพาเฉพาะ (git ไม่มี Perl)

ธง cn

ฉันกำลังพยายามติดตั้งแพ็คเกจ apt โดยไม่มีการอ้างอิงอย่างใดอย่างหนึ่ง (โดยเฉพาะ git ที่ไม่มี Perl เพื่อลดขนาดภาพ Docker ลง> 50MB)

ฉันคิดได้สองทางเลือก:

  1. ติดตั้งแพ็คเกจโดยไม่มีการพึ่งพาเฉพาะนี้
  2. ติดตั้งแพ็คเกจด้วยการพึ่งพาทั้งหมดและลบการพึ่งพา หลังจากนั้น

และฉันได้ตรวจสอบทั้งสองอย่างแล้ว และไม่มีสิ่งใดได้ผลเลย ดังนั้นคำถามของฉันคือ: มีวิธีที่สะอาดหรือไม่?

ด้านล่างนี้คือสิ่งที่ฉันได้ลองไปแล้ว

1. การติดตั้งแพ็คเกจโดยไม่มีการพึ่งพาเฉพาะนี้

ที่สุด คำแนะนำ แนะนำ

apt ดาวน์โหลดคอมไพล์
dpkg --ignore-depends=perl -i git*.deb

น่าเสียดายที่สิ่งนี้ไม่ได้ติดตั้งการพึ่งพาอื่น ๆ ดังนั้น โคลนคอมไพล์ ล้มเหลวเนื่องจากขาด libcurl.

ดังนั้นเพื่อแก้ไขบางอย่าง ข้อเสนอแนะอื่น ๆ แนะนำให้ใช้

apt-get -f ติดตั้ง

หลังจากนั้น แต่คำสั่งนี้พยายามติดตั้ง Perl ซึ่งเป็นสิ่งที่ฉันพยายามหลีกเลี่ยง

ตกลง ดังนั้นฉันกำลังบอกให้อย่าแตะต้อง Perl ด้วย:

apt-mark ถือ perl

แต่แล้ว apt-get -f ติดตั้ง พยายามลบคอมไพล์

ตกลง ดังนั้นฉันจึงบอกให้ปล่อย git ไว้ตามลำพัง:

apt-mark ถือคอมไพล์

แต่แล้ว apt-get -f ติดตั้ง ยอมแพ้เนื่องจากไม่สามารถติดตั้ง Perl และไม่สามารถถอนการติดตั้ง git ได้ ตอนจบของเรื่อง

2. การติดตั้งแพ็คเกจที่มีการขึ้นต่อกันทั้งหมดและลบการขึ้นต่อกัน หลังจากนั้น

ฉันติดตั้งคอมไพล์ด้วย Perl:

apt ติดตั้ง -y git

จากนั้นลบ Perl ด้วย

dpkg -P --force-ขึ้นอยู่กับ perl

แต่สิ่งนี้ไม่ได้ลบการพึ่งพาอื่น ๆ ที่ Perl นำมาเช่น Perl โมดูล ความพยายามจึงไม่สำเร็จ

Nikita Kipriyanov avatar
za flag
นี่เป็นวิธีที่ผิดหรือควรจะบอกว่าเป็นวิธีที่รับประกันว่าจะยิงตัวเองด้วยเท้า หากคุณต้องการละเว้นการพึ่งพา คุณต้องสร้างแพ็คเกจที่สัมพันธ์กันใหม่อย่างถูกต้องโดยไม่มีการพึ่งพานั้น ไม่ใช่เรื่องยาก
Lukasz Guminski avatar
cn flag
ประเด็นคือฉันควบคุมระบบอย่างสมบูรณ์ (อิมเมจ Docker) และฉันรู้แน่นอนว่าไม่จำเป็นต้องใช้ Perl เนื่องจากคอมไพล์ใช้สำหรับการโคลนที่เก็บเท่านั้น การสร้างคอมไพล์ใหม่จะเพิ่มเวลาในการสร้างอิมเมจ Docker ของฉันอย่างมาก
in flag
หากขนาดเป็นปัญหา คุณอาจต้องลองรูปภาพอื่น เช่น อัลไพน์ มันมีขนาดเล็กกว่ามากและ git ไม่มีการพึ่งพา perl ที่นั่น
Lukasz Guminski avatar
cn flag
ปัญหาคือ Alpine ใช้ [musl](https://musl.libc.org/) แทน glibc และฉันไม่ต้องการเสี่ยงกับ [ปัญหาความไม่เสถียร](https://pythonspeed.com/articles/alpine- นักเทียบท่า-python/) อย่างไรก็ตาม เป็นเรื่องดีที่รู้ว่าไม่มีการพึ่งพา Perl ที่นั่น
Nikita Kipriyanov avatar
za flag
ลองบรรจุไฟล์ git deb อีกครั้งโดยไม่ต้องขึ้นต่อกัน นั่นก็ไม่ใช่เรื่องยากเช่นกัน เข้าใจว่าคุณกำลังพยายามใช้ตัวจัดการแพ็คเกจสำหรับคุณสมบัติต่างๆ เช่น การแก้ไขการพึ่งพา (โดยการติดตั้ง git และการอ้างอิงที่คุณต้องการ) และในขณะเดียวกันคุณต้องการใช้ความสามารถในการแก้ปัญหาการพึ่งพาในทางที่ผิดด้วยวิธีใดวิธีหนึ่ง (เพื่อละเว้นการพึ่งพาบางอย่าง) นั่นจะไม่ทำงาน ตัวจัดการแพ็คเกจ Debian ไม่ได้สร้างขึ้นโดยคำนึงถึงสิ่งนี้ (Portage ผู้จัดการแพ็คเกจของ Gentoo ทำและใช้สิ่งที่เรียกว่า "USE-flags" สำหรับสิ่งนั้น แต่นั่นเป็นเรื่องที่แตกต่างไปจากเดิมอย่างสิ้นเชิง)
Lukasz Guminski avatar
cn flag
มันน่าสนใจ. โดยพื้นฐานแล้วคุณกำลังบอกว่าต้นเหตุคือการบรรจุของ git เอง ซึ่งบ่งชี้ว่าจำเป็นต้องมีบางอย่างเช่น `git-minimal`ฉันจะตรวจสอบการบรรจุใหม่เพื่อดูว่าตัวเลือกนี้เป็นไปได้หรือไม่
djdomi avatar
za flag
หรือคุณสร้างมันขึ้นมาเองโดยไม่รองรับ Perl ถ้าเป็นไปได้ มันไม่ใช่เรื่องยากและมีเอกสารวิธีการทำใน [the debian way](https://wiki.debian.org/HowToPackageForDebian) เป็นอย่างดี
Score:0
ธง es

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

ลิงค์

โพสต์คำตอบ

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