ฉันจะถาม apt-get เพื่อข้ามขั้นตอนการกำหนดค่าหลังการติดตั้งทั้งหมดได้อย่างไร


11

เมื่อติดตั้งแพคเกจบางอย่าง (เช่น RabbitMQ) บนเครื่อง Debian / Ubuntu post-installขั้นตอนเริ่มต้นคือเริ่มบริการ

แม้ว่านี่จะเป็นกรณีที่ยอดเยี่ยม แต่ในบางกรณี (เมื่อคุณมีบริการที่ทำงานบนพอร์ตที่ต้องการแล้ว) สิ่งนี้ล้มเหลวซึ่งทำให้apt-getล้มเหลวโดยสิ้นเชิง

มีวิธีบอกapt-getให้ข้ามpost-installขั้นตอนเหล่านั้นทั้งหมดเพื่อให้สามารถติดตั้งได้อย่างถูกต้องหรือไม่?

หมายเหตุนี่ไม่เกี่ยวกับคำถามระหว่างการติดตั้งแม้ในเซสชันแบบโต้ตอบการติดตั้งเหล่านี้ล้มเหลวเนื่องจากpost-installขั้นตอนการล้มเหลวล้มเหลวไม่ได้รับการจัดการอย่างถูกต้อง




1
คำถามนั้นคล้ายกัน แต่แตกต่างกัน สิ่งนี้เกี่ยวกับการข้ามทุกขั้นตอนไม่ใช่เพียงแค่การโต้ตอบ บางงานจะเรียกใช้งานสคริปต์โดยอัตโนมัติซึ่งไม่ต้องการเสมอไป
Wolph

คำตอบ:


8

ฉันจะขอให้ apt-get ข้ามขั้นตอนการกำหนดค่าหลังการติดตั้งแบบโต้ตอบได้อย่างไร

export DEBIAN_FRONTEND=noninteractive
apt-get install -y [packagename]

แก้ไข : ใช่นั่นคือการข้ามคำถามหลังการติดตั้ง (ดีโดยอัตโนมัติ) จริง - ขอโทษ

ไม่มีทางที่จะข้ามไปไม่เป็นหลังติดตั้งสคริปต์ นโยบาย Debian อย่างเป็นทางการคือการแก้ไขสคริปต์เพื่อส่งคืนข้อผิดพลาดที่ไม่ใช่เทอร์มินัลหรือแก้ไขสคริปต์ ดูhttp://www.debian-administrator.org/articles/251

ดูเหมือนว่าคุณกำลังทำสิ่งนี้โดยอัตโนมัติสำหรับเซิร์ฟเวอร์จำนวนมากซึ่งในกรณีนี้คุณอาจต้องการสร้างแพ็คเกจของคุณเองและปรับใช้มัน อีกตัวเลือกหนึ่งคือส่งอีเมลถึงผู้ดูแลแพคเกจและหารือเกี่ยวกับความล้มเหลวในการเริ่มต้นว่าควรเป็นข้อผิดพลาดเทอร์มินัลสำหรับการติดตั้งภายหลัง (ฉันไม่เชื่อว่ามีไว้สำหรับแพ็คเกจอื่น ๆ เช่น apache หรือ lighttpd เป็นต้น แต่ฉันอาจผิด .)


นั่นเป็นเพียงการข้ามขั้นตอนแบบโต้ตอบ สิ่งเหล่านี้ไม่ใช่ปัญหาที่นี่นี่เป็นpost-installขั้นตอนแบบไม่โต้ตอบที่ล้มเหลวหากสิ่งที่ต้องการservice rabbitmq-server startล้มเหลว
Wolph

Updated มันช่วยได้ไหม
Brett Dikeman

มันจะดีกว่าที่จะรู้ว่ามันเป็นไปไม่ได้มากกว่าที่จะสงสัยว่ามันเป็น :) ขอบคุณสำหรับความช่วยเหลือ
Wolph

หากคุณใช้ sudo การส่งออกตัวแปรสภาพแวดล้อมจะไม่ทำงาน แต่คุณสามารถทำเช่นนี้ได้:sudo DEBIAN_FRONTEND=noninteractive apt-get -y [packagename]
aculich

4

สิ่งที่คุณอาจต้องการที่จะทำบางสิ่งบางอย่างกับนโยบาย rc.d ดูหน้า man สำหรับ invoke-rc.d คุณสามารถกำหนดนโยบายเพื่อให้บริการจะไม่เริ่มต้นโดยอัตโนมัติ


นั่นเป็นวิธีที่จะหลีกเลี่ยงได้ แต่นั่นจะเป็นมาตรการชั่วคราวที่ฉันคิดเอาไว้? อย่างน้อย ... ฉันคิดว่าวิธีที่คุณจะปิดการใช้งานบริการทั้งหมดทั่วโลกจะเริ่มขึ้น
Wolph

2

สิ่งนี้น่าจะใช้ได้

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d
apt-get install <packagename>
rm -f /usr/sbin/policy-rc.d

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