Unloading tcz extensions in Tiny Core Linux

  • 投稿日:
  • 更新日:2016/06/07
  • by
  • カテゴリ:

(English below)

各モジュールがコンパクトで使いやすいTiny Coreですが、tce-loadでロードしたtczパッケージを削除(アンロード)したいことがあります。



ファイルに何も拡張子がついていませんが、ただのシェルスクリプトです。 このファイルをもとのtce-unloadという名前でも保存して、実行権限をつけておきます。たとえば、

% chmod a+x tce-unload


% ./tce-unload パッケージ名(例: perl5)


注意: このスクリプトでは、アンロードしようとしているファイルがプロセスで使用中であるかどうか判別するためにlsofコマンドを使います。 lsofがなくても動作はするようにしてありますが、その場合ファイルの使用中判定ができないので、メインツリー(/usr/local/等)から/tmp/tcloopへのシンボリックリンクの削除をしてしまってからも/tmp/tcloop/(パッケージ名)のディレクトリは残ってしまいます。


% tce-load -i lsof



% ls /usr/local/tce.installed/




Even each package is very small and tidy in Tiny Core, sometimes you want to unload a tcz package.

I've tried a method based on a forum thread and it works fine with some minor improvements. Here's the script.

Download here

The file has no extension, but it is just a shell script, so you can execute this with sh command or just making it executable. For example,

% chmod a+x tce-unload

When you want to unload a package:

% ./tce-unload {package name}(e.g. perl5)

It unloads a package from a loopback device and removes related files (links).

Note: this script uses lsof command to identify if the files trying to unload are being used. I made the script work without lsof command (this command is a tcz extension in Tiny Core), but the script cannot identify if the files are being used in this case. Consequently the links (mainly under /usr/local) will be removed but /tmp/tcloop/{package} will remain.

I tried to resolve this issue without lsof command, it was not successful as I'm not very familiar with ash shell scripts. So you might want to install lsof command to make it work more safely.

% tce-load -i lsof

With doing above (or loading lsof package at the booting time), the script tries to identify if the related files are being used and emits an error when unloading is not possible.

By the way, you can get currently installed (loaded) packages by the following command:

% ls /usr/local/tce.installed/

Caveat: while this script removes links from the main directories (such as /usr/local) and unmount loopback device for tcz (/tmp/tcloop/{package}), it doesn't check the dependency of the packages.