オーディオNAS RockDiskNextをFedora12からRedSleeve6へアップデートする

# SSHが使えなくなった製品なので...
製品アップデートで動かなくなったSSHのために、
RedSleeveからopensshとopensslのパッケージを持ってきた話
http://qiita.com/hkato/items/1b220ac5bf9a6fdf0fd7
これがうまくいっている様なので、他のRPMパッケージもRed Sleeve Enterprise Linux 6化してしまおう

# 手順

## diffのインストール
設定ファイルの差分を見たいため

```shell-session
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/diffutils-2.8.1-28.el6.armv5tel.rpm
# rpm -ivh diffutils-2.8.1-28.el6.armv5tel.rpm
```

## yumのインストール
yumでRedSleeveを当てようと思うため、まずはyumを動かすために必要なパッケージを拾ってきてrpmコマンドでインストール/アップデートする

### パッケージの取得

```shell-session
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/yum-3.2.29-69.el6.noarch.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/pygpgme-0.1-18.20090824bzr68.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/python-iniparse-0.3.1-2.1.el6.noarch.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/python-urlgrabber-3.9.1-9.el6.noarch.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/yum-metadata-parser-1.1.2-16.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/gpgme-1.1.8-3.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/python-pycurl-7.19.0-8.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/gnupg2-2.0.14-8.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/libcurl-7.19.7-46.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/pth-2.0.7-9.3.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/pinentry-0.7.6-8.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nss-3.19.1-8.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/libidn-1.18-2.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/libssh2-1.4.2-1.el6.1.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nspr-4.10.8-2.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nss-softokn-3.14.3-23.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nss-softokn-freebl-3.14.3-23.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nss-util-3.19.1-1.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/nss-sysinit-3.19.1-8.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/curl-7.19.7-46.el6.armv5tel.rpm
```

### nss, curlなどのアップデート
yumがnssやcurlに依存しているためそこら辺を先にアップデートする

```shell-session
# rpm -Uvh nss-3.19.1-8.el6.armv5tel.rpm \
nss-softokn-3.14.3-23.el6.0.armv5tel.rpm \
nss-softokn-freebl-3.14.3-23.el6.0.armv5tel.rpm \
nss-util-3.19.1-1.el6.armv5tel.rpm \
nspr-4.10.8-2.el6.armv5tel.rpm \
nss-sysinit-3.19.1-8.el6.armv5tel.rpm \
curl-7.19.7-46.el6.armv5tel.rpm \
libcurl-7.19.7-46.el6.armv5tel.rpm \
libidn-1.18-2.el6.armv5tel.rpm \
libssh2-1.4.2-1.el6.1.armv5tel.rpm
```

### yum自身のインストールと依存パッケージのアップデート

```shell-session
# rpm -Uvh yum-3.2.29-69.el6.noarch.rpm \
yum-metadata-parser-1.1.2-16.el6.armv5tel.rpm \
gpgme-1.1.8-3.el6.armv5tel.rpm \
python-iniparse-0.3.1-2.1.el6.noarch.rpm \
python-urlgrabber-3.9.1-9.el6.noarch.rpm \
python-pycurl-7.19.0-8.el6.armv5tel.rpm \
gnupg2-2.0.14-8.el6.armv5tel.rpm \
pth-2.0.7-9.3.el6.0.armv5tel.rpm \
pinentry-0.7.6-8.el6.armv5tel.rpm \
pygpgme-0.1-18.20090824bzr68.el6.armv5tel.rpm 
```

### リポジトリのインストール
yum repoをredsleeveのものにする

```shell-session
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/redsleeve-release-6-20160310.el6.armv5tel.rpm
# rpm -Uvh redsleeve-release-6-20160310.el6.armv5tel.rpm 
```

## いよいよupdate（失敗）
```shell-session
# yum update
```
とするが失敗してしまうpythonがエラーを吐く。とりあえずpythonをアップデートするか。

## pythonのアップデート

### 必要パッケージの取得

```shell-session
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/python-2.6.6-64.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/python-libs-2.6.6-64.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/expat-2.0.1-11.el6.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/zlib-1.2.3-29.el6.armv5tel.rpm
```

### アップデートの実施

```shell-session
# rpm -Uvh python-2.6.6-64.el6.0.armv5tel.rpm \
python-libs-2.6.6-64.el6.0.armv5tel.rpm \
expat-2.0.1-11.el6.armv5tel.rpm \
zlib-1.2.3-29.el6.armv5tel.rpm 
```

