ソフトウェアの追加/削除の、ネットワーク経由でソフトウェアをインストールが使えるように、りなざうテクノウに feed のサーバを作ってみる。
と、言うのも少し前に naismith さんが書かれてた feed の作り方が簡単そうだったので。
http://d.hatena.ne.jp/AllStarMoves/20050924/p4
あう、Packagesと、それを圧縮したPackages.gzも置いたけど、うまくいかない。パッケージ一覧は表示されるものの、それを選択してインストールすると必ず失敗しました。と出てしまう。ちと、悩み中。←解決した〜
feed のサーバのディレクトリの準備
うちは ~nyano/archives/slzaurus/ に ipk のパッケージを置いてあるんだけど、他の feed のサーバみたいに ~nyano/feed/ にしたいので、「ln -s archives/slzaurus feed」てな具合にシンボリックリンクを張った。
Packages ファイルの作り方
あとは ipk のパッケージに含まれる control.tar.gz 内の control ファイルを、パッケージの数だけ空行で区切って繋げただけの Packages って名前のテキストファイルを作る。
(最初、空行で区切らなくても Package: 行を見てくれるかと思って作ったら失敗した(汗))
ここで注意が必要で control ファイルに Filename: 行が含まれていないとインストールに失敗しちゃう。
さらにバージョンが違っても Package: 行が同じものが複数あると、やはりインストールに失敗してしまう。(さらに困ったことにインストールに失敗したパッケージは /home/zaurus 直下に放置されたままになる(汗))
あと Package: 行で始まらなければいけないみたいなので、Filename: 行を追加する場合は2行目以降に書かなければならない。
Packages ファイル自動生成スクリプト
てな訳で、その辺を踏まえた上で ipk を置いてあるディレクトリ内で実行すれば一発で Packages ファイルを作ってくれるシェルスクリプト「mkfeed.sh」をでっちあげてみた。control ファイルの末尾に改行が入らない場合も考慮して無駄に空行を2つ付けてるのは少しカッコ悪いけど(汗)
#!/bin/sh if test -f ./mkfeed_rm.sh then rm -f ./mkfeed_rm.sh fi for file in `ls ./*.ipk` do echo $file tar zxf $file ./control.tar.gz if test -f ./control.tar.gz then tar zxf ./control.tar.gz ./control rm ./control.tar.gz if test -f ./control then ipkg=`grep '^Package: ' ./control | sed -e '/^Package: /s/Package: //'` echo "rm -f mkfeed_tmp.$ipkg" >> ./mkfeed_rm.sh if test -f ./mkfeed_tmp.$ipkg then rm ./mkfeed_tmp.$ipkg fi if grep "^Filename: " ./control then cat ./control >> ./mkfeed_tmp.$ipkg else grep "^Package: " ./control >> ./mkfeed_tmp.$ipkg echo "Filename: $file" >> ./mkfeed_tmp.$ipkg grep -v "^Package: " ./control >> ./mkfeed_tmp.$ipkg fi echo "" >> ./mkfeed_tmp.$ipkg echo "" >> ./mkfeed_tmp.$ipkg rm ./control fi fi done cat mkfeed_tmp.* > Packages chmod +x ./mkfeed_rm.sh ipkg=`./mkfeed_rm.sh` rm ./mkfeed_rm.sh
すげぇアバウトなシェルスクリプトなんで、明らかな間違い以外のツッコミは無しで(汗)
で、naismith さんからのコメントを元にシェルスクリプト発見〜。ああ、ちゃんとした人が作ったものは綺麗だな〜。sed 使って Filename: 行挿入も考えたんだけど、改行が見苦しいかなとか思って grep -v とかに逃げてしまった(滝汗)
http://www.netmonks.ca/projects/opensource/openwrt/ipkg-make-index
ネットワーク経由でソフトウェアをインストール
TAKETYONがやったことないって言うてたので、やり方なんぞをメモ。今回作った feed のサーバのURL は「http://www.areanine.gr.jp/~nyano/feed/」、名前は何でもいいけど「りなざうテクノウ」とか入れてみた。
- 「ソフトウェアの追加/削除」の「ネットワーク経由でソフトウェア」を選択する。
- 右下の3つのアイコンの一番左にあるスイッチのアイコンを選択する。
- 「新規サーバー」ボタンを選択する。
- 「名前」に feed のサーバの名前を入れる。、「URL」に feed のサーバの URL を入れる
- 「サーバー」一覧から「りなざうテクノウ」を選択する。(青色で反転表示される)
- 右上の「OK」ボタンを選択する。
- パッケージ一覧が表示されるので、パッケージの左端の荷物のアイコンを選択すると、荷物の箱が開いたアイコン表示に変わる。これでインストールしたいパッケージを複数選択することができる。
- 右上の「OK」ボタンを選択すると、通常のインストールと同じくインストール方法を聞いてくるので、プログラムエリア(本体メモリー)、CF カード、SD カードなどを選択する。