TinyCore Linuxで異なるバージョンのtczを入れる方法

  • 投稿日:
  • 更新日:2017/02/01
  • by
  • カテゴリ:

TinyCore Linuxのtcz (パッケージ管理)ですが、バージョンによって公開されているパッケージが変化しています。

実際に公式サイトで公開されているx86版のtczを見てみると、その数は以下のように変化しています。

バージョン4.xは長く使われたせいか、tczも充実していますね。

最新のバージョンでtczが提供されていない場合、過去のバージョンのものを入れると動く場合があります。ここではその方法を紹介します。

ただし、過去のバージョンのtczを入れても動作保証はできませんので、注意してください。

tczのミラーサイトを選択する仕組み

通常、tce-loadなどのスクリプトを使うと、自動的にrepo.tinycorelinux.netの特定の位置からファイルをダウンロードしようとします。バージョンが7系列だとすると、それは

http://repo.tinycorelinux.net/7.x/x86/tcz

です。

このURLはtce-loadなどのスクリプトではMIRRORという変数に入っており、このMIRROR変数に値を代入するのは

/etc/init.d/tc-functions

の以下の部分です。

getMajorVer() {
awk '{printf "$d", $1}' /usr/share/doc/tc/release.txt
}
getBuild() {
BUILD=`uname -m`
case ${BUILD} in
armv6l) echo "armv6" ;;
armv7l) echo "armv7" ;;
i686) echo "x86" ;;
x86_64) [ -f /lib/ld-linux-x86-64.so.2 ] && echo "x86_64" || echo "x86" ;;
*) echo "x86" ;;
esac
}
getMirror() {
BUILD="$1"
[ -z "$BUILD" ] && BUILD=$(getBuild)
read MIRROR < /opt/tcemirror
#MIRROR="${MIRROR%/}/$(getMajorVer).x/x86/tcz"
MIRROR="${MIRROR%/}/$(getMajorVer).x/$BUILD/tcz"
}

つまり、MIRROR変数は

(/opt/tcemirrorの値)/(メジャーバージョン).x/(アーキテクチャ)/tcz

という構成になっており、

$ cat /opt/tcemirror
http://repo.tinycorelinux.net/
$ cat /usr/share/doc/tc/release.txt
7.2

などとなっているので、その具体的な値は

http://repo.tinycorelinux.net/7.x/x86/tcz

となるわけです。

すなわち、バージョン番号の部分を変える場合は

/usr/share/doc/tc/release.txt

を変更すれば良い、ということになります。

異なるバージョンのtczを入れてみる

これを実際にやると、以下のようになります。

例として、今使っているバージョンが7.2で、バージョン7.xのtczリポジトリにはない、Postfixを入れてみます。

Postfixは6.xにも5.xにもなく、4.xにあるので、4.xのリポジトリを指定してみます。

$ cd ~/;echo 4.0 > release.txt.4.0
$ sudo cp /usr/share/doc/tc/release.txt /usr/share/doc/tc/release.txt.orig
$ sudo cp ~/release.txt.4.0 /usr/share/doc/tc/release.txt
$ tce-load -wil postfix
$ sudo /usr/share/doc/tc/release.txt.orig /usr/share/doc/tc/release.txt

最初の3行でrelease.txtを7.2 (または現在のバージョン)から4.0という文字列に変えます。

その状態でtce-loadを実行すると、4.xのリポジトリからtczを読むようになります。

最後にrelease.txtを元に戻しておきます。

なお、しつこいようですが過去のバージョンのtczを入れて動く保証はないので、自己責任でどうぞ。

こちらもよく読まれています