SFSファイルをロードする際にスクリプトを実行することはできますか

パピーリナックスを初めて使う方

モデレータ: 暇人, YoN, nyu

ssnys
記事: 64
登録日時: 14/02/19(水) 17:50

SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ssnys »

普段よりPuppy Linux(Precise-571JP)を愛用させていただいております。 :D

件名どおりの質問なのですが、SFSファイルをロードする際にスクリプトを実行することはできますでしょうか。

例えばDebianパッケージですとパッケージをインストールする際に、パッケージに含まれているスクリプトを実行することが可能ですが、同様にSFSファイルを、sfs_loadコマンドでロードする際にSFSファイルに含まれているスクリプトを実行することは可能でしょうか。

当方Puppy Linuxについても全くの初心者故、拙い質問本文で恐れ入りますが、ご回答頂ければ誠に幸いでございます。 :P
💻Lenovo G550(CPU: Intel Celeron 900 @ 2.20GHz, RAM: 971MB, HDD: 149.05GiB) + Precise-571JP
🖥HITACHI FLORA 310 DL7(CPU: Intel Pentium III 700 MHz, RAM: 384MB) + Precise-571JP
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

以下の名前のファイルを組み込んでおけば実行されると思われます。
参考
https://ja.osdn.net/projects/puppylinux ... C%E3%82%B8

pinstall.sh ... インストール( sfs ロード)時に実行されます

参照先の記事には書いてありませんが、おそらく
puninstall.sh ... アンインストール( sfs アンロード)時に実行されます

pet パッケージの場合も同様です。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ルビー »

thinkpadnerd さんが書きました:以下の名前のファイルを組み込んでおけば実行されると思われます。
そうでしたか。
.sfsや.petは、信頼できる所からダウンロードした方が良さそうですね。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

”ルビーさんが書きました:
> .sfsや.petは、信頼できる所からダウンロードした方が良さそうですね。

「信頼できるところ」は何をもとに判断したらいいのか... :?

極端なことを言うと、多くの人が利用していると思われる lang_pack も個人のサーバに置かれているわけですし、pinstall.sh がなくても、何かのイベントを検出してスクリプトを動かすこともできると思います。例えば、lang_pack は日本語環境への切り替えに際して、フォントの設定やメニューを書き換えるスクリプトを動かしています。

まあ、個人のサーバやオンラインストーリッジに置かれていても、本家フォーラムや当フォーラムを通じて公開されているパッケージは信頼できる、と考えます。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
ssnys
記事: 64
登録日時: 14/02/19(水) 17:50

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ssnys »

thinkpadnerdさん、ルビーさんご返信頂きありがとうございます。 :D

ご回答で示された、https://ja.osdn.net/projects/puppylinux ... C%E3%82%B8について確認致しました。pinstall.shを利用することでSFSファイルをロード時にスクリプトを実行することができるとありましたが、当方の環境では実行できませんでした。 :cry:

以下のような流れでtest.sfsをロードしました。

コード: 全て選択

~# pwd
/root
~# ls -al test/
total 4
drwxr-xr-x  2 root root  60  5月 28 19:42 .
drwxr-xr-x 60 root root 500  5月 28 19:45 ..
-rwxr-xr-x  1 root root  35  5月 28 19:46 pinstall.sh
~# cat test/pinstall.sh
#!/usr/bin/env sh

touch /root/xxx
~# mksquashfs test/ test.sfs
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on test.sfs, block size 131072.
[===================================================================|] 1/1 100%
Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments, compressed xattrs
	duplicates are removed
Filesystem size 0.26 Kbytes (0.00 Mbytes)
	90.69% of uncompressed filesystem size (0.28 Kbytes)
Inode table size 42 bytes (0.04 Kbytes)
	63.64% of uncompressed inode table size (66 bytes)
Directory table size 29 bytes (0.03 Kbytes)
	87.88% of uncompressed directory table size (33 bytes)
Number of duplicate files found 0
Number of inodes 2
Number of files 1
Number of fragments 1
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
~# sfs_load -c test.sfs
sfs_load: 
sfs_load: --custom 'test.sfs' は無事ロードされました。
'/root/test.sfs' は '/mnt/home' にコピーされました。
アンロードするまではこのファイルを削除したり移動したりしないでください。 オリジ ナルは移動や削除しても構いません。
~# ls xxx
ls: cannot access xxx: No such file or directory
test.sfsファイルをsfs_loadコマンドでロードし、test.sfsファイル内のpinstall.shが実行され、/root/xxxファイルが作成されることが期待されますが、実際には/root/xxxファイルが作成されていません。

