CentOS7が出たのでRC版から正式版にアップデートしてみた

CentOS7がリリースされたので、CentOS7 RC版でインストールしたマシンを、正式版にできないかやってみた。
 ・CentOS7のリリースのアナウンス:[CentOS-announce] Release for CentOS-7 on x86_64
 ・CentOS7のリリースノート:CentOS 7.0.1406 Release Notes

とりあえず、centos-releaseをアップデートすればいいのかなぁ、とやってみた。
試した時点ではkddlabsにはまだ無かったので、iijからファイルを持ってきた。

[root@cent7rc]# wget http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/Packages/centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm
--2014-07-08 09:41:10--  http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/Packages/centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm
ftp.iij.ad.jp (ftp.iij.ad.jp) をDNSに問いあわせています... 202.232.140.170, 2001:240:bb8f:200::1:170
ftp.iij.ad.jp (ftp.iij.ad.jp)|202.232.140.170|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 20100 (20K) [application/x-rpm]
`centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm' に保存中

100%[======================================>] 20,100      --.-K/s 時間 0.01s

2014-07-08 09:41:11 (1.47 MB/s) - `centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm' へ保存完了 [20100/20100]

[root@cent7rc ~]# rpm -Uvh centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm
警告: centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:centos-release-7-0.1406.el7.cento################################# [ 50%]
エラー: アーカイブの伸長に失敗: ファイル /usr/share/doc/redhat-release: cpio: rename失敗 - ディレクトリです
エラー: centos-release-7-0.1406.el7.centos.2.3.x86_64: インストール 失敗
エラー: centos-release-7-0.el7.0.140617.3.x86_64: 削除 スキップした
[root@cent7rc ~]#

失敗した。

が・・・/etc/yum.repos.d/には、さっきまで無かったファイル群が・・・

[root@cent7rc ~]# ls -l /etc/yum.repos.d/
合計 16
-rw-r--r--. 1 root root 1612  7月  4 20:00 CentOS-Base.repo
-rw-r--r--. 1 root root  640  7月  4 20:00 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 1331  7月  4 20:00 CentOS-Sources.repo
-rw-r--r--. 1 root root  156  7月  4 20:00 CentOS-Vault.repo
[root@cent7rc]#

では、ということで「yum update」

