OXIESEC PANEL
- Current Dir:
/
/
usr
/
bin
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/21/2019 03:48:12 PM
rwxr-xr-x
📄
411toppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
NF
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
VGAuthService
126.22 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📁
X11
-
03/17/2025 09:32:20 AM
rwxr-xr-x
📄
[
50.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
aa-enabled
22.16 KB
06/20/2023 11:51:13 PM
rwxr-xr-x
📄
aa-exec
22.16 KB
06/20/2023 11:51:13 PM
rwxr-xr-x
📄
ab
54.18 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
aclocal
35.93 KB
03/25/2018 11:44:27 PM
rwxr-xr-x
📄
aclocal-1.15
35.93 KB
03/25/2018 11:44:27 PM
rwxr-xr-x
📄
acpi_listen
14.27 KB
04/28/2017 04:28:10 AM
rwxr-xr-x
📄
add-apt-repository
7.24 KB
02/16/2023 08:10:38 PM
rwxr-xr-x
📄
addpart
22.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
addr2line
30.55 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
animate
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
animate-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
animate-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
anytopnm
5.55 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
apport-bug
2.5 KB
11/11/2019 09:57:56 PM
rwxr-xr-x
📄
apport-cli
13.05 KB
04/12/2023 05:53:49 PM
rwxr-xr-x
📄
apport-collect
2.5 KB
11/11/2019 09:57:56 PM
rwxr-xr-x
📄
apport-unpack
1.81 KB
04/12/2023 05:53:49 PM
rwxr-xr-x
📄
appres
9.99 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
apropos
46.98 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
apt
14.09 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-add-repository
7.24 KB
02/16/2023 08:10:38 PM
rwxr-xr-x
📄
apt-cache
78.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-cdrom
22.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-config
22.09 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-extracttemplates
22.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-ftparchive
234.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-get
42.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-key
26.75 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-mark
42.16 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
apt-sortpkgs
42.09 KB
08/12/2022 10:38:33 AM
rwxr-xr-x
📄
ar
58.24 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
arch
34.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
as
895.98 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
asciitopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
at
50.26 KB
02/20/2018 06:59:43 AM
rwxr-xr-x
📄
atktopbm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
atq
50.26 KB
02/20/2018 06:59:43 AM
rwxr-xr-x
📄
atrm
50.26 KB
02/20/2018 06:59:43 AM
rwxr-xr-x
📄
autoconf
14.42 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
autoheader
8.34 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
autom4te
31.91 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
automake
247.38 KB
03/25/2018 11:44:27 PM
rwxr-xr-x
📄
automake-1.15
247.38 KB
03/25/2018 11:44:27 PM
rwxr-xr-x
📄
automat-visualize3
402 bytes
08/28/2017 08:55:39 AM
rwxr-xr-x
📄
autopoint
25.97 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
autoreconf
20.67 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
autoscan
16.73 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
autoupdate
33.08 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
awk
642.65 KB
02/11/2018 05:02:41 AM
rwxr-xr-x
📄
b2sum
54.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
base32
38.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
base64
38.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
basename
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
bashbug
6.95 KB
04/18/2022 03:08:18 PM
rwxr-xr-x
📄
batch
152 bytes
02/20/2018 06:59:43 AM
rwxr-xr-x
📄
bc
90.7 KB
03/22/2018 04:20:34 PM
rwxr-xr-x
📄
bioradtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
bmptopnm
13.91 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
bmptoppm
13.91 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
bootctl
34.13 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
broadwayd
114.08 KB
06/05/2019 01:46:01 PM
rwxr-xr-x
📄
brushtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
bsd-from
9.99 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
bsd-write
13.99 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
busctl
66.09 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
byobu
8.07 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-config
996 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-ctrl-a
4.66 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-disable
1.26 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-disable-prompt
1.28 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-enable
1.15 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-enable-prompt
1.42 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-export
1.23 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-janitor
5.82 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-keybindings
1.47 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-launch
3.21 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-launcher
1.87 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-launcher-install
2.4 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-launcher-uninstall
1.52 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-layout
3.27 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-prompt
1.13 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-quiet
1.38 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-reconnect-sockets
3.22 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-screen
8.07 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-select-backend
1.42 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-select-profile
6.14 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-select-session
1012 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-shell
1.56 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-silent
1.28 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-status
5.87 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-status-detail
1.18 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-tmux
8.07 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-ugraph
4.56 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
byobu-ulevel
11.71 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
c++
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
c++filt
26.12 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
c89
428 bytes
05/07/2006 09:28:01 AM
rwxr-xr-x
📄
c89-gcc
428 bytes
05/07/2006 09:28:01 AM
rwxr-xr-x
📄
c99
454 bytes
04/11/2011 07:54:37 AM
rwxr-xr-x
📄
c99-gcc
454 bytes
04/11/2011 07:54:37 AM
rwxr-xr-x
📄
c_rehash
6.65 KB
05/24/2023 05:14:51 PM
rwxr-xr-x
📄
cal
28.79 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
calendar
30.48 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
captoinfo
82.11 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
catchsegv
3.25 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
catman
38.46 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
cautious-launcher
853 bytes
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
cc
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
certbot
23.88 MB
05/29/2023 12:10:12 PM
rwxr-xr-x
📄
cftp3
380 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
chacl
13.99 KB
04/21/2017 08:44:54 PM
rwxr-xr-x
📄
chage
70.13 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
chardet3
389 bytes
06/18/2017 09:51:08 PM
rwxr-xr-x
📄
chardetect3
389 bytes
06/18/2017 09:51:08 PM
rwxr-xr-x
📄
chattr
14 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
📄
chcon
62.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
check-language-support
2.71 KB
06/28/2019 05:12:00 PM
rwxr-xr-x
📄
checkgid
5.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
chfn
74.7 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
chrt
30.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
chsh
43.48 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
ckbcomp
146.33 KB
04/23/2019 12:04:14 PM
rwxr-xr-x
📄
ckeygen3
386 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
cksum
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
clear
10 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
clear_console
10.07 KB
04/18/2022 03:08:18 PM
rwxr-xr-x
📄
cloud-id
396 bytes
04/21/2023 07:44:30 PM
rwxr-xr-x
📄
cloud-init
400 bytes
04/21/2023 07:44:30 PM
rwxr-xr-x
📄
cloud-init-per
2.06 KB
04/20/2023 09:31:09 PM
rwxr-xr-x
📄
cmake
5.08 MB
04/04/2021 02:10:12 PM
rwxr-xr-x
📄
cmp
46.09 KB
08/04/2017 09:20:16 PM
rwxr-xr-x
📄
cmuwmtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
codepage
13.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
col
9.99 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
col1
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col2
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col3
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col4
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col5
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col6
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col7
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col8
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
col9
963 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
colcrt
10 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
colrm
9.99 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
column
14.01 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
comm
38.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
compare
9.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
compare-im6
9.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
compare-im6.q16
9.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
compose
17.74 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
composer
2.86 MB
07/20/2024 07:07:27 AM
rwxr-xr-x
📄
composite
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
composite-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
composite-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
conch3
382 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
conjure
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
conjure-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
conjure-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
convert
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
convert-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
convert-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
corelist
12.53 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
cpack
5.31 MB
04/04/2021 02:10:12 PM
rwxr-xr-x
📄
cpan
7.96 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
cpan5.26-x86_64-linux-gnu
7.99 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
cpio-filter
1.22 KB
05/06/2017 06:08:07 PM
rwxr-xr-x
📄
cpp
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
cpp-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
crc32
1.04 KB
07/03/2018 06:29:39 PM
rwxr-xr-x
📄
crontab
38.43 KB
05/10/2022 08:59:19 PM
rwxr-xr-x
📄
cs2cs
18.01 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
csplit
50.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
ctail
958 bytes
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
ctest
6.22 MB
04/04/2021 02:10:12 PM
rwxr-xr-x
📄
ctstat
22.35 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
curl
218.07 KB
03/15/2023 12:58:03 PM
rwxr-xr-x
📄
cut
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
dbilogstrip
1.35 KB
07/30/2021 11:25:50 AM
rwxr-xr-x
📄
dbiprof
6.06 KB
07/30/2021 11:25:50 AM
rwxr-xr-x
📄
dbiproxy
5.27 KB
07/30/2021 11:25:50 AM
rwxr-xr-x
📄
dbus-cleanup-sockets
9.98 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-daemon
231.04 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-monitor
21.99 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-run-session
9.98 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-send
25.98 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-update-activation-environment
13.98 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
dbus-uuidgen
9.98 KB
10/25/2022 01:03:19 PM
rwxr-xr-x
📄
deallocvt
10.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
deb-systemd-helper
19.67 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
📄
deb-systemd-invoke
4.33 KB
10/25/2017 03:38:42 PM
rwxr-xr-x
📄
debconf
2.79 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-apt-progress
11.27 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-communicate
608 bytes
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-copydb
1.68 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-escape
647 bytes
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-gettextize
15.97 KB
10/01/2016 02:23:03 PM
rwxr-xr-x
📄
debconf-set-selections
2.87 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-show
1.78 KB
05/06/2019 04:30:30 PM
rwxr-xr-x
📄
debconf-updatepo
4.46 KB
10/01/2016 02:23:03 PM
rwxr-xr-x
📄
debian-distro-info
18.59 KB
03/07/2019 07:34:01 PM
rwxr-xr-x
📄
delpart
22.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
delv
40.86 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
derb
22.57 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
dh
28.43 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_auto_build
1.35 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_auto_clean
1.49 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_auto_configure
1.6 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_auto_install
2.77 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_auto_test
1.63 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_autoreconf
5.94 KB
03/21/2018 10:43:37 PM
rwxr-xr-x
📄
dh_autoreconf_clean
2.1 KB
03/21/2018 10:43:37 PM
rwxr-xr-x
📄
dh_autotools-dev_restoreconfig
1.79 KB
02/24/2018 04:00:57 PM
rwxr-xr-x
📄
dh_autotools-dev_updateconfig
1.81 KB
02/24/2018 04:00:57 PM
rwxr-xr-x
📄
dh_bash-completion
2.49 KB
04/02/2018 02:16:46 AM
rwxr-xr-x
📄
dh_bugfiles
3.57 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_builddeb
4.96 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_clean
4.89 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_compress
7.05 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_dwz
2.9 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_fixperms
5.25 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_gconf
2.62 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_gencontrol
5.85 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_icons
2.03 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_install
11.22 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installcatalogs
3.23 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installchangelogs
6.08 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installcron
1.58 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installdeb
7.63 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installdebconf
3.2 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installdirs
1.95 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installdocs
14.66 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installemacsen
3.69 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installexamples
5.3 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installgsettings
2.18 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installifupdown
1.45 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installinfo
2.85 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installinit
13.3 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installlogcheck
1.92 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installlogrotate
1.12 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installman
11.04 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installmanpages
4.89 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installmenu
2.14 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installmime
1.29 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installmodules
2.62 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installpam
1.12 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installppp
1.37 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installsystemd
12.74 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installudev
2.04 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installwm
3.05 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_installxfonts
2.9 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_link
4.23 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_lintian
1.28 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_listpackages
756 bytes
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_makeshlibs
9.01 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_md5sums
2.99 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_missing
5.99 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_movefiles
4.69 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_numpy3
1.94 KB
12/05/2017 04:44:50 AM
rwxr-xr-x
📄
dh_perl
4.23 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_perl_dbi
1.04 KB
07/30/2021 11:25:50 AM
rwxr-xr-x
📄
dh_prep
1.87 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_pypy
12.58 KB
03/26/2018 07:42:23 PM
rwxr-xr-x
📄
dh_python3
12.78 KB
03/26/2018 07:42:23 PM
rwxr-xr-x
📄
dh_shlibdeps
6.13 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_strip
13.94 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_strip_nondeterminism
2.67 KB
03/30/2018 06:45:49 AM
rwxr-xr-x
📄
dh_systemd_enable
8.97 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_systemd_start
8.31 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_testdir
1.3 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_testroot
1.91 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_ucf
2.27 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_update_autotools_config
1.84 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
dh_usrlocal
3.68 KB
05/10/2018 09:11:57 AM
rwxr-xr-x
📄
diff
142.34 KB
08/04/2017 09:20:16 PM
rwxr-xr-x
📄
diff3
62.21 KB
08/04/2017 09:20:16 PM
rwxr-xr-x
📄
dig
146.51 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
dircolors
46.19 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
dirmngr
533.55 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
dirmngr-client
106.76 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
dirname
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
display
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
display-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
display-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
distro-info
18.59 KB
03/07/2019 07:34:01 PM
rwxr-xr-x
📄
do-release-upgrade
9.39 KB
09/03/2021 05:16:06 PM
rwxr-xr-x
📄
dos2unix
50.02 KB
11/11/2016 04:13:44 AM
rwxr-xr-x
📄
dotlock
10.7 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
dotlock.mailutils
10.7 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
dpkg
290.5 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-architecture
12.55 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-buildflags
7.39 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-buildpackage
29.1 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-checkbuilddeps
7.33 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-deb
150.34 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-distaddfile
2.72 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-divert
138.41 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-genbuildinfo
16.38 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-genchanges
17.21 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-gencontrol
13.73 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-gensymbols
10.38 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-maintscript-helper
18.58 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-mergechangelogs
8.39 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-name
6.63 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-parsechangelog
4.33 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-query
146.4 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-scanpackages
8.23 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-scansources
8.95 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-shlibdeps
30.63 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-source
22.75 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-split
118.34 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-statoverride
70.25 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-trigger
66.26 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
dpkg-vendor
3.19 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
du
98.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
dumpiso
10.2 KB
04/26/2016 10:10:24 PM
rwxr-xr-x
📄
dumpkeys
166.52 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
dvipdf
1023 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
dwp
2.75 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
eatmydata
2.74 KB
03/09/2018 06:37:20 PM
rwxr-xr-x
📄
ec2metadata
7.13 KB
04/13/2018 01:07:55 PM
rwxr-xr-x
📄
edit
17.74 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
editor
240.11 KB
03/06/2018 02:46:39 PM
rwxr-xr-x
📄
editres
68.4 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
eject
30.69 KB
03/28/2017 04:22:15 AM
rwxr-xr-x
📄
elfedit
30.45 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
enc2xs
41.17 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
encguess
2.99 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
env
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
envsubst
34.08 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
eps2eps
639 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
eqn
193.19 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
erb
4.72 KB
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
erb2.5
4.72 KB
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
ex
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
expand
38.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
expiry
22.27 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
expr
46.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
eyuvtoppm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
f2py3
758 bytes
12/05/2017 02:32:02 PM
rwxr-xr-x
📄
f2py3.6
760 bytes
12/05/2017 02:32:02 PM
rwxr-xr-x
📄
f77
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
f95
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
factor
74.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
faillog
18.29 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
faked-sysv
26.11 KB
01/08/2018 04:05:31 PM
rwxr-xr-x
📄
faked-tcp
30.1 KB
01/08/2018 04:05:31 PM
rwxr-xr-x
📄
fakeroot
3.76 KB
01/08/2018 04:05:31 PM
rwxr-xr-x
📄
fakeroot-sysv
3.76 KB
01/08/2018 04:05:31 PM
rwxr-xr-x
📄
fakeroot-tcp
3.76 KB
01/08/2018 04:05:31 PM
rwxr-xr-x
📄
fallocate
26.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
fc-cache
14.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-cat
14.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-list
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-match
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-pattern
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-query
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-scan
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fc-validate
10.07 KB
04/05/2018 04:13:52 PM
rwxr-xr-x
📄
fcgistarter
9.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
ffmpeg
266.14 KB
05/18/2022 08:01:02 PM
rwxr-xr-x
📄
ffplay
134.16 KB
05/18/2022 08:01:02 PM
rwxr-xr-x
📄
ffprobe
158.15 KB
05/18/2022 08:01:02 PM
rwxr-xr-x
📄
ffserver
139.27 KB
05/18/2022 08:01:02 PM
rwxr-xr-x
📄
fi_info
18.07 KB
01/04/2018 01:21:40 PM
rwxr-xr-x
📄
fi_pingpong
46 KB
01/04/2018 01:21:40 PM
rwxr-xr-x
📄
fi_strerror
9.99 KB
01/04/2018 01:21:40 PM
rwxr-xr-x
📄
fiascotopnm
114.45 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
file
22.26 KB
05/12/2020 01:31:09 PM
rwxr-xr-x
📄
find
232.5 KB
11/05/2017 05:16:48 PM
rwxr-xr-x
📄
fitstopnm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
flock
30.16 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
fmt
42.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
fold
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
free
18.08 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
freetype-config
4.62 KB
07/19/2022 04:39:11 PM
rwxr-xr-x
📄
frm
23 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
frm.mailutils
23 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
from
22.55 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
from.mailutils
22.55 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
fstopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ftp
98.7 KB
12/06/2016 03:23:57 PM
rwxr-xr-x
📄
funzip
21.99 KB
10/07/2022 05:08:33 PM
rwxr-xr-x
📄
futurize
384 bytes
02/05/2018 01:53:29 PM
rwxr-xr-x
📄
g++
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
g++-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
g3topbm
12.98 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
gapplication
18.07 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gawk
642.65 KB
02/11/2018 05:02:41 AM
rwxr-xr-x
📄
gcc
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-ar
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-ar-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-nm
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-nm-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-ranlib
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcc-ranlib-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov
616.09 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov-7
616.09 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov-dump
499.93 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov-dump-7
499.93 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov-tool
535.99 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gcov-tool-7
535.99 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gdbus
42.08 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gdbus-codegen
2 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gdk-pixbuf-csource
10.01 KB
03/16/2018 10:57:57 AM
rwxr-xr-x
📄
gdk-pixbuf-pixdata
9.99 KB
03/16/2018 10:57:57 AM
rwxr-xr-x
📄
gdk-pixbuf-query-loaders
13.99 KB
03/16/2018 10:57:57 AM
rwxr-xr-x
📄
gdk-pixbuf-thumbnailer
14.08 KB
03/16/2018 10:57:57 AM
rwxr-xr-x
📄
gem
545 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
gem2.5
545 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
gemtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
gemtopnm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
genbrk
14.48 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
gencat
22.22 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
gencfu
10.43 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
gencnval
22.32 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
gendict
22.55 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
genrb
123.59 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
geod
14.01 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
geqn
193.19 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
getconf
30.13 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
getent
30.49 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
getfacl
22.62 KB
04/21/2017 08:44:54 PM
rwxr-xr-x
📄
getkeycodes
10.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
getopt
14.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
gettext
34.08 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
gettext.sh
4.52 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
gettextize
42.73 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
gfortran
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
gfortran-7
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
ghostscript
9.99 KB
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
giftopnm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ginstall-info
43.09 KB
02/05/2018 02:48:18 PM
rwxr-xr-x
📄
gio
78.09 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gio-querymodules
9.99 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
git
2.27 MB
04/26/2023 02:14:45 PM
rwxr-xr-x
📄
git-receive-pack
2.27 MB
04/26/2023 02:14:45 PM
rwxr-xr-x
📄
git-shell
1.26 MB
04/26/2023 02:14:45 PM
rwxr-xr-x
📄
git-upload-archive
2.27 MB
04/26/2023 02:14:45 PM
rwxr-xr-x
📄
git-upload-pack
1.27 MB
04/26/2023 02:14:45 PM
rwxr-xr-x
📄
glib-compile-resources
38.07 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
glib-compile-schemas
42.07 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
glib-genmarshal
39.97 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
glib-gettextize
5.25 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
glib-mkenums
27.15 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gobject-query
10 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gold
2.97 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
gouldtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
gpasswd
74.05 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
gpg
997.6 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpg-agent
392.7 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpg-connect-agent
154.85 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpg-wks-server
187.02 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpg-zip
3.36 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpgconf
166.32 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpgparsemail
26.07 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpgsm
491.09 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpgsplit
78.45 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpgv
427.02 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
gpic
204.03 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
gprof
99.73 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
gresource
17.99 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
groff
105.31 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
grog
2.71 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
grops
165.72 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
grotty
121.34 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
groups
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
growpart
21.37 KB
04/13/2018 01:07:55 PM
rwxr-xr-x
📄
grub-editenv
239.93 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-file
659.79 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-fstest
789.65 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-glue-efi
235.77 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-kbdcomp
1.64 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-menulst2cfg
216.04 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkfont
264.34 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkimage
328.84 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mklayout
240.09 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mknetdir
373.41 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkpasswd-pbkdf2
244.12 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkrelpath
235.49 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkrescue
822.23 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mkstandalone
449.74 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-mount
608.21 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-render-label
676.16 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-script-check
259.62 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
grub-syslinux2cfg
624.68 KB
02/01/2023 05:49:01 PM
rwxr-xr-x
📄
gs
9.99 KB
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gsbj
350 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gsdj
352 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gsdj500
352 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gsettings
26.07 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gslj
353 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gslp
350 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gsnd
277 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
gtbl
126.2 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
gtester
22.01 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gtester-report
18.39 KB
11/29/2021 04:42:57 PM
rwxr-xr-x
📄
gtk-builder-tool
26.42 KB
06/05/2019 01:46:01 PM
rwxr-xr-x
📄
gtk-launch
14.15 KB
06/05/2019 01:46:01 PM
rwxr-xr-x
📄
gtk-query-settings
9.99 KB
06/05/2019 01:46:01 PM
rwxr-xr-x
📄
gtk-update-icon-cache
30.47 KB
06/05/2019 01:46:01 PM
rwxr-xr-x
📄
h2ph
28.54 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
h2xs
59.44 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
hd
26.1 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
head
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
helpztags
2.46 KB
02/02/2018 08:37:32 PM
rwxr-xr-x
📄
hexdump
26.1 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
hipstopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
host
126.66 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
hostid
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
hostnamectl
18.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
htcacheclean
30 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
htdbm
21.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
htdigest
13.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
htop
180.68 KB
02/17/2018 06:27:46 PM
rwxr-xr-x
📄
htpasswd
17.99 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
hwe-support-status
10.58 KB
09/11/2024 11:36:31 AM
rwxr-xr-x
📄
i386
18.34 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
icontopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
iconv
62.25 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
icu-config
21.66 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
icuinfo
10.32 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
id
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
identify
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
identify-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
identify-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
ifnames
4.03 KB
08/20/2017 06:17:16 PM
rwxr-xr-x
📄
igawk
3.11 KB
02/11/2018 05:02:41 AM
rwxr-xr-x
📄
ilbmtoppm
77.95 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
imagetops
1.21 KB
04/23/2016 11:53:13 AM
rwxr-xr-x
📄
imgtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
import
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
import-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
import-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
info
245.72 KB
02/05/2018 02:48:18 PM
rwxr-xr-x
📄
infobrowser
245.72 KB
02/05/2018 02:48:18 PM
rwxr-xr-x
📄
infocmp
58.07 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
infotocap
82.11 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
innochecksum
3.52 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
install
142.25 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
install-info
43.09 KB
02/05/2018 02:48:18 PM
rwxr-xr-x
📄
instmodsh
4.27 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
invgeod
14.01 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
invproj
22.01 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
ionice
26.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
ipcmk
26.14 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
ipcrm
26.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
ipcs
50.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
iptables-xml
92.74 KB
05/09/2023 06:42:18 PM
rwxr-xr-x
📄
irb
189 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
irb2.5
189 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
ischroot
10.04 KB
12/30/2017 06:15:02 PM
rwxr-xr-x
📄
iscsiadm
381.95 KB
04/06/2022 07:19:56 PM
rwxr-xr-x
📄
isql
30.01 KB
03/26/2018 02:37:19 PM
rwxr-xr-x
📄
iusql
22 KB
03/26/2018 02:37:19 PM
rwxr-xr-x
📄
java
10.03 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
jexec
10.02 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
jjs
10.08 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
join
46.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
jpegtopnm
29.95 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
json_pp
3.87 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
jsondiff
1018 bytes
10/28/2017 08:10:15 PM
rwxr-xr-x
📄
jsonlint-php
2.61 KB
02/12/2018 10:26:31 PM
rwxr-xr-x
📄
jsonpatch
3.58 KB
10/28/2017 08:10:15 PM
rwxr-xr-x
📄
jsonpointer
1.31 KB
05/01/2016 11:14:11 PM
rwxr-xr-x
📄
jsonschema
398 bytes
11/15/2017 07:43:29 PM
rwxr-xr-x
📄
kbdinfo
14.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
kbxutil
158.69 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
keep-one-running
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
kernel-install
4.4 KB
01/28/2018 03:58:17 PM
rwxr-xr-x
📄
keyring
385 bytes
01/09/2018 12:15:19 PM
rwxr-xr-x
📄
keytool
10.05 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
killall
27.12 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
kmodsign
14.13 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
landscape-sysinfo
624 bytes
11/18/2020 12:06:42 AM
rwxr-xr-x
📄
last
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lastb
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lastlog
18.07 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
lcf
7.6 KB
02/26/2018 12:58:23 AM
rwxr-xr-x
📄
ld
1.7 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
ld.bfd
1.7 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
ld.gold
2.97 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
ldapadd
74.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapcompare
62.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapdelete
62.19 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapexop
62.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapmodify
74.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapmodrdn
62.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldappasswd
62.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapsearch
86.19 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapurl
18 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldapwhoami
62.16 KB
05/12/2022 01:52:38 PM
rwxr-xr-x
📄
ldd
5.29 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
leaftoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
less
166.76 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
lessecho
10.02 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
lessfile
8.36 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
lesskey
19.39 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
lesspipe
8.36 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
lexgrog
90.57 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
libnetcfg
15.41 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
libpng-config
2.41 KB
04/30/2019 02:56:15 PM
rwxr-xr-x
📄
libpng16-config
2.41 KB
04/30/2019 02:56:15 PM
rwxr-xr-x
📄
libtoolize
126.16 KB
08/20/2016 12:34:31 PM
rwxr-xr-x
📄
link
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
linux-boot-prober
1.54 KB
01/21/2017 03:43:27 PM
rwxr-xr-x
📄
linux-check-removal
3.99 KB
06/21/2016 02:48:57 AM
rwxr-xr-x
📄
linux-update-symlinks
6.17 KB
06/05/2016 01:13:24 AM
rwxr-xr-x
📄
linux-version
2.63 KB
07/07/2021 08:34:36 PM
rwxr-xr-x
📄
linux32
18.34 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
linux64
18.34 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lispmtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
listres
10.41 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
lnstat
22.35 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
loadkeys
206.57 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
loadunimap
26.13 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
locale
49.41 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
locale-check
10 KB
01/02/2024 05:19:18 PM
rwxr-xr-x
📄
localectl
22.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
localedef
330.8 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
locate
42.08 KB
03/01/2018 04:07:16 PM
rwxr-xr-x
📄
logger
46.67 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
logname
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
logresolve
10 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
look
10.23 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
lorder
2.82 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
lsattr
10 KB
06/02/2022 02:37:00 PM
rwxr-xr-x
📄
lsb_release
3.55 KB
08/07/2017 09:55:07 PM
rwxr-xr-x
📄
lscpu
70.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lshw
682.95 KB
12/17/2020 09:34:41 AM
rwxr-xr-x
📄
lsinitramfs
625 bytes
03/18/2021 06:48:17 PM
rwxr-xr-x
📄
lsipc
70.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lslocks
34.41 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lslogins
62.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lsmem
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lsns
38.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
lsof
159.4 KB
10/28/2015 04:57:56 PM
rwxr-xr-x
📄
lspci
79.67 KB
02/10/2019 06:25:12 PM
rwxr-xr-x
📄
lspgpot
1.06 KB
08/28/2017 10:22:54 AM
rwxr-xr-x
📄
lsusb
114.43 KB
04/21/2017 08:59:17 PM
rwxr-xr-x
📄
ltrace
325.21 KB
10/13/2016 06:20:41 AM
rwxr-xr-x
📄
luit
48.12 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
lxc
10.28 MB
03/24/2022 04:18:01 PM
rwxr-xr-x
📄
lxcfs
18.07 KB
06/07/2022 04:31:21 PM
rwxr-xr-x
📄
lxd
105 bytes
03/24/2022 04:18:01 PM
rwxr-xr-x
📄
lzcat
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzcmp
6.48 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzdiff
6.48 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzegrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzfgrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzgrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzless
1.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzma
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzmainfo
10.07 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
lzmore
2.11 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
m4
154.3 KB
01/05/2017 06:01:38 PM
rwxr-xr-x
📄
mac2unix
50.02 KB
11/11/2016 04:13:44 AM
rwxr-xr-x
📄
macptopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
mail
192.58 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
mail.mailutils
192.58 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
mailq
26.15 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
📄
mailutils
14.32 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
mailx
192.58 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
make
217.57 KB
04/17/2018 12:12:28 PM
rwxr-xr-x
📄
make-first-existing-target
4.79 KB
04/17/2018 12:12:28 PM
rwxr-xr-x
📄
makeconv
46.77 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
man
104.5 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
mandb
126.72 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
manifest
1.9 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
manpath
30.47 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
mapscrn
22.13 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
mawk
122.48 KB
04/03/2018 12:34:18 PM
rwxr-xr-x
📄
mcookie
30.14 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
md5sum
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
md5sum.textutils
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
mdatopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
mdig
42.13 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
mesg
10.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
messages
10.36 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
messages.mailutils
10.36 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
mgrtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
migrate-pubring-from-classic-gpg
2.14 KB
01/16/2021 02:47:37 PM
rwxr-xr-x
📄
mimeview
59.41 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
miniterm
34.28 KB
04/09/2018 11:57:25 AM
rwxr-xr-x
📄
mk_modmap
15.78 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
mkfifo
62.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
mksquashfs
184.99 KB
09/14/2021 08:43:17 AM
rwxr-xr-x
📄
mlocate
42.08 KB
03/01/2018 04:07:16 PM
rwxr-xr-x
📄
mogrify
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
mogrify-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
mogrify-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
mokutil
55.4 KB
06/07/2023 06:14:30 PM
rwxr-xr-x
📄
montage
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
montage-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
montage-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
movemail
35.95 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
movemail.mailutils
35.95 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
mpiexec
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
mpiexec.openmpi
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
mpirun
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
mpirun.openmpi
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
msgattrib
22.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgcat
22.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgcmp
22.08 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgcomm
22.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgconv
18.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgen
18.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgexec
14.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgfilter
26.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgfmt
78.27 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msggrep
34.19 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msginit
62.41 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgmerge
66.45 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msgunfmt
30.09 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
msguniq
18.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
mtr
71.94 KB
11/02/2017 02:48:40 AM
rwxr-xr-x
📄
mtr-packet
25.99 KB
11/02/2017 02:48:40 AM
rwxr-xr-x
📄
mtrace
6.34 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
mtvtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
my_print_defaults
3.45 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
myisam_ftdump
3.75 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
myisamchk
3.85 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
myisamlog
3.73 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
myisampack
3.78 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql
3.81 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_config_editor
3.46 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_embedded
21.17 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_install_db
5.01 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_plugin
3.45 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_secure_installation
3.69 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_ssl_rsa_setup
3.49 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_tzinfo_to_sql
3.4 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysql_upgrade
4.32 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqladmin
3.71 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlanalyze
3.73 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlbinlog
3.96 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlcheck
3.73 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqld_multi
26.3 KB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqld_safe
27.16 KB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqldump
3.78 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqldumpslow
7.66 KB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlimport
3.7 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqloptimize
3.73 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlpump
4.17 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlrepair
3.73 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlreport
38.1 KB
08/19/2021 04:34:52 PM
rwxr-xr-x
📄
mysqlshow
3.7 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
mysqlslap
3.71 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
nad2bin
9.99 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
namei
26.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
nawk
642.65 KB
02/11/2018 05:02:41 AM
rwxr-xr-x
📄
ncal
28.79 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
ncat
199.96 KB
04/16/2018 01:11:39 AM
rwxr-xr-x
📄
neotoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
neqn
908 bytes
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
netkit-ftp
98.7 KB
12/06/2016 03:23:57 PM
rwxr-xr-x
📄
networkd-dispatcher
19.53 KB
05/04/2022 01:51:28 PM
rwxr-xr-x
📄
newaliases
26.15 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
📄
newgidmap
36.27 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
newgrp
39.4 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
newuidmap
36.27 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
ngettext
34.08 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
nice
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
ninja
186.09 KB
09/24/2017 09:06:26 AM
rwxr-xr-x
📄
nl
42.27 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
nm
43.27 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
nmap
2.82 MB
04/16/2018 01:11:39 AM
rwxr-xr-x
📄
nohup
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
nping
518.34 KB
04/16/2018 01:11:39 AM
rwxr-xr-x
📄
nproc
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
nroff
3.25 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
nsenter
30.28 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
nslookup
130.51 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
nstat
26.07 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
nsupdate
66.02 KB
09/20/2022 12:11:06 PM
rwxr-xr-x
📄
ntfsdecrypt
46.12 KB
11/01/2022 11:57:16 AM
rwxr-xr-x
📄
numfmt
62.24 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
objcopy
230.2 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
objdump
404.55 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
od
66.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
odbcinst
22 KB
03/26/2018 02:37:19 PM
rwxr-xr-x
📄
ompi-clean
14.26 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
ompi-ps
18.57 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
ompi-server
14.32 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
ompi-top
22.57 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
ompi_info
26 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
on_ac_power
2.16 KB
03/12/2018 12:51:32 AM
rwxr-xr-x
📄
opencv_annotation
22.09 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_createsamples
34.11 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_interactive-calibration
138.16 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_traincascade
331.84 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_version
10.09 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_visualisation
38.09 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
opencv_waldboost_detector
14.09 KB
09/20/2018 09:28:13 AM
rwxr-xr-x
📄
openssl
706.98 KB
05/24/2023 05:14:51 PM
rwxr-xr-x
📄
orte-clean
14.26 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orte-dvm
22.51 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orte-ps
18.57 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orte-server
14.32 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orte-top
22.57 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orted
5.99 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
orterun
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
os-prober
4.44 KB
01/31/2017 08:30:39 PM
rwxr-xr-x
📄
oshmem_info
22 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
oshrun
75.76 KB
02/05/2018 09:06:53 AM
rwxr-xr-x
📄
pack200
10.05 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
pager
166.76 KB
12/01/2017 04:11:09 AM
rwxr-xr-x
📄
palmtopnm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamcut
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamdeinterlace
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamdice
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamfile
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamoil
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamstack
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamstretch
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pamstretch-gen
1.31 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
pango-view
50.27 KB
08/21/2018 07:15:52 PM
rwxr-xr-x
📄
paperconf
9.99 KB
04/28/2017 05:17:56 AM
rwxr-xr-x
📄
partx
86.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
passwd
58.24 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
paste
34.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
pastebinit
16.25 KB
03/01/2016 05:52:32 AM
rwxr-xr-x
📄
pasteurize
388 bytes
02/05/2018 01:53:29 PM
rwxr-xr-x
📄
patch
178.37 KB
07/23/2019 12:12:54 PM
rwxr-xr-x
📄
pathchk
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
pbget
2.51 KB
02/29/2016 04:14:33 PM
rwxr-xr-x
📄
pbmclean
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmlife
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmmake
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmmask
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmpage
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmpscale
9.98 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmreduce
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtext
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtextps
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmto10x
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoascii
10.14 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoatk
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtobbnbg
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtocmuwm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoepsi
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoepson
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtog3
12.98 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtogem
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtogo
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoicon
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtolj
13.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtomacp
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtomda
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtomgr
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtonokia
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtopi3
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoplot
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoppa
33.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtopsg3
11.51 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoptx
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtowbmp
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtox10bm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoxbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtoybm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmtozinc
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbmupc
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pbput
2.51 KB
02/29/2016 04:14:33 PM
rwxr-xr-x
📄
pbputs
2.51 KB
02/29/2016 04:14:33 PM
rwxr-xr-x
📄
pbr
152 bytes
11/11/2017 01:21:54 PM
rwxr-xr-x
📄
pcimodules
14.13 KB
02/10/2019 06:25:12 PM
rwxr-xr-x
📄
pcre-config
2.29 KB
05/17/2022 07:42:45 AM
rwxr-xr-x
📄
pcxtoppm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pdb3
59.87 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pdb3.6
59.87 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pdb3.7
61.03 KB
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
pdf2dsc
698 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
pdf2ps
909 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
peekfd
13.99 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
perl
2 MB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perl5.26-x86_64-linux-gnu
9.98 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perl5.26.1
2 MB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perlbug
44.78 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perldoc
125 bytes
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perlivp
10.61 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perlthanks
44.78 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
perror
3.58 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
pf2afm
498 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
pfbtopfa
516 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
pftp
98.7 KB
12/06/2016 03:23:57 PM
rwxr-xr-x
📄
pgmbentley
5.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmcrater
13.9 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmedge
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmenhance
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmhist
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmkernel
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmnoise
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmnorm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmoil
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmramp
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmslice
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmtexture
25.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmtofs
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmtolispm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmtopbm
16.29 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgmtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pgrep
26.09 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
phar
14.47 KB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
phar.phar
14.47 KB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
phar.phar7.2
14.47 KB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
phar7.2
14.47 KB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
php
4.68 MB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
php7.2
4.68 MB
02/23/2023 01:29:25 PM
rwxr-xr-x
📄
pi1toppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pi3topbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pic
204.03 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
pico
240.11 KB
03/06/2018 02:46:39 PM
rwxr-xr-x
📄
piconv
8.16 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pinentry
62.49 KB
02/06/2018 01:18:30 AM
rwxr-xr-x
📄
pinentry-curses
62.49 KB
02/06/2018 01:18:30 AM
rwxr-xr-x
📄
pinky
38.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
pip3
293 bytes
03/02/2023 02:03:51 PM
rwxr-xr-x
📄
pjtoppm
13.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pkaction
13.99 KB
01/12/2022 12:34:00 PM
rwxr-xr-x
📄
pkcheck
18.07 KB
01/12/2022 12:34:00 PM
rwxr-xr-x
📄
pkexec
21.99 KB
01/12/2022 12:34:00 PM
rwxr-xr-x
📄
pkg-config
50.09 KB
04/21/2017 08:54:08 PM
rwxr-xr-x
📄
pkgdata
43.22 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
pkill
26.09 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
pkttyagent
13.99 KB
01/12/2022 12:34:00 PM
rwxr-xr-x
📄
pl2pm
4.43 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pldd
14.22 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
pmap
30.09 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
png-fix-itxt
9.99 KB
04/30/2019 02:56:15 PM
rwxr-xr-x
📄
pngfix
46.08 KB
04/30/2019 02:56:15 PM
rwxr-xr-x
📄
pngtopnm
21.95 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmalias
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmarith
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmcat
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmcolormap
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmcomp
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmconvol
37.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmcrop
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmcut
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmdepth
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmenlarge
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmfile
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmflip
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmgamma
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmhisteq
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmhistmap
9.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmindex
4.49 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
pnminterp
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnminterp-gen
1.31 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
pnminvert
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmmargin
1.73 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
pnmmontage
13.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmnlfilt
21.93 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmnoraw
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmnorm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmpad
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmpaste
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmpsnr
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmquant
3.13 KB
04/23/2016 11:53:11 AM
rwxr-xr-x
📄
pnmremap
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmrotate
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmscale
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmscalefixed
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmshear
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmsmooth
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmsplit
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtile
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtoddif
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtofiasco
199.9 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtofits
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtojpeg
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtopalm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtoplainpnm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtopng
29.93 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtops
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtorast
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtorle
38.15 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtosgi
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtosir
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtotiff
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtotiffcmyk
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pnmtoxwd
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
po2debconf
8.47 KB
10/01/2016 02:23:03 PM
rwxr-xr-x
📄
pod2html
4.04 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pod2man
14.73 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pod2text
10.72 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pod2usage
3.86 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
podchecker
3.57 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
podebconf-display-po
12.67 KB
01/10/2015 02:10:54 PM
rwxr-xr-x
📄
podebconf-report-po
31.76 KB
01/10/2015 03:44:31 PM
rwxr-xr-x
📄
podselect
2.47 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
pollinate
8.54 KB
05/29/2018 08:13:20 PM
rwxr-xr-x
📄
pphs
404 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ppm3d
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmbrighten
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmchange
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmcie
26.04 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmcolormask
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmcolors
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmdim
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmdist
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmdither
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmfade
11.39 KB
04/23/2016 11:53:12 AM
rwxr-xr-x
📄
ppmflash
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmforge
21.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmhist
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmlabel
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmmake
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmmix
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmnorm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmntsc
13.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmpat
21.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmquant
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmquantall
2.02 KB
04/23/2016 11:53:12 AM
rwxr-xr-x
📄
ppmqvga
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmrainbow
1.67 KB
04/23/2016 11:53:12 AM
rwxr-xr-x
📄
ppmrelief
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmshadow
6.67 KB
04/23/2016 11:53:12 AM
rwxr-xr-x
📄
ppmshift
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmspread
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoacad
14.72 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtobmp
13.92 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoeyuv
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtogif
17.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoicr
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoilbm
37.96 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtojpeg
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoleaf
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtolj
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtomap
81 bytes
04/23/2016 11:53:12 AM
rwxr-xr-x
📄
ppmtomitsu
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtompeg
549.78 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoneo
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopcx
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopi1
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopict
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopj
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtopuzz
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtorgb3
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtosixel
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtotga
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtouil
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtowinicon
17.89 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoxpm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoyuv
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtoyuvsplit
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ppmtv
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pr
70.27 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
preconv
46.2 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
print
17.74 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
printafm
395 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
printenv
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
printerbanner
22 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
printf
50.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
prlimit
34.59 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
pro
427 bytes
09/06/2024 11:58:19 PM
rwxr-xr-x
📄
proj
22.01 KB
06/18/2017 09:43:18 AM
rwxr-xr-x
📄
prove
13.27 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
prtstat
18.07 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
ps2ascii
631 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2epsi
2.69 KB
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2pdf
272 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2pdf12
215 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2pdf13
215 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2pdf14
215 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2pdfwr
1.07 KB
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2ps
647 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2ps2
669 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
ps2txt
631 bytes
04/13/2023 01:09:22 PM
rwxr-xr-x
📄
psfaddtable
17.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
psfgettable
17.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
psfstriptable
17.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
psfxtable
17.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
psidtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pslog
9.99 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
pstopnm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
pstree
26.95 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
pstree.x11
26.95 KB
12/11/2018 03:46:04 PM
rwxr-xr-x
📄
ptar
3.47 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
ptardiff
2.57 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
ptargrep
4.29 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
ptx
70.24 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
purge-old-kernels
1.12 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
pwdx
10.07 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
py3clean
7.63 KB
10/25/2018 11:11:00 AM
rwxr-xr-x
📄
py3compile
11.83 KB
10/25/2018 11:11:00 AM
rwxr-xr-x
📄
py3versions
11.44 KB
10/25/2018 11:11:00 AM
rwxr-xr-x
📄
pybuild
25.03 KB
03/26/2018 07:42:23 PM
rwxr-xr-x
📄
pydoc3
79 bytes
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pydoc3.6
79 bytes
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pydoc3.7
79 bytes
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
pygettext3
21.04 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pygettext3.6
21.04 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pygettext3.7
21.04 KB
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
pyhtmlizer3
392 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
pyjwt3
372 bytes
07/19/2022 06:23:32 AM
rwxr-xr-x
📄
python
4.32 MB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3
4.32 MB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3-futurize
384 bytes
02/05/2018 01:53:29 PM
rwxr-xr-x
📄
python3-jsondiff
1018 bytes
10/28/2017 08:10:15 PM
rwxr-xr-x
📄
python3-jsonpatch
3.58 KB
10/28/2017 08:10:15 PM
rwxr-xr-x
📄
python3-jsonpointer
1.31 KB
05/01/2016 11:14:11 PM
rwxr-xr-x
📄
python3-jsonschema
398 bytes
11/15/2017 07:43:29 PM
rwxr-xr-x
📄
python3-pasteurize
388 bytes
02/05/2018 01:53:29 PM
rwxr-xr-x
📄
python3-pbr
152 bytes
11/11/2017 01:21:54 PM
rwxr-xr-x
📄
python3.6
4.32 MB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3.6-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3.6m
4.32 MB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3.6m-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3.7
4.63 MB
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
python3.7m
4.63 MB
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
python3m
4.32 MB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
python3m-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pyvenv
436 bytes
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pyvenv-3.6
436 bytes
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
pyvenv-3.7
436 bytes
12/09/2021 05:04:37 PM
rwxr-xr-x
📄
qrttoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
qt-faststart
9.99 KB
05/18/2022 08:01:02 PM
rwxr-xr-x
📄
rake
1.15 KB
03/03/2020 01:44:04 PM
rwxr-xr-x
📄
ranlib
58.27 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
rasttopnm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
rawtopgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
rawtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
rcp
98.14 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
rdma
26.07 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
rdoc
937 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
rdoc2.5
937 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
readelf
582.46 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
readmsg
19.16 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
readmsg.mailutils
19.16 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
realpath
46.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
recode-sr-latin
14.07 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
rename.ul
14.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
renice
14.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
replace
3.42 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
reset
22 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
resizecons
18.13 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
resizepart
38.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
resolveip
3.44 MB
04/23/2023 02:08:47 PM
rwxr-xr-x
📄
rev
10.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
rgb3toppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
rgrep
30 bytes
07/11/2017 01:19:59 PM
rwxr-xr-x
📄
ri
187 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
ri2.5
187 bytes
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
rletopnm
34.12 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
rlogin
710.79 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
rmail
13.99 KB
08/12/2021 12:43:19 PM
rwxr-xr-x
📄
rmid
10.05 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
rmiregistry
10.05 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
rotatelogs
18.07 KB
03/08/2023 05:34:33 PM
rwxr-xr-x
📄
routef
208 bytes
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
routel
1.62 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
rpcgen
98.53 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
rsh
710.79 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
rsync
496.43 KB
02/28/2023 01:04:02 PM
rwxr-xr-x
📄
rtstat
22.35 KB
01/26/2021 01:33:08 PM
rwxr-xr-x
📄
ruby
5.99 KB
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
ruby2.5
5.99 KB
05/15/2023 11:41:43 AM
rwxr-xr-x
📄
run-mailcap
17.74 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
run-one
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
run-one-constantly
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
run-one-until-failure
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
run-one-until-success
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
run-this-one
3.51 KB
01/15/2014 10:24:04 PM
rwxr-xr-x
📄
runcon
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
rview
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
rvim
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
s-nail
646.09 KB
02/21/2018 04:21:54 PM
rwxr-xr-x
📄
savelog
10.22 KB
12/30/2017 06:15:02 PM
rwxr-xr-x
📄
sbattach
50.33 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
sbigtopgm
9.96 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
sbkeysync
58.55 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
sbsiglist
50.39 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
sbsign
54.39 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
sbvarsign
54.45 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
sbverify
54.33 KB
03/10/2022 07:41:04 PM
rwxr-xr-x
📄
scp
98.14 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
screen
455.01 KB
02/23/2021 05:46:52 PM
rwxr-xr-x
📄
screendump
9.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
script
30.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
scriptreplay
26.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
sdiff
50.09 KB
08/04/2017 09:20:16 PM
rwxr-xr-x
📄
see
17.74 KB
07/15/2016 12:06:12 PM
rwxr-xr-x
📄
select-editor
2.38 KB
03/12/2018 10:17:53 AM
rwxr-xr-x
📄
sendiso
14.23 KB
04/26/2016 10:10:24 PM
rwxr-xr-x
📄
sensible-browser
1.18 KB
03/12/2018 10:17:53 AM
rwxr-xr-x
📄
sensible-editor
1.08 KB
03/12/2018 10:17:53 AM
rwxr-xr-x
📄
sensible-pager
433 bytes
03/12/2018 10:17:53 AM
rwxr-xr-x
📄
seq
46.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
setarch
18.34 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
setfacl
34.68 KB
04/21/2017 08:44:54 PM
rwxr-xr-x
📄
setkeycodes
10.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
setleds
14.05 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
setlogcons
10.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
setmetamode
10.1 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
setpci
26.08 KB
02/10/2019 06:25:12 PM
rwxr-xr-x
📄
setsid
10.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
setterm
42.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
sftp
150.35 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
sg
39.4 KB
11/29/2022 12:25:19 PM
rwxr-xr-x
📄
sgitopnm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
sha1sum
46.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sha224sum
54.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sha256sum
54.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sha384sum
58.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sha512sum
58.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
shasum
9.15 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
showconsolefont
18.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
showkey
14.07 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
shred
58.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
shuf
54.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sieve
23.67 KB
11/07/2017 09:06:00 PM
rwxr-xr-x
📄
sirtopnm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
size
30.3 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
skill
26.08 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
slabtop
18.08 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
sldtoppm
17.94 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
slogin
710.79 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
snap
23.88 MB
05/29/2023 12:10:12 PM
rwxr-xr-x
📄
snapctl
8.42 MB
05/29/2023 12:10:12 PM
rwxr-xr-x
📄
snapfuse
38.13 KB
05/29/2023 12:10:12 PM
rwxr-xr-x
📄
snice
26.08 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
soelim
30.2 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
sort
110.47 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
sos
596 bytes
11/21/2024 02:52:56 PM
rwxr-xr-x
📄
sos-collector
1.04 KB
11/21/2024 02:52:56 PM
rwxr-xr-x
📄
sosreport
1.03 KB
11/21/2024 02:52:56 PM
rwxr-xr-x
📄
sotruss
4.21 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
spctoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
splain
18.7 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
split
54.63 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
splitfont
9.99 KB
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
sprof
26.21 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
sputoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
ssh
710.79 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
ssh-add
338.13 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
ssh-agent
354.14 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
ssh-argv0
1.42 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
ssh-copy-id
10.41 KB
10/02/2017 07:34:26 PM
rwxr-xr-x
📄
ssh-import-id
1.73 KB
05/16/2018 11:40:43 PM
rwxr-xr-x
📄
ssh-import-id-gh
782 bytes
01/30/2016 05:11:11 AM
rwxr-xr-x
📄
ssh-import-id-lp
782 bytes
01/30/2016 05:11:25 AM
rwxr-xr-x
📄
ssh-keygen
410.16 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
ssh-keyscan
410.16 KB
03/30/2022 01:17:14 PM
rwxr-xr-x
📄
st4topgm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
stat
78.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
stdbuf
46.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
strace
1.31 MB
04/11/2018 02:18:47 PM
rwxr-xr-x
📄
strace-log-merge
2.58 KB
02/13/2018 11:00:00 PM
rwxr-xr-x
📄
stream
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
stream-im6
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
stream-im6.q16
5.99 KB
02/09/2023 05:11:42 PM
rwxr-xr-x
📄
strings
30.5 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
strip
230.2 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
sudo
145.59 KB
04/04/2023 12:44:58 PM
rwxr-xr-x
📄
sudoedit
145.59 KB
04/04/2023 12:44:58 PM
rwxr-xr-x
📄
sudoreplay
54.81 KB
04/04/2023 12:44:58 PM
rwxr-xr-x
📄
sum
38.19 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
symcryptrun
110.73 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
systemd-analyze
1.49 MB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-cat
10.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-cgls
14.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-cgtop
30.09 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-delta
22.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-detect-virt
10.06 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-mount
42.09 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-path
10.06 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-resolve
86.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-run
42.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-socket-activate
18.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-stdio-bridge
14.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
systemd-umount
42.09 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
tabs
13.99 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
tac
38.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tail
66.24 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
taskset
30.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
tbl
126.2 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
tee
34.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
telnet
108.42 KB
11/07/2016 06:06:40 PM
rwxr-xr-x
📄
telnet.netkit
108.42 KB
11/07/2016 06:06:40 PM
rwxr-xr-x
📄
test
46.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
testlibraw
13.99 KB
04/26/2016 10:10:24 PM
rwxr-xr-x
📄
tgatoppm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
thinkjettopbm
17.88 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
tic
82.11 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
tifftopnm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
time
14.38 KB
04/21/2017 08:57:03 PM
rwxr-xr-x
📄
timedatectl
22.07 KB
03/02/2023 12:58:02 PM
rwxr-xr-x
📄
timeout
38.63 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tkconch3
386 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
tload
14.09 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
tmux
563.56 KB
01/31/2023 02:04:01 PM
rwxr-xr-x
📄
toe
13.99 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
top
105.77 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
touch
86.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tput
18.02 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
tr
46.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tracepath
14.01 KB
06/28/2019 11:05:23 AM
rwxr-xr-x
📄
traceroute6
18.02 KB
06/28/2019 11:05:23 AM
rwxr-xr-x
📄
traceroute6.iputils
18.02 KB
06/28/2019 11:05:23 AM
rwxr-xr-x
📄
trial3
382 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
troff
719.34 KB
02/10/2018 02:09:07 AM
rwxr-xr-x
📄
truncate
38.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tset
22 KB
05/16/2023 06:54:45 PM
rwxr-xr-x
📄
tsort
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
tty
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
twist3
382 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
twistd3
384 bytes
03/22/2022 11:03:56 AM
rwxr-xr-x
📄
tzselect
15.04 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
ua
427 bytes
09/06/2024 11:58:19 PM
rwxr-xr-x
📄
ubuntu-advantage
427 bytes
09/06/2024 11:58:19 PM
rwxr-xr-x
📄
ubuntu-bug
2.5 KB
11/11/2019 09:57:56 PM
rwxr-xr-x
📄
ubuntu-core-launcher
127.21 KB
05/29/2023 12:10:12 PM
rwxr-xr-x
📄
ubuntu-distro-info
18.59 KB
03/07/2019 07:34:01 PM
rwxr-xr-x
📄
ubuntu-support-status
7.84 KB
09/11/2024 11:36:31 AM
rwxr-xr-x
📄
ucf
39.73 KB
02/26/2018 12:58:23 AM
rwxr-xr-x
📄
ucfq
18.91 KB
02/26/2018 12:58:23 AM
rwxr-xr-x
📄
ucfr
10.47 KB
02/26/2018 12:58:23 AM
rwxr-xr-x
📄
uconv
50.6 KB
10/19/2021 07:44:28 PM
rwxr-xr-x
📄
ul
14.01 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
unattended-upgrade
82.55 KB
02/17/2020 11:37:03 AM
rwxr-xr-x
📄
unattended-upgrades
82.55 KB
02/17/2020 11:37:03 AM
rwxr-xr-x
📄
unexpand
38.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
unicode_stop
530 bytes
01/22/2018 01:49:48 PM
rwxr-xr-x
📄
uniq
42.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
unix2dos
50.02 KB
11/11/2016 04:13:44 AM
rwxr-xr-x
📄
unix2mac
50.02 KB
11/11/2016 04:13:44 AM
rwxr-xr-x
📄
unlink
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
unlzma
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
unmkinitramfs
2.94 KB
07/01/2021 01:11:30 PM
rwxr-xr-x
📄
unpack200
104.87 KB
05/09/2023 09:01:08 PM
rwxr-xr-x
📄
unshare
18.27 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
unsquashfs
99.71 KB
09/14/2021 08:43:17 AM
rwxr-xr-x
📄
unxz
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
unzip
174.13 KB
10/07/2022 05:08:33 PM
rwxr-xr-x
📄
unzipsfx
78.12 KB
10/07/2022 05:08:33 PM
rwxr-xr-x
📄
update-alternatives
46.01 KB
05/25/2022 11:14:56 AM
rwxr-xr-x
📄
update-mime-database
50.19 KB
10/10/2017 08:56:05 PM
rwxr-xr-x
📄
updatedb
46.08 KB
03/01/2018 04:07:16 PM
rwxr-xr-x
📄
updatedb.mlocate
46.08 KB
03/01/2018 04:07:16 PM
rwxr-xr-x
📄
uptime
10.07 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
usb-devices
4.12 KB
04/21/2017 08:59:17 PM
rwxr-xr-x
📄
usbhid-dump
22.08 KB
04/21/2017 08:59:17 PM
rwxr-xr-x
📄
users
34.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
utmpdump
22.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
uuidgen
14.07 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
uuidparse
34.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
validate-json
6.63 KB
10/21/2017 01:15:38 PM
rwxr-xr-x
📄
vcs-run
6.75 KB
04/13/2018 01:07:55 PM
rwxr-xr-x
📄
vi
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
view
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
viewres
26.96 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
vigpg
2.58 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
vim
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
vim.basic
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
vim.tiny
1.06 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
vimdiff
2.55 MB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
vimtutor
2.05 KB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
vmhgfs-fuse
50.48 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmstat
34.09 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
vmtoolsd
54.25 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-checkvm
10.07 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-hgfsclient
10.07 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-namespace-cmd
17.99 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-rpctool
17.99 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-toolbox-cmd
38.28 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-vgauth-cmd
13.99 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-vgauth-smoketest
18.01 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-vmblock-fuse
18.41 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
vmware-xferlogs
10.07 KB
09/19/2022 10:14:07 PM
rwxr-xr-x
📄
volname
9.99 KB
03/28/2017 04:22:15 AM
rwxr-xr-x
📄
w
18.07 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
w.procps
18.07 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
wall
30.08 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
watch
22.41 KB
08/09/2019 03:37:27 PM
rwxr-xr-x
📄
watchgnupg
13.99 KB
07/04/2022 04:20:59 PM
rwxr-xr-x
📄
wayland-scanner
42.08 KB
09/14/2022 01:57:23 PM
rwxr-xr-x
📄
wbmptopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
wc
42.19 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
wget
487.56 KB
04/08/2019 06:51:50 PM
rwxr-xr-x
📄
whatis
46.98 KB
08/04/2018 07:16:12 PM
rwxr-xr-x
📄
whereis
26.51 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
which
946 bytes
12/30/2017 06:15:02 PM
rwxr-xr-x
📄
who
50.21 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
whoami
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
wifi-status
2.06 KB
12/04/2017 01:46:48 PM
rwxr-xr-x
📄
winicontoppm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
write
13.99 KB
01/17/2018 11:27:24 AM
rwxr-xr-x
📄
x86_64
18.34 KB
09/16/2020 06:43:15 PM
rwxr-xr-x
📄
x86_64-linux-gnu-addr2line
30.55 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-ar
58.24 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-as
895.98 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-c++filt
26.12 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-cpp
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-cpp-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-dwp
2.75 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-elfedit
30.45 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-g++
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-g++-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-7
1022.94 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-ar
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-ar-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-nm
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-nm-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-ranlib
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcc-ranlib-7
30.47 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov
616.09 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov-7
616.09 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov-dump
499.93 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov-dump-7
499.93 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov-tool
535.99 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gcov-tool-7
535.99 KB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gfortran
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gfortran-7
1 MB
12/04/2019 02:25:41 PM
rwxr-xr-x
📄
x86_64-linux-gnu-gold
2.97 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-gprof
99.73 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-ld
1.7 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-ld.bfd
1.7 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-ld.gold
2.97 MB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-nm
43.27 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-objcopy
230.2 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-objdump
404.55 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-pkg-config
2.06 KB
04/21/2017 08:54:08 PM
rwxr-xr-x
📄
x86_64-linux-gnu-python3-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
x86_64-linux-gnu-python3.6-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
x86_64-linux-gnu-python3.6m-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
x86_64-linux-gnu-python3m-config
3.21 KB
03/10/2023 04:46:00 PM
rwxr-xr-x
📄
x86_64-linux-gnu-ranlib
58.27 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-readelf
582.46 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-size
30.3 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-strings
30.5 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-linux-gnu-strip
230.2 KB
05/19/2023 08:52:50 AM
rwxr-xr-x
📄
x86_64-pc-linux-gnu-pkg-config
50.09 KB
04/21/2017 08:54:08 PM
rwxr-xr-x
📄
xargs
70.21 KB
11/05/2017 05:16:48 PM
rwxr-xr-x
📄
xauth
50.81 KB
11/21/2017 07:47:37 PM
rwxr-xr-x
📄
xbmtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
xdelta3
150.3 KB
12/06/2016 02:04:51 AM
rwxr-xr-x
📄
xdg-user-dir
234 bytes
03/23/2018 03:58:57 PM
rwxr-xr-x
📄
xdg-user-dirs-update
18.07 KB
03/23/2018 03:58:57 PM
rwxr-xr-x
📄
xdpyinfo
34.76 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xdriinfo
9.99 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xev
30.48 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xfd
35.76 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xfontsel
43.6 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xgettext
260.64 KB
02/21/2019 02:40:49 PM
rwxr-xr-x
📄
ximtoppm
13.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
xkill
13.99 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xlsatoms
9.99 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xlsclients
14 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xlsfonts
18.09 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xmessage
22.88 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xpmtoppm
17.92 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
xprop
40.29 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xsubpp
5.04 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
xvinfo
13.99 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xvminitoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
xwdtopnm
17.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
xwininfo
46.08 KB
04/21/2017 09:01:04 PM
rwxr-xr-x
📄
xxd
18.12 KB
04/18/2023 09:20:34 AM
rwxr-xr-x
📄
xz
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzcat
74.36 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzcmp
6.48 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzdiff
6.48 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzegrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzfgrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzgrep
5.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzless
1.76 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
xzmore
2.11 KB
04/08/2022 12:56:46 PM
rwxr-xr-x
📄
ybmtopbm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
yes
30.18 KB
01/18/2018 09:43:49 AM
rwxr-xr-x
📄
yuvsplittoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
yuvtoppm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
zdump
18.05 KB
05/03/2022 10:19:39 AM
rwxr-xr-x
📄
zeisstopnm
9.87 KB
04/23/2016 11:53:20 AM
rwxr-xr-x
📄
zip
211.19 KB
04/21/2017 09:02:44 PM
rwxr-xr-x
📄
zipcloak
91.62 KB
04/21/2017 09:02:44 PM
rwxr-xr-x
📄
zipdetails
47.36 KB
05/23/2023 05:17:19 PM
rwxr-xr-x
📄
zipgrep
2.88 KB
10/07/2022 05:08:33 PM
rwxr-xr-x
📄
zipinfo
174.13 KB
10/07/2022 05:08:33 PM
rwxr-xr-x
📄
zipnote
87.39 KB
04/21/2017 09:02:44 PM
rwxr-xr-x
📄
zipsplit
91.39 KB
04/21/2017 09:02:44 PM
rwxr-xr-x
Editing: unattended-upgrade
Close
#!/usr/bin/python3 # Copyright (c) 2005-2015 Canonical Ltd # # AUTHOR: # Michael Vogt <mvo@ubuntu.com> # # This file is part of unattended-upgrades # # unattended-upgrades 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. # # unattended-upgrades 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 unattended-upgrades; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # import atexit import copy import datetime import errno import email.charset import fcntl import fnmatch import gettext from gi.repository.Gio import NetworkMonitor import grp import io import locale import logging import logging.handlers import re import os import select import signal import string import subprocess import sys try: from typing import AbstractSet, DefaultDict, Dict, Iterable, List, Tuple from typing import Union AbstractSet # pyflakes DefaultDict # pyflakes Dict # pyflakes Iterable # pyflakes List # pyflakes Tuple # pyflakes Union # pyflakes except ImportError: pass from collections import defaultdict from datetime import date from email.message import Message from gettext import gettext as _ from io import StringIO from optparse import ( OptionParser, SUPPRESS_HELP, ) from subprocess import ( Popen, PIPE, ) import apt import apt_inst import apt_pkg # the reboot required flag file used by packages REBOOT_REQUIRED_FILE = "/var/run/reboot-required" KEPT_PACKAGES_FILE = "var/lib/unattended-upgrades/kept-back" MAIL_BINARY = "/usr/bin/mail" SENDMAIL_BINARY = "/usr/sbin/sendmail" USERS = "/usr/bin/users" # no py3 lsb_release in debian :/ DISTRO_CODENAME = subprocess.check_output( ["lsb_release", "-c", "-s"], universal_newlines=True).strip() # type: str DISTRO_DESC = subprocess.check_output( ["lsb_release", "-d", "-s"], universal_newlines=True).strip() # type: str DISTRO_ID = subprocess.check_output( ["lsb_release", "-i", "-s"], universal_newlines=True).strip() # type: str # progress information is written here PROGRESS_LOG = "/var/run/unattended-upgrades.progress" PID_FILE = "/var/run/unattended-upgrades.pid" LOCK_FILE = "/var/run/unattended-upgrades.lock" # set from the sigint signal handler SIGNAL_STOP_REQUEST = False class LoggingDateTime: """The date/time representation for the dpkg log file timestamps""" LOG_DATE_TIME_FMT = "%Y-%m-%d %H:%M:%S" @classmethod def as_string(cls): # type: () -> str """Return the current date and time as LOG_DATE_TIME_FMT string""" return datetime.datetime.now().strftime(cls.LOG_DATE_TIME_FMT) @classmethod def from_string(cls, logstr): # type: (str) -> datetime.datetime """Take a LOG_DATE_TIME_FMT string and return datetime object""" return datetime.datetime.strptime(logstr, cls.LOG_DATE_TIME_FMT) class UnknownMatcherError(ValueError): pass class NoAllowedOriginError(ValueError): pass class UnattendedUpgradesCache(apt.Cache): def __init__(self, rootdir, allowed_origins): # type: (str, List[str]) -> None self._cached_candidate_pkgnames = set() # type: AbstractSet[str] self.allowed_origins = allowed_origins apt.Cache.__init__(self, rootdir=rootdir) # generate versioned_kernel_pkgs_regexp for later use apt_versioned_kernel_pkgs = apt_pkg.config.value_list( "APT::VersionedKernelPackages") if apt_versioned_kernel_pkgs: self.versioned_kernel_pkgs_regexp = re.compile("(" + "|".join( ["^" + p + "-[0-9]+\\.[0-9\\.]+-.*" for p in apt_versioned_kernel_pkgs]) + ")") logging.debug("Using %s regexp to find kernel packages", self.versioned_kernel_pkgs_regexp.pattern) running_kernel_version = subprocess.check_output( ["uname", "-r"], universal_newlines=True).rstrip() self.running_kernel_pkgs_regexp = re.compile("(" + "|".join( [("^" + p + "-" + re.escape(running_kernel_version) + "$") for p in apt_versioned_kernel_pkgs]) + ")") logging.debug("Using %s regexp to find running kernel packages", self.running_kernel_pkgs_regexp.pattern) else: logging.debug("APT::VersionedKernelPackages is not set") self.versioned_kernel_pkgs_regexp = None self.running_kernel_pkgs_regexp = None def adjust_candidate(self, pkg): # type: (apt.Package) -> bool """ Adjust origin and return True if adjustment took place This is needed when e.g. a package is available in the security pocket but there is also a package in the updates pocket with a higher version number """ try: new_cand = ver_in_allowed_origin(pkg, self.allowed_origins) # Only adjust to lower versions to avoid flipping back and forth # and to avoid picking a newer version, not selected by apt. # This helps avoiding upgrades to experimental's packages. if new_cand < pkg.candidate: logging.debug("adjusting candidate version: %s" % new_cand) pkg.candidate = new_cand return True else: return False except NoAllowedOriginError: return False def call_checked(self, function, pkg, **kwargs): """ Call function and check if package is in the wanted state """ try: function(pkg, **kwargs) except SystemError as e: logging.warning( _("package %s upgradable but fails to " "be marked for upgrade (%s)"), pkg.name, e) self.clear() return False return (((function == apt.package.Package.mark_upgrade) and pkg.marked_upgrade) or ((function == apt.package.Package.mark_install) and pkg.marked_install)) def call_adjusted(self, function, pkg, **kwargs): """Call function, but with adjusting packages in changes to come from allowed origins Note that as a side effect more package's candidate can be adjusted than only the one's in the final changes set. """ new_pkgs_to_adjust = [] # List[str] if pkg._pkg.selected_state == apt_pkg.SELSTATE_HOLD: logging.debug("pkg %s is on hold" % pkg.name) return # adjust candidates in advance if needed for pkg_name in self._cached_candidate_pkgnames: self.adjust_candidate(self[pkg_name]) if function == apt.package.Package.mark_upgrade \ and not pkg.is_upgradable: raise NoAllowedOriginError marking_succeeded = self.call_checked(function, pkg, **kwargs) if not marking_succeeded: logging.debug("falling back to adjusting %s's dependencies " "recursively" % pkg.name) self.clear() # adjust candidates in advance if needed for pkg_name in self._cached_candidate_pkgnames: self.adjust_candidate(self[pkg_name]) self.adjust_candidate(pkg) for dep in transitive_dependencies(pkg, self): try: self.adjust_candidate(self[dep]) except KeyError: pass self.call_checked(function, pkg, **kwargs) for marked_pkg in self.get_changes(): if marked_pkg.name in self._cached_candidate_pkgnames: continue if not is_in_allowed_origin(marked_pkg.candidate, self.allowed_origins): try: ver_in_allowed_origin(marked_pkg, self.allowed_origins) # important! this avoids downgrades below if pkg.is_installed and not pkg.is_upgradable: continue new_pkgs_to_adjust.append(marked_pkg) except NoAllowedOriginError: pass if new_pkgs_to_adjust: new_pkg_adjusted = False for pkg_to_adjust in new_pkgs_to_adjust: if self.adjust_candidate(pkg_to_adjust): self._cached_candidate_pkgnames.add(pkg_to_adjust.name) new_pkg_adjusted = True if new_pkg_adjusted: self.call_adjusted(function, pkg, **kwargs) def mark_upgrade_adjusted(self, pkg, **kwargs): self.call_adjusted(apt.package.Package.mark_upgrade, pkg, **kwargs) def mark_install_adjusted(self, pkg, **kwargs): self.call_adjusted(apt.package.Package.mark_install, pkg, **kwargs) class LogInstallProgress(apt.progress.base.InstallProgress): """ Install progress that writes to self.progress_log (/var/run/unattended-upgrades.progress by default) """ def __init__(self, logfile_dpkg, verbose=False, progress_log="var/run/unattended-upgrades.progress"): # type: (str, bool, str) -> None apt.progress.base.InstallProgress.__init__(self) self.logfile_dpkg = logfile_dpkg self.progress_log = os.path.join(apt_pkg.config.find_dir("Dir"), progress_log) self.verbose = verbose self.output_logfd = None # type: int def status_change(self, pkg, percent, status): # type: (str, float, str) -> None with open(self.progress_log, "w") as f: f.write(_("Progress: %s %% (%s)") % (percent, pkg)) def _fixup_fds(self): # () -> None required_fds = [0, 1, 2, # stdin, stdout, stderr self.writefd, self.write_stream.fileno(), self.statusfd, self.status_stream.fileno() ] # ensure that our required fds close on exec for fd in required_fds[3:]: old_flags = fcntl.fcntl(fd, fcntl.F_GETFD) fcntl.fcntl(fd, fcntl.F_SETFD, old_flags | fcntl.FD_CLOEXEC) # close all fds proc_fd = "/proc/self/fd" if os.path.exists(proc_fd): error_count = 0 for fdname in os.listdir(proc_fd): try: fd = int(fdname) except Exception as e: print("ERROR: can not get fd for %s" % fdname) if fd in required_fds: continue try: os.close(fd) # print("closed: ", fd) except OSError as e: # there will be one fd that can not be closed # as its the fd from pythons internal diropen() # so its ok to ignore one close error error_count += 1 if error_count > 1: print("ERROR: os.close(%s): %s" % (fd, e)) def _redirect_stdin(self): # type: () -> None REDIRECT_INPUT = os.devnull fd = os.open(REDIRECT_INPUT, os.O_RDWR) os.dup2(fd, 0) def _redirect_output(self): # type: () -> None # do not create log in dry-run mode, just output to stdout/stderr if not apt_pkg.config.find_b("Debug::pkgDPkgPM", False): logfd = self._get_logfile_dpkg_fd() os.dup2(logfd, 1) os.dup2(logfd, 2) def _get_logfile_dpkg_fd(self): # type: () -> int logfd = os.open( self.logfile_dpkg, os.O_RDWR | os.O_APPEND | os.O_CREAT, 0o640) try: adm_gid = grp.getgrnam("adm").gr_gid os.fchown(logfd, 0, adm_gid) except (KeyError, OSError): pass return logfd def update_interface(self): # type: () -> None # call super class first apt.progress.base.InstallProgress.update_interface(self) self._do_verbose_output_if_needed() def _do_verbose_output_if_needed(self): # type: () -> None # if we are in debug mode, nothing to be more verbose about if apt_pkg.config.find_b("Debug::pkgDPkgPM", False): return # handle verbose if self.verbose: if self.output_logfd is None: self.output_logfd = os.open(self.logfile_dpkg, os.O_RDONLY) os.lseek(self.output_logfd, 0, os.SEEK_END) try: select.select([self.output_logfd], [], [], 0) # FIXME: this should be OSError, but in py2.7 it is still # select.error except select.error as e: if e.errno != errno.EINTR: # type: ignore logging.exception("select failed") # output to stdout in verbose mode only os.write(1, os.read(self.output_logfd, 1024)) def _log_in_dpkg_log(self, msg): # type: (str) -> None logfd = self._get_logfile_dpkg_fd() os.write(logfd, msg.encode("utf-8")) os.close(logfd) def finish_update(self): # type: () -> None self._log_in_dpkg_log("Log ended: %s\n\n" % LoggingDateTime.as_string()) def fork(self): # type: () -> int self._log_in_dpkg_log("Log started: %s\n" % LoggingDateTime.as_string()) pid = os.fork() if pid == 0: self._fixup_fds() self._redirect_stdin() self._redirect_output() return pid class Unlocked: """ Context manager for unlocking the apt lock while cache.commit() is run """ def __enter__(self): # type: () -> None try: apt_pkg.pkgsystem_unlock_inner() except AttributeError: try: apt_pkg.pkgsystem_unlock() except Exception: # earlier python-apt used to leak lock logging.warning("apt_pkg.pkgsystem_unlock() failed due to not " "holding the lock but trying to continue") pass def __exit__(self, exc_type, exc_value, exc_tb): # type: (object, object, object) -> None try: apt_pkg.pkgsystem_lock_inner() except AttributeError: apt_pkg.pkgsystem_lock() class KeptPkgs(defaultdict): """ Packages to keep by highest allowed pretty-printed origin """ def add(self, pkg, cache): # type: (apt.Package, UnattendedUpgradesCache) -> None allowed_origins = cache.allowed_origins for origin in ver_in_allowed_origin(pkg, allowed_origins).origins: if is_allowed_origin(origin, allowed_origins): self[origin.origin + " " + origin.archive].add(pkg.name) return def pop_upgradable(self, cache): # type: (UnattendedUpgradesCache) -> List[apt.Package] upgradable = [] empty_sets = set() for name, pkg_set in self.items(): remove_from_set = set() for pkg_name in pkg_set: pkg = cache[pkg_name] if pkg.marked_install or pkg.marked_upgrade: remove_from_set.add(pkg_name) upgradable.append(pkg) pkg_set -= remove_from_set if not pkg_set: empty_sets.add(name) for empty_set in empty_sets: del(self[empty_set]) return upgradable def is_dpkg_journal_dirty(): # type: () -> bool """ Return True if the dpkg journal is dirty (similar to debSystem::CheckUpdates) """ d = os.path.join( os.path.dirname(apt_pkg.config.find_file("Dir::State::status")), "updates") for f in os.listdir(d): if re.match("[0-9]+", f): return True return False def signal_handler(signal, frame): # type: (int, object) -> None logging.warning("SIGTERM received, will stop") global SIGNAL_STOP_REQUEST SIGNAL_STOP_REQUEST = True def should_stop(): # type: () -> bool """ Return True if u-u needs to stop due to signal received or due to the system started to run on battery. """ if SIGNAL_STOP_REQUEST: logging.warning("SIGNAL received, stopping") return True if apt_pkg.config.find_b("Unattended-Upgrade::OnlyOnACPower", True) and \ subprocess.call("on_ac_power") == 1: logging.warning("System is on battery power, stopping") return True if apt_pkg.config.find_b( "Unattended-Upgrade::Skip-Updates-On-Metered-Connections", True): if NetworkMonitor.get_network_metered(NetworkMonitor.get_default()): logging.warning(_("System is on metered connection, stopping")) return True return False def substitute(line): # type: (str) -> str """ substitude known mappings and return a new string Currently supported ${distro-release} """ mapping = {"distro_codename": get_distro_codename(), "distro_id": get_distro_id()} return string.Template(line).substitute(mapping) def get_distro_codename(): # type: () -> str return DISTRO_CODENAME def get_distro_id(): # type: () -> str return DISTRO_ID def get_allowed_origins_legacy(): # type: () -> List[str] """ legacy support for old Allowed-Origins var """ allowed_origins = [] # type: List[str] key = "Unattended-Upgrade::Allowed-Origins" try: for s in apt_pkg.config.value_list(key): # if there is a ":" use that as seperator, else use spaces if re.findall(r'(?<!\\):', s): (distro_id, distro_codename) = re.split(r'(?<!\\):', s) else: (distro_id, distro_codename) = s.split() # unescape "\:" back to ":" distro_id = re.sub(r'\\:', ':', distro_id) # escape "," (see LP: #824856) - can this be simpler? distro_id = re.sub(r'([^\\]),', r'\1\\,', distro_id) distro_codename = re.sub(r'([^\\]),', r'\1\\,', distro_codename) # convert to new format allowed_origins.append("o=%s,a=%s" % (substitute(distro_id), substitute(distro_codename))) except ValueError: logging.error(_("Unable to parse %s." % key)) raise return allowed_origins def get_allowed_origins(): # type: () -> List[str] """ return a list of allowed origins from apt.conf This will take substitutions (like distro_id) into account. """ allowed_origins = get_allowed_origins_legacy() key = "Unattended-Upgrade::Origins-Pattern" try: for s in apt_pkg.config.value_list(key): allowed_origins.append(substitute(s)) except ValueError: logging.error(_("Unable to parse %s." % key)) raise return allowed_origins def match_whitelist_string(whitelist, origin): # type: (str, apt.package.Origin) -> bool """ take a whitelist string in the form "origin=Debian,label=Debian-Security" and match against the given python-apt origin. A empty whitelist string never matches anything. """ whitelist = whitelist.strip() if whitelist == "": logging.warning("empty match string matches nothing") return False res = True # make "\," the html quote equivalent whitelist = whitelist.replace("\,", "%2C") for token in whitelist.split(","): # strip and unquote the "," back (what, value) = [s.strip().replace("%2C", ",") for s in token.split("=")] # logging.debug("matching %s=%s against %s" % ( # what, value, origin)) # support substitution here as well value = substitute(value) # first char is apt-cache policy output, send is the name # in the Release file if what in ("o", "origin"): match = fnmatch.fnmatch(origin.origin, value) elif what in ("l", "label"): match = fnmatch.fnmatch(origin.label, value) elif what in ("a", "suite", "archive"): match = fnmatch.fnmatch(origin.archive, value) elif what in ("c", "component"): match = fnmatch.fnmatch(origin.component, value) elif what in ("site",): match = fnmatch.fnmatch(origin.site, value) elif what in ("n", "codename",): match = fnmatch.fnmatch(origin.codename, value) else: raise UnknownMatcherError( "Unknown whitelist entry for matcher %s (token %s)" % ( what, token)) # update res res = res and match # logging.debug("matching %s=%s against %s" % ( # what, value, origin)) return res def cache_commit(cache, # type: apt.Cache logfile_dpkg, # type: str verbose, # type: bool iprogress=None, # type: apt.progress.base.InstallProgress ): # type: (...) -> Tuple[bool, Exception] """Commit the changes from the given cache to the system""" # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") # only act if there is anything to do (important to avoid writing # empty log stanzas) if len(cache.get_changes()) == 0: return True, None error = None res = False if iprogress is None: iprogress = LogInstallProgress(logfile_dpkg, verbose) try: if hasattr(apt_pkg, "pkgsystem_lock_inner"): res = cache.commit(install_progress=iprogress) else: with Unlocked(): res = cache.commit(install_progress=iprogress) cache.open() except SystemError as e: error = e if verbose: logging.exception("Exception happened during upgrade.") res = False cache.clear() return res, error def upgrade_normal(cache, logfile_dpkg, verbose): # type: (apt.Cache, str, bool) -> bool res, error = cache_commit(cache, logfile_dpkg, verbose) if res: logging.info(_("All upgrades installed")) else: logging.error(_("Installing the upgrades failed!")) logging.error(_("error message: %s"), error) logging.error(_("dpkg returned a error! See %s for details"), logfile_dpkg) return res def use_minimal_steps(options): # type: (Options) -> bool return (options.minimal_upgrade_steps or # COMPAT with the mispelling (apt_pkg.config.find_b("Unattended-Upgrades::MinimalSteps", True) and apt_pkg.config.find_b("Unattended-Upgrade::MinimalSteps", True))) def upgrade_in_minimal_steps(cache, # type: apt.Cache pkgs_to_upgrade, # type: List[str] blacklist, # type: List[str] whitelist, # type: List[str] logfile_dpkg="", # type: str verbose=False, # type: bool ): # type: (...) -> bool install_log = LogInstallProgress(logfile_dpkg, verbose) res = True # double check any changes we do allowed_origins = get_allowed_origins() # pre-calculate set sizes to process sets which are expected to be smaller # earlier upgrade_set_sizes = {} # calculate upgrade sets for pkgname in pkgs_to_upgrade: cache.clear() pkg = cache[pkgname] if pkg.is_upgradable: pkg.mark_upgrade() elif not pkg.is_installed: pkg.mark_install() else: continue upgrade_set_sizes[pkgname] = len(cache.get_changes()) cache.clear() # to upgrade contains the package names to_upgrade = set(pkgs_to_upgrade) for pkgname in sorted(upgrade_set_sizes, key=upgrade_set_sizes.get): # upgrade packages and dependencies in increasing expected size of # package sets to upgrade/install together if pkgname not in to_upgrade: # pkg is upgraded in a previous set continue if should_stop(): return False pkg = cache[pkgname] try: if pkg.is_upgradable: cache.mark_upgrade_adjusted( pkg, from_user=not pkg.is_auto_installed) elif not pkg.is_installed: cache.mark_install_adjusted(pkg, from_user=False) else: continue except Exception as e: logging.warning( _("package %s upgradable but fails to " "be marked for upgrade (%s)"), pkgname, e) cache.clear() res = False continue # double check that we are not running into side effects like # what could have been caused LP: #1020680 if not check_changes_for_sanity(cache, allowed_origins, blacklist, whitelist): logging.info("While building minimal partition: " "cache has not allowed changes") cache.clear() continue changes = [p.name for p in cache.get_changes()] if not changes: continue # write progress log information if len(pkgs_to_upgrade) > 0: percent = ((len(pkgs_to_upgrade) - len(to_upgrade)) / float(len(pkgs_to_upgrade)) * 100.0) else: percent = 100.0 install_log.status_change(pkg=",".join(changes), percent=percent, status="") # apply changes logging.debug("applying set %s" % changes) res, error = cache_commit(cache, logfile_dpkg, verbose, install_log) if error: if verbose: logging.exception("Exception happened during upgrade.") logging.error(_("Installing the upgrades failed!")) logging.error(_("error message: %s"), error) logging.error(_("dpkg returned a error! See %s for details"), logfile_dpkg) return False to_upgrade = to_upgrade - set(changes) logging.debug("left to upgrade %s" % to_upgrade) if len(to_upgrade) == 0: logging.info(_("All upgrades installed")) break return res def is_allowed_origin(origin, allowed_origins): # type: (apt.package.Origin, List[str]) -> bool for allowed in allowed_origins: if match_whitelist_string(allowed, origin): return True return False def is_in_allowed_origin(ver, allowed_origins): # type: (apt.package.Version, List[str]) -> bool if not ver: return False for origin in ver.origins: if is_allowed_origin(origin, allowed_origins): return True return False def ver_in_allowed_origin(pkg, allowed_origins): # type: (apt.Package, List[str]) -> apt.package.Version for ver in pkg.versions: # ignore versions that the user marked with priority < 100 # (and ensure we have a python-apt that supports this) try: if ver.policy_priority < 100: logging.debug("ignoring ver %s with priority < 0" % ver) continue except AttributeError: pass if is_in_allowed_origin(ver, allowed_origins): # leave as soon as we have the highest new candidate return ver raise NoAllowedOriginError() def is_pkgname_in_blacklist(pkgname, blacklist): # type: (str, List[str]) -> bool for blacklist_regexp in blacklist: if re.match(blacklist_regexp, pkgname): logging.debug("skipping blacklisted package %s" % pkgname) return True return False def is_pkgname_in_whitelist(pkgname, whitelist): # type: (str, List[str]) -> bool # a empty whitelist means the user does not want to use this feature if not whitelist: return True for whitelist_regexp in whitelist: if re.match(whitelist_regexp, pkgname): logging.debug("only upgrading the following package %s" % pkgname) return True return False def is_pkg_change_allowed(pkg, blacklist, whitelist): # type: (apt.Package, List[str], List[str]) -> bool if is_pkgname_in_blacklist(pkg.name, blacklist): logging.debug("pkg %s package has been blacklisted" % pkg.name) return False # a strict whitelist will not allow any changes not in the # whitelist, most people will want the relaxed whitelist # that whitelists a package but pulls in the package # dependencies strict_whitelist = apt_pkg.config.find_b( "Unattended-Upgrade::Package-Whitelist-Strict", False) if strict_whitelist and \ not is_pkgname_in_whitelist(pkg.name, whitelist): logging.debug("pkg %s package is not whitelisted" % pkg.name) return False if pkg._pkg.selected_state == apt_pkg.SELSTATE_HOLD: logging.debug("pkg %s is on hold" % pkg.name) return False return True def transitive_dependencies(pkg, cache, acc=set(), valid_types=None): # type (apt.Package, apt.Cache, AbstractSet[str], AbstractSet[str]) -> bool """ All (transitive) dependencies of the package Note that alternative (|) dependencies are collected, too """ if not pkg.candidate: return acc for dep in pkg.candidate.dependencies: for base_dep in dep: if base_dep.name not in acc: if not valid_types or base_dep.rawtype in valid_types: acc.add(base_dep.name) try: transitive_dependencies(cache[base_dep.name], cache, acc, valid_types) except KeyError: pass return acc def check_changes_for_sanity(cache, allowed_origins, blacklist, whitelist, desired_pkg=None): # type: (apt.Cache, List[str], List[str], List[str], apt.Package) -> bool if cache._depcache.broken_count != 0: return False # If there are no packages to be installed they were kept back if cache.install_count == 0: return False for pkg in cache.get_changes(): if pkg.marked_delete: logging.debug("pkg %s now marked delete" % pkg.name) return False if pkg.marked_install or pkg.marked_upgrade: # apt will never fallback from a trusted to a untrusted # origin so its good enough if we have a single trusted one if not any([o.trusted for o in pkg.candidate.origins]): logging.debug("pkg %s is untrusted" % pkg.name) return False if not is_in_allowed_origin(pkg.candidate, allowed_origins): logging.debug("pkg %s not in allowed origin" % pkg.name) return False if not is_pkg_change_allowed(pkg, blacklist, whitelist): return False # check if the package is unsafe to upgrade unattended ignore_require_restart = apt_pkg.config.find_b( "Unattended-Upgrade::IgnoreAppsRequireRestart", False) upgrade_requires = pkg.candidate.record.get("Upgrade-Requires") if (pkg.marked_upgrade and ignore_require_restart is False and upgrade_requires == "app-restart"): logging.debug("pkg %s requires app-restart, not safe to " "upgrade unattended") return False # check that the package we want to upgrade is in the change set if desired_pkg and desired_pkg not in cache.get_changes(): return False return True def pkgname_from_deb(debfile): # type: (str) -> str # FIXME: add error checking here try: control = apt_inst.DebFile(debfile).control.extractdata("control") sections = apt_pkg.TagSection(control) return sections["Package"] except (IOError, SystemError) as e: logging.error("failed to read deb file %s (%s)" % (debfile, e)) # dumb fallback return debfile.split("_")[0] def get_md5sum_for_file_in_deb(deb_file, conf_file): # type: (str, str) -> str dpkg_cmd = ["dpkg-deb", "--fsys-tarfile", deb_file] tar_cmd = ["tar", "-x", "-O", "-f", "-", "." + conf_file] md5_cmd = ["md5sum"] dpkg_p = Popen(dpkg_cmd, stdout=PIPE) tar_p = Popen(tar_cmd, stdin=dpkg_p.stdout, stdout=PIPE, universal_newlines=True) md5_p = Popen(md5_cmd, stdin=tar_p.stdout, stdout=PIPE, universal_newlines=True) pkg_md5sum = md5_p.communicate()[0].split()[0] for p in [dpkg_p, tar_p, md5_p]: p.stdout.close() p.wait() return pkg_md5sum def get_md5sum_for_file_installed(conf_file, prefix): # type: (str, str) -> str # the package replaces a directory wih a configuration file # # if the package changed this way it is safe to assume that # the transition happens without showing a prompt but if the admin # created the directory the admin will need to resolve it after # being notified about the unexpected prompt if os.path.isdir(prefix + conf_file): logging.debug("found conffile %s is a directory on the system " % conf_file) return "dir" # test against the installed file, if the local file got deleted # by the admin thats ok but it may still trigger a conffile prompt # (see debian #788049) if os.path.exists(prefix + conf_file): with open(prefix + conf_file, 'rb') as fb: return apt_pkg.md5sum(fb) else: return "" def map_conf_file(conf_file, conffiles): # type: (str, Union[AbstractSet[str], Dict[str, str]]) -> str """Find respective conffile in a set of conffiles with some heuristics """ if conf_file in conffiles: return conf_file elif os.path.join(conf_file, os.path.basename(conf_file)) in conffiles: # new /etc/foo may be old /etc/foo/foo, like in LP: #1822745 return os.path.join(conf_file, os.path.basename(conf_file)) elif os.path.dirname(conf_file) in conffiles: # new /etc/foo/foo may be old /etc/foo, probably by accident return os.path.dirname(conf_file) # TODO: peek into package's dpkg-maintscript-helper mv_conffile usage else: return None # prefix is *only* needed for the build-in tests def conffile_prompt(destFile, prefix=""): # type: (str, str) -> bool logging.debug("check_conffile_prompt(%s)" % destFile) pkgname = pkgname_from_deb(destFile) # get the conffiles for the /var/lib/dpkg/status file status_file = apt_pkg.config.find("Dir::State::status") with open(status_file, "r") as f: tagfile = apt_pkg.TagFile(f) conffiles = "" for section in tagfile: if section.get("Package") == pkgname: logging.debug("found pkg: %s" % pkgname) if "Conffiles" in section: conffiles = section.get("Conffiles") break # get conffile value from pkg, its ok if the new version # does not have conffiles anymore pkg_conffiles = set() # type: AbstractSet[str] try: deb = apt_inst.DebFile(destFile) pkg_conffiles = set(deb.control.extractdata( "conffiles").strip().decode("utf-8").split("\n")) except SystemError as e: print(_("Apt returned an error, exiting")) print(_("error message: %s") % e) logging.error(_("Apt returned an error, exiting")) logging.error(_("error message: %s"), e) sys.exit(1) except LookupError as e: logging.debug("No conffiles in deb %s (%s)" % (destFile, e)) if not pkg_conffiles: return False # Conffiles: # /etc/bash_completion.d/m-a c7780fab6b14d75ca54e11e992a6c11c dpkg_status_conffiles = {} for line in conffiles.splitlines(): # ignore empty lines line = line.strip() if not line: continue # show what we do logging.debug("conffile line: %s", line) li = line.split() conf_file = li[0] md5 = li[1] if len(li) > 2: obs = li[2] else: obs = None # ignore if conffile is obsolete if obs == "obsolete": continue # ignore state "newconffile" until its clearer if there # might be a dpkg prompt (LP: #936870) if md5 == "newconffile": continue new_conf_file = map_conf_file(conf_file, pkg_conffiles) if not new_conf_file: logging.debug("%s not in package conffiles %s" % ( conf_file, pkg_conffiles)) continue # record for later dpkg_status_conffiles[conf_file] = md5 # test against the installed file, if the local file got deleted # by the admin thats ok but it may still trigger a conffile prompt # (see debian #788049) current_md5 = get_md5sum_for_file_installed(conf_file, prefix) logging.debug("current md5: %s" % current_md5) # hashes are the same, no conffile prompt if current_md5 == md5: continue # calculate md5sum from the deb (may take a bit) pkg_md5sum = get_md5sum_for_file_in_deb(destFile, new_conf_file) logging.debug("pkg_md5sum: %s" % pkg_md5sum) # the md5sum in the deb is unchanged, this will not # trigger a conffile prompt if pkg_md5sum == md5: continue # if we made it to this point: # current_md5 != pkg_md5sum != md5 # and that will trigger a conffile prompt, we can # stop processing at this point and just return True return True # now check if there are conffiles in the pkg that where not there # in the previous version in the dpkg status file if pkg_conffiles: for conf_file in pkg_conffiles: old_conf_file = map_conf_file(conf_file, dpkg_status_conffiles) if not old_conf_file and os.path.exists(prefix + conf_file): logging.debug("found conffile %s in new pkg but on dpkg " "status" % conf_file) pkg_md5sum = get_md5sum_for_file_in_deb(destFile, conf_file) current_md5 = get_md5sum_for_file_installed(conf_file, prefix) if pkg_md5sum != current_md5: return True return False def dpkg_conffile_prompt(): # type: () -> bool if "DPkg::Options" not in apt_pkg.config: return True options = apt_pkg.config.value_list("DPkg::Options") for option in options: option = option.strip() if option in ["--force-confold", "--force-confnew"]: return False return True def rewind_cache(cache, pkgs_to_upgrade): # type: (apt.Cache, List[apt.Package]) -> None """ set the cache back to the state with packages_to_upgrade """ cache.clear() for pkg2 in pkgs_to_upgrade: cache.mark_install_adjusted(pkg2, from_user=not pkg2.is_auto_installed) if cache.broken_count > 0: raise AssertionError("rewind_cache created a broken cache") def host(): # type: () -> str return os.uname()[1] # *sigh* textwrap is nice, but it breaks "linux-image" into two # seperate lines def wrap(t, width=70, subsequent_indent=""): # type: (str, int, str) -> str out = "" for s in t.split(): if (len(out) - out.rfind("\n")) + len(s) > width: out += "\n" + subsequent_indent out += s + " " return out def setup_apt_listchanges(conf="/etc/apt/listchanges.conf"): # type: (str) -> None """ deal with apt-listchanges """ # apt-listchanges will always send a mail if there is a mail address # set in the config regardless of the frontend used, so set it to # mail if we have a sendmail and to none if not (as it appears to # not check if sendmail is there or not), debian bug #579733 if os.path.exists(SENDMAIL_BINARY): os.environ["APT_LISTCHANGES_FRONTEND"] = "mail" else: os.environ["APT_LISTCHANGES_FRONTEND"] = "none" def _send_mail_using_mailx(from_address, to_address, subject, body): # type: (str, str, str, str) -> int # ensure that the body is a byte stream and that we do not # break on encoding errors (the default error mode is "strict") encoded_body = body.encode( locale.getpreferredencoding(False), errors="replace") # we use a binary pipe to stdin to ensure we do not break on # unicode encoding errors (e.g. because the user is running a # ascii only system like the buildds) mail = subprocess.Popen( [MAIL_BINARY, "-r", from_address, "-s", subject, to_address], stdin=subprocess.PIPE, universal_newlines=False) mail.stdin.write(encoded_body) mail.stdin.close() ret = mail.wait() return ret def _send_mail_using_sendmail(from_address, to_address, subject, body): # type: (str, str, str, str) -> int # format as a proper mail msg = Message() msg['Subject'] = subject msg['From'] = from_address msg['To'] = to_address msg['Auto-Submitted'] = "auto-generated" # order is important here, Message() first, then Charset() # then msg.set_charset() charset = email.charset.Charset("utf-8") charset.body_encoding = email.charset.QP # type: ignore msg.set_payload(body, charset) # and send it away sendmail = subprocess.Popen( [SENDMAIL_BINARY, "-oi", "-t"], stdin=subprocess.PIPE, universal_newlines=True) sendmail.stdin.write(msg.as_string()) sendmail.stdin.close() ret = sendmail.wait() return ret def send_summary_mail(pkgs, # type: str res, # type: bool pkgs_kept_back, # type: KeptPkgs pkgs_removed, # type: List[str] pkgs_kept_installed, # type: List[str] mem_log, # type: StringIO dpkg_log_content, # type: str ): # type: (...) -> None """ send mail (if configured in Unattended-Upgrade::Mail) """ to_email = apt_pkg.config.find("Unattended-Upgrade::Mail", "") if not to_email: return if not os.path.exists(MAIL_BINARY) and not os.path.exists(SENDMAIL_BINARY): logging.error(_("No /usr/bin/mail or /usr/sbin/sendmail," "can not send mail. " "You probably want to install the mailx package.")) return # if the operation was successful and the user has requested to get # mails on on errors, just exit here if (res and apt_pkg.config.find_b( "Unattended-Upgrade::MailOnlyOnError", False)): return # if the run was successful but nothing had to be done skip sending email if (res and not pkgs and not pkgs_kept_back and not pkgs_removed): return # Check if reboot-required flag is present reboot_flag_str = _( "[reboot required]") if os.path.isfile(REBOOT_REQUIRED_FILE) else "" # Check if packages are kept on hold hold_flag_str = _("[package on hold]") if (pkgs_kept_back or pkgs_kept_installed) else "" logging.debug("Sending mail to %s" % to_email) subject = _( "{hold_flag}{reboot_flag} unattended-upgrades result for " "{machine}: {result}").format( hold_flag=hold_flag_str, reboot_flag=reboot_flag_str, machine=host(), result=res).strip() body = _("Unattended upgrade returned: %s\n\n") % res if os.path.isfile(REBOOT_REQUIRED_FILE): body += _( "Warning: A reboot is required to complete this upgrade.\n\n") if res: body += _("Packages that were upgraded:\n") else: body += _("Packages that attempted to upgrade:\n") body += " " + wrap(pkgs, 70, " ") body += "\n" if pkgs_kept_back: body += _("Packages with upgradable origin but kept back:\n") for origin, origin_pkgs in pkgs_kept_back.items(): body += " " + origin + ":\n" body += " " + wrap(" ".join(origin_pkgs), 70, " ") + "\n" body += "\n" if pkgs_removed: body += _("Packages that were auto-removed:\n") body += " " + wrap(" ".join(pkgs_removed), 70, " ") body += "\n" body += "\n" if pkgs_kept_installed: body += _("Packages that were kept from being auto-removed:\n") body += " " + wrap(" ".join(pkgs_kept_installed), 70, " ") body += "\n" body += "\n" if dpkg_log_content: body += _("Package installation log:") + "\n" body += dpkg_log_content body += "\n\n" body += _("Unattended-upgrades log:\n") body += mem_log.getvalue() from_email = apt_pkg.config.find("Unattended-Upgrade::Sender", "root") if os.path.exists(SENDMAIL_BINARY): ret = _send_mail_using_sendmail(from_email, to_email, subject, body) elif os.path.exists(MAIL_BINARY): ret = _send_mail_using_mailx(from_email, to_email, subject, body) else: raise AssertionError( "This should never be reached, if we are here we either " "have sendmail or mailx. Please report this as a bug.") logging.debug("mail returned: %s", ret) def do_install(cache, # type: apt.Cache pkgs_to_upgrade, # type: List[apt.Package] blacklisted_pkgs, # type: List[str] whitelisted_pkgs, # type: List[str] options, # type: Options logfile_dpkg, # type: str ): # type: (...) -> bool # set debconf to NON_INTERACTIVE, redirect output os.putenv("DEBIAN_FRONTEND", "noninteractive") setup_apt_listchanges() logging.info(_("Writing dpkg log to %s"), logfile_dpkg) marked_delete = [pkg for pkg in cache.get_changes() if pkg.marked_delete] if marked_delete: raise AssertionError( "Internal error. The following packages are marked for " "removal:%s" % "".join([pkg.name for pkg in marked_delete])) pkg_install_success = False try: if use_minimal_steps(options): # try upgrade all "pkgs" in minimal steps pkg_install_success = upgrade_in_minimal_steps( cache, [pkg.name for pkg in pkgs_to_upgrade], blacklisted_pkgs, whitelisted_pkgs, logfile_dpkg, options.verbose or options.debug) else: mark_pkgs_to_upgrade(cache, pkgs_to_upgrade) pkg_install_success = upgrade_normal( cache, logfile_dpkg, options.verbose or options.debug) except Exception as e: # print unhandled exceptions here this way, while stderr is redirected os.write(2, ("Exception: %s\n" % e).encode('utf-8')) pkg_install_success = False return pkg_install_success def _setup_alternative_rootdir(rootdir): # type: (str) -> None # clear system unattended-upgrade stuff apt_pkg.config.clear("Unattended-Upgrade") # read rootdir (taken from apt.Cache, but we need to run it # here before the cache gets initialized if os.path.exists(rootdir + "/etc/apt/apt.conf"): apt_pkg.read_config_file(apt_pkg.config, rootdir + "/etc/apt/apt.conf") if os.path.isdir(rootdir + "/etc/apt/apt.conf.d"): apt_pkg.read_config_dir(apt_pkg.config, rootdir + "/etc/apt/apt.conf.d") logdir = os.path.join(rootdir, "var", "log", "unattended-upgrades") if not os.path.exists(logdir): os.makedirs(logdir) apt.apt_pkg.config.set("Unattended-Upgrade::LogDir", logdir) def _get_logdir(): # type: () -> str logdir = apt_pkg.config.find_dir( "Unattended-Upgrade::LogDir", # COMPAT only apt_pkg.config.find_dir("APT::UnattendedUpgrades::LogDir", "/var/log/unattended-upgrades/")) return logdir def _setup_logging(options): # type: (Options) -> StringIO # ensure this is run only once if len(logging.root.handlers) > 0: return None # init the logging logdir = _get_logdir() logfile = os.path.join( logdir, apt_pkg.config.find( "Unattended-Upgrade::LogFile", # COMPAT only apt_pkg.config.find("APT::UnattendedUpgrades::LogFile", "unattended-upgrades.log"))) if not options.dry_run and not os.path.exists(logdir): os.makedirs(logdir) logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s %(message)s', filename=logfile) # additional logging logger = logging.getLogger() mem_log = StringIO() if options.apt_debug: apt_pkg.config.set("Debug::pkgProblemResolver", "1") apt_pkg.config.set("Debug::pkgDepCache::AutoInstall", "1") if options.debug: logger.setLevel(logging.DEBUG) stdout_handler = logging.StreamHandler(sys.stdout) logger.addHandler(stdout_handler) elif options.verbose: logger.setLevel(logging.INFO) stdout_handler = logging.StreamHandler(sys.stdout) logger.addHandler(stdout_handler) if apt_pkg.config.find("Unattended-Upgrade::Mail", ""): mem_log_handler = logging.StreamHandler(mem_log) logger.addHandler(mem_log_handler) # Configure syslog if necessary syslogEnable = apt_pkg.config.find_b("Unattended-Upgrade::SyslogEnable", False) if syslogEnable: syslogFacility = apt_pkg.config.find( "Unattended-Upgrade::SyslogFacility", "daemon") syslogHandler = logging.handlers.SysLogHandler( address='/dev/log', facility=syslogFacility) syslogHandler.setFormatter( logging.Formatter("unattended-upgrade: %(message)s")) known = syslogHandler.facility_names.keys() # type: ignore if syslogFacility.lower() in known: logger.addHandler(syslogHandler) logging.info("Enabled logging to syslog via %s facility " % syslogFacility) else: logging.warning("Syslog facility %s was not found" % syslogFacility) return mem_log def get_blacklisted_pkgs(): # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Blacklist") def get_whitelisted_pkgs(): # type: () -> List[str] return apt_pkg.config.value_list("Unattended-Upgrade::Package-Whitelist") def logged_in_users(): # type: () -> AbstractSet[str] """Return a list of logged in users""" # the "users" command always returns a single line with: # "user1, user1, user2" users = subprocess.check_output( USERS, universal_newlines=True).rstrip('\n') return set(users.split()) def reboot_if_requested_and_needed(): # type: () -> None """auto-reboot (if required and the config for this is set)""" if not os.path.exists(REBOOT_REQUIRED_FILE): return if not apt_pkg.config.find_b( "Unattended-Upgrade::Automatic-Reboot", False): return # see if we need to check for logged in users if not apt_pkg.config.find_b( "Unattended-Upgrade::Automatic-Reboot-WithUsers", True): users = logged_in_users() if users: msg = gettext.ngettext( "Found %s, but not rebooting because %s is logged in." % ( REBOOT_REQUIRED_FILE, users), "Found %s, but not rebooting because %s are logged in." % ( REBOOT_REQUIRED_FILE, users), len(users)) logging.warning(msg) return # reboot at the specified time when = apt_pkg.config.find( "Unattended-Upgrade::Automatic-Reboot-Time", "now") logging.warning("Found %s, rebooting" % REBOOT_REQUIRED_FILE) subprocess.call(["/sbin/shutdown", "-r", when]) def write_stamp_file(): # type: () -> None statedir = os.path.join(apt_pkg.config.find_dir("Dir::State"), "periodic") if not os.path.exists(statedir): os.makedirs(statedir) with open(os.path.join(statedir, "unattended-upgrades-stamp"), "w"): pass def try_to_upgrade(pkg, # type: apt.Package pkgs_to_upgrade, # type: List[apt.Package] pkgs_kept_back, # type: KeptPkgs cache, # type: apt.Cache allowed_origins, # type: List[str] blacklisted_pkgs, # type: List[str] whitelisted_pkgs, # type: List[str] ): # type: (...) -> None try: try: # try to adjust pkg itself first, if that throws an exception it # can't be upgraded on its own cache.adjust_candidate(pkg) if not pkg.is_upgradable: return except NoAllowedOriginError: return cache._cached_candidate_pkgnames.add(pkg.name) cache.mark_upgrade_adjusted(pkg, from_user=not pkg.is_auto_installed) if check_changes_for_sanity(cache, allowed_origins, blacklisted_pkgs, whitelisted_pkgs, pkg): # add to packages to upgrade pkgs_to_upgrade.append(pkg) # re-eval pkgs_kept_back as the resolver may fail to # directly upgrade a pkg, but that may work during # a subsequent operation, see debian bug #639840 pkgs_to_upgrade.extend(pkgs_kept_back.pop_upgradable(cache)) else: logging.debug("sanity check failed for: %s" % str({str(p.candidate) for p in cache.get_changes()})) rewind_cache(cache, pkgs_to_upgrade) pkgs_kept_back.add(pkg, cache) except (SystemError, NoAllowedOriginError) as e: # can't upgrade logging.warning( _("package %s upgradable but fails to " "be marked for upgrade (%s)"), pkg.name, e) rewind_cache(cache, pkgs_to_upgrade) pkgs_kept_back.add(pkg, cache) def calculate_upgradable_pkgs(cache, # type: apt.Cache options, # type: Options allowed_origins, # type: List[str] blacklisted_pkgs, # type: List[str] whitelisted_pkgs, # type: List[str] ): # type: (...) -> Tuple[List[apt.Package], KeptPkgs] pkgs_to_upgrade = [] # type: List[apt.Package] pkgs_kept_back = KeptPkgs(set) # now do the actual upgrade for pkg in cache: if options.debug and pkg.is_upgradable: logging.debug("Checking: %s (%s)" % ( pkg.name, getattr(pkg.candidate, "origins", []))) if (pkg.is_upgradable and is_pkgname_in_whitelist(pkg.name, whitelisted_pkgs)): try: ver_in_allowed_origin(pkg, allowed_origins) except NoAllowedOriginError: continue try_to_upgrade(pkg, pkgs_to_upgrade, pkgs_kept_back, cache, allowed_origins, blacklisted_pkgs, whitelisted_pkgs) if cache.get_changes(): cache.clear() return pkgs_to_upgrade, pkgs_kept_back def get_dpkg_log_content(logfile_dpkg, install_start_time): # type: (str, datetime.datetime) -> str logging.debug("Extracting content from %s since %s" % ( logfile_dpkg, install_start_time)) content = [] found_start = False with io.open(logfile_dpkg, encoding='utf-8', errors='replace') as fp: # read until we find the last "Log started: " for line in fp.readlines(): # scan for the first entry we need (minimal-step mode # creates a new stanza for each individual install) if not found_start and line.startswith("Log started: "): stanza_start = LoggingDateTime.from_string( line[len("Log started: "):-1]) if stanza_start >= install_start_time: found_start = True if found_start: # skip progress indicator until #860931 is fixed in apt + dpkg if re.match("^\(Reading database \.\.\. ()|([0-9]+%)$", line): continue content.append(line) return "".join(content) def get_auto_removable(cache): # type: (apt.Cache) -> AbstractSet[str] return {pkg.name for pkg in cache if pkg.is_auto_removable} def is_autoremove_valid(cache, pkgname, auto_removable, blacklisted_pkgs, whitelisted_pkgs): # type: (apt.Cache, str, AbstractSet[str], List[str], List[str]) -> bool changes = cache.get_changes() if not changes: # package is already removed return True pkgnames = {pkg.name for pkg in changes} for pkg in changes: if not is_pkg_change_allowed(pkg, blacklisted_pkgs, whitelisted_pkgs): logging.warning( _("Keeping the following auto-removable package(s) because " "they include %s which is set to be kept unmodified: %s"), pkg.name, " ".join(sorted(pkgnames))) return False if not pkgnames.issubset(auto_removable): if pkgname != "": logging.warning( _("Keeping auto-removable %s package(s) because it would" " also remove the following packages which should " "be kept in this step: %s"), pkgname, " ".join(sorted(pkgnames - auto_removable))) else: logging.warning( _("Keeping %s auto-removable package(s) because it would" " also remove the following packages which should " "be kept in this step: %s"), len(auto_removable), " ".join(sorted(pkgnames - auto_removable))) return False for packagename in pkgnames: if cache.running_kernel_pkgs_regexp and \ cache.running_kernel_pkgs_regexp.match(packagename): logging.warning( _("Keeping the following auto-removable package(s) because " "they include %s which package is related to the running " "kernel: %s"), packagename, " ".join(sorted(pkgnames))) return False return True def do_auto_remove(cache, # type: apt.Cache auto_removable, # type: AbstractSet[str] logfile_dpkg, # type: str minimal_steps, # type: bool blacklisted_pkgs, # type: List[str] whitelisted_pkgs, # type: List[str] verbose=False, # type: bool dry_run=False # type: bool ): # type: (...) -> Tuple[bool, List[str], List[str]] res = True if not auto_removable: return (res, [], []) pkgs_removed = [] # type: List[str] pkgs_kept_installed = [] # type: List[str] if minimal_steps: for pkgname in auto_removable: if should_stop(): pkgs_kept_installed = list(auto_removable - set(pkgs_removed)) return (False, pkgs_removed, pkgs_kept_installed) logging.debug("marking %s for removal" % pkgname) if pkgname in pkgs_removed: continue cache[pkgname].mark_delete() if not is_autoremove_valid(cache, pkgname, auto_removable, blacklisted_pkgs, whitelisted_pkgs): # this situation can occur when removing newly unused packages # would also remove old unused packages which are not set # for removal, thus getting there is not handled as an error pkgs_kept_installed.append(pkgname) cache.clear() continue if not dry_run: changes = cache.get_changes() pkgnames = {pkg.name for pkg in changes} res, error = cache_commit(cache, logfile_dpkg, verbose) if not res: break pkgs_removed.extend(pkgnames) else: cache.clear() else: for pkgname in auto_removable: cache[pkgname].mark_delete() if is_autoremove_valid(cache, "", auto_removable, blacklisted_pkgs, whitelisted_pkgs): # do it in one step if not dry_run: res, error = cache_commit(cache, logfile_dpkg, verbose) else: cache.clear() else: cache.clear() if res: logging.info(_("Packages that were successfully auto-removed: %s"), " ".join(sorted(pkgs_removed))) logging.info(_("Packages that are kept back: %s"), " ".join(sorted(pkgs_kept_installed))) if not res: cache.clear() logging.error(_("Auto-removing the packages failed!")) logging.error(_("Error message: %s"), error) logging.error(_("dpkg returned an error! See %s for details"), logfile_dpkg) return (res, pkgs_removed, pkgs_kept_installed) def clean_downloaded_packages(fetcher): # type: (apt_pkg.Acquire) -> None archivedir = os.path.dirname( apt_pkg.config.find_dir("Dir::Cache::archives")) for item in fetcher.items: if os.path.dirname(os.path.abspath(item.destfile)) == archivedir: try: os.unlink(item.destfile) except OSError: pass def is_update_day(): # type: () -> bool # check if patch days are configured patch_days = apt_pkg.config.value_list("Unattended-Upgrade::Update-Days") if not patch_days: return True # validate patch days today = date.today() # abbreviated localized dayname if today.strftime("%a") in patch_days: return True # full localized dayname if today.strftime("%A") in patch_days: return True # by number (Sun: 0, Mon: 1, ...) if today.strftime("%w") in patch_days: return True # today is not a patch day logging.info( "Skipping update check: today is %s,%s,%s but patch days are %s", today.strftime("%w"), today.strftime("%a"), today.strftime("%A"), ", ".join(patch_days)) return False def update_kept_packages(kept_pkgs, kept_file): # type: (DefaultDict[str, List[str]], str) -> None if kept_pkgs: pkgs_all_origins = set() for origin_pkgs in kept_pkgs.values(): pkgs_all_origins.update(origin_pkgs) try: with open(kept_file, "w") as kf: kf.write(" ".join(sorted(pkgs_all_origins))) except Exception: logging.error(_("Could not open %s for saving list of packages " "kept back." % kept_file)) else: if os.path.exists(kept_file): os.remove(kept_file) def mark_pkgs_to_upgrade(cache, pkgs_to_upgrade): # type (apt.Cache, List[apt.Package]) -> None for pkg in pkgs_to_upgrade: if pkg.is_upgradable: cache.mark_upgrade_adjusted(pkg, from_user=not pkg.is_auto_installed) elif not pkg.is_installed: cache.mark_install_adjusted(pkg, from_user=False) def main(options, rootdir="/"): # type: (Options, str) -> int # useful for testing if not rootdir == "/": _setup_alternative_rootdir(rootdir) # setup logging mem_log = _setup_logging(options) # check if today is a patch day if not is_update_day(): return 0 # check to see if want to auto-upgrade the devel release if "(development branch)" in DISTRO_DESC and not\ apt_pkg.config.find_b("Unattended-Upgrade::DevRelease", False): logging.info(_("Not running on the development release.")) return 0 # format (origin, archive), e.g. ("Ubuntu","dapper-security") allowed_origins = get_allowed_origins() # pkgs that are (for some reason) not safe to install blacklisted_pkgs = get_blacklisted_pkgs() logging.info(_("Initial blacklisted packages: %s"), " ".join(blacklisted_pkgs)) # install only these packages regardless of other upgrades available whitelisted_pkgs = get_whitelisted_pkgs() logging.info(_("Initial whitelisted packages: %s"), " ".join(whitelisted_pkgs)) logging.info(_("Starting unattended upgrades script")) # lock for the shutdown check shutdown_lock = apt_pkg.get_lock(LOCK_FILE) if shutdown_lock < 0: logging.error("Lock file is already taken, exiting") sys.exit(1) # display available origin logging.info(_("Allowed origins are: %s"), ", ".join(allowed_origins)) # see debian #776752 install_start_time = datetime.datetime.now().replace(microsecond=0) # check and get lock try: apt_pkg.pkgsystem_lock() except SystemError as e: logging.error(_("Lock could not be acquired (another package " "manager running?)")) print(_("Cache lock can not be acquired, exiting")) sys.exit(1) # check if the journal is dirty and if so, take emergceny action # the alternative is to leave the system potentially unsecure until # the user comes in and fixes if is_dpkg_journal_dirty() and \ apt_pkg.config.find_b("Unattended-Upgrade::AutoFixInterruptedDpkg", True): logging.warning( _("Unclean dpkg state detected, trying to correct")) print(_("Unclean dpkg state detected, trying to correct")) env = copy.copy(os.environ) env["DEBIAN_FRONTEND"] = "noninteractive" env["DPKG_FRONTEND_LOCKED"] = "1" try: with Unlocked(): output = subprocess.check_output( ["dpkg", "--force-confold", "--configure", "-a"], env=env, universal_newlines=True) except subprocess.CalledProcessError as e: output = e.output logging.warning(_("dpkg --configure -a output:\n%s"), output) # get a cache try: cache = UnattendedUpgradesCache(rootdir=rootdir, allowed_origins=allowed_origins) except SystemError as error: print(_("Apt returned an error, exiting")) print(_("error message: %s") % error) logging.error(_("Apt returned an error, exiting")) logging.error(_("error message: %s"), error) sys.exit(1) if cache._depcache.broken_count > 0: print(_("Cache has broken packages, exiting")) logging.error(_("Cache has broken packages, exiting")) sys.exit(1) # FIXME: make this into a ContextManager # be nice when calculating the upgrade as its pretty CPU intensive old_priority = os.nice(0) try: # Check that we will be able to restore the priority os.nice(-1) os.nice(20) except OSError as e: if e.errno in (errno.EPERM, errno.EACCES): pass else: raise auto_removable = get_auto_removable(cache) # find out about the packages that are upgradable (in an allowed_origin) pkgs_to_upgrade, pkgs_kept_back = calculate_upgradable_pkgs( cache, options, allowed_origins, blacklisted_pkgs, whitelisted_pkgs) pkgs_to_upgrade.sort(key=lambda p: p.name) pkgs = "\n".join([pkg.name for pkg in pkgs_to_upgrade]) logging.debug("pkgs that look like they should be upgraded: %s" % pkgs) # FIXME: make this into a ContextManager # stop being nice os.nice(old_priority - os.nice(0)) # download what looks good mark_pkgs_to_upgrade(cache, pkgs_to_upgrade) if options.debug: fetcher = apt_pkg.Acquire(apt.progress.text.AcquireProgress()) else: fetcher = apt_pkg.Acquire() list = apt_pkg.SourceList() list.read_main_list() recs = cache._records pm = apt_pkg.PackageManager(cache._depcache) # don't start downloading during shutdown # TODO: download files one by one and check for stop request after each of # them if should_stop(): return 1 try: pm.get_archives(fetcher, list, recs) except SystemError as e: logging.error(_("GetArchives() failed: %s"), e) try: res = fetcher.run() logging.debug("fetch.run() result: %s", res) except SystemError as e: logging.error("fetch.run() result: %s", e) if options.download_only: return 0 if cache.get_changes(): cache.clear() pkg_conffile_prompt = False if dpkg_conffile_prompt(): # now check the downloaded debs for conffile conflicts and build # a blacklist for item in fetcher.items: logging.debug("%s" % item) if item.status == item.STAT_ERROR: print(_("An error occurred: %s") % item.error_text) logging.error(_("An error occurred: %s"), item.error_text) if not item.complete: print(_("The URI %s failed to download, aborting") % item.desc_uri) logging.error(_("The URI %s failed to download, aborting"), item.desc_uri) sys.exit(1) if not os.path.exists(item.destfile): print(_("Download finished, but file %s not there?!?") % item.destfile) logging.error("Download finished, but file %s not " "there?!?", item.destfile) sys.exit(1) if not item.is_trusted: blacklisted_pkgs.append(pkgname_from_deb(item.destfile)) if conffile_prompt(item.destfile): # skip package (means to re-run the whole marking again # and making sure that the package will not be pulled in by # some other package again!) # # print to stdout to ensure that this message is part of # the cron mail (only if no summary mail is requested) email = apt_pkg.config.find("Unattended-Upgrade::Mail", "") if not email: print(_("Package %s has conffile prompt and needs " "to be upgraded manually") % pkgname_from_deb(item.destfile)) # log to the logfile logging.warning(_("Package %s has conffile prompt and " "needs to be upgraded manually"), pkgname_from_deb(item.destfile)) pkg_name = pkgname_from_deb(item.destfile) if not is_pkgname_in_blacklist(pkg_name, blacklisted_pkgs): blacklisted_pkgs.append("%s$" % re.escape(pkg_name)) pkgs_kept_back.add(cache[pkg_name], cache) pkg_conffile_prompt = True # redo the selection about the packages to upgrade based on the new # blacklist logging.debug("blacklist: %s" % blacklisted_pkgs) # whitelist logging.debug("whitelist: %s" % whitelisted_pkgs) # find out about the packages that are upgradable (in a allowed_origin) if len(blacklisted_pkgs) > 0 or len(whitelisted_pkgs) > 0: old_pkgs_to_upgrade = pkgs_to_upgrade[:] pkgs_to_upgrade = [] for pkg in old_pkgs_to_upgrade: logging.debug("Checking the black and whitelist: %s" % (pkg.name)) cache.mark_upgrade_adjusted( pkg, from_user=not pkg.is_auto_installed) if check_changes_for_sanity(cache, allowed_origins, blacklisted_pkgs, whitelisted_pkgs): pkgs_to_upgrade.append(pkg) else: if not (pkg.name in pkgs_kept_back): pkgs_kept_back.add(pkg, cache) logging.info(_("package %s not upgraded"), pkg.name) cache.clear() for pkg2 in pkgs_to_upgrade: cache.call_adjusted( apt.package.Package.mark_upgrade, pkg2, from_user=not pkg2.is_auto_installed) if cache.get_changes(): cache.clear() else: logging.debug("dpkg is configured not to cause conffile prompts") # get log logfile_dpkg = os.path.join(_get_logdir(), 'unattended-upgrades-dpkg.log') if not os.path.exists(logfile_dpkg): with open(logfile_dpkg, 'w'): pass # auto-removals kernel_pkgs_remove_success = True # type: bool kernel_pkgs_removed = [] # type: List[str] kernel_pkgs_kept_installed = [] # type: List[str] if (auto_removable and apt_pkg.config.find_b( "Unattended-Upgrade::Remove-Unused-Kernel-Packages", True)): # remove unused kernels before installing new ones because the newly # installed ones may fill up /boot and break the system right before # removing old ones could take place # # this step may also remove _auto-removable_ reverse dependencies # of kernel packages auto_removable_kernel_pkgs = { p for p in auto_removable if (cache.versioned_kernel_pkgs_regexp and cache.versioned_kernel_pkgs_regexp.match(p) and not cache.running_kernel_pkgs_regexp.match(p))} if auto_removable_kernel_pkgs: logging.info(_("Removing unused kernel packages: %s"), " ".join(auto_removable_kernel_pkgs)) (kernel_pkgs_remove_success, kernel_pkgs_removed, kernel_pkgs_kept_installed) = do_auto_remove( cache, auto_removable_kernel_pkgs, logfile_dpkg, use_minimal_steps(options), blacklisted_pkgs, whitelisted_pkgs, options.verbose or options.debug, options.dry_run) auto_removable = get_auto_removable(cache) previous_autoremovals = auto_removable if apt_pkg.config.find_b( "Unattended-Upgrade::Remove-Unused-Dependencies", False): pending_autoremovals = previous_autoremovals else: pending_autoremovals = set() # exit if there is nothing to do and nothing to report if (len(pending_autoremovals) == 0 and len(pkgs_to_upgrade) == 0 and len(pkgs_kept_back) == 0): logging.info(_("No packages found that can be upgraded unattended " "and no pending auto-removals")) # FIXME: DRY violation, write_stamp_file() is used below as well write_stamp_file() # check if we couldn't reboot on previous run because # a user was logged-in at this time os.close(shutdown_lock) # never reboot during a dry run if not options.dry_run: reboot_if_requested_and_needed() return 0 # check if its configured for install on shutdown, if so, the # environment UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN will # be set by the unatteded-upgrades-shutdown script if ("UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN" not in os.environ and apt_pkg.config.find_b( "Unattended-Upgrade::InstallOnShutdown", False)): logger = logging.getLogger() logger.debug("Configured to install on shutdown, so exiting now") os.close(shutdown_lock) return 0 # check if we are in dry-run mode if options.dry_run: logging.info("Option --dry-run given, *not* performing real actions") apt_pkg.config.set("Debug::pkgDPkgPM", "1") # do the install based on the new list of pkgs pkgs = " ".join([pkg.name for pkg in pkgs_to_upgrade]) logging.info(_("Packages that will be upgraded: %s"), pkgs) # only perform install step if we actually have packages to install pkg_install_success = True if len(pkgs_to_upgrade) > 0: # do install pkg_install_success = do_install(cache, pkgs_to_upgrade, blacklisted_pkgs, whitelisted_pkgs, options, logfile_dpkg) # Was the overall run succesful: only if everything installed # fine and nothing was held back because of a conffile prompt. successful_run = (kernel_pkgs_remove_success and pkg_install_success and not pkg_conffile_prompt) # now check if any auto-removing needs to be done if cache._depcache.broken_count > 0: print(_("Cache has broken packages, exiting")) logging.error(_("Cache has broken packages, exiting")) sys.exit(1) # make sure we start autoremovals with a clear cache if cache.get_changes(): cache.clear() # the user wants *all* auto-removals to be removed # (unless u-u got signalled to stop gracefully quickly) pkgs_removed = [] # type: List[str] pkgs_kept_installed = [] # type: List[str] if ((apt_pkg.config.find_b( "Unattended-Upgrade::Remove-Unused-Dependencies", False) and not SIGNAL_STOP_REQUEST)): auto_removals = get_auto_removable(cache) (pkg_remove_success, pkgs_removed, pkgs_kept_installed) = do_auto_remove( cache, auto_removals, logfile_dpkg, use_minimal_steps(options), blacklisted_pkgs, whitelisted_pkgs, options.verbose or options.debug, options.dry_run) successful_run = successful_run and pkg_remove_success # the user wants *only new* auto-removals to be removed elif apt_pkg.config.find_b( "Unattended-Upgrade::Remove-New-Unused-Dependencies", True): # calculate the new auto-removals new_pending_autoremovals = get_auto_removable(cache) auto_removals = new_pending_autoremovals - previous_autoremovals (pkg_remove_success, pkgs_removed, pkgs_kept_installed) = do_auto_remove( cache, auto_removals, logfile_dpkg, use_minimal_steps(options), blacklisted_pkgs, whitelisted_pkgs, options.verbose or options.debug, options.dry_run) successful_run = successful_run and pkg_remove_success logging.debug("InstCount=%i DelCount=%i BrokenCount=%i" % (cache._depcache.inst_count, cache._depcache.del_count, cache._depcache.broken_count)) # send a mail (if needed) if not options.dry_run: log_content = get_dpkg_log_content(logfile_dpkg, install_start_time) send_summary_mail( pkgs, successful_run, pkgs_kept_back, kernel_pkgs_removed + pkgs_removed, kernel_pkgs_kept_installed + pkgs_kept_installed, mem_log, log_content) # clean after success install (if needed) keep_key = "Unattended-Upgrade::Keep-Debs-After-Install" if (not apt_pkg.config.find_b(keep_key, False) and not options.dry_run and pkg_install_success): clean_downloaded_packages(fetcher) # FIXME: DRY violation, write_stamp_file() is used above as well # write timestamp file write_stamp_file() os.close(shutdown_lock) # check if the user wants a reboot if not options.dry_run: reboot_if_requested_and_needed() if successful_run: update_kept_packages(pkgs_kept_back, os.path.join(rootdir, KEPT_PACKAGES_FILE)) return 0 else: return 1 class Options: def __init__(self): self.download_only = False self.dry_run = False self.debug = False self.apt_debug = False self.verbose = False self.minimal_upgrade_steps = False if __name__ == "__main__": localesApp = "unattended-upgrades" localesDir = "/usr/share/locale" gettext.bindtextdomain(localesApp, localesDir) gettext.textdomain(localesApp) # this ensures the commandline is logged in /var/log/apt/history.log apt_pkg.config.set("Commandline::AsString", " ".join(sys.argv)) # init the options parser = OptionParser() parser.add_option("-d", "--debug", action="store_true", default=False, help=_("print debug messages")) parser.add_option("", "--apt-debug", action="store_true", default=False, help=_("make apt/libapt print verbose debug messages")) parser.add_option("-v", "--verbose", action="store_true", default=False, help=_("print info messages")) parser.add_option("", "--dry-run", action="store_true", default=False, help=_("Simulation, download but do not install")) parser.add_option("", "--download-only", action="store_true", default=False, help=_("Only download, do not even try to install.")) parser.add_option("", "--minimal-upgrade-steps", action="store_true", default=False, help=_("Upgrade in minimal steps (and allow " "interrupting with SIGTERM")) parser.add_option("", "--minimal_upgrade_steps", action="store_true", help=SUPPRESS_HELP, default=False) (options, args) = parser.parse_args() # type: ignore if os.getuid() != 0: print(_("You need to be root to run this application")) sys.exit(1) # ensure that we are not killed when the terminal goes away e.g. on # shutdown signal.signal(signal.SIGHUP, signal.SIG_IGN) # setup signal handler for graceful stopping signal.signal(signal.SIGTERM, signal_handler) # write pid to let other processes find this one pidf = os.path.join(apt_pkg.config.find_dir("Dir"), "var", "run", "unattended-upgrades.pid") # clean up pid file on exit with open(pidf, "w") as fp: fp.write("%s" % os.getpid()) atexit.register(os.remove, pidf) # run the main code sys.exit(main(options))