How to make a single sfs file from multiple pets

How to do things, solutions, recipes, tutorials
Post Reply
Message
Author
User avatar
Tman
Posts: 808
Joined: Sat 22 Jan 2011, 21:39
Location: Toronto

How to make a single sfs file from multiple pets

#1 Post 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.
User avatar
sc0ttman
Posts: 2812
Joined: Wed 16 Sep 2009, 05:44
Location: UK

#2 Post 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/
[b][url=https://bit.ly/2KjtxoD]Pkg[/url], [url=https://bit.ly/2U6dzxV]mdsh[/url], [url=https://bit.ly/2G49OE8]Woofy[/url], [url=http://goo.gl/bzBU1]Akita[/url], [url=http://goo.gl/SO5ug]VLC-GTK[/url], [url=https://tiny.cc/c2hnfz]Search[/url][/b]
User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#3 Post 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
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].
User avatar
Aitch
Posts: 6518
Joined: Wed 04 Apr 2007, 15:57
Location: Chatham, Kent, UK

#4 Post 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 :)
RedQuine
Posts: 52
Joined: Fri 20 Mar 2015, 14:34

#5 Post 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/
User avatar
rufwoof
Posts: 3690
Joined: Mon 24 Feb 2014, 17:47

#6 Post 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.
User avatar
LazY Puppy
Posts: 1934
Joined: Fri 21 Nov 2014, 18:14
Location: Germany

#7 Post 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.
RSH

"you only wanted to work your Puppies in German", "you are a separatist in that you want Germany to secede from Europe" (musher0) :lol:

No, but I gave my old drum kit away for free to a music store collecting instruments for refugees! :wink:
slavvo67
Posts: 1610
Joined: Sat 13 Oct 2012, 02:07
Location: The other Mr. 305

#8 Post by slavvo67 »

PADS works quite well!! I'm sure Technosaurus' option is good, as well.

Best,

Slavvo67
User avatar
michaellowe
Posts: 66
Joined: Sat 17 Dec 2011, 08:33
Location: The Garden

How to make a single sfs file from multiple pets

#9 Post 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
Smash forehead on keyboard to continue.....
well thats at least how some of us deal with ba$h !
User avatar
mikeslr
Posts: 3890
Joined: Mon 16 Jun 2008, 21:20
Location: 500 seconds from Sol

01micko's pet2sfs-01micko's script

#10 Post 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
musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#11 Post by musher0 »

Hi MikesLr.

Thanks for the salvage operation.

BFN.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
User avatar
bigpup
Posts: 13886
Joined: Sun 11 Oct 2009, 18:15
Location: S.C. USA

#12 Post 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.
Attachments
pet2sfs script.gz
(1.3 KiB) Downloaded 304 times
The things they do not tell you, are usually the clue to solving the problem.
When I was a kid I wanted to be older.... This is not what I expected :shock:
YaPI(any iso installer)
version2013
Posts: 503
Joined: Mon 09 Sep 2013, 00:00
Location: Florida, USA
Contact:

#13 Post 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.
Post Reply