[root@cent7rc ~]# yum update
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ NetworkManager.x86_64 1:0.9.9.1-13.git20140326.4dba720.el7 を 更新
---> パッケージ NetworkManager.x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0 を アップデート
---> パッケージ NetworkManager-glib.x86_64 1:0.9.9.1-13.git20140326.4dba720.el7 を 更新
---> パッケージ NetworkManager-glib.x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0 を アップデート
---> パッケージ NetworkManager-tui.x86_64 1:0.9.9.1-13.git20140326.4dba720.el7  を 更新
---> パッケージ NetworkManager-tui.x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0 を アップデート
---> パッケージ anaconda.x86_64 0:19.31.79-1.el7.centos.3 を 更新
---> パッケージ anaconda.x86_64 0:19.31.79-1.el7.centos.4 を アップデート
---> パッケージ anaconda-widgets.x86_64 0:19.31.79-1.el7.centos.3 を 更新
---> パッケージ anaconda-widgets.x86_64 0:19.31.79-1.el7.centos.4 を アップデー ト
---> パッケージ centos-logos.noarch 0:70.0.5-1.el7.centos を 更新
---> パッケージ centos-logos.noarch 0:70.0.6-1.el7.centos を アップデート
---> パッケージ centos-release.x86_64 0:7-0.el7.0.140617.3 を 更新
---> パッケージ centos-release.x86_64 0:7-0.1406.el7.centos.2.3 を アップデート
---> パッケージ evolution.x86_64 0:3.8.5-21.el7 を 更新
---> パッケージ evolution.x86_64 0:3.8.5-22.el7_0.1 を アップデート
---> パッケージ evolution-data-server.x86_64 0:3.8.5-23.el7 を 更新
---> パッケージ evolution-data-server.x86_64 0:3.8.5-24.el7_0 を アップデート
---> パッケージ evolution-help.noarch 0:3.8.5-21.el7 を 更新
---> パッケージ evolution-help.noarch 0:3.8.5-22.el7_0.1 を アップデート
---> パッケージ firefox.x86_64 0:24.5.0-1.el7.centos を 更新
---> パッケージ firefox.x86_64 0:24.6.0-1.el7.centos を アップデート
---> パッケージ fprintd.x86_64 0:0.5.0-3.el7 を 更新
---> パッケージ fprintd.x86_64 0:0.5.0-4.0.el7_0 を アップデート
---> パッケージ fprintd-pam.x86_64 0:0.5.0-3.el7 を 更新
---> パッケージ fprintd-pam.x86_64 0:0.5.0-4.0.el7_0 を アップデート
---> パッケージ gdm.x86_64 1:3.8.4-27.el7 を 更新
---> パッケージ gdm.x86_64 1:3.8.4-28.el7_0.1 を アップデート
---> パッケージ gdm-libs.x86_64 1:3.8.4-27.el7 を 更新
---> パッケージ gdm-libs.x86_64 1:3.8.4-28.el7_0.1 を アップデート
---> パッケージ gnome-classic-session.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-classic-session.noarch 0:3.8.4-10.el7_0 を アップデート
---> パッケージ gnome-online-accounts.x86_64 0:3.8.5-8.el7 を 更新
---> パッケージ gnome-online-accounts.x86_64 0:3.8.5-9.el7_0.1 を アップデート
---> パッケージ gnome-settings-daemon.x86_64 0:3.8.6.1-9.el7 を 更新
---> パッケージ gnome-settings-daemon.x86_64 0:3.8.6.1-9.el7_0.1 を アップデート
---> パッケージ gnome-settings-daemon-updates.x86_64 0:3.8.6.1-9.el7 を 更新
---> パッケージ gnome-settings-daemon-updates.x86_64 0:3.8.6.1-9.el7_0.1 を アップデート
---> パッケージ gnome-shell.x86_64 0:3.8.4-31.el7 を 更新
---> パッケージ gnome-shell.x86_64 0:3.8.4-32.el7_0 を アップデート
---> パッケージ gnome-shell-extension-alternate-tab.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-shell-extension-alternate-tab.noarch 0:3.8.4-10.el7_0 を  アップデート
---> パッケージ gnome-shell-extension-apps-menu.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-shell-extension-apps-menu.noarch 0:3.8.4-10.el7_0 を アッ プデート
---> パッケージ gnome-shell-extension-common.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-shell-extension-common.noarch 0:3.8.4-10.el7_0 を アップデート
---> パッケージ gnome-shell-extension-launch-new-instance.noarch 0:3.8.4-9.el7  を 更新
---> パッケージ gnome-shell-extension-launch-new-instance.noarch 0:3.8.4-10.el7_0 を アップデート
---> パッケージ gnome-shell-extension-places-menu.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-shell-extension-places-menu.noarch 0:3.8.4-10.el7_0 を ア ップデート
---> パッケージ gnome-shell-extension-window-list.noarch 0:3.8.4-9.el7 を 更新
---> パッケージ gnome-shell-extension-window-list.noarch 0:3.8.4-10.el7_0 を ア ップデート
---> パッケージ gnutls.x86_64 0:3.1.18-8.el7 を 更新
---> パッケージ gnutls.x86_64 0:3.1.18-9.el7_0 を アップデート
---> パッケージ gnutls-dane.x86_64 0:3.1.18-8.el7 を 更新
---> パッケージ gnutls-dane.x86_64 0:3.1.18-9.el7_0 を アップデート
---> パッケージ gnutls-utils.x86_64 0:3.1.18-8.el7 を 更新
---> パッケージ gnutls-utils.x86_64 0:3.1.18-9.el7_0 を アップデート
---> パッケージ java-1.7.0-openjdk.x86_64 1:1.7.0.51-2.4.5.5.el7 を 更新
---> パッケージ java-1.7.0-openjdk.x86_64 1:1.7.0.55-2.4.7.2.el7_0 を アップデート
---> パッケージ java-1.7.0-openjdk-headless.x86_64 1:1.7.0.51-2.4.5.5.el7 を 更 新
---> パッケージ java-1.7.0-openjdk-headless.x86_64 1:1.7.0.55-2.4.7.2.el7_0 を  アップデート
---> パッケージ json-c.x86_64 0:0.11-3.el7 を 更新
---> パッケージ json-c.x86_64 0:0.11-4.el7_0 を アップデート
---> パッケージ kernel.x86_64 0:3.10.0-123.4.2.el7 を インストール
---> パッケージ kernel-tools.x86_64 0:3.10.0-123.el7 を 更新
---> パッケージ kernel-tools.x86_64 0:3.10.0-123.4.2.el7 を アップデート
---> パッケージ kernel-tools-libs.x86_64 0:3.10.0-123.el7 を 更新
---> パッケージ kernel-tools-libs.x86_64 0:3.10.0-123.4.2.el7 を アップデート
---> パッケージ kexec-tools.x86_64 0:2.0.4-32.el7 を 更新
---> パッケージ kexec-tools.x86_64 0:2.0.4-32.el7.centos.1 を アップデート
---> パッケージ kpatch.noarch 0:0.0-1.el7 を 更新
---> パッケージ kpatch.noarch 0:0.1.2-1.el7_0 を アップデート
---> パッケージ libcacard.x86_64 10:1.5.3-60.el7 を 更新
---> パッケージ libcacard.x86_64 10:1.5.3-60.el7_0_0.2 を アップデート
---> パッケージ libipa_hbac.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ libipa_hbac.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ libipa_hbac-python.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ libipa_hbac-python.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ libsmbclient.x86_64 0:4.1.1-31.el7 を 更新
---> パッケージ libsmbclient.x86_64 0:4.1.1-33.el7_0 を アップデート
---> パッケージ libsss_idmap.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ libsss_idmap.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ libtasn1.x86_64 0:3.3-3.el7 を 更新
---> パッケージ libtasn1.x86_64 0:3.3-5.el7_0 を アップデート
---> パッケージ libwbclient.x86_64 0:4.1.1-31.el7 を 更新
---> パッケージ libwbclient.x86_64 0:4.1.1-33.el7_0 を アップデート
---> パッケージ mariadb-libs.x86_64 1:5.5.35-3.el7 を 更新
---> パッケージ mariadb-libs.x86_64 1:5.5.37-1.el7_0 を アップデート
---> パッケージ microcode_ctl.x86_64 2:2.1-7.1.el7 を 更新
---> パッケージ microcode_ctl.x86_64 2:2.1-7.1.el7_0.1 を アップデート
---> パッケージ openssl.x86_64 1:1.0.1e-34.el7 を 更新
---> パッケージ openssl.x86_64 1:1.0.1e-34.el7_0.3 を アップデート
---> パッケージ openssl-libs.x86_64 1:1.0.1e-34.el7 を 更新
---> パッケージ openssl-libs.x86_64 1:1.0.1e-34.el7_0.3 を アップデート
---> パッケージ python-sssdconfig.noarch 0:1.11.2-65.el7 を 更新
---> パッケージ python-sssdconfig.noarch 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ qemu-guest-agent.x86_64 10:1.5.3-60.el7 を 更新
---> パッケージ qemu-guest-agent.x86_64 10:1.5.3-60.el7_0_0.2 を アップデート
---> パッケージ qemu-img.x86_64 10:1.5.3-60.el7 を 更新
---> パッケージ qemu-img.x86_64 10:1.5.3-60.el7_0_0.2 を アップデート
---> パッケージ qemu-kvm.x86_64 10:1.5.3-60.el7 を 更新
---> パッケージ qemu-kvm.x86_64 10:1.5.3-60.el7_0_0.2 を アップデート
---> パッケージ qemu-kvm-common.x86_64 10:1.5.3-60.el7 を 更新
---> パッケージ qemu-kvm-common.x86_64 10:1.5.3-60.el7_0_0.2 を アップデート
---> パッケージ samba-client.x86_64 0:4.1.1-31.el7 を 更新
---> パッケージ samba-client.x86_64 0:4.1.1-33.el7_0 を アップデート
---> パッケージ samba-common.x86_64 0:4.1.1-31.el7 を 更新
---> パッケージ samba-common.x86_64 0:4.1.1-33.el7_0 を アップデート
---> パッケージ samba-libs.x86_64 0:4.1.1-31.el7 を 更新
---> パッケージ samba-libs.x86_64 0:4.1.1-33.el7_0 を アップデート
---> パッケージ selinux-policy.noarch 0:3.12.1-153.el7 を 更新
---> パッケージ selinux-policy.noarch 0:3.12.1-153.el7_0.10 を アップデート
---> パッケージ selinux-policy-targeted.noarch 0:3.12.1-153.el7 を 更新
---> パッケージ selinux-policy-targeted.noarch 0:3.12.1-153.el7_0.10 を アップデート
---> パッケージ shim.x86_64 0:0.7-5.2.el7.centos.1 を 更新
---> パッケージ shim.x86_64 0:0.7-5.2.el7.centos.2 を アップデート
---> パッケージ sssd.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-ad.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-ad.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-client.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-client.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-common.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-common.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-common-pac.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-common-pac.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-ipa.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-ipa.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-krb5.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-krb5.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-krb5-common.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-krb5-common.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-ldap.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-ldap.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ sssd-proxy.x86_64 0:1.11.2-65.el7 を 更新
---> パッケージ sssd-proxy.x86_64 0:1.11.2-68.el7_0.5 を アップデート
---> パッケージ tuned.noarch 0:2.3.0-11.el7 を 更新
---> パッケージ tuned.noarch 0:2.3.0-11.el7_0.3 を アップデート
---> パッケージ tzdata.noarch 0:2014b-1.el7 を 更新
---> パッケージ tzdata.noarch 0:2014e-1.el7_0 を アップデート
---> パッケージ tzdata-java.noarch 0:2014b-1.el7 を 更新
---> パッケージ tzdata-java.noarch 0:2014e-1.el7_0 を アップデート
---> パッケージ webkitgtk3.x86_64 0:2.0.4-6.el7 を 更新
---> パッケージ webkitgtk3.x86_64 0:2.0.4-6.el7_0.1 を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                         アーキテクチャー
                                        バージョン                リポジトリー
                                                                           容量