## いよいよupdate（でも失敗）

```shell-session
# yum update
```
それでも失敗。
rpmdbのクリアや色々してみたがダメ。よく考えるとrpmコマンド自身がyumに対して古そう…

## rpmコマンドのアップデート

### 必要パッケージの取得

```shell-session
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/rpm-4.8.0-47.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/rpm-libs-4.8.0-47.el6.0.armv5tel.rpm
# curl -O http://ftp.redsleeve.org/pub/el6/6.7/base/RPMS/rpm-python-4.8.0-47.el6.0.armv5tel.rpm
```

### アップデート実施

```shell-session
# rpm -Uvh rpm-4.8.0-47.el6.0.armv5tel.rpm \
rpm-libs-4.8.0-47.el6.0.armv5tel.rpm \
rpm-python-4.8.0-47.el6.0.armv5tel.rpm
```

## いよいよアップデート（成功？）

```shell-session
# yum update
```
一覧がちゃんと出てくる。yum,rpmに関しては動いている様子。
ただし、実際にアップデートを行おうとすると悲しいかなディスクフルで終了する。

## いつかのディレクトリをHDDに割り当て

今まのシステムになかったyumのキャッシュやrpmのdbをhddに移す。

```shell-session
# mkdir -p /home/var/cache/yum
# rm -rf /var/cache/yum
# ln -s /home/var/cache/yum /var/cache/yum
# mkdir -p /home/var/lib
# mv /var/lib/yum /home/var/lib/
# ln -s /home/var/lib/yum /var/lib/yum
# mv /var/lib/rpm /home/var/lib/rpm
# ln -s /home/var/lib/rpm /var/lib/rpm
```

これでもディスクフル。
仕方ないので/usr/shareをhddへ…

```shell-session
# mkdir -p /home/usr
# mv /usr/share /home/usr/
# ln -s /home/usr/share /usr/share
```

それでもダメ。
仕方ないので次の様に…

## １パッケージづつyumでアップデート（成功）
rpmの一覧を出して、fc12のパッケージだったらyum update -y hogeする様にしてみる

```shell-session
# rpm -qa|grep fc12 |sort|sed 's/-[0-9].*//;s/^/yum update -y /' | sh -
```

## 再起動

rebootが効かなくなってしまったら、次のページを参考に

http://askubuntu.com/questions/638062/shutdown-unable-to-shutdown-system-from-root-shell-init-bin-bash-ubuntu-14

# インストール完了状況

## OS名

```shell-session
# cat /etc/redhat-release 
Red Sleeve Enterprise Linux release 6 (Leap)
```

RSEL6になっている

## fc12残

```shell-session
# rpm -qa|grep fc12|sort
```
で未だにぞろぞろ出てくる。が、rsel6にはなくfc12にしかないパッケージ（主にマルチメディアを扱う系）やfc12の方が最新のものを採用しているもの

それと、サイズが大きくてディスクフルになってしまい依然アップデートできないもの

```shell-session
# yum update
.
.
.
================================================================================
 パッケージ               アーキテクチャ
                                      バージョン               リポジトリー
                                                                           容量
================================================================================
更新:
 glibc                    armv5tel    2.12-1.166.el6.7.0       updates    3.4 M
 glibc-common             armv5tel    2.12-1.166.el6.7.0       updates     14 M
 openldap                 armv5tel    2.4.40-7.el6             base       248 k
 samba                    armv5tel    3.6.23-24.el6            base       4.3 M
 samba-common             armv5tel    3.6.23-24.el6            base       8.4 M
 samba-winbind-clients    armv5tel    3.6.23-24.el6            base       1.7 M
依存性関連でのインストールをします。:
 libtevent                armv5tel    0.9.18-3.el6             base        23 k
 nss-tools                armv5tel    3.19.1-8.el6             base       412 k
 samba-winbind            armv5tel    3.6.23-24.el6            base       1.8 M

トランザクションの要約
================================================================================
インストール         3 パッケージ
アップグレード       6 パッケージ
```

ここら辺で良しとする。

これで

- IO DATA がbuildしたと思われる kernel-2.6.31.14
- + Red Sleeve Enterprise Linux 6
- + Fedora 12

になった

## 動作確認

とりあえず

- Web管理画面
- DAAP (mt-daapd)
- DLNA (minidlna)
- samba
- ssh/scp

など主要機能は動いている様子（自分はnetatalk, nfsは無効にしてます）