これは当方の環境問題でしょうか?それともsfsファイルを作成した際に問題があったのでしょうか? :(

お忙しい中大変恐縮ではございますが、ご回答頂ければ幸いでございます。
💻Lenovo G550(CPU: Intel Celeron 900 @ 2.20GHz, RAM: 971MB, HDD: 149.05GiB) + Precise-571JP
🖥HITACHI FLORA 310 DL7(CPU: Intel Pentium III 700 MHz, RAM: 384MB) + Precise-571JP
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

"ssnys さんが書きました:
> test.sfsファイルをsfs_loadコマンドでロードし、test.sfsファイル内のpinstall.shが実行され、/root/xxxファイルが作成されることが期待されますが、実際には/root/xxxファイルが作成されていません。

sfs ファイルを作成して実験してみましたが、うまくいきませんでした。(Slacko 5.7 を使用)
もう少し調べてみます。

同じ中身で dir2pet コマンドを使って pet パッケージを作成したら、うまくいきましたが...
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

添付画像は devx_tahr_6.0.5.sfs の中身です。

これをロードすると(もちろん tahrpup 6.0.5 で)、スクリプトが実行され、pinstall.sh は消えます。
一方、テストのために作成した sfs では、スクリプトは実行されず、ルートディレクトリ (/) に pinstall.sh が残ります。
残念ながら、どこに違いがあるのか分かりません。

pet パッケージの場合は pinstall.sh も、puninstall.sh もインストーラ (petget) が適切に処理しているのだと思います。
添付ファイルを見るにはパーミッションが必要です
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

”thinkpadnerd が書きました:
> これをロードすると(もちろん tahrpup 6.0.5 で)、スクリプトが実行され、pinstall.sh は消えます。

改めて tahrpup の初期状態からやってみたら、pinstall.sh は残りました。「バックグラウンドでスクリプトを実行している」旨のメッセージが出るので、スクリプトが動いているのは確かです。
sfs は読み取り専用なので、普通に考えると pinstall.sh が消えるはずはないですね。(見えなくすることはできると思います。)
しかし、さらに追加する別の sfs に pinstall.sh が含まれていたらどうなるのだろう、という疑問が生じました。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ルビー »

中身空っぽで、pinstall.sh だけのsfsがまずいのかと思って、
/root/ztest/neko.txt 作成のsfsで試してみました。
431JP2012、571JP、共にpinstall.shは動かずでした。
OSDNの情報が古いので、431JP2012なら動くのかなと思ったのだけど。

sfsの置き場も、通常通りパピーのインストールディレクトリに配置。
pinstall.shの1行目も、
#!/usr/bin/env sh → #!/bin/sh
でやってみました。

431JP2012はロードすると、アンロードするまで /pinstall.sh が残りますが、571JPではロードしても /pinstall.sh が現れませんでした。

一つ気になったのが、571JPに、
/usr/share/doc/langpack-template/pinstall.sh
があって、これをリネームしてロードしてみたけど、やっぱりだめでした。
面白いのが、sfsをアンロードすると、リネームしたファイルとは別に、新しくpinstall.shが作成されます。
何か関係あるのかな。
thinkpadnerd さんが書きました:まあ、個人のサーバやオンラインストーリッジに置かれていても、本家フォーラムや当フォーラムを通じて公開されているパッケージは信頼できる、と考えます。
言葉足らずでしたが、私もそう思います。
Zstep
記事: 207
登録日時: 16/12/06(火) 12:49

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by Zstep »

precise_5.7.1JPの/usr/sbin/sfs_loadを見てみると
444行目〜
[ "$HAS_SCRIPTS" = "" -a "$HAS_STARTUPS" = "" ] && return
splash $(gettext "Running script background...")
if [ "$HAS_SCRIPTS" != "" ]; then
for S in $HAS_SCRIPTS; do
[ -x /etc/init.d/$S ] && /etc/init.d/$S start &
sleep 0.2
done
fi
if [ "$HAS_STARTUPS" != "" -a "$DISPLAY" ]; then #v1.9.2
for S in $HAS_STARTUPS; do
[ -x /root/Startup/$S ] && /root/Startup/$S &

/etc/init.dもしくは/root/Startupにsfsをロードしたとき実行させたい
コマンドを書いたスクリプトを組み込んでおけばいいみたいですね


*シノバーさんが公開されているlang_pack_jaだと/etc/init.d/rc.nlsが
sfsロード時、アンロード時に読み込まれて実行されています


sfsロード時のみでアンロード時にスクリプトを実行させなくてもよいのなら

例)/etc/init.d/test.sh