================================================================================
インストール中:
 kernel                          x86_64 3.10.0-123.4.2.el7        updates  29 M
更新します:
 NetworkManager                  x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0
                                                                  updates 1.4 M
 NetworkManager-glib             x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0
                                                                  updates 369 k
 NetworkManager-tui              x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0
                                                                  updates 190 k
 anaconda                        x86_64 19.31.79-1.el7.centos.4   base    2.2 M
 anaconda-widgets                x86_64 19.31.79-1.el7.centos.4   base    715 k
 centos-logos                    noarch 70.0.6-1.el7.centos       base     21 M
 centos-release                  x86_64 7-0.1406.el7.centos.2.3   base     20 k
 evolution                       x86_64 3.8.5-22.el7_0.1          updates 8.3 M
 evolution-data-server           x86_64 3.8.5-24.el7_0            updates 2.8 M
 evolution-help                  noarch 3.8.5-22.el7_0.1          updates 3.0 M
 firefox                         x86_64 24.6.0-1.el7.centos       updates  49 M
 fprintd                         x86_64 0.5.0-4.0.el7_0           updates  75 k
 fprintd-pam                     x86_64 0.5.0-4.0.el7_0           updates  15 k
 gdm                             x86_64 1:3.8.4-28.el7_0.1        updates 912 k
 gdm-libs                        x86_64 1:3.8.4-28.el7_0.1        updates  13 k
 gnome-classic-session           noarch 3.8.4-10.el7_0            updates  23 k
 gnome-online-accounts           x86_64 3.8.5-9.el7_0.1           updates 394 k
 gnome-settings-daemon           x86_64 3.8.6.1-9.el7_0.1         updates 1.2 M
 gnome-settings-daemon-updates   x86_64 3.8.6.1-9.el7_0.1         updates  53 k
 gnome-shell                     x86_64 3.8.4-32.el7_0            updates 1.2 M
 gnome-shell-extension-alternate-tab
                                 noarch 3.8.4-10.el7_0            updates  15 k
 gnome-shell-extension-apps-menu noarch 3.8.4-10.el7_0            updates  18 k
 gnome-shell-extension-common    noarch 3.8.4-10.el7_0            updates  91 k
 gnome-shell-extension-launch-new-instance
                                 noarch 3.8.4-10.el7_0            updates  14 k
 gnome-shell-extension-places-menu
                                 noarch 3.8.4-10.el7_0            updates  17 k
 gnome-shell-extension-window-list
                                 noarch 3.8.4-10.el7_0            updates  22 k
 gnutls                          x86_64 3.1.18-9.el7_0            updates 609 k
 gnutls-dane                     x86_64 3.1.18-9.el7_0            updates  51 k
 gnutls-utils                    x86_64 3.1.18-9.el7_0            updates 207 k
 java-1.7.0-openjdk              x86_64 1:1.7.0.55-2.4.7.2.el7_0  updates 209 k
 java-1.7.0-openjdk-headless     x86_64 1:1.7.0.55-2.4.7.2.el7_0  updates  25 M
 json-c                          x86_64 0.11-4.el7_0              updates  31 k
 kernel-tools                    x86_64 3.10.0-123.4.2.el7        updates 669 k
 kernel-tools-libs               x86_64 3.10.0-123.4.2.el7        updates 609 k
 kexec-tools                     x86_64 2.0.4-32.el7.centos.1     updates 320 k
 kpatch                          noarch 0.1.2-1.el7_0             updates 7.8 k
 libcacard                       x86_64 10:1.5.3-60.el7_0_0.2     updates 175 k
 libipa_hbac                     x86_64 1.11.2-68.el7_0.5         updates  73 k
 libipa_hbac-python              x86_64 1.11.2-68.el7_0.5         updates  67 k
 libsmbclient                    x86_64 4.1.1-33.el7_0            updates 114 k
 libsss_idmap                    x86_64 1.11.2-68.el7_0.5         updates  77 k
 libtasn1                        x86_64 3.3-5.el7_0               updates 316 k
 libwbclient                     x86_64 4.1.1-33.el7_0            updates  84 k
 mariadb-libs                    x86_64 1:5.5.37-1.el7_0          updates 752 k
 microcode_ctl                   x86_64 2:2.1-7.1.el7_0.1         updates 488 k
 openssl                         x86_64 1:1.0.1e-34.el7_0.3       updates 705 k
 openssl-libs                    x86_64 1:1.0.1e-34.el7_0.3       updates 939 k
 python-sssdconfig               noarch 1.11.2-68.el7_0.5         updates  97 k
 qemu-guest-agent                x86_64 10:1.5.3-60.el7_0_0.2     updates 240 k
 qemu-img                        x86_64 10:1.5.3-60.el7_0_0.2     updates 596 k
 qemu-kvm                        x86_64 10:1.5.3-60.el7_0_0.2     updates 1.8 M
 qemu-kvm-common                 x86_64 10:1.5.3-60.el7_0_0.2     updates 307 k
 samba-client                    x86_64 4.1.1-33.el7_0            updates 516 k
 samba-common                    x86_64 4.1.1-33.el7_0            updates 690 k
 samba-libs                      x86_64 4.1.1-33.el7_0            updates 4.3 M
 selinux-policy                  noarch 3.12.1-153.el7_0.10       updates 340 k
 selinux-policy-targeted         noarch 3.12.1-153.el7_0.10       updates 3.8 M
 shim                            x86_64 0.7-5.2.el7.centos.2      base    671 k
 sssd                            x86_64 1.11.2-68.el7_0.5         updates  66 k
 sssd-ad                         x86_64 1.11.2-68.el7_0.5         updates 169 k
 sssd-client                     x86_64 1.11.2-68.el7_0.5         updates 120 k
 sssd-common                     x86_64 1.11.2-68.el7_0.5         updates 1.2 M
 sssd-common-pac                 x86_64 1.11.2-68.el7_0.5         updates 121 k
 sssd-ipa                        x86_64 1.11.2-68.el7_0.5         updates 273 k
 sssd-krb5                       x86_64 1.11.2-68.el7_0.5         updates 110 k
 sssd-krb5-common                x86_64 1.11.2-68.el7_0.5         updates 203 k
 sssd-ldap                       x86_64 1.11.2-68.el7_0.5         updates 203 k
 sssd-proxy                      x86_64 1.11.2-68.el7_0.5         updates 117 k
 tuned                           noarch 2.3.0-11.el7_0.3          updates 145 k
 tzdata                          noarch 2014e-1.el7_0             updates 433 k
 tzdata-java                     noarch 2014e-1.el7_0             updates 148 k
 webkitgtk3                      x86_64 2.0.4-6.el7_0.1           updates  10 M

