web-dev-qa-db-ja.com

「キーボード構成」パッケージのセットアップを自動化する方法

Debootstrap(Ubuntu 16.04サーバーマシン上)を使用して、Ubuntu 16.04サーバーをchroot jailにインストールするスクリプトを作成しています。

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: 

これを自動化したいので、聞かずにインストールを続行します。

これどうやってするの?

11
fadedbee

同様 StackOverflowの質問から:

DEBIAN_FRONTEND=noninteractiveの実行中にENV変数apt-get install keyboard-configurationが設定されている場合、インタラクションのプロンプトは表示されません。だからあなたは単に実行することができます:

DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration
9
Nicu Stiurca

これは自動化が簡単で、このパッケージに適切な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
2
Josh Enders

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を追加してコマンドを実行することだけだと思います。

2
Feldspar15523

「debootstrapは実際には単なるシェルスクリプトです」--from https://wiki.debian.org/Debootstrap

これは、環境変数を介して情報を渡す方法、deboostrapを呼び出すときに引数を指定する方法、または特定のアプリケーション用に独自の変更バージョンを作成する方法があるかどうかを確認するスクリプトを読むことができることを意味します。

1
BenjaminBrink