わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

俺流Debian next step

新たにDebianをインストールしたあとで,他のマシンからのsshによるリモートログインができ,かつscreen+zshが利用可能になるまでの行動を,列挙してみました.
「A/B/C/D」は,GNOMEなどのメニューでA, B, C, Dと選んで最後にクリックすることを意味します.また,Emacs由来のキーストロークを書いているところがあります.「C-なんとか」は,Ctrlキーを押しながら,なんとかの文字を押すという意味です.

GNOME端末の起動まで

  • 起動処理を終えたグラフィカルログイン画面で,一般ユーザとしてログインします.
  • kernelのアップデート.ログインしてしばらく待つと,右上に,パッケージアップデートするようバルーンメッセージが出ます.クリックすると,kernelのアップデートが促されます*1.途中,rootのパスワードを入力し,keyringに追加しておきます.
  • スクリーンセーバー停止.デスクトップ/設定/スクリーンセーバーで,スクリーンセーバーを設定するウィンドウが出ます.ブランク・スクリーンを選びます.ついでに,「スクリーンセーバー起動時に画面をロック」のチェックを外します.
  • GNOME端末を使いやすくします.アプリケーション/アクセサリを選び,「GNOME端末」をドラッグして,上のメニューバーの適当なところにドロップします.その端末アイコンをクリックすると,GNOME端末が起動します.GNOME端末のメニューから,編集/プロファイルで,設定画面が出るので,「デフォルト」を選んで編集します.「システムの“端末のフォント”を使用する」のチェックを外し,フォントサイズはMonospace 16にします.閉じるを2回,クリックします.

GNOME端末でコマンド実行

  • sudoを使えるようにします.
$ su -
(rootのパスワードを入力)
# visudo
(nanoというテキストエディタが起動します.rootから始まる行の直後に,「ユーザ名 ALL=(ALL) NOPASSWD: ALL」と書いて,保存はC-x y RET)
# exit
$ sudo -i
  • APTのリソース修正
# vim /etc/apt/sources.list
(cdromを含む行の先頭に「#」をつけて保存します.viのコマンドで言うと,3 j i # ESC Z Z)
# apt-get update
  • SSHサーバのインストールと起動*2
# apt-get install openssh-server
(「続行しますか [Y/n]?」には RET)
# exit
  • 快適に使える別のマシンから,SSHでリモートログインできることを確認します.

SSHでリモートログインしてコマンド実行

  • rootの別名定義
$ sudo -i
# cat >> .bashrc
alias upd='apt-get update'
alias upg='apt-get upgrade'
alias ins='apt-get install'
alias sch='apt-cache search'
(C-dで終了)
# . .bashrc
  • 時刻合わせ
# ins ntpdate
# ntpdate (最寄りのNTPサーバ名)
# ins ntp
# /etc/init.d/ntp stop
# nano /etc/ntp.conf
(serverから始まる行の先頭をすべてコメントし,新たに行を作って「server 最寄りのNTPサーバ名」を書いて保存します.)
# /etc/init.d/ntp start
# ins gnome-audio
  • サウンド設定.ここの項目のみ,Debian実機で操作します.GNOMEからログアウト*3して再度ログインします.メニューから,デスクトップ/設定/サウンドを選び,「ソフトウェアによるサウンド・ミキシングを有効にする(ESD)」と「システムサウンドを演奏する」にチェックを入れます.さらに,画面右上のスピーカーのアイコンを右クリックして「音量コントロールを開く」を選び,ファイル/デバイスの変更で,OSS Mixerのほうを選びます.もう一度ログアウトそしてログインすれば,音が鳴りました.
  • インストール,アンインストール*4
# apt-get remove netatalk
# ins zsh screen
# ins lftp rsync
# ins g++
# ins ruby libruby irb eruby
# exit
$ mkdir bin src tmp
$ mkdir .zsh
  • 入力設定
$ cat >> .inputrc
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on
set bell-style visible
(C-dで終了)
  • 別のマシンから,lftpの設定ファイルをコピー
$ lftp fish://ユーザ名@サーバ名
(ユーザ名@サーバ名にsshで入るためのパスワードを入力)
$ exit
$ cd .lftp
$ lftp fish://ユーザ名@サーバ名
(ユーザ名@サーバ名にsshで入るためのパスワードを入力)
lftp ユーザ名@サーバ名:~> get .lftp/bookmarks
lftp ユーザ名@サーバ名:~> exit
  • 別のマシンから,SSHの設定ファイルをコピー*5
$ ssh ユーザ名@サーバ名
(The authenticity... RSA... Are you sure ...(yes/no)?には,yes RETを入力)
(ユーザ名@サーバ名にsshで入るためのパスワードを入力)
$ exit
$ cd ~/.ssh
$ lftp サーバ名
lftp ユーザ名@サーバ名:~> cd .ssh
lftp ユーザ名@サーバ名:~> mget config id_rsa id_rsa.pub authorized_keys
lftp ユーザ名@サーバ名:~> exit
$ chmod 600 config authorized_keys id_rsa

GNU Screenを使う

  • 設定ファイル
$ cp /etc/screenrc ~/.screenrc
$ cat >> ~/.screenrc
escape ^p^p
msgwait 2
shell zsh
(C-dで終了)
$ cat >> .bashrc
export ZDOTDIR=$HOME/.zsh
alias ls='ls -aFl --color=auto'
alias sx='screen -xR'
(C-dで終了)
$ . .bashrc
  • 別のマシンから,zshの設定ファイルをコピー
$ cd ~/.zsh
$ lftp サーバ名
lftp ユーザ名@サーバ名:~> cd .zsh
lftp ユーザ名@サーバ名:~> mget .zshrc*
lftp ユーザ名@サーバ名:~> exit
$ cd
$ sx

以上です.
sshzshの設定ファイルの中身については,別の機会とさせてください.
昔話:

*1:netinstのisoファイルをもとにインストールしているので,たいていのパッケージはインストール時にネットワークからダウンロードされ,いわば最新なのですが,カーネルだけはそうはいかないのです.

*2:「exit」と打たなくても,コマンドラインの先頭であれば,C-d で終了します.lftpでも使用可能です.

*3:ログアウトの仕方は,メニューから,デスクトップ/(ユーザ名)のログアウト...

*4:netatalkパッケージを削除していないと,起動時に「AppleTalk」云々と出て,無意味な待ち時間になります.

*5:「lftp サーバ名」を実行する前に,~/.lftp/bookmarksに「サーバ名 fish://ユーザ名:パスワード@サーバ名」と書いてあるのを確認しておきます.lftpコマンドは,~/.sshの認証情報は参照しないようですね.