トランザクションの要約
================================================================================
インストール   1 パッケージ
更新          72 パッケージ

総ダウンロード容量: 180 M
Is this ok [y/d/N]: y
Downloading packages:
No Presto metadata available for base
No Presto metadata available for updates
警告: /var/cache/yum/x86_64/7/updates/packages/NetworkManager-glib-0.9.9.1-23.git20140326.4dba720.el7_0.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
NetworkManager-glib-0.9.9.1-23.git20140326.4dba720.el7_0.x86_64.rpm の公開鍵がインストールされていません
(1/73): NetworkManager-glib-0.9.9.1-23.git20140326.4dba720 | 369 kB   00:00
<略>
(73/73): webkitgtk3-2.0.4-6.el7_0.1.x86_64.rpm             |  10 MB   00:01
--------------------------------------------------------------------------------
合計                                               8.3 MB/s | 180 MB  00:21
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-0.el7.0.140617.3.x86_64 (@base/$releasever)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  更新します              : libwbclient-4.1.1-33.el7_0.x86_64             1/145
<略>
  更新します              : centos-release-7-0.1406.el7.centos.2.3.x8    62/145
Error unpacking rpm package centos-release-7-0.1406.el7.centos.2.3.x86_64
error: unpacking of archive failed on file /usr/share/doc/redhat-release: cpio: rename
  更新します              : 10:libcacard-1.5.3-60.el7_0_0.2.x86_64       63/145
