Linux r-1tbfree-gecko-e8ip2zsa-2f967-wvg4t 6.12.63-84.121.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 31 02:07:30 UTC 2025 x86_64
PHP/8.5.2 (Development Server)
: | : 10.16.43.133
Cant Read [ /etc/named.conf ]
8.5.2
root
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
[
54.41
KB
-rwxr-xr-x
addr2line
23.22
KB
-rwxr-xr-x
apt
18.31
KB
-rwxr-xr-x
apt-cache
90.38
KB
-rwxr-xr-x
apt-cdrom
26.38
KB
-rwxr-xr-x
apt-config
30.31
KB
-rwxr-xr-x
apt-get
58.38
KB
-rwxr-xr-x
apt-mark
62.38
KB
-rwxr-xr-x
ar
51.25
KB
-rwxr-xr-x
arch
42.45
KB
-rwxr-xr-x
as
776.55
KB
-rwxr-xr-x
autoconf
6.54
KB
-rwxr-xr-x
autoheader
8.88
KB
-rwxr-xr-x
autom4te
34.11
KB
-rwxr-xr-x
autoreconf
26.24
KB
-rwxr-xr-x
autoscan
16.78
KB
-rwxr-xr-x
autoupdate
33.22
KB
-rwxr-xr-x
awk
166.66
KB
-rwxr-xr-x
b2sum
62.45
KB
-rwxr-xr-x
base32
46.41
KB
-rwxr-xr-x
base64
46.41
KB
-rwxr-xr-x
basename
42.41
KB
-rwxr-xr-x
basenc
58.41
KB
-rwxr-xr-x
bash
1.24
MB
-rwxr-xr-x
bashbug
6.78
KB
-rwxr-xr-x
bunzip2
38.3
KB
-rwxr-xr-x
bzcat
38.3
KB
-rwxr-xr-x
bzcmp
2.17
KB
-rwxr-xr-x
bzdiff
2.17
KB
-rwxr-xr-x
bzegrep
3.69
KB
-rwxr-xr-x
bzexe
4.78
KB
-rwxr-xr-x
bzfgrep
3.69
KB
-rwxr-xr-x
bzgrep
3.69
KB
-rwxr-xr-x
bzip2
38.3
KB
-rwxr-xr-x
bzip2recover
14.23
KB
-rwxr-xr-x
bzless
1.27
KB
-rwxr-xr-x
bzmore
1.27
KB
-rwxr-xr-x
c++
1.11
MB
-rwxr-xr-x
c++filt
22.59
KB
-rwxr-xr-x
c89
428
B
-rwxr-xr-x
c89-gcc
428
B
-rwxr-xr-x
c99
454
B
-rwxr-xr-x
c99-gcc
454
B
-rwxr-xr-x
c_rehash
6.73
KB
-rwxr-xr-x
captoinfo
94.34
KB
-rwxr-xr-x
cat
46.48
KB
-rwxr-xr-x
cc
1.11
MB
-rwxr-xr-x
chage
111.18
KB
-rwxr-sr-x
chcon
78.41
KB
-rwxr-xr-x
chfn
69.23
KB
-rwsr-xr-x
chgrp
74.45
KB
-rwxr-xr-x
chmod
70.45
KB
-rwxr-xr-x
choom
54.38
KB
-rwxr-xr-x
chown
74.45
KB
-rwxr-xr-x
chrt
70.38
KB
-rwxr-xr-x
chsh
51.7
KB
-rwsr-xr-x
cksum
134.45
KB
-rwxr-xr-x
clear
14.24
KB
-rwxr-xr-x
clear_console
14.15
KB
-rwxr-xr-x
cmp
54.95
KB
-rwxr-xr-x
comm
46.45
KB
-rwxr-xr-x
corelist
15.01
KB
-rwxr-xr-x
cp
146.45
KB
-rwxr-xr-x
cpan
8.16
KB
-rwxr-xr-x
cpan5.40-x86_64-linux-gnu
8.18
KB
-rwxr-xr-x
cpp
1.11
MB
-rwxr-xr-x
cpp-14
1.11
MB
-rwxr-xr-x
csplit
58.45
KB
-rwxr-xr-x
curl
314.34
KB
-rwxr-xr-x
cut
54.45
KB
-rwxr-xr-x
dash
126.7
KB
-rwxr-xr-x
date
98.45
KB
-rwxr-xr-x
dd
74.48
KB
-rwxr-xr-x
deb-systemd-helper
23.79
KB
-rwxr-xr-x
deb-systemd-invoke
6.97
KB
-rwxr-xr-x
debconf
2.8
KB
-rwxr-xr-x
debconf-apt-progress
11.57
KB
-rwxr-xr-x
debconf-communicate
623
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
668
B
-rwxr-xr-x
debconf-set-selections
3.14
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
df
106.92
KB
-rwxr-xr-x
diff
159.61
KB
-rwxr-xr-x
diff3
71.14
KB
-rwxr-xr-x
dir
154.91
KB
-rwxr-xr-x
dircolors
54.45
KB
-rwxr-xr-x
dirname
42.41
KB
-rwxr-xr-x
dmesg
88.71
KB
-rwxr-xr-x
dnsdomainname
26.15
KB
-rwxr-xr-x
domainname
26.15
KB
-rwxr-xr-x
dpkg
319.05
KB
-rwxr-xr-x
dpkg-architecture
14.84
KB
-rwxr-xr-x
dpkg-buildapi
1.79
KB
-rwxr-xr-x
dpkg-buildflags
8.14
KB
-rwxr-xr-x
dpkg-buildpackage
30.32
KB
-rwxr-xr-x
dpkg-buildtree
2.12
KB
-rwxr-xr-x
dpkg-checkbuilddeps
7.45
KB
-rwxr-xr-x
dpkg-deb
178.53
KB
-rwxr-xr-x
dpkg-distaddfile
2.72
KB
-rwxr-xr-x
dpkg-divert
158.77
KB
-rwxr-xr-x
dpkg-genbuildinfo
18.69
KB
-rwxr-xr-x
dpkg-genchanges
17.51
KB
-rwxr-xr-x
dpkg-gencontrol
14.62
KB
-rwxr-xr-x
dpkg-gensymbols
10.66
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.63
KB
-rwxr-xr-x
dpkg-mergechangelogs
8.7
KB
-rwxr-xr-x
dpkg-name
6.58
KB
-rwxr-xr-x
dpkg-parsechangelog
4.83
KB
-rwxr-xr-x
dpkg-query
170.77
KB
-rwxr-xr-x
dpkg-realpath
58.33
KB
-rwxr-xr-x
dpkg-scanpackages
8.45
KB
-rwxr-xr-x
dpkg-scansources
9.15
KB
-rwxr-xr-x
dpkg-shlibdeps
32.59
KB
-rwxr-xr-x
dpkg-source
23.18
KB
-rwxr-xr-x
dpkg-split
142.48
KB
-rwxr-xr-x
dpkg-statoverride
86.51
KB
-rwxr-xr-x
dpkg-trigger
90.5
KB
-rwxr-xr-x
dpkg-vendor
3.18
KB
-rwxr-xr-x
du
110.45
KB
-rwxr-xr-x
echo
42.41
KB
-rwxr-xr-x
egrep
41
B
-rwxr-xr-x
elfedit
35.13
KB
-rwxr-xr-x
enc2xs
40.97
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
env
54.83
KB
-rwxr-xr-x
expand
46.45
KB
-rwxr-xr-x
expiry
30.52
KB
-rwxr-sr-x
expr
50.41
KB
-rwxr-xr-x
factor
74.45
KB
-rwxr-xr-x
fallocate
34.38
KB
-rwxr-xr-x
false
42.41
KB
-rwxr-xr-x
fgrep
41
B
-rwxr-xr-x
file
26.56
KB
-rwxr-xr-x
find
227.58
KB
-rwxr-xr-x
findmnt
99.9
KB
-rwxr-xr-x
flock
34.46
KB
-rwxr-xr-x
fmt
50.41
KB
-rwxr-xr-x
fold
46.41
KB
-rwxr-xr-x
g++
1.11
MB
-rwxr-xr-x
g++-14
1.11
MB
-rwxr-xr-x
gcc
1.11
MB
-rwxr-xr-x
gcc-14
1.11
MB
-rwxr-xr-x
gcc-ar
30.58
KB
-rwxr-xr-x
gcc-ar-14
30.58
KB
-rwxr-xr-x
gcc-nm
30.58
KB
-rwxr-xr-x
gcc-nm-14
30.58
KB
-rwxr-xr-x
gcc-ranlib
30.58
KB
-rwxr-xr-x
gcc-ranlib-14
30.58
KB
-rwxr-xr-x
gcov
448.12
KB
-rwxr-xr-x
gcov-14
448.12
KB
-rwxr-xr-x
gcov-dump
364.07
KB
-rwxr-xr-x
gcov-dump-14
364.07
KB
-rwxr-xr-x
gcov-tool
396.16
KB
-rwxr-xr-x
gcov-tool-14
396.16
KB
-rwxr-xr-x
gencat
26.37
KB
-rwxr-xr-x
getconf
26.29
KB
-rwxr-xr-x
getent
34.65
KB
-rwxr-xr-x
getopt
34.38
KB
-rwxr-xr-x
gmake
271.92
KB
-rwxr-xr-x
gp-archive
35.09
KB
-rwxr-xr-x
gp-collect-app
55.27
KB
-rwxr-xr-x
gp-display-html
630.35
KB
-rwxr-xr-x
gp-display-src
30.8
KB
-rwxr-xr-x
gp-display-text
157.36
KB
-rwxr-xr-x
gpasswd
86.49
KB
-rwsr-xr-x
gprof
96.42
KB
-rwxr-xr-x
gprofng
22.59
KB
-rwxr-xr-x
gprofng-archive
35.09
KB
-rwxr-xr-x
gprofng-collect-app
55.27
KB
-rwxr-xr-x
gprofng-display-html
630.35
KB
-rwxr-xr-x
gprofng-display-src
30.8
KB
-rwxr-xr-x
gprofng-display-text
157.36
KB
-rwxr-xr-x
grep
198.39
KB
-rwxr-xr-x
groups
42.41
KB
-rwxr-xr-x
gunzip
2.28
KB
-rwxr-xr-x
gzexe
6.29
KB
-rwxr-xr-x
gzip
99.8
KB
-rwxr-xr-x
h2ph
28.15
KB
-rwxr-xr-x
h2xs
59.51
KB
-rwxr-xr-x
hardlink
62.48
KB
-rwxr-xr-x
head
50.45
KB
-rwxr-xr-x
hostid
42.41
KB
-rwxr-xr-x
hostname
26.15
KB
-rwxr-xr-x
i386
86.66
KB
-rwxr-xr-x
iconv
66.44
KB
-rwxr-xr-x
id
50.45
KB
-rwxr-xr-x
ifnames
4.09
KB
-rwxr-xr-x
infocmp
66.31
KB
-rwxr-xr-x
infotocap
94.34
KB
-rwxr-xr-x
install
150.48
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
34.38
KB
-rwxr-xr-x
ipcmk
34.45
KB
-rwxr-xr-x
ipcrm
74.38
KB
-rwxr-xr-x
ipcs
82.38
KB
-rwxr-xr-x
ischroot
14.41
KB
-rwxr-xr-x
join
58.48
KB
-rwxr-xr-x
json_pp
4.9
KB
-rwxr-xr-x
ld
1.78
MB
-rwxr-xr-x
ld.bfd
1.78
MB
-rwxr-xr-x
ld.so
220.31
KB
-rwxr-xr-x
ldd
5.23
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
link
42.41
KB
-rwxr-xr-x
linux32
86.66
KB
-rwxr-xr-x
linux64
86.66
KB
-rwxr-xr-x
ln
74.45
KB
-rwxr-xr-x
locale
45.56
KB
-rwxr-xr-x
localedef
303.05
KB
-rwxr-xr-x
logger
58.98
KB
-rwxr-xr-x
login
90.38
KB
-rwxr-xr-x
logname
42.41
KB
-rwxr-xr-x
ls
154.91
KB
-rwxr-xr-x
lsblk
242.39
KB
-rwxr-xr-x
lscpu
162.39
KB
-rwxr-xr-x
lsipc
110.38
KB
-rwxr-xr-x
lslocks
78.8
KB
-rwxr-xr-x
lslogins
110.38
KB
-rwxr-xr-x
lsmem
70.38
KB
-rwxr-xr-x
lsns
90.39
KB
-rwxr-xr-x
lto-dump
31.43
MB
-rwxr-xr-x
lto-dump-14
31.43
MB
-rwxr-xr-x
lzcat
102.7
KB
-rwxr-xr-x
lzcmp
7.41
KB
-rwxr-xr-x
lzdiff
7.41
KB
-rwxr-xr-x
lzegrep
10.17
KB
-rwxr-xr-x
lzfgrep
10.17
KB
-rwxr-xr-x
lzgrep
10.17
KB
-rwxr-xr-x
lzless
2.33
KB
-rwxr-xr-x
lzma
102.7
KB
-rwxr-xr-x
lzmainfo
18.3
KB
-rwxr-xr-x
lzmore
2.18
KB
-rwxr-xr-x
m4
279.52
KB
-rwxr-xr-x
make
271.92
KB
-rwxr-xr-x
make-first-existing-target
4.79
KB
-rwxr-xr-x
mawk
166.66
KB
-rwxr-xr-x
mcookie
38.45
KB
-rwxr-xr-x
md5sum
54.45
KB
-rwxr-xr-x
mkdir
86.41
KB
-rwxr-xr-x
mkfifo
74.41
KB
-rwxr-xr-x
mknod
82.41
KB
-rwxr-xr-x
mktemp
46.41
KB
-rwxr-xr-x
more
58.39
KB
-rwxr-xr-x
mount
70.38
KB
-rwsr-xr-x
mountpoint
18.38
KB
-rwxr-xr-x
mv
146.45
KB
-rwxr-xr-x
namei
38.38
KB
-rwxr-xr-x
nawk
166.66
KB
-rwxr-xr-x
newgrp
18.38
KB
-rwsr-xr-x
nice
42.41
KB
-rwxr-xr-x
nisdomainname
26.15
KB
-rwxr-xr-x
nl
50.51
KB
-rwxr-xr-x
nm
44.1
KB
-rwxr-xr-x
nohup
46.41
KB
-rwxr-xr-x
nproc
46.41
KB
-rwxr-xr-x
nsenter
86.65
KB
-rwxr-xr-x
numfmt
66.48
KB
-rwxr-xr-x
objcopy
155.83
KB
-rwxr-xr-x
objdump
387.05
KB
-rwxr-xr-x
od
82.45
KB
-rwxr-xr-x
openssl
1.05
MB
-rwxr-xr-x
pager
58.39
KB
-rwxr-xr-x
partx
134.39
KB
-rwxr-xr-x
passwd
115.4
KB
-rwsr-xr-x
paste
46.45
KB
-rwxr-xr-x
patch
167.59
KB
-rwxr-xr-x
pathchk
42.41
KB
-rwxr-xr-x
perl
3.75
MB
-rwxr-xr-x
perl5.40-x86_64-linux-gnu
14.41
KB
-rwxr-xr-x
perl5.40.1
3.75
MB
-rwxr-xr-x
perlbug
44.52
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
44.52
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pidof
26.31
KB
-rwxr-xr-x
pinky
58.45
KB
-rwxr-xr-x
pkg-config
44.04
KB
-rwxr-xr-x
pkgconf
44.04
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.37
KB
-rwxr-xr-x
pod2html
3.95
KB
-rwxr-xr-x
pod2man
18.46
KB
-rwxr-xr-x
pod2text
12.8
KB
-rwxr-xr-x
pod2usage
4.01
KB
-rwxr-xr-x
podchecker
3.64
KB
-rwxr-xr-x
pr
78.51
KB
-rwxr-xr-x
printenv
42.41
KB
-rwxr-xr-x
printf
66.41
KB
-rwxr-xr-x
prlimit
42.9
KB
-rwxr-xr-x
prove
13.36
KB
-rwxr-xr-x
ptar
3.48
KB
-rwxr-xr-x
ptardiff
2.58
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
62.48
KB
-rwxr-xr-x
pwd
42.41
KB
-rwxr-xr-x
ranlib
51.25
KB
-rwxr-xr-x
rbash
1.24
MB
-rwxr-xr-x
re2c
1.05
MB
-rwxr-xr-x
re2d
1.05
MB
-rwxr-xr-x
re2go
1.05
MB
-rwxr-xr-x
re2hs
1.05
MB
-rwxr-xr-x
re2js
1.05
MB
-rwxr-xr-x
re2ocaml
1.05
MB
-rwxr-xr-x
re2py
1.05
MB
-rwxr-xr-x
re2rust
1.05
MB
-rwxr-xr-x
re2v
1.05
MB
-rwxr-xr-x
re2zig
1.05
MB
-rwxr-xr-x
readelf
759.63
KB
-rwxr-xr-x
readlink
54.41
KB
-rwxr-xr-x
realpath
54.45
KB
-rwxr-xr-x
rename.ul
30.38
KB
-rwxr-xr-x
renice
14.38
KB
-rwxr-xr-x
reset
30.24
KB
-rwxr-xr-x
rev
14.38
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rm
74.45
KB
-rwxr-xr-x
rmdir
42.41
KB
-rwxr-xr-x
rpcgen
95
KB
-rwxr-xr-x
run-parts
26.75
KB
-rwxr-xr-x
runcon
46.41
KB
-rwxr-xr-x
savelog
10.24
KB
-rwxr-xr-x
script
78.38
KB
-rwxr-xr-x
scriptlive
66.38
KB
-rwxr-xr-x
scriptreplay
46.38
KB
-rwxr-xr-x
sdiff
67.09
KB
-rwxr-xr-x
sed
123.46
KB
-rwxr-xr-x
seq
46.41
KB
-rwxr-xr-x
setarch
86.66
KB
-rwxr-xr-x
setpriv
90.39
KB
-rwxr-xr-x
setsid
14.38
KB
-rwxr-xr-x
setterm
46.38
KB
-rwxr-xr-x
sg
18.38
KB
-rwsr-xr-x
sh
126.7
KB
-rwxr-xr-x
sha1sum
54.45
KB
-rwxr-xr-x
sha224sum
54.45
KB
-rwxr-xr-x
sha256sum
54.45
KB
-rwxr-xr-x
sha384sum
54.45
KB
-rwxr-xr-x
sha512sum
54.45
KB
-rwxr-xr-x
shasum
9.75
KB
-rwxr-xr-x
shred
66.45
KB
-rwxr-xr-x
shuf
62.41
KB
-rwxr-xr-x
size
26.94
KB
-rwxr-xr-x
sleep
42.41
KB
-rwxr-xr-x
sort
118.7
KB
-rwxr-xr-x
splain
19
KB
-rwxr-xr-x
split
70.86
KB
-rwxr-xr-x
sqv
1.78
MB
-rwxr-xr-x
stat
102.45
KB
-rwxr-xr-x
stdbuf
46.41
KB
-rwxr-xr-x
streamzip
7.87
KB
-rwxr-xr-x
strings
31.06
KB
-rwxr-xr-x
strip
155.86
KB
-rwxr-xr-x
stty
74.45
KB
-rwxr-xr-x
su
82.38
KB
-rwsr-xr-x
sum
50.42
KB
-rwxr-xr-x
sync
42.41
KB
-rwxr-xr-x
tabs
18.23
KB
-rwxr-xr-x
tac
46.41
KB
-rwxr-xr-x
tail
78.48
KB
-rwxr-xr-x
tar
447.54
KB
-rwxr-xr-x
taskset
66.38
KB
-rwxr-xr-x
tee
46.45
KB
-rwxr-xr-x
tempfile
14.23
KB
-rwxr-xr-x
test
46.41
KB
-rwxr-xr-x
tic
94.34
KB
-rwxr-xr-x
timeout
46.86
KB
-rwxr-xr-x
toe
22.23
KB
-rwxr-xr-x
touch
86.45
KB
-rwxr-xr-x
tput
30.27
KB
-rwxr-xr-x
tr
58.41
KB
-rwxr-xr-x
true
42.41
KB
-rwxr-xr-x
truncate
46.41
KB
-rwxr-xr-x
tset
30.24
KB
-rwxr-xr-x
tsort
58.41
KB
-rwxr-xr-x
tty
42.41
KB
-rwxr-xr-x
tzselect
21.36
KB
-rwxr-xr-x
uclampset
70.38
KB
-rwxr-xr-x
umount
54.38
KB
-rwsr-xr-x
uname
42.45
KB
-rwxr-xr-x
uncompress
2.28
KB
-rwxr-xr-x
unexpand
46.45
KB
-rwxr-xr-x
uniq
54.45
KB
-rwxr-xr-x
unlink
42.41
KB
-rwxr-xr-x
unlzma
102.7
KB
-rwxr-xr-x
unshare
90.62
KB
-rwxr-xr-x
unxz
102.7
KB
-rwxr-xr-x
update-alternatives
58.31
KB
-rwxr-xr-x
users
50.41
KB
-rwxr-xr-x
vdir
154.91
KB
-rwxr-xr-x
wall
46.38
KB
-rwxr-xr-x
wc
66.45
KB
-rwxr-xr-x
wcurl
10.98
KB
-rwxr-xr-x
wdctl
74.38
KB
-rwxr-xr-x
wget
471.36
KB
-rwxr-xr-x
whereis
30.38
KB
-rwxr-xr-x
which
1.05
KB
-rwxr-xr-x
which.debianutils
1.05
KB
-rwxr-xr-x
who
62.45
KB
-rwxr-xr-x
whoami
42.41
KB
-rwxr-xr-x
x86_64
86.66
KB
-rwxr-xr-x
x86_64-linux-gnu-addr2line
23.22
KB
-rwxr-xr-x
x86_64-linux-gnu-ar
51.25
KB
-rwxr-xr-x
x86_64-linux-gnu-as
776.55
KB
-rwxr-xr-x
x86_64-linux-gnu-c++filt
22.59
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-cpp-14
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-elfedit
35.13
KB
-rwxr-xr-x
x86_64-linux-gnu-g++
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-g++-14
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-14
1.11
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-14
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-14
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-14
30.58
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov
448.12
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-14
448.12
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump
364.07
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-14
364.07
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool
396.16
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-14
396.16
KB
-rwxr-xr-x
x86_64-linux-gnu-gprof
96.42
KB
-rwxr-xr-x
x86_64-linux-gnu-ld
1.78
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.bfd
1.78
MB
-rwxr-xr-x
x86_64-linux-gnu-lto-dump
31.43
MB
-rwxr-xr-x
x86_64-linux-gnu-lto-dump-14
31.43
MB
-rwxr-xr-x
x86_64-linux-gnu-nm
44.1
KB
-rwxr-xr-x
x86_64-linux-gnu-objcopy
155.83
KB
-rwxr-xr-x
x86_64-linux-gnu-objdump
387.05
KB
-rwxr-xr-x
x86_64-linux-gnu-pkg-config
44.04
KB
-rwxr-xr-x
x86_64-linux-gnu-pkgconf
44.04
KB
-rwxr-xr-x
x86_64-linux-gnu-ranlib
51.25
KB
-rwxr-xr-x
x86_64-linux-gnu-readelf
759.63
KB
-rwxr-xr-x
x86_64-linux-gnu-size
26.94
KB
-rwxr-xr-x
x86_64-linux-gnu-strings
31.06
KB
-rwxr-xr-x
x86_64-linux-gnu-strip
155.86
KB
-rwxr-xr-x
xargs
74.45
KB
-rwxr-xr-x
xsubpp
5.05
KB
-rwxr-xr-x
xz
102.7
KB
-rwxr-xr-x
xzcat
102.7
KB
-rwxr-xr-x
xzcmp
7.41
KB
-rwxr-xr-x
xzdiff
7.41
KB
-rwxr-xr-x
xzegrep
10.17
KB
-rwxr-xr-x
xzfgrep
10.17
KB
-rwxr-xr-x
xzgrep
10.17
KB
-rwxr-xr-x
xzless
2.33
KB
-rwxr-xr-x
xzmore
2.18
KB
-rwxr-xr-x
yes
42.41
KB
-rwxr-xr-x
ypdomainname
26.15
KB
-rwxr-xr-x
zcat
1.93
KB
-rwxr-xr-x
zcmp
1.64
KB
-rwxr-xr-x
zdiff
6.3
KB
-rwxr-xr-x
zdump
26.21
KB
-rwxr-xr-x
zegrep
29
B
-rwxr-xr-x
zfgrep
29
B
-rwxr-xr-x
zforce
2.03
KB
-rwxr-xr-x
zgrep
8.01
KB
-rwxr-xr-x
zipdetails
231.06
KB
-rwxr-xr-x
zless
2.38
KB
-rwxr-xr-x
zmore
1.79
KB
-rwxr-xr-x
znew
4.46
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : dpkg-maintscript-helper
#!/bin/sh # # Copyright © 2005 Scott James Remnant # Copyright © 2008 Joey Hess <joeyh@debian.org> # Copyright © 2007, 2011-2015 Guillem Jover <guillem@debian.org> # Copyright © 2010 Raphaël Hertzog <hertzog@debian.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # The conffile related functions are inspired by # https://wiki.debian.org/DpkgConffileHandling # This script is documented in dpkg-maintscript-helper(1) ## ## Functions to remove an obsolete conffile during upgrade ## rm_conffile() { local CONFFILE="$1" local LASTVERSION="$2" local PACKAGE="$3" if [ "$LASTVERSION" = "--" ]; then LASTVERSION="" PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi if [ "$PACKAGE" = "--" -o -z "$PACKAGE" ]; then PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi # Skip remaining parameters up to -- while [ "$1" != "--" -a $# -gt 0 ]; do shift done [ $# -gt 0 ] || badusage "missing arguments after --" shift [ -n "$PACKAGE" ] || error "couldn't identify the package" [ -n "$1" ] || error "maintainer script parameters are missing" [ -n "$DPKG_MAINTSCRIPT_NAME" ] || \ error "environment variable DPKG_MAINTSCRIPT_NAME is required" [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] || \ error "environment variable DPKG_MAINTSCRIPT_PACKAGE is required" [ "${CONFFILE}" != "${CONFFILE#/}" ] || \ error "conffile '$CONFFILE' is not an absolute path" validate_optional_version "$LASTVERSION" debug "Executing $0 rm_conffile in $DPKG_MAINTSCRIPT_NAME" \ "of $DPKG_MAINTSCRIPT_PACKAGE" debug "CONFFILE=$CONFFILE PACKAGE=$PACKAGE" \ "LASTVERSION=$LASTVERSION ACTION=$1 PARAM=$2" case "$DPKG_MAINTSCRIPT_NAME" in preinst) if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then prepare_rm_conffile "$CONFFILE" "$PACKAGE" fi ;; postinst) if [ "$1" = "configure" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then finish_rm_conffile "$CONFFILE" fi ;; postrm) if [ "$1" = "purge" ]; then rm -f "$DPKG_ROOT$CONFFILE.dpkg-bak" \ "$DPKG_ROOT$CONFFILE.dpkg-remove" \ "$DPKG_ROOT$CONFFILE.dpkg-backup" fi if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then abort_rm_conffile "$CONFFILE" "$PACKAGE" fi ;; *) debug "$0 rm_conffile not required in $DPKG_MAINTSCRIPT_NAME" ;; esac } prepare_rm_conffile() { local CONFFILE="$1" local PACKAGE="$2" [ -e "$DPKG_ROOT$CONFFILE" ] || return 0 ensure_package_owns_file "$PACKAGE" "$CONFFILE" || return 0 local md5sum old_md5sum md5sum="$(md5sum "$DPKG_ROOT$CONFFILE" | sed -e 's/ .*//')" old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$PACKAGE" | \ sed -n -e "\\'^ $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" if [ "$md5sum" != "$old_md5sum" ]; then mv -f "$DPKG_ROOT$CONFFILE" "$DPKG_ROOT$CONFFILE.dpkg-backup" else mv -f "$DPKG_ROOT$CONFFILE" "$DPKG_ROOT$CONFFILE.dpkg-remove" fi } finish_rm_conffile() { local CONFFILE="$1" if [ -e "$DPKG_ROOT$CONFFILE.dpkg-backup" ]; then echo "Obsolete conffile $DPKG_ROOT$CONFFILE has been modified by you." echo "Saving as $DPKG_ROOT$CONFFILE.dpkg-bak ..." mv -f "$DPKG_ROOT$CONFFILE.dpkg-backup" "$DPKG_ROOT$CONFFILE.dpkg-bak" fi if [ -e "$DPKG_ROOT$CONFFILE.dpkg-remove" ]; then echo "Removing obsolete conffile $DPKG_ROOT$CONFFILE ..." rm -f "$DPKG_ROOT$CONFFILE.dpkg-remove" fi } abort_rm_conffile() { local CONFFILE="$1" local PACKAGE="$2" ensure_package_owns_file "$PACKAGE" "$CONFFILE" || return 0 if [ -e "$DPKG_ROOT$CONFFILE.dpkg-remove" ]; then echo "Reinstalling $DPKG_ROOT$CONFFILE that was moved away" mv "$DPKG_ROOT$CONFFILE.dpkg-remove" "$DPKG_ROOT$CONFFILE" fi if [ -e "$DPKG_ROOT$CONFFILE.dpkg-backup" ]; then echo "Reinstalling $DPKG_ROOT$CONFFILE that was backed-up" mv "$DPKG_ROOT$CONFFILE.dpkg-backup" "$DPKG_ROOT$CONFFILE" fi } ## ## Functions to rename a conffile during upgrade ## mv_conffile() { local OLDCONFFILE="$1" local NEWCONFFILE="$2" local LASTVERSION="$3" local PACKAGE="$4" if [ "$LASTVERSION" = "--" ]; then LASTVERSION="" PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi if [ "$PACKAGE" = "--" -o -z "$PACKAGE" ]; then PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi # Skip remaining parameters up to -- while [ "$1" != "--" -a $# -gt 0 ]; do shift done [ $# -gt 0 ] || badusage "missing arguments after --" shift [ -n "$PACKAGE" ] || error "couldn't identify the package" [ -n "$1" ] || error "maintainer script parameters are missing" [ -n "$DPKG_MAINTSCRIPT_NAME" ] || \ error "environment variable DPKG_MAINTSCRIPT_NAME is required" [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] || \ error "environment variable DPKG_MAINTSCRIPT_PACKAGE is required" [ "${OLDCONFFILE}" != "${OLDCONFFILE#/}" ] || \ error "old-conffile '$OLDCONFFILE' is not an absolute path" [ "${NEWCONFFILE}" != "${NEWCONFFILE#/}" ] || \ error "new-conffile '$NEWCONFFILE' is not an absolute path" validate_optional_version "$LASTVERSION" debug "Executing $0 mv_conffile in $DPKG_MAINTSCRIPT_NAME" \ "of $DPKG_MAINTSCRIPT_PACKAGE" debug "CONFFILE=$OLDCONFFILE -> $NEWCONFFILE PACKAGE=$PACKAGE" \ "LASTVERSION=$LASTVERSION ACTION=$1 PARAM=$2" case "$DPKG_MAINTSCRIPT_NAME" in preinst) if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then prepare_mv_conffile "$OLDCONFFILE" "$PACKAGE" fi ;; postinst) if [ "$1" = "configure" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then finish_mv_conffile "$OLDCONFFILE" "$NEWCONFFILE" "$PACKAGE" fi ;; postrm) if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then abort_mv_conffile "$OLDCONFFILE" "$PACKAGE" fi ;; *) debug "$0 mv_conffile not required in $DPKG_MAINTSCRIPT_NAME" ;; esac } prepare_mv_conffile() { local CONFFILE="$1" local PACKAGE="$2" [ -e "$DPKG_ROOT$CONFFILE" ] || return 0 ensure_package_owns_file "$PACKAGE" "$CONFFILE" || return 0 local md5sum old_md5sum md5sum="$(md5sum "$DPKG_ROOT$CONFFILE" | sed -e 's/ .*//')" old_md5sum="$(dpkg-query -W -f='${Conffiles}' "$PACKAGE" | \ sed -n -e "\\'^ $CONFFILE ' { s/ obsolete$//; s/.* //; p }")" if [ "$md5sum" = "$old_md5sum" ]; then mv -f "$DPKG_ROOT$CONFFILE" "$DPKG_ROOT$CONFFILE.dpkg-remove" fi } finish_mv_conffile() { local OLDCONFFILE="$1" local NEWCONFFILE="$2" local PACKAGE="$3" rm -f "$DPKG_ROOT$OLDCONFFILE.dpkg-remove" [ -e "$DPKG_ROOT$OLDCONFFILE" ] || return 0 ensure_package_owns_file "$PACKAGE" "$OLDCONFFILE" || return 0 echo "Preserving user changes to $DPKG_ROOT$NEWCONFFILE (renamed from $DPKG_ROOT$OLDCONFFILE)..." if [ -e "$DPKG_ROOT$NEWCONFFILE" ]; then mv -f "$DPKG_ROOT$NEWCONFFILE" "$DPKG_ROOT$NEWCONFFILE.dpkg-new" fi mv -f "$DPKG_ROOT$OLDCONFFILE" "$DPKG_ROOT$NEWCONFFILE" } abort_mv_conffile() { local CONFFILE="$1" local PACKAGE="$2" ensure_package_owns_file "$PACKAGE" "$CONFFILE" || return 0 if [ -e "$DPKG_ROOT$CONFFILE.dpkg-remove" ]; then echo "Reinstalling $DPKG_ROOT$CONFFILE that was moved away" mv "$DPKG_ROOT$CONFFILE.dpkg-remove" "$DPKG_ROOT$CONFFILE" fi } ## ## Functions to replace a symlink with a directory ## symlink_to_dir() { local SYMLINK="$1" local SYMLINK_TARGET="$2" local LASTVERSION="$3" local PACKAGE="$4" if [ "$LASTVERSION" = "--" ]; then LASTVERSION="" PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi if [ "$PACKAGE" = "--" -o -z "$PACKAGE" ]; then PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi # Skip remaining parameters up to -- while [ "$1" != "--" -a $# -gt 0 ]; do shift done [ $# -gt 0 ] || badusage "missing arguments after --" shift [ -n "$DPKG_MAINTSCRIPT_NAME" ] || \ error "environment variable DPKG_MAINTSCRIPT_NAME is required" [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] || \ error "environment variable DPKG_MAINTSCRIPT_PACKAGE is required" [ -n "$PACKAGE" ] || error "cannot identify the package" [ -n "$SYMLINK" ] || error "symlink parameter is missing" [ "${SYMLINK#/}" = "$SYMLINK" ] && \ error "symlink pathname is not an absolute path" [ "${SYMLINK%/}" = "$SYMLINK" ] || \ error "symlink pathname ends with a slash" [ -n "$SYMLINK_TARGET" ] || error "original symlink target is missing" [ -n "$1" ] || error "maintainer script parameters are missing" validate_optional_version "$LASTVERSION" debug "Executing $0 symlink_to_dir in $DPKG_MAINTSCRIPT_NAME" \ "of $DPKG_MAINTSCRIPT_PACKAGE" debug "SYMLINK=$SYMLINK -> $SYMLINK_TARGET PACKAGE=$PACKAGE" \ "LASTVERSION=$LASTVERSION ACTION=$1 PARAM=$2" case "$DPKG_MAINTSCRIPT_NAME" in preinst) if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && [ -h "$DPKG_ROOT$SYMLINK" ] && symlink_match "$SYMLINK" "$SYMLINK_TARGET" && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then mv -f "$DPKG_ROOT$SYMLINK" "$DPKG_ROOT${SYMLINK}.dpkg-backup" fi ;; postinst) # We cannot bail depending on the version, as here we only # know what was the last configured version, and we might # have been unpacked, then upgraded with an unpack and thus # never been configured before. if [ "$1" = "configure" ] && [ -h "$DPKG_ROOT${SYMLINK}.dpkg-backup" ] && symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" then rm -f "$DPKG_ROOT${SYMLINK}.dpkg-backup" fi ;; postrm) if [ "$1" = "purge" ] && [ -h "$DPKG_ROOT${SYMLINK}.dpkg-backup" ]; then rm -f "$DPKG_ROOT${SYMLINK}.dpkg-backup" fi if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && [ ! -e "$DPKG_ROOT$SYMLINK" ] && [ -h "$DPKG_ROOT${SYMLINK}.dpkg-backup" ] && symlink_match "${SYMLINK}.dpkg-backup" "$SYMLINK_TARGET" && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then echo "Restoring backup of $DPKG_ROOT$SYMLINK ..." mv "$DPKG_ROOT${SYMLINK}.dpkg-backup" "$DPKG_ROOT$SYMLINK" fi ;; *) debug "$0 symlink_to_dir not required in $DPKG_MAINTSCRIPT_NAME" ;; esac } ## ## Functions to replace a directory with a symlink ## dir_to_symlink() { local PATHNAME="${1%/}" local SYMLINK_TARGET="$2" local LASTVERSION="$3" local PACKAGE="$4" if [ "$LASTVERSION" = "--" ]; then LASTVERSION="" PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi if [ "$PACKAGE" = "--" -o -z "$PACKAGE" ]; then PACKAGE="$DPKG_MAINTSCRIPT_PACKAGE${DPKG_MAINTSCRIPT_ARCH:+:$DPKG_MAINTSCRIPT_ARCH}" fi # Skip remaining parameters up to -- while [ "$1" != "--" -a $# -gt 0 ]; do shift done [ $# -gt 0 ] || badusage "missing arguments after --" shift [ -n "$DPKG_MAINTSCRIPT_NAME" ] || \ error "environment variable DPKG_MAINTSCRIPT_NAME is required" [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ] || \ error "environment variable DPKG_MAINTSCRIPT_PACKAGE is required" [ -n "$PACKAGE" ] || error "cannot identify the package" [ -n "$PATHNAME" ] || error "directory parameter is missing" [ "${PATHNAME#/}" = "$PATHNAME" ] && \ error "directory parameter is not an absolute path" [ -n "$SYMLINK_TARGET" ] || error "new symlink target is missing" [ -n "$1" ] || error "maintainer script parameters are missing" validate_optional_version "$LASTVERSION" debug "Executing $0 dir_to_symlink in $DPKG_MAINTSCRIPT_NAME" \ "of $DPKG_MAINTSCRIPT_PACKAGE" debug "PATHNAME=$PATHNAME SYMLINK_TARGET=$SYMLINK_TARGET" \ "PACKAGE=$PACKAGE LASTVERSION=$LASTVERSION ACTION=$1 PARAM=$2" case "$DPKG_MAINTSCRIPT_NAME" in preinst) if [ "$1" = "install" -o "$1" = "upgrade" ] && [ -n "$2" ] && [ ! -h "$DPKG_ROOT$PATHNAME" ] && [ -d "$DPKG_ROOT$PATHNAME" ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then prepare_dir_to_symlink "$PACKAGE" "$PATHNAME" fi ;; postinst) # We cannot bail depending on the version, as here we only # know what was the last configured version, and we might # have been unpacked, then upgraded with an unpack and thus # never been configured before. if [ "$1" = "configure" ] && [ -d "$DPKG_ROOT${PATHNAME}.dpkg-backup" ] && [ ! -h "$DPKG_ROOT$PATHNAME" ] && [ -d "$DPKG_ROOT$PATHNAME" ] && [ -f "$DPKG_ROOT$PATHNAME/.dpkg-staging-dir" ]; then finish_dir_to_symlink "$PATHNAME" "$SYMLINK_TARGET" fi ;; postrm) if [ "$1" = "purge" ] && [ -d "$DPKG_ROOT${PATHNAME}.dpkg-backup" ]; then rm -rf "$DPKG_ROOT${PATHNAME}.dpkg-backup" fi if [ "$1" = "abort-install" -o "$1" = "abort-upgrade" ] && [ -n "$2" ] && [ -d "$DPKG_ROOT${PATHNAME}.dpkg-backup" ] && [ \( ! -h "$DPKG_ROOT$PATHNAME" -a \ -d "$DPKG_ROOT$PATHNAME" -a \ -f "$DPKG_ROOT$PATHNAME/.dpkg-staging-dir" \) -o \ \( -h "$DPKG_ROOT$PATHNAME" -a \ \( "$(readlink "$DPKG_ROOT$PATHNAME")" = "$SYMLINK_TARGET" -o \ "$(dpkg-realpath "$PATHNAME")" = "$SYMLINK_TARGET" \) \) ] && dpkg --compare-versions -- "$2" le-nl "$LASTVERSION"; then abort_dir_to_symlink "$PATHNAME" fi ;; *) debug "$0 dir_to_symlink not required in $DPKG_MAINTSCRIPT_NAME" ;; esac } prepare_dir_to_symlink() { local PACKAGE="$1" local PATHNAME="$2" local LINE # If there are conffiles we should not perform the switch. dpkg-query -W -f='${Conffiles}\n' "$PACKAGE" | while read -r LINE; do case "$LINE" in "$PATHNAME"/*) error "directory '$PATHNAME' contains conffiles," \ "cannot switch to symlink" ;; esac done # If there are locally created files or files owned by another package # we should not perform the switch. export DPKG_MAINTSCRIPT_HELPER_INTERNAL_API="$version" find "$DPKG_ROOT$PATHNAME" -print0 | \ xargs -0 -n1 "$0" _internal_pkg_must_own_file "$PACKAGE" || \ error "directory '$PATHNAME' contains files not owned by" \ "package $PACKAGE, cannot switch to symlink" unset DPKG_MAINTSCRIPT_HELPER_INTERNAL_API # At this point, we know that the directory either contains no files, # or only non-conffiles owned by the package. # # To do the switch we cannot simply replace it with the final symlink # just yet, because dpkg needs to remove any file present in the old # package that have disappeared in the new one, and we do not want to # lose files resolving to the same pathname in the symlink target. # # We cannot replace the directory with a staging symlink either, # because dpkg will update symlinks to their new target. # # So we need to create a staging directory, to avoid removing files # from other packages, and to trap any new files in the directory # to move them to their correct place later on. mv -f "$DPKG_ROOT$PATHNAME" "$DPKG_ROOT${PATHNAME}.dpkg-backup" mkdir "$DPKG_ROOT$PATHNAME" # Mark it as a staging directory, so that we can track things. touch "$DPKG_ROOT$PATHNAME/.dpkg-staging-dir" } finish_dir_to_symlink() { local PATHNAME="$1" local SYMLINK_TARGET="$2" # Move the contents of the staging directory to the symlink target, # as those are all new files installed between this package being # unpacked and configured. local ABS_SYMLINK_TARGET if [ "${SYMLINK_TARGET#/}" = "$SYMLINK_TARGET" ]; then ABS_SYMLINK_TARGET="$(dirname "$PATHNAME")/$SYMLINK_TARGET" else ABS_SYMLINK_TARGET="$SYMLINK_TARGET" fi rm "$DPKG_ROOT$PATHNAME/.dpkg-staging-dir" find "$DPKG_ROOT$PATHNAME" -mindepth 1 -maxdepth 1 -print0 | \ xargs -0 -I% mv -f "%" "$DPKG_ROOT$ABS_SYMLINK_TARGET/" # Remove the staging directory. rmdir "$DPKG_ROOT$PATHNAME" # Do the actual switch. ln -s "$SYMLINK_TARGET" "$DPKG_ROOT$PATHNAME" # We are left behind the old files owned by this package in the backup # directory, just remove it. rm -rf "$DPKG_ROOT${PATHNAME}.dpkg-backup" } abort_dir_to_symlink() { local PATHNAME="$1" echo "Restoring backup of $DPKG_ROOT$PATHNAME ..." if [ -h "$DPKG_ROOT$PATHNAME" ]; then rm -f "$DPKG_ROOT$PATHNAME" else # The staging directory must be empty, as no other package # should have been unpacked in between. rm -f "$DPKG_ROOT$PATHNAME/.dpkg-staging-dir" rmdir "$DPKG_ROOT$PATHNAME" fi mv "$DPKG_ROOT${PATHNAME}.dpkg-backup" "$DPKG_ROOT$PATHNAME" } # Common functions validate_optional_version() { local VERSION="$1" if [ -z "$VERSION" ]; then return fi if ! VERSIONCHECK=$(dpkg --validate-version -- "$VERSION" 2>&1); then error "$VERSIONCHECK" fi } ensure_package_owns_file() { local PACKAGE="$1" local FILE="$2" if ! dpkg-query -L "$PACKAGE" | grep -F -q -x "$FILE"; then debug "File '$FILE' not owned by package " \ "'$PACKAGE', skipping $command" return 1 fi return 0 } internal_pkg_must_own_file() { local PACKAGE="$1" local FILE="${2##"$DPKG_ROOT"}" if [ "$DPKG_MAINTSCRIPT_HELPER_INTERNAL_API" != "$version" ]; then error "internal API used by external command" fi if ! ensure_package_owns_file "$PACKAGE" "$FILE"; then error "file '$FILE' not owned by package '$PACKAGE'" fi return 0 } symlink_match() { local SYMLINK="$1" local SYMLINK_TARGET="$2" [ "$(readlink "$DPKG_ROOT$SYMLINK")" = "$SYMLINK_TARGET" ] || \ [ "$(dpkg-realpath "$SYMLINK")" = "$SYMLINK_TARGET" ] } usage() { cat <<END Usage: $PROGNAME <command> <parameter>... -- <maintainer-script-parameter>... Commands: supports <command> Returns 0 (success) if the given command is supported, 1 otherwise. rm_conffile <conffile> [<last-version> [<package>]] Remove obsolete conffile. Must be called in preinst, postinst and postrm. mv_conffile <old-conf> <new-conf> [<last-version> [<package>]] Rename a conffile. Must be called in preinst, postinst and postrm. symlink_to_dir <pathname> <old-symlink-target> [<last-version> [<package>]] Replace a symlink with a directory. Must be called in preinst, postinst and postrm. dir_to_symlink <pathname> <new-symlink-target> [<last-version> [<package>]] Replace a directory with a symlink. Must be called in preinst, postinst and postrm. help -?, --help Show this help message. --version Show the version. END } # Main code set -e version="1.22.21" DPKG_ROOT=${DPKG_ROOT:+$(realpath "$DPKG_ROOT")} # Remove default root dir. if [ "$DPKG_ROOT" = "/" ]; then DPKG_ROOT="" fi export DPKG_ROOT PKGDATADIR_DEFAULT='/usr/share/dpkg' PKGDATADIR="${DPKG_DATADIR:-$PKGDATADIR_DEFAULT}" # shellcheck source=src/sh/dpkg-error.sh . "$PKGDATADIR/sh/dpkg-error.sh" command="$1" [ $# -gt 0 ] || badusage "missing command" shift case "$command" in supports) case "$1" in rm_conffile|mv_conffile|symlink_to_dir|dir_to_symlink) code=0 ;; *) code=1 ;; esac if [ -z "$DPKG_MAINTSCRIPT_NAME" ]; then warning "environment variable DPKG_MAINTSCRIPT_NAME missing" code=1 fi if [ -z "$DPKG_MAINTSCRIPT_PACKAGE" ]; then warning "environment variable DPKG_MAINTSCRIPT_PACKAGE missing" code=1 fi exit $code ;; rm_conffile) rm_conffile "$@" ;; mv_conffile) mv_conffile "$@" ;; symlink_to_dir) symlink_to_dir "$@" ;; dir_to_symlink) dir_to_symlink "$@" ;; _internal_pkg_must_own_file) # This is an internal command, must not be used outside this program. internal_pkg_must_own_file "$@" ;; --help|help|-?) usage ;; --version) cat <<END Debian $PROGNAME version $version. This is free software; see the GNU General Public License version 2 or later for copying conditions. There is NO warranty. END ;; *) badusage "command $command is unknown Hint: upgrading dpkg to a newer version might help." esac exit 0
Close