Linux host2.homegym.sg 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64
Apache
Server IP : 159.223.38.192 & Your IP : 159.223.38.192
Domains : 20 Domain
User : eachadea
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Lock Shell
Lock File++
Readme
/
usr /
sbin /
Delete
Unzip
Name
Size
Permission
Date
Action
NetworkManager
3.41
MB
-rwxr-xr-x
2025-08-26 09:47
a3mnt
832
B
-rwxr-xr-x
2025-10-16 17:25
aakore
481
B
-rwxr-xr-x
2025-10-16 17:25
accessdb
12.59
KB
-rwxr-xr-x
2021-10-08 13:04
acp-update-controller
820
B
-rwxr-xr-x
2025-10-16 17:25
acrocmd
822
B
-rwxr-xr-x
2025-10-16 17:25
acronis_encrypt
818
B
-rwxr-xr-x
2025-10-16 17:26
acronis_mms
1.29
KB
-rwxr-xr-x
2025-10-16 17:25
acronis_schedinfo
435
B
-rwxr-xr-x
2025-10-16 17:26
acronis_schedule
818
B
-rwxr-xr-x
2025-10-16 17:25
acropsh
804
B
-rwxr-xr-x
2025-10-16 17:25
addgnupghome
3
KB
-rwxr-xr-x
2018-12-11 07:44
addpart
24.86
KB
-rwxr-xr-x
2024-04-06 13:02
adduser
148.17
KB
-rwxr-xr-x
2024-04-06 14:00
agetty
62.38
KB
-rwxr-xr-x
2024-04-06 13:02
alternatives
36.66
KB
-rwxr-xr-x
2023-10-14 22:48
anacron
40.99
KB
-rwxr-xr-x
2024-04-06 11:40
apachectl
4.52
KB
-rwxr-xr-x
2025-10-15 20:35
applygnupgdefaults
2.17
KB
-rwxr-xr-x
2017-12-18 12:28
arp
64.71
KB
-rwxr-xr-x
2020-08-30 17:47
arpd
109.52
KB
-rwxr-xr-x
2024-05-23 08:36
arping
28.74
KB
-rwxr-xr-x
2023-10-14 17:19
atd
32.63
KB
-rwxr-xr-x
2022-10-10 10:23
atrun
67
B
-rwxr-xr-x
2022-10-10 10:23
auditctl
45.04
KB
-rwxr-xr-x
2025-07-15 09:41
auditd
151.73
KB
-rwxr-xr-x
2025-07-15 09:41
augenrules
4.04
KB
-rwxr-xr-x
2025-07-15 09:41
aureport
122.35
KB
-rwxr-xr-x
2025-07-15 09:41
ausearch
130.36
KB
-rwxr-xr-x
2025-07-15 09:41
autrace
16.54
KB
-rwxr-x---
2025-07-15 09:41
avcstat
16.4
KB
-rwxr-xr-x
2025-03-11 12:11
badblocks
32.59
KB
-rwxr-xr-x
2025-10-07 07:08
biosdecode
21.45
KB
-rwxr-xr-x
2024-04-06 13:04
blkdeactivate
15.97
KB
-r-xr-xr-x
2025-07-15 09:03
blkdiscard
29.05
KB
-rwxr-xr-x
2024-04-06 13:02
blkid
98.66
KB
-rwxr-xr-x
2024-04-06 13:02
blkmapd
53.47
KB
-rwxr-xr-x
2025-06-04 10:54
blkzone
49.74
KB
-rwxr-xr-x
2024-04-06 13:02
blockdev
41.3
KB
-rwxr-xr-x
2024-04-06 13:02
bridge
158.25
KB
-rwxr-xr-x
2024-05-23 08:36
capsh
32.44
KB
-rwxr-xr-x
2024-01-10 14:34
cfdisk
98.4
KB
-rwxr-xr-x
2024-04-06 13:02
cgdisk
206.55
KB
-rwxr-xr-x
2022-10-12 10:53
chcpu
28.84
KB
-rwxr-xr-x
2024-04-06 13:02
chgpasswd
69.69
KB
-rwxr-xr-x
2024-04-06 14:00
chkconfig
45.11
KB
-rwxr-xr-x
2023-10-14 22:48
chpasswd
61.42
KB
-rwxr-xr-x
2024-04-06 14:00
chronyd
375.66
KB
-rwxr-xr-x
2024-11-05 07:47
chroot
41.52
KB
-rwxr-xr-x
2023-04-01 08:44
clock
65.22
KB
-rwxr-xr-x
2024-04-06 13:02
clockdiff
20.43
KB
-rwxr-xr-x
2023-10-14 17:19
consoletype
11.85
KB
-rwxr-xr-x
2022-10-08 11:08
convertquota
78.68
KB
-rwxr-xr-x
2021-10-09 07:08
cracklib-check
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
cracklib-format
251
B
-rwxr-xr-x
2019-10-12 00:47
cracklib-packer
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
cracklib-unpacker
9.03
KB
-rwxr-xr-x
2019-10-12 00:47
create-cracklib-dict
990
B
-rwxr-xr-x
2019-10-12 00:47
crond
73.94
KB
-rwxr-xr-x
2024-04-06 11:40
csf
245.1
KB
-rwx------
2025-02-28 14:06
ctrlaltdel
24.79
KB
-rwxr-xr-x
2024-04-06 13:02
ctstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
dcb
155.04
KB
-rwxr-xr-x
2024-05-23 08:36
ddns-confgen
20.46
KB
-rwxr-xr-x
2025-02-20 09:05
debugfs
231.63
KB
-rwxr-xr-x
2025-10-07 07:08
delpart
24.86
KB
-rwxr-xr-x
2024-04-06 13:02
depmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
devlink
215.87
KB
-rwxr-xr-x
2024-05-23 08:36
dhclient
453.68
KB
-rwxr-xr-x
2024-05-22 17:58
dhclient-script
32.86
KB
-rwxr-xr-x
2024-05-22 16:12
dkms
117.1
KB
-rwxr-xr-x
2025-07-29 05:51
dmfilemapd
24.55
KB
-r-xr-xr-x
2025-07-15 09:03
dmidecode
141.8
KB
-rwxr-xr-x
2024-04-06 13:04
dmsetup
158.64
KB
-r-xr-xr-x
2025-07-15 09:03
dmstats
158.64
KB
-r-xr-xr-x
2025-07-15 09:03
dnssec-checkds
936
B
-rwxr-xr-x
2025-02-20 09:05
dnssec-coverage
938
B
-rwxr-xr-x
2025-02-20 09:05
dnssec-dsfromkey
60.84
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-importkey
60.84
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-keyfromlabel
64.76
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-keygen
72.84
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-keymgr
934
B
-rwxr-xr-x
2025-02-20 09:05
dnssec-revoke
56.74
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-settime
60.84
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-signzone
117.2
KB
-rwxr-xr-x
2025-02-20 09:05
dnssec-verify
52.84
KB
-rwxr-xr-x
2025-02-20 09:05
dovecot
137.48
KB
-rwxr-xr-x
2025-02-25 20:04
dovecot_cpshutdown
3.27
KB
-rwxr-xr-x
2025-02-25 20:00
dpkg-fsys-usrunmess
12.11
KB
-rwxr-xr-x
2021-12-15 12:46
dumpe2fs
32.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2freefrag
16.42
KB
-rwxr-xr-x
2025-10-07 07:08
e2fsck
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2image
36.61
KB
-rwxr-xr-x
2025-10-07 07:08
e2label
110.63
KB
-rwxr-xr-x
2025-10-07 07:08
e2mmpstatus
32.52
KB
-rwxr-xr-x
2025-10-07 07:08
e2undo
20.38
KB
-rwxr-xr-x
2025-10-07 07:08
e4crypt
24.55
KB
-rwxr-xr-x
2025-10-07 07:08
e4defrag
28.49
KB
-rwxr-xr-x
2025-10-07 07:08
edquota
91.24
KB
-rwxr-xr-x
2021-10-09 07:08
ether-wake
73.99
KB
-rwxr-xr-x
2020-08-30 17:47
ethtool
557.79
KB
-rwxr-xr-x
2022-10-08 17:27
exicyclog
11.1
KB
-rwxr-xr-x
2025-05-12 17:54
exigrep
10.52
KB
-rwxr-xr-x
2025-05-12 17:54
exim
1.49
MB
-rwsr-xr-x
2025-05-12 17:54
exim_checkaccess
4.83
KB
-rwxr-xr-x
2025-05-12 17:54
exim_dbmbuild
23.23
KB
-rwxr-xr-x
2025-05-12 17:54
exim_dumpdb
38.02
KB
-rwxr-xr-x
2025-05-12 17:54
exim_fixdb
47.56
KB
-rwxr-xr-x
2025-05-12 17:54
exim_lock
26.59
KB
-rwxr-xr-x
2025-05-12 17:54
exim_tidydb
42.35
KB
-rwxr-xr-x
2025-05-12 17:54
eximstats
148.26
KB
-rwxr-xr-x
2025-05-12 17:54
exinext
7.14
KB
-rwxr-xr-x
2025-05-12 17:54
exiqgrep
5.66
KB
-rwxr-xr-x
2025-05-12 17:54
exiqsumm
5.32
KB
-rwxr-xr-x
2025-05-12 17:54
exiwhat
4.42
KB
-rwxr-xr-x
2025-05-12 17:54
exportfs
82.38
KB
-rwxr-xr-x
2025-06-04 10:54
faillock
20.52
KB
-rwxr-xr-x
2025-08-26 08:59
fcgistarter
17.11
KB
-rwxr-xr-x
2025-10-15 20:39
fdformat
33.17
KB
-rwxr-xr-x
2024-04-06 13:02
fdisk
130.92
KB
-rwxr-xr-x
2024-04-06 13:02
filefrag
16.46
KB
-rwxr-xr-x
2025-10-07 07:08
findfs
12.37
KB
-rwxr-xr-x
2024-04-06 13:02
fix-info-dir
7.84
KB
-rwxr-xr-x
2022-04-18 17:09
fixfiles
10.48
KB
-rwxr-xr-x
2024-07-02 21:04
fixparts
74.91
KB
-rwxr-xr-x
2022-10-12 10:53
fsck
53.47
KB
-rwxr-xr-x
2024-04-06 13:02
fsck.cramfs
41.4
KB
-rwxr-xr-x
2024-04-06 13:02
fsck.ext2
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.ext3
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.ext4
328.52
KB
-rwxr-xr-x
2025-10-07 07:08
fsck.minix
98.74
KB
-rwxr-xr-x
2024-04-06 13:02
fsck.xfs
1.92
KB
-rwxr-xr-x
2023-10-15 05:10
fsfreeze
16.38
KB
-rwxr-xr-x
2024-04-06 13:02
fstrim
49.6
KB
-rwxr-xr-x
2024-04-06 13:02
fuse2fs
70.39
KB
-rwxr-xr-x
2025-10-07 07:08
fuser
38.14
KB
-rwxr-xr-x
2020-11-06 14:24
g13-syshelp
189.71
KB
-rwxr-xr-x
2022-09-13 10:15
gdisk
214.46
KB
-rwxr-xr-x
2022-10-12 10:53
genhomedircon
29.27
KB
-rwxr-xr-x
2024-07-02 21:04
genhostid
11.85
KB
-rwxr-xr-x
2022-10-08 11:08
genl
121.41
KB
-rwxr-xr-x
2024-05-23 08:36
genrandom
12.38
KB
-rwxr-xr-x
2025-02-20 09:05
getcap
12.34
KB
-rwxr-xr-x
2024-01-10 14:34
getenforce
7.84
KB
-rwxr-xr-x
2025-03-11 12:11
getpcaps
12.27
KB
-rwxr-xr-x
2024-01-10 14:34
getsebool
11.88
KB
-rwxr-xr-x
2025-03-11 12:11
groupadd
95.34
KB
-rwxr-xr-x
2024-04-06 14:00
groupdel
91.09
KB
-rwxr-xr-x
2024-04-06 14:00
groupmems
61.48
KB
-rwxr-xr-x
2024-04-06 14:00
groupmod
99.37
KB
-rwxr-xr-x
2024-04-06 14:00
grpck
61.48
KB
-rwxr-xr-x
2024-04-06 14:00
grpconv
57.26
KB
-rwxr-xr-x
2024-04-06 14:00
grpunconv
57.25
KB
-rwxr-xr-x
2024-04-06 14:00
grub2-bios-setup
1.16
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-get-kernel-settings
2.68
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-install
1.44
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-macbless
1.14
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-mkconfig
8.68
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-ofpathname
242.26
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-probe
1.16
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-reboot
3.99
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-rpm-sort
279.16
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-set-bootflag
16.34
KB
-rwsr-xr-x
2025-10-07 08:06
grub2-set-default
3.45
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-set-password
3.05
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-setpassword
3.05
KB
-rwxr-xr-x
2025-10-07 08:06
grub2-sparc64-setup
1.16
MB
-rwxr-xr-x
2025-10-07 08:06
grub2-switch-to-blscfg
8.6
KB
-rwxr-xr-x
2025-10-07 08:06
grubby
260
B
-rwxr-xr-x
2024-04-06 13:02
gss-server
24.62
KB
-rwxr-xr-x
2025-06-03 02:06
gssproxy
132.08
KB
-rwxr-xr-x
2022-10-08 08:02
halt
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
hardlink
17.09
KB
-rwxr-xr-x
2019-10-15 21:49
hdparm
131.91
KB
-rwxr-xr-x
2021-10-08 19:47
htcacheclean
44.36
KB
-rwxr-xr-x
2025-10-15 20:39
httpd
990.57
KB
-rwxr-xr-x
2025-10-15 20:39
hwclock
65.22
KB
-rwxr-xr-x
2024-04-06 13:02
iconvconfig
33.05
KB
-rwxr-xr-x
2025-08-05 14:12
ifconfig
80.86
KB
-rwxr-xr-x
2020-08-30 17:47
ifdown
2.07
KB
-rwxr-xr-x
2022-08-10 13:03
ifenslave
24.95
KB
-rwxr-xr-x
2023-10-14 17:19
ifstat
117.67
KB
-rwxr-xr-x
2024-05-23 08:36
ifup
5.33
KB
-rwxr-xr-x
2022-08-10 13:03
imunify-notifier
9.82
MB
-rwxr-xr-x
2024-10-25 12:14
init
1.53
MB
-rwxr-xr-x
2025-04-22 01:58
insmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
install-info
50.23
KB
-rwxr-xr-x
2022-04-18 17:09
installkernel
323
B
-rwxr-xr-x
2024-04-06 13:02
intel_sdsi
15.62
KB
-rwxr-xr-x
2025-10-27 15:46
ip
693.3
KB
-rwxr-xr-x
2024-05-23 08:36
ip6tables
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-apply
6.89
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-restore
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-restore-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-save
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ip6tables-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
ipmaddr
21
KB
-rwxr-xr-x
2020-08-30 17:47
iptables
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-apply
6.89
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-restore
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-restore-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-save
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptables-translate
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
iptunnel
25
KB
-rwxr-xr-x
2020-08-30 17:47
irqbalance
62.28
KB
-rwxr-xr-x
2023-10-14 17:57
irqbalance-ui
41.29
KB
-rwxr-xr-x
2023-10-14 17:57
isc-hmac-fixup
11.85
KB
-rwxr-xr-x
2025-02-20 09:05
kexec
194.98
KB
-rwxr-xr-x
2024-09-24 08:36
key.dns_resolver
24.52
KB
-rwxr-xr-x
2021-10-08 13:50
kpartx
49.05
KB
-rwxr-xr-x
2025-04-22 01:55
lchage
16.41
KB
-rwxr-xr-x
2024-09-24 02:24
ldattach
32.99
KB
-rwxr-xr-x
2024-04-06 13:02
ldconfig
986.02
KB
-rwxr-xr-x
2025-08-05 14:12
lfd
382.45
KB
-rwx------
2025-02-28 14:06
lgroupadd
11.88
KB
-rwxr-xr-x
2024-09-24 02:24
lgroupdel
11.88
KB
-rwxr-xr-x
2024-09-24 02:24
lgroupmod
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
lid
16.27
KB
-rwxr-xr-x
2024-09-24 02:24
lnewusers
19.87
KB
-rwxr-xr-x
2024-09-24 02:24
lnstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
load_policy
12.28
KB
-rwxr-xr-x
2024-07-02 21:04
logrotate
93.03
KB
-rwxr-xr-x
2023-04-02 00:29
logsave
16.41
KB
-rwxr-xr-x
2025-10-07 07:08
losetup
90.59
KB
-rwxr-xr-x
2024-04-06 13:02
lpasswd
20.35
KB
-rwxr-xr-x
2024-09-24 02:24
lshw
969.55
KB
-rwxr-xr-x
2025-10-07 08:50
lsmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
luseradd
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
luserdel
15.88
KB
-rwxr-xr-x
2024-09-24 02:24
lusermod
19.88
KB
-rwxr-xr-x
2024-09-24 02:24
lwresd
840.86
KB
-rwxr-xr-x
2025-02-20 09:05
makedumpfile
425.19
KB
-rwxr-xr-x
2024-09-24 08:36
matchpathcon
12.37
KB
-rwxr-xr-x
2025-03-11 12:11
mediabuilder
826
B
-rwxr-xr-x
2025-10-16 17:13
mii-diag
25.4
KB
-rwxr-xr-x
2020-08-30 17:47
mii-tool
21.03
KB
-rwxr-xr-x
2020-08-30 17:47
mkdict
251
B
-rwxr-xr-x
2019-10-12 00:47
mkdumprd
12.68
KB
-rwxr-xr-x
2024-09-24 08:36
mke2fs
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfadumprd
2.23
KB
-rwxr-xr-x
2024-09-24 08:36
mkfs
16.47
KB
-rwxr-xr-x
2024-04-06 13:02
mkfs.cramfs
41.26
KB
-rwxr-xr-x
2024-04-06 13:02
mkfs.ext2
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.ext3
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.ext4
138.45
KB
-rwxr-xr-x
2025-10-07 07:08
mkfs.minix
86.55
KB
-rwxr-xr-x
2024-04-06 13:02
mkfs.xfs
475.98
KB
-rwxr-xr-x
2023-10-15 05:11
mkhomedir_helper
24.43
KB
-rwxr-xr-x
2025-08-26 08:59
mklost+found
11.86
KB
-rwxr-xr-x
2025-10-07 07:08
mksquashfs
186.83
KB
-rwxr-xr-x
2024-04-06 14:17
mkswap
86.47
KB
-rwxr-xr-x
2024-04-06 13:02
modinfo
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
modprobe
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
modsec-sdbm-util
25.83
KB
-rwxr-x---
2025-08-19 20:11
mount.nfs
197.24
KB
-rwsr-xr-x
2025-06-04 10:54
mount.nfs4
197.24
KB
-rwsr-xr-x
2025-06-04 10:54
mountstats
42.22
KB
-rwxr-xr-x
2025-06-04 10:53
mysqld
62.62
MB
-rwxr-xr-x
2024-06-13 12:01
named
840.86
KB
-rwxr-xr-x
2025-02-20 09:05
named-checkconf
36.77
KB
-rwxr-xr-x
2025-02-20 09:05
named-checkzone
36.63
KB
-rwxr-xr-x
2025-02-20 09:05
named-compilezone
36.63
KB
-rwxr-xr-x
2025-02-20 09:05
named-journalprint
11.85
KB
-rwxr-xr-x
2025-02-20 09:05
nameif
16.98
KB
-rwxr-xr-x
2020-08-30 17:47
newusers
107.23
KB
-rwxr-xr-x
2024-04-06 14:00
nfsconf
37.48
KB
-rwxr-xr-x
2025-06-04 10:54
nfsconvert
13.03
KB
-rwxr-xr-x
2025-06-04 10:54
nfsdcld
65.87
KB
-rwxr-xr-x
2025-06-04 10:54
nfsdclddb
10
KB
-rwxr-xr-x
2025-06-04 10:53
nfsdclnts
9.02
KB
-rwxr-xr-x
2025-06-04 10:53
nfsdcltrack
49.78
KB
-rwxr-xr-x
2025-06-04 10:54
nfsidmap
45.36
KB
-rwxr-xr-x
2025-06-04 10:54
nfsiostat
23.36
KB
-rwxr-xr-x
2025-06-04 10:53
nfsref
65.8
KB
-rwxr-xr-x
2025-06-04 10:54
nfsstat
35.52
KB
-rwxr-xr-x
2025-06-04 10:54
nft
24.41
KB
-rwxr-xr-x
2025-01-28 01:24
nologin
11.87
KB
-rwxr-xr-x
2024-04-06 13:02
nscd
160.68
KB
-rwxr-xr-x
2025-08-05 14:12
nsec3hash
12.29
KB
-rwxr-xr-x
2025-02-20 09:05
nstat
113.57
KB
-rwxr-xr-x
2024-05-23 08:36
ownership
12.4
KB
-rwxr-xr-x
2024-04-06 13:04
packer
13.05
KB
-rwxr-xr-x
2019-10-12 00:47
pam_console_apply
45.2
KB
-rwxr-xr-x
2025-08-26 08:59
pam_timestamp_check
11.87
KB
-rwsr-xr-x
2025-08-26 08:59
paperconfig
4.07
KB
-rwxr-xr-x
2019-10-12 20:09
parted
85.6
KB
-rwxr-xr-x
2021-10-08 15:43
partprobe
16.39
KB
-rwxr-xr-x
2021-10-08 15:43
partx
94.5
KB
-rwxr-xr-x
2024-04-06 13:02
pdns_server
6.24
MB
-rwxr-xr-x
2025-05-12 18:42
pidof
16.7
KB
-rwxr-xr-x
2023-10-14 20:31
ping
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
ping6
66.13
KB
-rwxr-xr-x
2023-10-14 17:19
pivot_root
12.38
KB
-rwxr-xr-x
2024-04-06 13:02
plipconfig
12.71
KB
-rwxr-xr-x
2020-08-30 17:47
pluginviewer
20.57
KB
-rwxr-xr-x
2022-02-23 20:13
poweroff
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
pure-authd
19.23
KB
-rwxr-xr-x
2024-10-30 12:42
pure-certd
19.13
KB
-rwxr-xr-x
2024-10-30 12:42
pure-config.pl
4.64
KB
-rwxr-xr-x
2024-10-30 12:41
pure-ftpd
182.06
KB
-rwxr-xr-x
2024-10-30 12:42
pure-ftpwho
26.82
KB
-rwxr-xr-x
2024-10-30 12:42
pure-mrtginfo
11.16
KB
-rwxr-xr-x
2024-10-30 12:42
pure-quotacheck
18.81
KB
-rwxr-xr-x
2024-10-30 12:42
pure-uploadscript
19.07
KB
-rwxr-xr-x
2024-10-30 12:42
pwck
57.27
KB
-rwxr-xr-x
2024-04-06 14:00
pwconv
53.1
KB
-rwxr-xr-x
2024-04-06 14:00
pwhistory_helper
20.44
KB
-rwxr-xr-x
2025-08-26 08:59
pwunconv
53.13
KB
-rwxr-xr-x
2024-04-06 14:00
quot
78.67
KB
-rwxr-xr-x
2021-10-09 07:08
quotacheck
115.75
KB
-rwxr-xr-x
2021-10-09 07:08
quotaoff
83.16
KB
-rwxr-xr-x
2021-10-09 07:08
quotaon
83.16
KB
-rwxr-xr-x
2021-10-09 07:08
quotastats
16.54
KB
-rwxr-xr-x
2021-10-09 07:08
rdisc
24.55
KB
-rwxr-xr-x
2023-10-14 17:19
rdma
187.38
KB
-rwxr-xr-x
2024-05-23 08:36
readprofile
20.55
KB
-rwxr-xr-x
2024-04-06 13:02
reboot
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
repquota
83.24
KB
-rwxr-xr-x
2021-10-09 07:08
request-key
24.38
KB
-rwxr-xr-x
2021-10-08 13:50
resize2fs
64.91
KB
-rwxr-xr-x
2025-10-07 07:08
resizepart
41.56
KB
-rwxr-xr-x
2024-04-06 13:02
resolvconf
195.74
KB
-rwxr-xr-x
2025-04-22 01:58
restorecon
20.53
KB
-rwxr-xr-x
2024-07-02 21:04
restorecon_xattr
16.41
KB
-rwxr-xr-x
2024-07-02 21:04
rfkill
53.46
KB
-rwxr-xr-x
2024-04-06 13:02
rmmod
159.95
KB
-rwxr-xr-x
2024-04-08 09:18
rndc
36.53
KB
-rwxr-xr-x
2025-02-20 09:05
rndc-confgen
20.45
KB
-rwxr-xr-x
2025-02-20 09:05
rotatelogs
30.51
KB
-rwxr-xr-x
2025-10-15 20:39
route
67.63
KB
-rwxr-xr-x
2020-08-30 17:47
rpc.gssd
106.55
KB
-rwxr-xr-x
2025-06-04 10:54
rpc.idmapd
61.73
KB
-rwxr-xr-x
2025-06-04 10:54
rpc.mountd
158.92
KB
-rwxr-xr-x
2025-06-04 10:54
rpc.nfsd
49.91
KB
-rwxr-xr-x
2025-06-04 10:54
rpc.statd
103.29
KB
-rwxr-xr-x
2025-06-04 10:54
rpcbind
61.55
KB
-rwxr-xr-x
2022-10-12 11:00
rpcctl
9.41
KB
-rwxr-xr-x
2025-06-04 10:53
rpcdebug
19.38
KB
-rwxr-xr-x
2025-06-04 10:54
rpcinfo
32.64
KB
-rwxr-xr-x
2022-10-12 11:00
rsyslogd
724.73
KB
-rwxr-xr-x
2024-11-05 02:34
rtacct
46.94
KB
-rwxr-xr-x
2024-05-23 08:36
rtcwake
49.31
KB
-rwxr-xr-x
2024-04-06 13:02
rtmon
117.27
KB
-rwxr-xr-x
2024-05-23 08:36
rtstat
25.33
KB
-rwxr-xr-x
2024-05-23 08:36
runlevel
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
runq
1.49
MB
-rwsr-xr-x
2025-05-12 17:54
runuser
48.99
KB
-rwxr-xr-x
2024-04-06 13:02
sasl2-shared-mechlist
12.19
KB
-rwxr-xr-x
2022-02-23 20:13
saslauthd
94.42
KB
-rwxr-xr-x
2022-02-23 20:13
sasldblistusers2
20.77
KB
-rwxr-xr-x
2022-02-23 20:13
saslpasswd2
16.42
KB
-rwxr-xr-x
2022-02-23 20:13
schedmgr
818
B
-rwxr-xr-x
2025-10-16 17:25
sedispatch
20.52
KB
-rwxr-xr-x
2024-04-06 13:44
sefcontext_compile
65.35
KB
-rwxr-xr-x
2025-03-11 12:11
selabel_digest
12.28
KB
-rwxr-xr-x
2025-03-11 12:11
selabel_lookup
12.27
KB
-rwxr-xr-x
2025-03-11 12:11
selabel_lookup_best_match
11.89
KB
-rwxr-xr-x
2025-03-11 12:11
selabel_partial_match
11.88
KB
-rwxr-xr-x
2025-03-11 12:11
selinux_check_access
12.36
KB
-rwxr-xr-x
2025-03-11 12:11
selinuxconlist
11.88
KB
-rwxr-xr-x
2025-03-11 12:11
selinuxdefcon
11.88
KB
-rwxr-xr-x
2025-03-11 12:11
selinuxenabled
7.84
KB
-rwxr-xr-x
2025-03-11 12:11
selinuxexeccon
11.86
KB
-rwxr-xr-x
2025-03-11 12:11
semanage
41.18
KB
-rwxr-xr-x
2024-07-02 21:08
semodule
29.27
KB
-rwxr-xr-x
2024-07-02 21:04
sendmail
16.91
KB
-rwxr-sr-x
2025-05-12 17:54
service
3.64
KB
-rwxr-xr-x
2022-08-10 13:03
sestatus
20.41
KB
-rwxr-xr-x
2024-07-02 21:04
setcap
16.27
KB
-rwxr-xr-x
2024-01-10 14:34
setenforce
12.27
KB
-rwxr-xr-x
2025-03-11 12:11
setfiles
20.53
KB
-rwxr-xr-x
2024-07-02 21:04
setquota
91.38
KB
-rwxr-xr-x
2021-10-09 07:08
setroubleshootd
3.34
KB
-rwxr-xr-x
2024-04-06 13:44
setsebool
16.38
KB
-rwxr-xr-x
2024-07-02 21:04
sfdisk
118.5
KB
-rwxr-xr-x
2024-04-06 13:02
sgdisk
198.05
KB
-rwxr-xr-x
2022-10-12 10:53
showmount
21.06
KB
-rwxr-xr-x
2025-06-04 10:54
shutdown
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
sim_server
11.87
KB
-rwxr-xr-x
2025-06-03 02:06
slattach
43.76
KB
-rwxr-xr-x
2020-08-30 17:47
sm-notify
78.14
KB
-rwxr-xr-x
2025-06-04 10:54
smartctl
907.08
KB
-rwxr-xr-x
2024-04-06 14:11
smartd
733.2
KB
-rwxr-xr-x
2024-04-06 14:11
snmpd
32.45
KB
-rwxr-xr-x
2025-10-07 09:19
snmptrapd
32.6
KB
-rwxr-xr-x
2025-10-07 09:19
sos
627
B
-rwxr-xr-x
2025-10-06 03:40
sos-collector
147
B
-rwxr-xr-x
2025-10-06 03:40
sosreport
140
B
-rwxr-xr-x
2025-10-06 03:40
ss
191.3
KB
-rwxr-xr-x
2024-05-23 08:36
sshd
869.75
KB
-rwxr-xr-x
2025-09-30 10:44
sss_cache
61.09
KB
-rwxr-xr-x
2025-06-05 19:42
sssd
73.01
KB
-rwxr-xr-x
2025-06-05 19:42
start-statd
838
B
-rwxr-xr-x
2018-09-06 18:09
start-stop-daemon
45.98
KB
-rwxr-xr-x
2021-12-15 12:46
suexec
25.3
KB
-rwsr-xr-x
2025-10-15 20:39
sulogin
49.24
KB
-rwxr-xr-x
2024-04-06 13:02
suphp
6.56
MB
-rwsr-x---
2025-10-15 20:46
swaplabel
16.5
KB
-rwxr-xr-x
2024-04-06 13:02
swapoff
20.74
KB
-rwxr-xr-x
2024-04-06 13:02
swapon
49.4
KB
-rwxr-xr-x
2024-04-06 13:02
switch_root
16.49
KB
-rwxr-xr-x
2024-04-06 13:02
sysctl
28.88
KB
-rwxr-xr-x
2023-10-14 20:31
syspurpose
415
B
-rwxr-xr-x
2025-07-15 09:13
tcpdump
1.01
MB
-rwxr-xr-x
2024-04-06 11:58
tcpslice
32.63
KB
-rwxr-xr-x
2024-04-06 11:58
tcsd
309.72
KB
-rwxr-xr-x
2024-04-06 12:42
telinit
218.45
KB
-rwxr-xr-x
2025-04-22 01:58
testsaslauthd
16.66
KB
-rwxr-xr-x
2022-02-23 20:13
tibxread
828
B
-rwxr-xr-x
2025-10-16 17:25
timedatex
33.43
KB
-rwxr-xr-x
2019-10-16 17:24
tipc
163.07
KB
-rwxr-xr-x
2024-05-23 08:36
tmpwatch
35.47
KB
-rwxr-xr-x
2019-10-12 11:32
tracepath
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
tracepath6
20.44
KB
-rwxr-xr-x
2023-10-14 17:19
trueimagemnt
850
B
-rwxr-xr-x
2025-10-16 17:25
tsig-keygen
20.46
KB
-rwxr-xr-x
2025-02-20 09:05
tune2fs
110.63
KB
-rwxr-xr-x
2025-10-07 07:08
tuned
3.88
KB
-rwxr-xr-x
2024-02-22 12:23
tuned-adm
6.5
KB
-rwxr-xr-x
2024-02-22 12:23
udevadm
424.59
KB
-rwxr-xr-x
2025-04-22 01:58
umount.nfs
197.24
KB
-rwsr-xr-x
2025-06-04 10:54
umount.nfs4
197.24
KB
-rwsr-xr-x
2025-06-04 10:54
unbound-anchor
57.34
KB
-rwxr-xr-x
2025-07-28 13:31
unix_chkpwd
36.86
KB
-rwsr-xr-x
2025-08-26 08:59
unix_update
36.87
KB
-rwx------
2025-08-26 08:59
unsquashfs
99.57
KB
-rwxr-xr-x
2024-04-06 14:17
update-alternatives
36.66
KB
-rwxr-xr-x
2023-10-14 22:48
update-smart-drivedb
14.44
KB
-rwxr-xr-x
2024-04-06 14:11
useradd
148.17
KB
-rwxr-xr-x
2024-04-06 14:00
userdel
107.29
KB
-rwxr-xr-x
2024-04-06 14:00
usermod
144.07
KB
-rwxr-xr-x
2024-04-06 14:00
usernetctl
12.4
KB
-rwxr-xr-x
2022-10-08 11:08
uuserver
15.88
KB
-rwxr-xr-x
2025-06-03 02:06
varnishd
1.61
MB
-rwxr-xr-x
2025-06-04 10:25
varnishreload
5.43
KB
-rwxr-xr-x
2025-06-04 10:25
vdpa
118.04
KB
-rwxr-xr-x
2024-05-23 08:36
vigr
68.05
KB
-rwxr-xr-x
2024-04-06 14:00
vipw
68.05
KB
-rwxr-xr-x
2024-04-06 14:00
virt-what
14.22
KB
-rwxr-xr-x
2023-10-14 20:52
visudo
239.28
KB
-rwxr-xr-x
2025-08-26 09:02
vmcore-dmesg
28.58
KB
-rwxr-xr-x
2024-09-24 08:36
vpddecode
16.47
KB
-rwxr-xr-x
2024-04-06 13:04
weak-modules
33.6
KB
-rwxr-xr-x
2024-04-08 09:18
whmapi0
3.18
MB
-rwxr-xr-x
2025-10-16 18:06
whmapi1
3.18
MB
-rwxr-xr-x
2025-10-16 18:06
whmlogin
2.33
KB
-rwxr-xr-x
2024-05-22 18:59
wipefs
41.11
KB
-rwxr-xr-x
2024-04-06 13:02
xfs_admin
1.38
KB
-rwxr-xr-x
2023-10-15 05:10
xfs_bmap
695
B
-rwxr-xr-x
2023-10-15 05:11
xfs_copy
434.59
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_db
760.47
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_estimate
12.39
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_freeze
800
B
-rwxr-xr-x
2023-10-15 05:11
xfs_fsr
53.41
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_growfs
422.48
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_info
1.26
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_io
188.28
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_logprint
454.7
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_mdrestore
410.09
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_metadump
782
B
-rwxr-xr-x
2023-10-15 05:10
xfs_mkfile
1.02
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_ncheck
685
B
-rwxr-xr-x
2023-10-15 05:10
xfs_quota
93.98
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_repair
715.24
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_rtcp
16.38
KB
-rwxr-xr-x
2023-10-15 05:11
xfs_spaceman
45.42
KB
-rwxr-xr-x
2023-10-15 05:11
xqmstats
16.45
KB
-rwxr-xr-x
2021-10-09 07:08
xtables-monitor
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
xtables-nft-multi
220.8
KB
-rwxr-xr-x
2024-04-02 18:37
zabbix_agentd
635.65
KB
-rwxr-xr-x
2025-01-27 10:11
zdump
20.57
KB
-rwxr-xr-x
2025-08-05 14:12
zic
52.83
KB
-rwxr-xr-x
2025-08-05 14:12
zramctl
99.09
KB
-rwxr-xr-x
2024-04-06 13:02
Save
Rename
#!/usr/bin/perl # # dpkg-fsys-usrunmess - Undoes the merged-/usr-via-aliased-dirs mess # # Copyright © 2020-2021 Guillem Jover <guillem@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/> use strict; use warnings; use feature qw(state); our ($PROGNAME) = $0 =~ m{(?:.*/)?([^/]*)}; our $PROGVERSION = '1.20.9'; our $ADMINDIR = '/var/lib/dpkg'; use POSIX; use Getopt::Long qw(:config posix_default bundling_values no_ignorecase); eval q{ pop @INC if $INC[-1] eq '.'; use File::FcntlLock; }; if ($@) { fatal('missing File::FcntlLock module; please install libfile-fcntllock-perl'); } my $opt_noact = length $ENV{DPKG_USRUNMESS_NOACT} ? 1 : 0; my $opt_prompt = 0; my @options_spec = ( 'help|?' => sub { usage(); exit 0; }, 'version' => sub { version(); exit 0; }, 'dry-run|no-act|n' => \$opt_noact, 'prompt|p' => \$opt_prompt, ); { local $SIG{__WARN__} = sub { usageerr($_[0]) }; GetOptions(@options_spec); } my @aliased_dirs; # # Scan all dirs under / and check whether any are aliased to /usr. # foreach my $path (glob '/*') { debug("checking symlink? $path"); next unless -l $path; debug("checking merged-usr symlink? $path"); my $symlink = readlink $path; next unless $symlink eq "usr$path" or $symlink eq "/usr$path"; debug("merged-usr breakage, queueing $path"); push @aliased_dirs, $path; } if (@aliased_dirs == 0) { print "System is fine, no aliased directories found, congrats!\n"; exit 0; } # # dpkg consistency checks # debug('checking dpkg database consistency'); system(qw(dpkg --audit)) == 0 or fatal("cannot audit the dpkg database: $!"); debug('checking whether dpkg has been interrupted'); if (glob "$ADMINDIR/updates/*") { fatal('dpkg is in an inconsistent state, please fix that'); } my $aliased_regex = '^(' . join('|', @aliased_dirs) . ')/'; # # Get a list of all paths (including diversion) under the aliased dirs. # my @search_args; my %aliased_pathnames; foreach my $dir (@aliased_dirs) { push @search_args, "$dir/*"; } open my $fh_paths, '-|', 'dpkg-query', '--search', @search_args or fatal("cannot execute dpkg-query --search: $!"); while (<$fh_paths>) { if (m/^diversion by [^ ]+ from: .*$/) { # Ignore. } elsif (m/^diversion by [^ ]+ to: (.*)$/) { if (-e $1) { add_pathname($1, 'diverted pathname'); } } elsif (m/^.*: (.*)$/) { add_pathname($1, 'pathname'); } } close $fh_paths; # # Get a list of all update-alternatives under the aliased dirs. # my @selections = qx(update-alternatives --get-selections); foreach my $selection (@selections) { my $name = (split(' ', $selection))[0]; my $slaves = 0; open my $fh_alts, '-|', 'update-alternatives', '--query', $name or fatal("cannot execute update-alternatives --query: $!"); while (<$fh_alts>) { if (m/^\s*$/) { last; } elsif (m/^Link: (.*)$/) { add_pathname($1, 'alternative link'); } elsif (m/^Slaves:\s*$/) { $slaves = 1; } elsif ($slaves and m/^\s\S+\s(\S+)$/) { add_pathname($1, 'alternative slave'); } else { $slaves = 0; } } close $fh_alts; } my $sroot = '/.usrunmess'; my @relabel; # # Create a shadow hierarchy under / for the new unmessed dir: # debug("creating shadow dir = $sroot"); mkdir $sroot or sysfatal("cannot create directory $sroot"); foreach my $dir (@aliased_dirs) { debug("creating shadow dir = $sroot$dir"); mkdir "$sroot$dir" or sysfatal("cannot create directory $sroot$dir"); push @relabel, "$sroot$dir"; } # # Populate the split dirs with hardlinks or copies of the objects from # their counter-parts in /usr. # foreach my $pathname (sort keys %aliased_pathnames) { my (@meta) = lstat $pathname or sysfatal("cannot lstat object $pathname for shadow hierarchy"); if (-d _) { my $mode = $meta[2]; my ($uid, $gid) = @meta[4, 5]; my ($atime, $mtime, $ctime) = @meta[8, 9, 10]; debug("creating shadow dir = $sroot$pathname"); mkdir "$sroot$pathname" or sysfatal("cannot mkdir $sroot$pathname"); chmod $mode, "$sroot$pathname" or sysfatal("cannot chmod $mode $sroot$pathname"); chown $uid, $gid, "$sroot$pathname" or sysfatal("cannot chown $uid $gid $sroot$pathname"); utime $atime, $mtime, "$sroot$pathname" or sysfatal("cannot utime $atime $mtime $sroot$pathname"); push @relabel, "$sroot$pathname"; } elsif (-f _) { debug("creating shadow file = $sroot$pathname"); copy("/usr$pathname", "$sroot$pathname"); } elsif (-l _) { my $target = readlink "/usr$pathname"; debug("creating shadow symlink = $sroot$pathname"); symlink $target, "$sroot$pathname" or sysfatal("cannot symlink $target to $sroot$pathname"); push @relabel, "$sroot$pathname"; } else { fatal("unhandled object type for '$pathname'"); } } # # Prompt at the point of no return, if the user requested it. # if ($opt_prompt) { print "Shadow hierarchy created at '$sroot', ready to proceed (y/N)? "; my $reply = <STDIN>; chomp $reply; if ($reply ne 'y' and $reply ne 'yes') { print "Aborting migration, shadow hierarchy left in place.\n"; exit 0; } } # # Mark all packages as half-configured so that we can force a mass # reconfiguration, to trigger any code in maintainer scripts that might # create files. # # XXX: We do this manually by editing the status file. # XXX: We do this for packages that might not have maintscripts, or might # not involve affected directories. # debug('marking all dpkg packages as half-configured'); if (not $opt_noact) { open my $fh_lock, '>', "$ADMINDIR/lock" or sysfatal('cannot open dpkg database lock file'); my $fs = File::FcntlLock->new(l_type => F_WRLCK); $fs->lock($fh_lock, F_SETLKW) or sysfatal('cannot get a write lock on dpkg database'); my $file_db = "$ADMINDIR/status"; my $file_dbnew = $file_db . '.new'; open my $fh_dbnew, '>', $file_dbnew or sysfatal('cannot open new dpkg database'); open my $fh_db, '<', $file_db or sysfatal('cannot open dpkg database'); while (<$fh_db>) { if (m/^Status: /) { s/ installed$/ half-configured/; } print { $fh_dbnew } $_; } close $fh_db; $fh_dbnew->flush() or sysfatal('cannot flush new dpkg database'); $fh_dbnew->sync() or sysfatal('cannot fsync new dpkg database'); close $fh_dbnew or sysfatal('cannot close new dpkg database'); rename $file_dbnew, $file_db or sysfatal('cannot rename new dpkg database'); } # # Replace things as quickly as possible: # foreach my $dir (@aliased_dirs) { debug("making dir backup = $dir.aliased"); if (not $opt_noact) { rename $dir, "$dir.aliased" or sysfatal("cannot make backup directory $dir.aliased"); } debug("renaming $sroot$dir to $dir"); if (not $opt_noact) { rename "$sroot$dir", $dir or sysfatal("cannot install fixed directory $dir"); } } mac_relabel(); # # Re-configure all packages, so that postinst maintscripts are executed. # debug('reconfigured all packages'); if (not $opt_noact) { local $ENV{DEBIAN_FRONTEND} = 'noninteractive'; system(qw(dpkg --configure --pending)) == 0 or fatal("cannot reconfigure packages: $!"); } # # Cleanup backup directories. # foreach my $dir (@aliased_dirs) { debug("removing backup = $dir.aliased"); if (not $opt_noact) { unlink "$dir.aliased" or sysfatal("cannot cleanup backup directory $dir.aliased"); } } my %deferred_dirnames; # # Cleanup moved objects. # foreach my $pathname (sort keys %aliased_pathnames) { my (@meta) = lstat $pathname or sysfatal("cannot lstat object $pathname for cleanup"); if (-d _) { # Skip directories as this might be shared by a proper path under the # aliased hierearchy. And so that we can remove them in reverse order. debug("deferring merged dir cleanup = /usr$pathname"); $deferred_dirnames{"/usr$pathname"} = 1; } else { debug("cleaning up pathname = /usr$pathname"); next if $opt_noact; unlink "/usr$pathname" or sysfatal("cannot unlink object /usr$pathname"); } } # # Cleanup deferred directories. # debug("cleaning up shadow deferred dir = $sroot"); my $arg_max = POSIX::sysconf(POSIX::_SC_ARG_MAX) // POSIX::_POSIX_ARG_MAX; my @batch_dirs; my $batch_size = 0; foreach my $dir (keys %deferred_dirnames) { my $dir_size = length($dir) + 1; if ($batch_size + $dir_size < $arg_max) { $batch_size += length($dir) + 1; push @batch_dirs, $dir; } else { next; } next if length $batch_size == 0; open my $fh_dirs, '-|', 'dpkg-query', '--search', @batch_dirs or fatal("cannot execute dpkg-query --search: $!"); while (<$fh_dirs>) { if (m/^.*: (.*)$/) { # If the directory is known by its aliased name, it should not be # cleaned up. if (exists $deferred_dirnames{$1}) { delete $deferred_dirnames{$1}; } } } close $fh_dirs; @batch_dirs = (); $batch_size = 0; } if (not $opt_noact) { foreach my $dirname (reverse sort keys %deferred_dirnames) { rmdir $dirname or sysfatal("cannot remove shadow directory $dirname"); } } if (not $opt_noact) { debug("cleaning up shadow root dir = $sroot"); rmdir $sroot or sysfatal("cannot remove shadow directory $sroot"); } print "Done, hierarchy unmessed, congrats!\n"; print "(Note: you might need to run 'hash -r' in your shell.)\n"; 1; ## ## Functions ## sub debug { my $msg = shift; print { \*STDERR } "D: $msg\n"; } sub fatal { my $msg = shift; die "error: $msg\n"; } sub sysfatal { my $msg = shift; fatal("$msg: $!"); } sub copy { my ($src, $dst) = @_; # Try to hardlink first. return if link $src, $dst; # If we are on different filesystems, try a copy. if ($! == POSIX::EXDEV) { # XXX: This will not preserve hardlinks, these would get restored # after the next package upgrade. system('cp', '-a', $src, $dst) == 0 or fatal("cannot copy file $src to $dst: $?"); } else { sysfatal("cannot link file $src to $dst"); } } sub mac_relabel { my $has_cmd = 0; foreach my $path (split /:/, $ENV{PATH}) { if (-x "$path/restorecon") { $has_cmd = 1; last; } } return unless $has_cmd; foreach my $pathname (@relabel) { system('restorecon', $pathname) == 0 or fatal("cannot restore MAC context for $pathname: $?"); } } sub add_pathname { my ($pathname, $origin) = @_; if ($pathname =~ m/$aliased_regex/) { debug("adding $origin = $pathname"); $aliased_pathnames{$pathname} = 1; } } sub version() { printf "Debian %s version %s.\n", $PROGNAME, $PROGVERSION; } sub usage { printf 'Usage: %s [<option>...]' . "\n\n" . 'Options: -p, --prompt prompt before the point of no return. -n, --no-act just check and create the new structure, no switch. --dry-run ditto. -?, --help show this help message. --version show the version.' . "\n", $PROGNAME; } sub usageerr { my $msg = shift; state $printforhelp = 'Use --help for program usage information.'; $msg = sprintf $msg, @_ if @_; warn "$PROGNAME: error: $msg\n"; warn "$printforhelp\n"; exit 2; }