Page 1 of 1

How to make a single sfs file from multiple pets

Posted: Sun 22 Jan 2012, 20:10
by Tman
1) First, you will need to install 01micko's pet2sfs script.

2) Create a sfs folder inside any linux partition or...
if you are running a frugal install , you can also create the folder the linux filesystem. eg. the /root or /tmp folder.
- I must elaborate on this cause it's important. For example, I am running Puppy (frugal install) on sda1 which is a ntfs filesystem. If I create, a folder named /mnt/sda1/sfs, the permissions will get messed up because I created the sfs folder in the ntfs partition; it doesn't handle permissions the same way a linux partition does.
- to do this properly on a frugal install, what I usually do is create a /tmp/sfs folder.

3) copy all of the pets which you want to combine into the sfs folder you've created.

4) open up the terminal and change to the sfs folder you've created. For my example, I will use the /tmp/sfs folder. Enter the following code

Code: Select all

cd /tmp/sfs
pet2sfs PackageName-1.0
Of course, "PackageName" can be any name that you choose.

5) After the sfs has been created, move it to the folder of your choice. You should then remove everything else in the /tmp/sfs folder.

6) The final step is to test your sfs to make sure it works.

The script can also convert a single pet into an sfs, but you have to name it different from the pet-name.
Done! Now that wasn't too difficult, right? :wink: Enjoy.

Posted: Sun 22 Jan 2012, 20:59
by sc0ttman
Also, there is this, which can create an SFS or PET of combined PET files:

"This script combines your .PETs into a single .PET or .SFS file.
You will be asked to create a .PET file first, then a .SFS file
if no .PET was created. This script takes one argument - the
directory containing the .PETs that you want to combine into
a single package."

Code: Select all

#!/bin/sh

if [ ! $1 ];then
	echo "No dir given. Usage: `basename $0` [directory]
	
Example: `basename $0` $HOME/myfiles

Info:

This script combines your .PETs into a single .PET or .SFS file. 
You will be asked to create a .PET file first, then a .SFS file 
if no .PET was created. This script takes one argument - the 
directory containing the .PETs that you want to combine into 
a single package.

"
	exit
fi

mkdir $1/pets
mkdir $1/files
for i in "$1/"* ; do # for each file in the given package dir
	# get filenames, and extensions, without paths
	export fullname=`basename "$i"` 	# filename and extension
	export filename=${fullname%.*} 	# filename, no extension
	export extension=${fullname##*.} # extension only
	tar -xzvf "$i" -C "$1/pets"
	# copy extracted contents (only the stuff inside the extracted folders) from $workdir into $basedir
	cp --preserve=all -f -v -r "$1/pets/$filename/"* "$1/files"
	# remove pet.spec files in $basedir
	rm -v "$1/files/"*"pet.specs"
done
rm -r -v $1/pets
rmdir $1/pets

REPLY="none"
# ask to create pet
[ -e `which dir2pet` ] && Xdialog --title "Pet Create" --yesno "Do you want to create new pet file of the pets you have extracted?" 0 0 && REPLY=$?
if [ "$REPLY" = 0 ];then
	petname=$(Xdialog --title "Name your pet" --stdout --inputbox "Choose a filename for your pet file" 0 0 "name-version.pet")
	mv $1/files $1/${petname%.*} # rename dir to $petname, without extension
	rxvt -e dir2pet $1/${petname%.*}
else
	# ask to make sfs file 
	[ -e `which dir2pet` ] && Xdialog --title "SFS Create" --yesno "Do you want to create an sfs file of the pets you have extracted?" 0 0 && REPLY=$?
	[ "$REPLY" = 0 ] && rxvt -e dir2sfs $1/files
fi
Save the code in a shell script or blank file and make executable
that is, in the terminal:

chmod +x /path/to/the/file

Usage:

easypackage /path/to/dir/containing/petfiles/

Posted: Sun 22 Jan 2012, 23:54
by technosaurus
Can someone post this on a puppy site so that we don't keep repeating:
http://www.murga-linux.com/puppy/viewtopic.php?t=53241
It contains all info for ISO, sfs and pets using GUI tools only

Posted: Mon 23 Jan 2012, 14:05
by Aitch
Can someone post this on a puppy site so that we don't keep repeating:
techno
I've put a request to darkcity for a wiki page :D

Aitch :)

Posted: Fri 20 Mar 2015, 14:42
by RedQuine
Thanks for the clear instructions, Aitch. That not only worked a treat, it was kind of fun as well. :)

One tiny correction, though: the pet2sfs script is at http://www.smokey01.com/Tman/apps/Common-apps/