<略>
  更新します              : json-c-0.11-4.el7_0.x86_64                   71/145
  インストール中          : kernel-3.10.0-123.4.2.el7.x86_64             72/145
  更新します              : 10:qemu-guest-agent-1.5.3-60.el7_0_0.2.x8    73/145
  整理中                  : sssd-1.11.2-65.el7.x86_64                    74/145
<略>
  整理中                  : 10:qemu-guest-agent-1.5.3-60.el7.x86_64     144/145
  検証中                  : evolution-3.8.5-22.el7_0.1.x86_64             1/145
<略>
  検証中                  : gnome-shell-extension-apps-menu-3.8.4-9.e   131/145
centos-release-7-0.el7.0.140617.3.x86_64 was supposed to be removed but is not!
  検証中                  : centos-release-7-0.el7.0.140617.3.x86_64    132/145
  検証中                  : 1:java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7   133/145
<略>
  検証中                  : 1:java-1.7.0-openjdk-headless-1.7.0.51-2.   145/145

インストール:
  kernel.x86_64 0:3.10.0-123.4.2.el7

更新:
  NetworkManager.x86_64 1:0.9.9.1-23.git20140326.4dba720.el7_0
<略>
  webkitgtk3.x86_64 0:2.0.4-6.el7_0.1

失敗:
  centos-release.x86_64 0:7-0.el7.0.140617.3
  centos-release.x86_64 0:7-0.1406.el7.centos.2.3

完了しました!
[root@cent7rc ~]#

centos-releaseのインストールに失敗している?
rpmコマンドを実行して確認してみるとRC時代のものが残っている模様

[root@cent7rc ~]# rpm -qa|grep release
centos-release-7-0.el7.0.140617.3.x86_64
[root@cent7rc ~]#

rpmファイルを–forceで適用しようとしても、同じ状態

[root@cent7rc ~]# rpm -Uvh --force centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:centos-release-7-0.1406.el7.cento################################# [100%]
エラー: アーカイブの伸長に失敗: ファイル /usr/share/doc/redhat-release: cpio: rename失敗 - ディレクトリです
エラー: centos-release-7-0.1406.el7.centos.2.3.x86_64: インストール 失敗
[root@cent7rc ~]#

ファイルが壊れているのかとrpm2cpio/cpioで展開してみると、それは正常終了

[root@cent7rc tmp]# rpm2cpio ../centos-release-7-0.1406.el7.centos.2.3.x86_64.rpm |cpio -ivd
./etc/centos-release
./etc/issue
./etc/issue.net
./etc/os-release
./etc/pki/rpm-gpg
./etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
./etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-7
./etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-7
./etc/redhat-release
./etc/rpm/macros.dist
./etc/system-release
./etc/system-release-cpe
./etc/yum.repos.d/CentOS-Base.repo
./etc/yum.repos.d/CentOS-Debuginfo.repo
./etc/yum.repos.d/CentOS-Sources.repo
./etc/yum.repos.d/CentOS-Vault.repo
./usr/lib/systemd/system-preset/85-display-manager.preset
./usr/lib/systemd/system-preset/90-default.preset
./usr/share/centos-release/EULA
./usr/share/doc/centos-release/Contributors
./usr/share/doc/centos-release/GPL
./usr/share/doc/redhat-release
./usr/share/redhat-release
67 blocks
[root@cent7rc tmp]#

謎な状態ですね。

まぁ、テストマシンなので、気にせず消しましょうかね・・・

Windowsバッチファイルでping応答の違いで動作をかえる

Windowsバッチファイルで、指定IPアドレスから応答がなくなったら次の作業を実施する、という処理をやりたかったので作った。

普通にping実行時のERRORLEVELを見ればいいか、と思っていたが、試験した環境では応答があってもなくてもERRORLEVEL0だったので判別ができなかった・・・

調べたところ「otnx.jpのコマンド別/ping」に調査した結果と回避方法があったのでそれを使った。

