Làm cách nào để tự động hóa việc thiết lập gói cấu hình bàn phím của Cameron?


14

Tôi đang viết một tập lệnh để cài đặt máy chủ Ubuntu 16.04 vào một nhà tù chroot, sử dụng debootstrap (trên máy chủ Ubuntu 16.04).

Trong quá trình thiết lập keyboard-configurationgói, nó yêu cầu loại bàn phím:

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: 

Tôi muốn tự động hóa việc này để nó không yêu cầu và chỉ tiếp tục cài đặt.

Tôi có thể làm cái này như thế nào?


Câu trả lời:


14

Từ một câu hỏi StackOverflow tương tự :

Nếu biến ENV DEBIAN_FRONTEND=noninteractiveđược đặt trong khi bạn chạy apt-get install keyboard-configuration, nó sẽ không nhắc cho bất kỳ tương tác nào. Vì vậy, bạn có thể chỉ cần chạy:

DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration

2

Bạn có thể sử dụng xdotool. Khi ra mắt kịch bản đặt & sleep <however long it takes to get to that point> && xdotool type <number you want to put> && xdotool key Return.

Tôi chưa thử nghiệm cái này, nhưng nó sẽ hoạt động.

Trả lời 2:

Chạy lệnh, nhưng với đầu ra được chuyển hướng đến một tệp ( > testfile).

Mở một thiết bị đầu cuối khác và chạy

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  

Sau đó, nhấp lại vào thiết bị đầu cuối.

Trả lời 3:

Tôi nghĩ rằng tất cả những gì bạn cần làm là đặt số bạn muốn vào một tệp testfilevà chạy lệnh có < testfilethêm.


Cảm ơn, ý tưởng thú vị, nhưng nó sẽ lãng phí rất nhiều thời gian, hoặc đôi khi đóng băng khi cài đặt mất nhiều thời gian hơn dự kiến, tùy thuộc vào thời gian ngủ được sử dụng.
fadedbee

Đọc trang man của xdotool - có vẻ như đó là một điều X windows. Tôi đang thử điều này trong môi trường máy chủ Ubuntu. Tôi sẽ cập nhật câu hỏi của tôi.
fadedbee

2

Điều này rất đơn giản để tự động hóa, bạn chỉ cần thiết lập cấu hình gỡ lỗi thích hợp cho gói này.

Cài đặt đầu tiên debconf-utils:

sudo apt install debconf-utils

Nếu bạn đã cấu hình gói, bạn có thể đọc cấu hình gỡ lỗi bằng:

debconf-get-selections | grep keyboard-configuration

Nếu bạn chưa định cấu hình gói hoặc muốn thay đổi các lựa chọn của mình, bạn có thể thực hiện việc này với:

dpkg-reconfigure keyboard-configuration

Xuất các lựa chọn của bạn vào một tệp

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

Sao chép selections.confvào máy đích và đặt các lựa chọn:

debconf-set-selections < selections.conf

Khi bạn cài đặt hoặc cấu hình lại gói, các lựa chọn của bạn sẽ được chọn tự động.

dpkg-reconfigure keyboard-configuration -f noninteractive

1

"debootstrap thực sự chỉ là một tập lệnh shell" - từ https://wiki.debian.org/Debootstrap

Điều này có nghĩa là bạn có thể đọc tập lệnh để xem liệu có cách nào để truyền thông tin qua biến môi trường, cung cấp đối số khi gọi deboostrap hoặc tạo phiên bản sửa đổi của riêng bạn cho ứng dụng cụ thể của bạn.


Gói này đang được cài đặt như là một phần của apt-get install ....hoạt động sau khi gỡ lỗi ban đầu.
nhạt dần

Vì vậy, bạn đang nói rằng sau apt-get install deboostrapmô hình cài đặt của bạn không cho phép thay đổi các biến môi trường hoặc chạy tập lệnh tùy chỉnh? Được chứ.
BenjaminBrink

Có lẽ điều này giúp. Liên kết này hiển thị một ví dụ về cách thiết lập tệp "được đặt trước" để nhắc trả lời trước trong bản cài đặt Ubuntu: askubfox.com/questions/122505/
BenjaminBrink
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.