Posted: Fri 20 Mar 2015, 18:15
by rufwoof
Another method that I sometimes use is to rename the pet with a .tgz suffix and open (archiver) that tar file, select all and copy to a temp work folder ... repeating for each pet so that they're all mixed in together. And then run mksquashfs to create a sfs of that directory/folder tree.

Posted: Fri 20 Mar 2015, 22:50
by LazY Puppy
Hi.

PaDS 1.0.4

Just put .pet, .deb and .txz files into a directory. Right-click the directory and choose Combine to SFS / Merge to SFS.

It can handle the i386-linux-gnu directory / symbolic link issue (like in multiarch distros like Ubuntu). Next version can handle also the x86_64-linux-gnu directory / symbolic link issue (like in multiarch 64bit distros like Ubuntu).

I think this is currently the most comfortable way to create SFS Modules from multiple .pet, .deb and .txz files.

Posted: Sun 22 Mar 2015, 15:45
by slavvo67
PADS works quite well!! I'm sure Technosaurus' option is good, as well.

Best,

Slavvo67

How to make a single sfs file from multiple pets

Posted: Tue 28 Jul 2015, 11:36
by michaellowe
RedQuine wrote:Thanks for the clear instructions, Aitch. That not only worked a treat, it was kind of fun as well. :)

One tiny correction, though: the pet2sfs script is at http://www.smokey01.com/Tman/apps/Common-apps/
Thank you I dont know how you found it but thank you!!

got so frustrated when I kept getting error 404 on the old link to 01micko's pets2sfs

Cheers

01micko's pet2sfs-01micko's script

Posted: Tue 10 Apr 2018, 02:51
by mikeslr
Hi All,

Noticing that the link to the script was broken, I've attached the contents of a file located on my hard-drive which I think was a copy of it:

#!/bin/sh
#script to turn a pack of puppy pets into an sfs
#plonk this in your $PATH.. suggest /usr/sbin
#usage
#make a directory any where you like and put in a bunch of pet packages
#invoke IN THAT DIRECTORY "pet2sfs <somename>-<verionnumber>"
#OR invoke IN THAT DIRECTORY "pet2sfs <somename>-<verionnumber> <option-for-mksquashfs>"
#give it a version number
#extra parameter if you want to preserve inodes or add other options to 'mksquashfs' eg -noI
[[ $1 = "" ]]&& echo "error, you must give a name for you new sfs" && exit
[[ `echo $1|grep "-"` = "" ]]&& echo "error, you must give a version number using a dash to delimit for you new sfs" && exit
CURDIR=`pwd`
cd $CURDIR
DIR="$1"
mkdir $DIR
LIST=`ls|grep pet$`
#extract pets
for i in $LIST;do
PKGNAME=`basename $i .pet`
mv -f $i ${i}.tar.gz
tar -zxf ${i}.tar.gz 2>/dev/null
cp -rf $PKGNAME/* $DIR
rm -rf $PKGNAME
mv -f ${i}.tar.gz $i
sync
continue
done
cd $CURDIR/$DIR
rm -f pet.specs
[ -x pinstall.sh ] && rm -f pinstall.sh
[ -x puninstall.sh ] && rm -f puninstall.sh
cd $CURDIR
#make sfs
echo "now making ${DIR}.sfs" &
sleep 2
mksquashfs $DIR ${DIR}.sfs $2
sync
[[ `ls|grep ${DIR}.sfs` = "" ]]&& echo "error: something went wrong, ${DIR}.sfs didn't get created" && cd $HOME &&exit
cd $HOME
echo "${DIR}.sfs created. All done"
echo "Now try to ENJOY and IMPROVE your life!"

mikesLr

Posted: Tue 10 Apr 2018, 03:46
by musher0
Hi MikesLr.

Thanks for the salvage operation.

BFN.

Posted: Tue 10 Apr 2018, 19:11
by bigpup
Here is the above script code made into a script file.
Had to add .gz to the name so it would post to the forum.
Just remove the .gz from the name to turn it into the script file.

Place it in a location that is in the PATH.. listing, so it is easily accessed.
suggest /usr/sbin

Do need to follow the steps, in the first post of this topic, to use it.

Posted: Sat 14 Apr 2018, 02:23
by version2013
RedQuine wrote:

One tiny correction, though: the pet2sfs script is at http://www.smokey01.com/Tman/apps/Common-apps/
Thank you for pointing out the file location.
mikeslr wrote:

Noticing that the link to the script was broken, I've attached the contents of a file located on my hard-drive which I think was a copy of it:
bigpup wrote: Just one minor difference that I noticed.
The script you two posted, fails to contain the permissions on line 39, in the pet2sfs_01micko-0.2.pet file.
Not sure if that matters much.