コード: 全て選択

!/bin/sh

#実行したいコマンドを記入
 mkdir/root/TEST
aplay /usr/share/audio/ok.wav

#通常の起動時、終了時にも実行されてしまう為、削除
rm /etc/init.d/test.sh  
 
こんな感じで動くと思いますよ
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

”ルビーさんが書きました:
> 431JP2012、571JP、共にpinstall.shは動かずでした。

tahrpup でも test.sfs (テスト用 sfs ) は期待通りに動かないのですが、devx_tahr_6.0.5.sfs をロードした後で test.sfs をロードすると、devx の pinstall.sh が残ります。devx をアンロードすると、test.sfs に同梱の pinstall.sh が現れます。
レイヤーの関係でそうなるのだと思いますが、これでは後からロードする sfs の pinstall.sh はどうしたって動かないことになります。 :?


”Zstep さんが書きました:
> /etc/init.dもしくは/root/Startupにsfsをロードしたとき実行させたい
> コマンドを書いたスクリプトを組み込んでおけばいいみたいですね

sfs_load が pinstall.sh を動かさないのだとすると、devx_tahr_6.0.5.sfs の pinstall.sh は動いていないことになりますか。
pinstall.sh を含んだ pet パッケージを sfs に変換したとしても、期待どおりに動かないということですね。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
Zstep
記事: 207
登録日時: 16/12/06(火) 12:49

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by Zstep »

devx_tahr_6.0.5.sfsのpuninstall.shの中を見てみたけど
書いてあるコマンドが反映されてないから動いてないと思います

「スクリプトをバックグラウンドで実行中」のメッセージは
devxの中の/etc/init.d/rsyncが実行されてるときにでてるのかも
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

”Zstep さんが書きました:
> devx_tahr_6.0.5.のsfsのpuninstall.shの中を見てみたけど
> 書いてあるコマンドが反映されてないから動いてないと思います

勉強になります。sfs に含まれる pinstall.sh は手動で動かさなければいけないということですね。しかし、レイヤーの関係で隠れてしまうとそれもできないわけで、これは sfs の作成上、注意すべき点ですね。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ルビー »

571JPでpuninstall.shの場合は、/ に残りました。
実行はできませんでしたが。

英語版なら動くのかなと思って、Tahrpup605で試してみたけどダメでした。
pinstall.shは、ロードすると、/ に残って、アンロードで消えました。
Zstep さんが書きました:precise_5.7.1JPの/usr/sbin/sfs_loadを見てみると
ずいぶんと、ややこしい仕掛けなのですね。
sfsファイルと独立して動かすとなると、pinstall.shって、いったい何の為にあるのだろう?

Debianパッケージの場合は、パッケージ管理の為のスクリプトらしいけど。
ssnys さんが書きました:例えばDebianパッケージですとパッケージをインストールする際に、パッケージに含まれているスクリプトを実行することが可能ですが、同様にSFSファイルを、sfs_loadコマンドでロードする際にSFSファイルに含まれているスクリプトを実行することは可能でしょうか。
初心者と言う割には、初心者とは思えない質問を連発なさってますが、素朴な疑問として、sfsロードでsfsのスクリプトを走らせて、何をなさりたいのでしょうか。
thinkpadnerd
記事: 2035
登録日時: 15/10/25(日) 14:00

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by thinkpadnerd »

”ルビーさんが書きました:
> sfsファイルと独立して動かすとなると、pinstall.shって、いったい何の為にあるのだろう?

test.sfs の場合は単なるテストに過ぎないのですが、devx_tahr_6.0.5.sfs の場合は、mime type の設定を追加しようとしているようです。

sfs が単純にファイルを追加するためのものなら、スクリプトを動かす必要はないのですが、インストール作業の内容によってはスクリプトで処理しないといけない部分もあるので、スクリプトが存在するのは理解できます。実際、deb パッケージだけでなく、pet にもスクリプトを含んだものはありますので。

追記
pet パッケージを sfs に変換したものが、pet パッケージと同じように動いてくれるのなら、わかりやすくていいのですが。
ThinkPad X121e (Precise 571 / Tahr 605 / Tahr64 606 / Xenial 7.5 / Bionic32)
CPU AMD C-50 1.0GHz, RAM 4GB
ThinkPad L440 (Xenial 7.5 / Bionic64 / Fossa64)
CPU intel Celeron 2950M 2.0GHz, RAM 4GB
返信する