ちなみにotnx.jpではfindで「bytes=32」を引っかけていたが、日本語環境だと「 バイト数 =32」になってしまう。しかし、バッチには日本語文字列を書きたくなかったので、その後ろにある「ms TTL=」の方を引っかけるようにした。

・停止待ちバッチファイル

応答がなかったら終了。
応答があったら3回繰り返す

@echo off

set COUNT=0

:error
set /a COUNT=COUNT+1
echo %COUNT%
if "%COUNT%" == "3" goto errorout
ping -n 1 IPアドレス | find "ms TTL=" > NUL
if ERRORLEVEL 1 goto notrespond
timeout /t 5  > nul
goto error

:notrespond
echo host stopped
goto end

:errorout
echo host not stop

:end

・起動待ちバッチファイル

ping応答があるまで待機する
3回繰り返してもping応答がなければ諦める

@echo off

set COUNT=0

:error
set /a COUNT=COUNT+1
if "%COUNT%" == "3" goto errorout
ping -n 1 IPアドレス | find "ms TTL=" > NUL
if ERRORLEVEL 1 goto error

echo host working
goto end

:errorout
echo host not working

:end

Windows上でperlを使って日本語ファイル名を操作する(メモ

slashdot.jpの「Perlはゾンビだ」に、日本語Windows環境において、perlを使って日本語ファイル名を操作する時の注意点がまとめられていたので、引用&備忘録化。

過去にperlスクリプトを作る際、ファイル内に書かれた日本語の操作に関することはWindows/Linuxで動作が共通化できたものの、「日本語ファイル名の取り扱い」について、Windows上での動作がいまいち分からず、面倒になり、NASに該当ファイル群を置き、Linuxで処理する、ということをしたことがある。

その時に受けた感じからすると、以下の解説は非常に納得がいくモノだった。

Anonymous Coward の書き込み (#2628619) 」より

コマンドラインからの引数取得とかファイル操作とかのたびに
@ARGV = map { decode(‘cp932’, $_) } @ARGV; とか
open my $fh, ”, encode(‘cp932’, $filename) or die $!; とか
@files = map { decode(‘cp932’, $_) } readdir($d); とか
if (-f encode(‘cp932’, $filename)) とか
mkdir encode(‘cp932’, $filename); とかソース全体にわたって書かなければならないこと。

これが面倒だと思わない奴はWindows上でPerlを本気で使ったことがないとしか思えない。少なくとも小飼弾はMac使っているようだし。つーか面倒だと思わないならそもそもどうして開祖が「怠惰はプログラマの美徳」とか言ってる言語なんか使ってるの?

56億7千万歩ほど譲ってこれは面倒ではないということにしても、Windows以外の環境への移植性がまったくない。Windows上でシステムロケールを変えただけで動作がおかしくなる。当然どんな環境で動くかわからないモジュール内では使えない。
まあいちおうこれには対処の方法があって、
use Encode::Locale;
@ARGV = map { decode(locale, $_) } @ARGV; とか
open my $fh, ”, encode(locale_fs, $filename) or die $!; とか
@files = map { decode(locale_fs, $_) } readdir($d); とか
if (-f encode(locale_fs, $filename)) とか
mkdir encode(locale_fs, $filename); とかさらに呪文を積み増しすればいいらしい。
MacやLinuxでこんなことわざわざしてる奴いないと思うけど。つーか忘れてもたいてい問題なく動くからWindows以外の環境で正しく書くのが超困難。だから結局Windowsに移植する奴が貧乏クジを引かされる。Windows上ですら、localeとlocal_fsが違う環境があるというバグを知らずに踏んでも気づかない。

しかし実はEncode::Locale;使ってもまだ不十分で、システムロケール(日本語版ならシフトJIS)で表せない文字を含んだファイル名が扱えない。いちおうWin32::Unicode::Fileというモジュールがあるようだが、ファイル読み書きをモジュール内で独自に行なっているので信じられないほど遅くて捨てた。Win32::Longnameというモジュールがちょっとはマシなようだが、どちらにしてもまたも移植性がなくなる。

自分で書くコードは上記の面倒じゃないことにした書き換えを「するだけで」済むとしても、File::compareのような超基本的モジュールすらいまだに非対応。

Perlでこのへんが改善される見込みはまったくなさそうなので、自分はPythonの勉強を始めた。

そして、(#2630401) より

> ・PerlをUTF-8ベース(CP65001)でPerlを動かす
> ことだと思います。

Console CPはファイル名で使われるコードページにはまったく影響を与えない。Encode::Localeでもlocale_fsとconsole_inとconsole_outが別々に定義されている(そう、APIレベルではコンソール入力と出力さえ異なる可能性がある)。Perlの仕様をまともにするためにあなたのような知ったかぶりバカをマサカリで殴って回るよりコストがかからないに違いないからPythonの勉強を始めたの。

> 普通のコマンドプロンプト(SJIS)ベースでは不可能。

Windowsにはコンソール入出力にもワイド文字APIがあり、それを使えば可能(リダイレクトやパイプが絡むとこっちの都合だけでエンコーディングを決められないけどそれはCygwinでも同じだし)。もちろん今あるPerlでは不可能だがそれは実装の手抜きにすぎない。そもそもCygwinはどうやってUTF-8文字を受け付けるコンソールを実現してると思ってるの?

> ・UTF-8 な cygwin の環境を構築し、その上で Perl を使う

Cygwinはパスの扱いが特殊すぎて、結局普通のアプリとパス名をやりとりする際にパスの変換/逆変換が必要なので、面倒だとか移植性ゼロだとかいう問題は何も解決しない。Perlがmsvcrt使うのやめて、UTF-8←→UTF-16LE変換を行ってワイド文字API呼び出して、Encode::LocaleはあたかもロケールがUTF-8であるかのようにふるまってくれるのが一番いいのだが、それを実現するために投入するコストを考えるとすでにまともな処理している言語の乗り換えにコストを振り向けたほうがどう考えても省エネ。

> ・@ARGVやファイル名を、スクリプト本体内のデータ処理と混ぜない

それを面倒と思わないなら以下略

MySQLとpostgresqlでのレプリケーション動作検証時使用perlスクリプト

MySQLのレプリケーション機能を使うとどのような動きをするのかを確認中。

テストデータのインサートと確認を行うためのスクリプトを作成した。

標準で用意されているデータベース「test」内にテーブル「testtable」を作成して、そこにデータを投入することにした。

# mysql -u root
mysql> use test;
mysql> create table testtable (
	id int(20) not null auto_increment,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id)
);
mysql> grant all on test.* to テストユーザ名@ホスト名 identified by 'パスワード';
mysql>

スクリプトはperl。
perl-DBD-MySQLパッケージをインストールしておくこと。

#!/usr/bin/perl

use DBI;

my $mysqluser="MySQL内のユーザ名";
my $mysqlpassword="パスワード";
my $masterserver="マスタサーバ名";
my $slaveserver="スレーブサーバ名";
my $dbname="test";
my $tablename="testtable";
$max=5;

sub getselect{
	my($server,$user,$password,$dbname,$tablename)=@_;
	my $db=DBI->connect("DBI:mysql:$dbname:$server",$user,$password);
	my $sth=$db->prepare("select id,name,text from $tablename order by id desc");
	$sth->execute;
	print "\tname\ttext\n";
	my $count=$max;
	for(my $i=0; $i&lt;$sth->rows; $i++){
		my @tmp=$sth->fetchrow_array;
		if($count>0){
			print $tmp[0] ."\t". $tmp[1] ."\t". $tmp[2] ."\n";
			$count--;
		}
	}
	$sth->finish;
	$db->disconnect;
}

sub insertvalue{
	my($server,$user,$password,$dbname,$tablename)=@_;
	my $db=DBI->connect("DBI:mysql:$dbname:$server",$user,$password);
	my $str1=substr("00".rand(100),-3);
	my $str2=localtime();
	my $sth=$db->prepare("insert into $tablename values (NULL,'name$str1','$str2')");
	$sth->execute;
	$sth->finish;
	$db->disconnect;
}

if($ARGV[0] =~ /ins/){
	print "=== insert ===\n";
	insertvalue($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);
}

print "=== master:$masterserver ===\n";
getselect($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

print "=== slave:$slaveserver ===\n";
getselect($slaveserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

使い方
情報確認のみ「mysqltest.pl」
データ追加と情報確認「mysqltest.pl ins」

オプションとして「ins」(insert)を指定すると、データを追加する、というもの。

実行すると以下の様な形となる。

# mysqltest.pl ins
=== insert ===
=== マスタサーバ ===
name    text
248     name284 Fri Jun 20 11:42:01 2014
247     name563 Fri Jun 20 11:35:01 2014
246     name934 Fri Jun 20 11:28:01 2014
245     name769 Fri Jun 20 11:21:01 2014
244     name227 Fri Jun 20 11:14:01 2014
=== スレーブサーバ ===
name    text
248     name284 Fri Jun 20 11:42:01 2014
247     name563 Fri Jun 20 11:35:01 2014
246     name934 Fri Jun 20 11:28:01 2014
245     name769 Fri Jun 20 11:21:01 2014
244     name227 Fri Jun 20 11:14:01 2014
#

「単純増加する数字 name+ランダム数字 日付」という出力内容のうち、最新の5件のみ表示する、というものになっている。

マスタサーバの出力内容と、スレーブサーバの出力内容を比べる、というもの。


2021/05/19

postgresql環境でのバックアップ試験のためにこのスクリプトを流用しようとしたところ、作り直しが必要なポイントがあった。

まずはテーブル作成時の違い

create table testtable (
	id int(20) not null auto_increment,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id) 
);

これをそのまま実行すると下記エラーになる

ERROR:  syntax error at or near "("
LINE 2: id int(20) not null auto_increment,

int型auto_increment属性というのはMySQL特有で、postgresqlではserial型で置き換える。
「int(20) auto_increment」→「serial」に変更すると、以下のようになる。

create table testtable (
	id serial not null,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id) 
);

また、perlモジュールは DBD:mysqlではなくDBD:Pgに変更になり、データベースとホスト指定手法が変わった。

パッケージとしては perl-DBD-Pg をインストールする。

#!/usr/bin/perl

use DBI;

my $mysqluser="postgresql内のユーザ名";
my $mysqlpassword="パスワード";
my $masterserver="マスタサーバ名";
my $slaveserver="スレーブサーバ名";
my $dbname="test";
my $tablename="testtable";
$max=5;

sub getselect{
        my($server,$user,$password,$dbname,$tablename)=@_;
        my $db=DBI->connect("DBI:Pg:dbname=$dbname;host=$server",$user,$password);
        my $sth=$db->prepare("select id,name,text from $tablename order by id desc");
        $sth->execute;
        print "\tname\ttext\n";
        my $count=$max;
        for(my $i=0; $i&lt;$sth->rows; $i++){
                my @tmp=$sth->fetchrow_array;
                if($count>0){
                        print $tmp[0] ."\t". $tmp[1] ."\t". $tmp[2] ."\n";
                        $count--;
                }
        }
        $sth->finish;
        $db->disconnect;
}

sub insertvalue{
        my($server,$user,$password,$dbname,$tablename)=@_;
        my $db=DBI->connect("DBI:Pg:dbname=$dbname;host=$server",$user,$password);
        my $str1=substr("00".rand(100),-3);
        my $str2=localtime();
        my $sth=$db->prepare("insert into $tablename (name, text) values ('name$str1','$str2')");
        $sth->execute;
        $sth->finish;
        $db->disconnect;
}

if($ARGV[0] =~ /ins/){
        print "=== insert ===\n";
        insertvalue($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);
}

print "=== postgresql:$masterserver ===\n";
getselect($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

print "=== slave:$slaveserver ===\n";
getselect($slaveserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

CentOS5でFedora20やRHEL6のrpmがrpm2cpioで展開できない

CentOS5環境で、Fedora20のRPMファイルを展開しようとした。

# wget http://archives.fedoraproject.org/pub/fedora/linux/updates/20/i386/nss-3.16.1-1.fc20.i686.rpm
# rpm2cpio nss-3.16.1-1.fc20.i686.rpm |cpio -ivd
cpio: warning: skipped 6151 bytes of junk
cpio: warning: archive header has reverse byte-order
cpio: g イaォ7・
             z,a1m俿イフJcレ[}\&・dDDシFンWロ [&;Y(・・クJ.疱:: unknown file type
cpio: premature end of file
#

エラー・・・

調べてみると、この展開の問題はRHEL5での問題らしい。
Bug 602423 – rpm2cpio fails on rhel-6 rpms
Bug 837945 – Can’t extract rpms from RHEL6 on RHEL5

Bug 602423の方に、この問題に対処するための、rpm2cpio.shというのがアップロードされている。(patched parmezan, works for me on rhel5 (1.48 KB, application/x-sh) というやつ)

このrpm2cpio.shを使ってみると、期待通りの動作をした。

# ./rpm2cpio.sh nss-3.16.1-1.fc20.i686.rpm|cpio -ivd
./etc/pki/nssdb
./etc/pki/nssdb/cert8.db
./etc/pki/nssdb/cert9.db
./etc/pki/nssdb/key3.db
./etc/pki/nssdb/key4.db
./etc/pki/nssdb/pkcs11.txt
./etc/pki/nssdb/secmod.db
./usr/lib/libnss3.so
./usr/lib/libnsspem.so
./usr/lib/libsmime3.so
./usr/lib/libssl3.so
./usr/lib/nss/libnssckbi.so
./usr/share/man/man5/cert8.db.5.gz
./usr/share/man/man5/cert9.db.5.gz
./usr/share/man/man5/key3.db.5.gz
./usr/share/man/man5/key4.db.5.gz
./usr/share/man/man5/pkcs11.txt.5.gz
./usr/share/man/man5/secmod.db.5.gz
5146 blocks
#

rpm2cpio.shの中を確認してみる。

#!/bin/sh

pkg=$1
if [ "$pkg" = "" -o ! -e "$pkg" ]; then
    echo "no package supplied" 1>&2
   exit 1
fi

leadsize=96
o=`expr $leadsize + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
echo `od -j $o -N 8 -t u1 $pkg`
 echo "sig il: $il dl: $dl"

sigsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
 echo "hdr il: $il dl: $dl"
exit

hdrsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $hdrsize`
EXTRACTOR="dd if=$pkg ibs=$o skip=1"

COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
if echo $COMPRESSION |grep -q gzip; then
        DECOMPRESSOR=gunzip
elif echo $COMPRESSION |grep -q bzip2; then
        DECOMPRESSOR=bunzip2
elif echo $COMPRESSION |grep -q xz; then
        DECOMPRESSOR=unxz
elif echo $COMPRESSION |grep -q cpio; then
        DECOMPRESSOR=cat
elif $EXTRACTOR | od -x | head -1 | grep -q '37fd 587a '; then
        DECOMPRESSOR=unxz
else
        # Most versions of file don't support LZMA, therefore we assume
        # anything not detected is LZMA
        DECOMPRESSOR=`which unlzma 2>/dev/null`
        case "$DECOMPRESSOR" in
            /* ) ;;
            *  ) DECOMPRESSOR=`which lzmash 2>/dev/null`
                 case "$DECOMPRESSOR" in
                     /* ) DECOMPRESSOR="lzmash -d -c" ;;
                     *  ) DECOMPRESSOR=cat ;;
                 esac
                 ;;
        esac
fi

$EXTRACTOR 2>/dev/null | $DECOMPRESSOR

CentOS5ではサポートされていないヘッダと署名部分を削除してから、個別で展開しているような感じですかね。