-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtxz2pfs
67 lines (57 loc) · 2.18 KB
/
txz2pfs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/sh
#For PuppyRus-Zero with Slackware packages
v="190819"
[ ! "$1" ] && echo "Usage $0 *.txz" && exit
[ ! "${1##*.}" = "txz" ] && exit
d="`basename "$1" .txz`"
#d2="var/lib/pacman/local/`basename "$1" |sed 's/-[^-]*$//'`"
#d2="$(basename "$d" .pkg.tar.xz)"
#d2="var/lib/pacman/local/$(basename "$d2" -any)"
#d2="var/lib/pacman/local/$(basename "$d2" -`uname -m`)"
#d2="var/lib/pacman/local/$(basename "$1" -`uname -m`.pkg.tar.xz |sed -e 's/\-[0-9].*$//g')"
#echo $d $d2;exit
mkdir "$d"
cd "$d"
xz -dc ../"$1" |tar xvf -
#заполняем описание в pfs.specs
if [ -f install/slack-desc ]; then
SHORT_NAME=$(echo $d|cut -d\- -f1)
mkdir -p etc/packages/mount/$d
grep $SHORT_NAME install/slack-desc |sed "s/$SHORT_NAME://" > etc/packages/mount/$d/pfs.specs
fi
#создаем нужные сим.ссылки
if [ -f install/doinst.sh ]; then
sed -i 's/sbin/bin/g' install/doinst.sh # меняем sbin на bin
sed -i 's/..\/..\/lib\///g' install/doinst.sh #корректировка ссылок на .so
chmod 755 install/doinst.sh
sh install/doinst.sh
fi
#Для всех файлов в пакете, делаем проверку типа файла
#если файл текстовый, то заменяем в нем sbin на bin
for file in `find -P -type f`
do
FILE_TYPE="`file -b --mime-type $file | grep text`"
[ $FILE_TYPE ] && sed -i 's/sbin/bin/g' $file
done
#удаляем unstall
rm -rf install >/dev/null 2>&1
if [ -d sbin ] && [ -d bin ]; then
mv sbin/* bin && rm -d sbin >/dev/null 2>&1
else
[ -d sbin ] && mkdir bin && mv sbin/* bin && rm -d sbin >/dev/null 2>&1
fi
if [ -d lib ] && [ -d usr/lib ]; then
mv lib/* usr/lib && rm -d lib >/dev/null 2>&1
else
[ -d lib ] && mkdir usr/lib && mv lib/* usr/lib && rm -d lib >/dev/null 2>&1
fi
if [ -d usr/sbin ] && [ -d usr/bin ]; then
mv usr/sbin/* usr/bin && rm -d usr/sbin >/dev/null 2>&1
else
[ -d usr/sbin ] && mkdir usr/bin && mv usr/sbin/* usr/bin && rm -d usr/sbin >/dev/null 2>&1
fi
cd ..
./trim -lm "$d"
./trim -d "$d"
#требуется патченый файл pfs чтобы не затирался файл pfs.specs с описанием
#mkpfs --mklist "$d"