ตอบ 'ใช่' โดยอัตโนมัติเมื่อใช้ apt-get install


356

มีวิธีที่จะapt-get installตอบ "ใช่" กับ "คุณต้องการดำเนินการต่อ [y / N] หรือไม่?"

คำตอบ:



175

ปัญหากับ:

apt-get --yes install $something

คือมันจะขอการยืนยันด้วยตนเองว่ากุญแจสาธารณะของเจ้าของลายเซ็นของแพ็กเกจไม่ได้อยู่ในพวงกุญแจหรือเงื่อนไขอื่น ๆ เพื่อให้แน่ใจว่าไม่ได้ขอการยืนยันให้ทำดังนี้:

apt-get --yes --force-yes install $something

หากคุณต้องการให้การตั้งค่าเหล่านี้ถาวรให้สร้างไฟล์ใน /etc/apt/apt.conf.d/ เช่น /etc/apt/apt.conf.d/90forceyes ด้วยเนื้อหาต่อไปนี้:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";

3
+1 เพื่อความหลากหลาย ทุก-yคนเริ่มเบื่อ (รวมทั้งเป็นคำตอบที่สมบูรณ์ยิ่งขึ้น)
Dennis Williamson

1
จะใช้งานได้เมื่อมีข้อความว่า "หากต้องการพิมพ์ในวลี 'ใช่ทำตามที่ฉันพูด!' ด้วยหรือไม่ ถ้าไม่ใช่งานที่ทำอยู่ล่ะ ฉันพบสิ่งนี้เมื่อพยายามแทนที่ sysvinit ด้วย systemd ในอิมเมจเดเบียน chrooted ของฉัน
Lennart Rolland

13
โปรดอย่าใช้--force-yes: เนื่องจากการตอบกลับไปยังเธรดที่เกี่ยวข้องในการdebian-develแนะนำ--force-yesอาจทำให้ระบบใช้ไม่ได้ (ฉันไม่ downvoting เพราะคำตอบจริงที่อยู่ในปัญหาดังกล่าวโดย OP แต่ฉันต้องการเพิ่มคำเตือนสีแดงขนาดใหญ่ที่จะตอบอยู่แล้ว.)
kostix

7
APT :: Get :: สมมติว่าใช่ "จริง"; ช่วยฉันหลีกเลี่ยงการขัดจังหวะในการติดตั้งในคอนเทนเนอร์นักเทียบท่า
Mehdi Sadeghi

3
force-yes เลิกใช้แล้ว tracker.mender.io/browse/CFE-2360
rrawat

53

โปรดทราบว่าหากคุณต้องการคำตอบเริ่มต้นโดยอัตโนมัติเมื่อมีข้อความแจ้งโต้ตอบปรากฏขึ้นคุณสามารถใช้ DEBIAN_FRONTEND=noninteractive

ติดตั้งเดี่ยว:

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

เช่น:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

อัปเดตทั้งหมด:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

คุณสามารถตั้งค่าตัวเลือกปลีกย่อยด้วยและ-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

ตัวอย่าง:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

หรือ

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

ตัวอย่างของการแจ้งโต้ตอบ:

ป้อนคำอธิบายรูปภาพที่นี่

น่าสนใจอ่าน: ทำการติดตั้งแพคเกจ Debian แบบอัตโนมัติ


1
คำตอบที่ดี แม้จะมี-yฉันยังได้รับพร้อมท์ถามว่าฉันต้องการเริ่มบริการใหม่หรือไม่ ฉันต้องการสิ่งนี้เพื่อกำจัดการแจ้งทั้งหมดอย่างสมบูรณ์
wisbucky

14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

อย่างน้อยควรอยู่ใน/etc/apt/apt.confและแสดงความคิดเห็น ฉันกังวลว่า Ubuntu กำลังขออนุญาตจาก Microsoft อยู่เสมอ

"คุณแน่ใจเหรอ?" แน่นอนว่าฉันไม่ใช่ลิงที่ได้รับการฝึกฝนอย่างง่าย ๆ เพียงแค่พิมพ์ไปที่แป้นพิมพ์จะคลิกมีความสุข

ถัดจากประตูจะถามว่า "คุณแน่ใจหรือว่าต้องการออกไปข้างนอก"
เตาอบจะถามว่า "คุณแน่ใจหรือว่าต้องการปรุงอาหาร"
รถยนต์จะถามว่า "คุณแน่ใจหรือไม่ว่าต้องการเบรก"
เครื่องดับเพลิงจะถามว่า "คุณแน่ใจหรือไม่ว่าต้องการดับไฟ"
ฉันขอโทษเดฟฉันไม่สามารถให้คุณทำอย่างนั้นได้
HAL9000 สามารถใช้การหดตัว แต่ Data ไม่สามารถทำได้หรือไม่สามารถทำได้


3
ความแตกต่างกับ HAL9000 และ dpkg ที่ขออนุญาตคือ HAL กล่าวว่า "ไม่ระยะเวลา" ในขณะที่ "ใช่ทำตามที่ฉันพูด" จะปรากฏขึ้นเฉพาะเมื่อคุณกำลังจะทำลายระบบของคุณอย่างสมบูรณ์และเต็มที่ ถ้านั่นคือสิ่งที่คุณต้องการแน่นอนไปข้างหน้า แต่มีคำเตือนในกรณีนี้ดูเหมือนสมเหตุสมผล
Wouter Verhelst


7
apt-get -y update
apt-get -y install [package]

2
+1 แต่ทำไมupdateต้องได้รับอนุญาต
amyassin

@amyassin apt-get updateคำสั่งต้องการการอนุญาตรูทเนื่องจากมันจะอัพเดตรายการแพ็กเกจโลคัล (ดัชนี) ซึ่งเป็นไฟล์ระบบที่ root เป็นเจ้าของ
jjmontes

3

โดยทั่วไปตัวเลือกจากคู่มือควรทำงานได้ดี

apt-get -y --force-yes install package

หากไม่สำเร็จคุณสามารถลองใช้yesคำสั่ง

yes | apt-get -y --force-yes install package

ใช้สิ่งนี้กับสคริปต์การจัดเตรียมเชลล์คนจรจัดของฉัน

PS: ในกรณีที่คุณต้องการแบบไม่โต้ตอบ แต่โดยทั่วไปแล้วไม่ได้ระบุคุณสามารถลองทำสิ่งนี้:

yes no | apt-get install package


1

หากคุณต้องการอาร์กิวเมนต์ -y เสมอฉันแนะนำให้เพิ่มบรรทัด

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

เป็น. bashrc ของคุณ ตามที่ความคิดเห็นอธิบายจะเพิ่มอาร์กิวเมนต์ -y ให้กับคำสั่ง apt-get ทั้งหมดของคุณโดยอัตโนมัติดังนั้นจึงอนุมัติการดาวน์โหลดทั้งหมด


หมายเหตุ: สิ่งนี้จะยังคงเป็นจริงจนกว่าคุณจะคืนค่า. bashrc ของคุณและรีสตาร์ทเชลล์


1

ฉันกำลังมองหาวิธีที่จะเลือกไม่ใช่ค่าเริ่มต้นในสคริปต์โดยเฉพาะเมื่อติดตั้ง wireshark และจบลงด้วยการใช้ tmux เพื่อโต้ตอบกับเชลล์ดังนี้:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.