วิธีการตั้งค่าโดยอัตโนมัติของแพ็คเกจ“ การกำหนดค่าแป้นพิมพ์”?


15

ฉันกำลังเขียนสคริปต์เพื่อติดตั้งเซิร์ฟเวอร์ Ubuntu 16.04 ลงในคุก chroot โดยใช้ debootstrap (บนเครื่องเซิร์ฟเวอร์ Ubuntu 16.04)

ในระหว่างการตั้งค่าของkeyboard-configurationแพ็คเกจมันจะถามถึงชนิดของคีย์บอร์ด:

Setting up keyboard-configuration (1.108ubuntu15) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring keyboard-configuration
----------------------------------

The layout of keyboards varies per country, with some countries having multiple
common layouts. Please select the country of origin for the keyboard of this
computer.

  1. Afghani                                     48. Irish
  2. Albanian                                    49. Italian
...    
  28. English (UK)                               75. Slovak
  29. English (US)                               76. Slovenian
...
  45. Icelandic                                  92. Vietnamese
  46. Indian                                     93. Wolof
  47. Iraqi
Country of origin for the keyboard: 

ฉันต้องการทำสิ่งนี้โดยอัตโนมัติเพื่อที่จะไม่ถามและเพิ่งดำเนินการติดตั้งต่อไป

ฉันจะทำสิ่งนี้ได้อย่างไร


คำตอบ:


15

จากคำถาม StackOverflow ที่คล้ายกัน :

หากDEBIAN_FRONTEND=noninteractiveตั้งค่าตัวแปร ENV ไว้ในขณะที่คุณเรียกใช้apt-get install keyboard-configurationมันจะไม่แสดงข้อความใด ๆ สำหรับการโต้ตอบ ดังนั้นคุณสามารถเรียกใช้:

DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration

2

xdotoolคุณสามารถใช้ & sleep <however long it takes to get to that point> && xdotool type <number you want to put> && xdotool key Returnเมื่อเปิดตัววางสคริปต์

ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ควรใช้งานได้

ตอบ 2:

เรียกใช้คำสั่ง แต่ด้วยผลลัพธ์ที่เปลี่ยนเส้นทางไปยังไฟล์ ( > testfile)

เปิดเทอร์มินัลอื่นแล้วเรียกใช้

while true
do 
    if [ "$(tac testfile | grep -m 1 .)" = "Country of origin for the keyboard" ]
    then 
    xdotool type <number you want to put> && xdotool key Return && break
    fi
done  

จากนั้นคลิกกลับไปที่เทอร์มินัลแรก

คำตอบ 3:

ฉันคิดว่าสิ่งที่คุณต้องทำคือใส่หมายเลขที่คุณต้องการในไฟล์testfileและเรียกใช้คำสั่ง< testfileต่อท้าย


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

อ่าน man page ของ xdotool - ดูเหมือนว่าเป็น X windows ฉันพยายามทำสิ่งนี้ในสภาพแวดล้อมเซิร์ฟเวอร์ของ Ubuntu ฉันจะอัปเดตคำถามของฉัน
fadedbee

2

วิธีนี้เป็นเรื่องง่ายโดยอัตโนมัติคุณเพียงแค่ต้องตั้งค่าการกำหนดค่า debconf ที่เหมาะสมสำหรับแพ็คเกจนี้

ติดตั้งครั้งแรกdebconf-utils:

sudo apt install debconf-utils

หากคุณได้กำหนดค่าแพคเกจแล้วคุณสามารถอ่านการกำหนดค่า debconf ด้วย:

debconf-get-selections | grep keyboard-configuration

หากคุณไม่ได้กำหนดค่าแพ็คเกจหรือต้องการเปลี่ยนการเลือกของคุณคุณสามารถทำได้ด้วย:

dpkg-reconfigure keyboard-configuration

ส่งออกตัวเลือกของคุณไปยังไฟล์

debconf-get-selections | grep keyboard-configuration > selections.conf

คัดลอกselections.confไปยังเครื่องเป้าหมายและตั้งค่าตัวเลือก:

debconf-set-selections < selections.conf

เมื่อคุณติดตั้งหรือกำหนดค่าแพ็คเกจใหม่ตัวเลือกของคุณจะถูกเลือกโดยอัตโนมัติ

dpkg-reconfigure keyboard-configuration -f noninteractive

1

"debootstrap เป็นเพียงเชลล์สคริปต์" - จากhttps://wiki.debian.org/Debootstrap

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


แพคเกจนี้จะถูกติดตั้งเป็นส่วนหนึ่งของการapt-get install ....ทำงานหลังจาก debootstrap เริ่มต้น
fadedbee

ดังนั้นคุณกำลังบอกว่าหลังจากapt-get install deboostrapกระบวนทัศน์การติดตั้งของคุณไม่อนุญาตให้มีการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมหรือการทำงานของสคริปต์ที่กำหนดเอง? ตกลง.
BenjaminBrink

บางทีนี่อาจช่วยได้ ลิงก์นี้แสดงตัวอย่างวิธีตั้งค่าไฟล์ "preeseed" เป็นคำตอบล่วงหน้าในการติดตั้ง Ubuntu: askubuntu.com/questions/122505/…
BenjaminBrink
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.