人生リアルタイムアタック

当面はPython学習帳

sedとxargsを併用して纏めてyum removeする

事の始まり

OS X環境で使っていたVim設定を使いまわそうとして、cpsm.vimの為にBoost関連のパッケージをインストールしたけど、滅多にCentOS環境では使わないからやっぱりremoveしたい。

今回の削除対象のみなさん。

今日纏めて入れちゃったパッケージの方々。| とxargsを上手く使いこなして一発で消したい。

$ yum list installed | grep boost
boost-date-time.x86_64             1.41.0-28.el6                     @base
boost-filesystem.x86_64            1.41.0-28.el6                     @base
boost-graph.x86_64                 1.41.0-28.el6                     @base
boost-iostreams.x86_64             1.41.0-28.el6                     @base
boost-program-options.x86_64       1.41.0-28.el6                     @base
boost-python.x86_64                1.41.0-28.el6                     @base
boost-regex.x86_64                 1.41.0-28.el6                     @base
boost-serialization.x86_64         1.41.0-28.el6                     @base
boost-signals.x86_64               1.41.0-28.el6                     @base
boost-system.x86_64                1.41.0-28.el6                     @base

sedで余計な部分を消す

sed自体は以前利用経験があるし、Vimでも利用しているので特に困らずこんな感じに削除する

$ sudo yum list installed | grep boost | sed -e 's/\ .*//'
boost-date-time.x86_64
boost-filesystem.x86_64
boost-graph.x86_64
boost-iostreams.x86_64
boost-program-options.x86_64
boost-python.x86_64
boost-regex.x86_64
boost-serialization.x86_64
boost-signals.x86_64
boost-system.x86_64
boost-test.x86_64
boost-thread.x86_64
boost-wave.x86_64

問題なさそう。

xargsに渡す

$ sudo yum list installed | grep boost | sed -e 's/\ .*//' | xargs -t sudo yum -y remove
sudo yum -y remove boost-date-time.x86_64 boost-filesystem.x86_64 boost-graph.x86_64 boost-iostreams.x86_64 boost-program-options.x86_64 boost-python.x86_64 boost-regex.x86_64 boost-serialization.x86_64 boost-signals.x86_64 boost-system.x86_64 boost-test.x86_64 boost-thread.x86_64 boost-wave.x86_64
読み込んだプラグイン:fastestmirror, security
削除処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package boost-date-time.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-filesystem.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-graph.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-iostreams.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-program-options.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-python.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-regex.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-serialization.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-signals.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-system.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-test.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-thread.x86_64 0:1.41.0-28.el6 will be 削除
---> Package boost-wave.x86_64 0:1.41.0-28.el6 will be 削除
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================
 パッケージ                         アーキテクチャ      バージョン                  リポジトリー        容量
=============================================================================================================
削除:
 boost-date-time                    x86_64              1.41.0-28.el6               @base              149 k
 boost-filesystem                   x86_64              1.41.0-28.el6               @base              172 k
 boost-graph                        x86_64              1.41.0-28.el6               @base              338 k
 boost-iostreams                    x86_64              1.41.0-28.el6               @base              114 k
 boost-program-options              x86_64              1.41.0-28.el6               @base              615 k
 boost-python                       x86_64              1.41.0-28.el6               @base              649 k
 boost-regex                        x86_64              1.41.0-28.el6               @base              1.9 M
 boost-serialization                x86_64              1.41.0-28.el6               @base              1.5 M
 boost-signals                      x86_64              1.41.0-28.el6               @base              154 k
 boost-system                       x86_64              1.41.0-28.el6               @base               24 k
 boost-test                         x86_64              1.41.0-28.el6               @base              1.6 M
 boost-thread                       x86_64              1.41.0-28.el6               @base               84 k
 boost-wave                         x86_64              1.41.0-28.el6               @base              1.2 M

トランザクションの要約
=============================================================================================================
削除                13 パッケージ

インストール済み容量: 8.5 M
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  削除中                  : boost-wave-1.41.0-28.el6.x86_64                                             1/13
  削除中                  : boost-filesystem-1.41.0-28.el6.x86_64                                       2/13
  削除中                  : boost-graph-1.41.0-28.el6.x86_64                                            3/13
  削除中                  : boost-regex-1.41.0-28.el6.x86_64                                            4/13
  削除中                  : boost-system-1.41.0-28.el6.x86_64                                           5/13
  削除中                  : boost-date-time-1.41.0-28.el6.x86_64                                        6/13
  削除中                  : boost-thread-1.41.0-28.el6.x86_64                                           7/13
  削除中                  : boost-program-options-1.41.0-28.el6.x86_64                                  8/13
  削除中                  : boost-serialization-1.41.0-28.el6.x86_64                                    9/13
  削除中                  : boost-signals-1.41.0-28.el6.x86_64                                         10/13
  削除中                  : boost-iostreams-1.41.0-28.el6.x86_64                                       11/13
  削除中                  : boost-test-1.41.0-28.el6.x86_64                                            12/13
  削除中                  : boost-python-1.41.0-28.el6.x86_64                                          13/13
  Verifying               : boost-python-1.41.0-28.el6.x86_64                                           1/13
  Verifying               : boost-date-time-1.41.0-28.el6.x86_64                                        2/13
  Verifying               : boost-test-1.41.0-28.el6.x86_64                                             3/13
  Verifying               : boost-iostreams-1.41.0-28.el6.x86_64                                        4/13
  Verifying               : boost-filesystem-1.41.0-28.el6.x86_64                                       5/13
  Verifying               : boost-regex-1.41.0-28.el6.x86_64                                            6/13
  Verifying               : boost-system-1.41.0-28.el6.x86_64                                           7/13
  Verifying               : boost-signals-1.41.0-28.el6.x86_64                                          8/13
  Verifying               : boost-serialization-1.41.0-28.el6.x86_64                                    9/13
  Verifying               : boost-wave-1.41.0-28.el6.x86_64                                            10/13
  Verifying               : boost-thread-1.41.0-28.el6.x86_64                                          11/13
  Verifying               : boost-graph-1.41.0-28.el6.x86_64                                           12/13
  Verifying               : boost-program-options-1.41.0-28.el6.x86_64                                 13/13

削除しました:
  boost-date-time.x86_64 0:1.41.0-28.el6                 boost-filesystem.x86_64 0:1.41.0-28.el6
  boost-graph.x86_64 0:1.41.0-28.el6                     boost-iostreams.x86_64 0:1.41.0-28.el6
  boost-program-options.x86_64 0:1.41.0-28.el6           boost-python.x86_64 0:1.41.0-28.el6
  boost-regex.x86_64 0:1.41.0-28.el6                     boost-serialization.x86_64 0:1.41.0-28.el6
  boost-signals.x86_64 0:1.41.0-28.el6                   boost-system.x86_64 0:1.41.0-28.el6
  boost-test.x86_64 0:1.41.0-28.el6                      boost-thread.x86_64 0:1.41.0-28.el6
  boost-wave.x86_64 0:1.41.0-28.el6

完了しました!

メモ

xargs -tでxargs実行時のコマンドを標準出力に出力できる。
xargs -n 1 でxargsに渡される引数の数を指定できる。cpする時は-n 2 などを使うことになるだろう。