Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
Apache/2.4.59 (Debian)
: 10.2.73.233 | : 216.73.216.105
Cant Read [ /etc/named.conf ]
5.6.40-64+0~20230107.71+debian10~1.gbp673146
ifk
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
bin /
[ HOME SHELL ]
Name
Size
Permission
Action
X11
[ DIR ]
drwxr-xr-x
2to3-2.7
96
B
-rwxr-xr-x
GET
15.82
KB
-rwxr-xr-x
HEAD
15.82
KB
-rwxr-xr-x
Mail
110.24
KB
-rwxr-xr-x
POST
15.82
KB
-rwxr-xr-x
[
58.66
KB
-rwxr-xr-x
aa-enabled
30.21
KB
-rwxr-xr-x
aa-exec
30.21
KB
-rwxr-xr-x
ab
54.18
KB
-rwxr-xr-x
aclocal
35.62
KB
-rwxr-xr-x
aclocal-1.16
35.62
KB
-rwxr-xr-x
acpi
23.43
KB
-rwxr-xr-x
acpi_listen
14.27
KB
-rwxr-xr-x
add-apt-repository
6.21
KB
-rwxr-xr-x
addpart
26.08
KB
-rwxr-xr-x
addr2line
31.09
KB
-rwxr-xr-x
appletviewer
6.34
KB
-rwxr-xr-x
appres
10.23
KB
-rwxr-xr-x
apropos
54.98
KB
-rwxr-xr-x
apt
18.09
KB
-rwxr-xr-x
apt-add-repository
6.21
KB
-rwxr-xr-x
apt-cache
82.16
KB
-rwxr-xr-x
apt-cdrom
26.16
KB
-rwxr-xr-x
apt-config
26.09
KB
-rwxr-xr-x
apt-extracttemplates
22.16
KB
-rwxr-xr-x
apt-ftparchive
238.16
KB
-rwxr-xr-x
apt-get
46.16
KB
-rwxr-xr-x
apt-key
27.08
KB
-rwxr-xr-x
apt-listchanges
10.61
KB
-rwxr-xr-x
apt-mark
54.16
KB
-rwxr-xr-x
apt-sortpkgs
46.09
KB
-rwxr-xr-x
aptitude
4.18
MB
-rwxr-xr-x
aptitude-create-state-bundle
1.89
KB
-rwxr-xr-x
aptitude-curses
4.18
MB
-rwxr-xr-x
aptitude-run-state-bundle
2.78
KB
-rwxr-xr-x
ar
63.07
KB
-rwxr-xr-x
arch
38.66
KB
-rwxr-xr-x
aria_chk
4.54
MB
-rwxr-xr-x
aria_dump_log
4.35
MB
-rwxr-xr-x
aria_ftdump
4.37
MB
-rwxr-xr-x
aria_pack
4.39
MB
-rwxr-xr-x
aria_read_log
4.5
MB
-rwxr-xr-x
as
872.93
KB
-rwxr-xr-x
aspell
150.34
KB
-rwxr-xr-x
aspell-import
2
KB
-rwxr-xr-x
at
54.26
KB
-rwsr-sr-x
atq
54.26
KB
-rwsr-sr-x
atrm
54.26
KB
-rwsr-sr-x
autoconf
14.42
KB
-rwxr-xr-x
autoheader
8.34
KB
-rwxr-xr-x
autom4te
31.91
KB
-rwxr-xr-x
automake
251.9
KB
-rwxr-xr-x
automake-1.16
251.9
KB
-rwxr-xr-x
autopoint
25.97
KB
-rwxr-xr-x
autoreconf
20.67
KB
-rwxr-xr-x
autoscan
16.73
KB
-rwxr-xr-x
autoupdate
33.08
KB
-rwxr-xr-x
awk
658.81
KB
-rwxr-xr-x
b2sum
58.78
KB
-rwxr-xr-x
base32
42.69
KB
-rwxr-xr-x
base64
42.69
KB
-rwxr-xr-x
basename
38.59
KB
-rwxr-xr-x
bashbug
6.63
KB
-rwxr-xr-x
batch
152
B
-rwxr-xr-x
bc
86.7
KB
-rwxr-xr-x
bootctl
46.23
KB
-rwxr-xr-x
broadwayd
118.08
KB
-rwxr-xr-x
bsd-from
10.24
KB
-rwxr-xr-x
bsd-mailx
110.24
KB
-rwxr-xr-x
bsd-write
14.39
KB
-rwxr-sr-x
buildhash
38.38
KB
-rwxr-xr-x
busctl
78.19
KB
-rwxr-xr-x
c++
1.05
MB
-rwxr-xr-x
c++filt
30.69
KB
-rwxr-xr-x
c89
428
B
-rwxr-xr-x
c89-gcc
428
B
-rwxr-xr-x
c99
454
B
-rwxr-xr-x
c99-gcc
454
B
-rwxr-xr-x
c_rehash
6.13
KB
-rwxr-xr-x
cal
29.15
KB
-rwxr-xr-x
calendar
31.15
KB
-rwxr-xr-x
captoinfo
86.11
KB
-rwxr-xr-x
catchsegv
3.23
KB
-rwxr-xr-x
catman
38.46
KB
-rwxr-xr-x
cc
1.05
MB
-rwxr-xr-x
cd-create-profile
21.99
KB
-rwxr-xr-x
cd-fix-profile
25.99
KB
-rwxr-xr-x
cd-iccdump
13.99
KB
-rwxr-xr-x
cd-it8
21.99
KB
-rwxr-xr-x
chacl
13.99
KB
-rwxr-xr-x
chage
70.13
KB
-rwxr-sr-x
chardet
389
B
-rwxr-xr-x
chardet3
389
B
-rwxr-xr-x
chardetect
389
B
-rwxr-xr-x
chardetect3
389
B
-rwxr-xr-x
chattr
14
KB
-rwxr-xr-x
chcon
62.91
KB
-rwxr-xr-x
checkgid
13.99
KB
-rwxr-xr-x
chfn
52.83
KB
-rwsr-xr-x
choom
50.08
KB
-rwxr-xr-x
chrt
34.08
KB
-rwxr-xr-x
chsh
43.48
KB
-rwsr-xr-x
ckbcomp
146.38
KB
-rwxr-xr-x
cksum
38.63
KB
-rwxr-xr-x
clear
14
KB
-rwxr-xr-x
clear_console
14.3
KB
-rwxr-xr-x
clhsdb
6.35
KB
-rwxr-xr-x
cmp
50.64
KB
-rwxr-xr-x
codepage
14.21
KB
-rwxr-xr-x
col
10.23
KB
-rwxr-xr-x
colcrt
10.2
KB
-rwxr-xr-x
colormgr
53.99
KB
-rwxr-xr-x
colrm
10.19
KB
-rwxr-xr-x
column
10.34
KB
-rwxr-xr-x
comm
42.69
KB
-rwxr-xr-x
compose
17.74
KB
-rwxr-xr-x
corelist
14.73
KB
-rwxr-xr-x
cpan
7.96
KB
-rwxr-xr-x
cpan5.28-x86_64-linux-gnu
7.99
KB
-rwxr-xr-x
cpio-filter
1.22
KB
-rwxr-xr-x
cpp
1.05
MB
-rwxr-xr-x
cpp-4.9
814.43
KB
-rwxr-xr-x
cpp-6
930.77
KB
-rwxr-xr-x
cpp-8
1.05
MB
-rwxr-xr-x
crc32
1.04
KB
-rwxr-xr-x
crontab
42.55
KB
-rwxr-sr-x
csplit
54.84
KB
-rwxr-xr-x
ctstat
22.74
KB
-rwxr-xr-x
curl
226.07
KB
-rwxr-xr-x
cut
42.75
KB
-rwxr-xr-x
cvtsudoers
250.29
KB
-rwxr-xr-x
dbilogstrip
1.35
KB
-rwxr-xr-x
dbiprof
6.06
KB
-rwxr-xr-x
dbiproxy
5.27
KB
-rwxr-xr-x
dbus-cleanup-sockets
13.98
KB
-rwxr-xr-x
dbus-daemon
235.04
KB
-rwxr-xr-x
dbus-monitor
25.99
KB
-rwxr-xr-x
dbus-run-session
13.98
KB
-rwxr-xr-x
dbus-send
29.98
KB
-rwxr-xr-x
dbus-update-activation-environ...
13.98
KB
-rwxr-xr-x
dbus-uuidgen
13.98
KB
-rwxr-xr-x
dc
46.09
KB
-rwxr-xr-x
deallocvt
14.31
KB
-rwxr-xr-x
deb-systemd-helper
20.83
KB
-rwxr-xr-x
deb-systemd-invoke
4.33
KB
-rwxr-xr-x
debconf
2.79
KB
-rwxr-xr-x
debconf-apt-progress
11.27
KB
-rwxr-xr-x
debconf-communicate
608
B
-rwxr-xr-x
debconf-copydb
1.68
KB
-rwxr-xr-x
debconf-escape
647
B
-rwxr-xr-x
debconf-gettextize
15.97
KB
-rwxr-xr-x
debconf-set-selections
2.87
KB
-rwxr-xr-x
debconf-show
1.78
KB
-rwxr-xr-x
debconf-updatepo
4.46
KB
-rwxr-xr-x
debianbts
413
B
-rwxr-xr-x
defmt-c
5.99
KB
-rwxr-xr-x
defmt-sh
5.99
KB
-rwxr-xr-x
delpart
26.08
KB
-rwxr-xr-x
delv
44.83
KB
-rwxr-xr-x
dh
30.77
KB
-rwxr-xr-x
dh_auto_build
1.37
KB
-rwxr-xr-x
dh_auto_clean
1.51
KB
-rwxr-xr-x
dh_auto_configure
1.63
KB
-rwxr-xr-x
dh_auto_install
2.8
KB
-rwxr-xr-x
dh_auto_test
1.65
KB
-rwxr-xr-x
dh_autoreconf
6.46
KB
-rwxr-xr-x
dh_autoreconf_clean
2.1
KB
-rwxr-xr-x
dh_autotools-dev_restoreconfig
1.79
KB
-rwxr-xr-x
dh_autotools-dev_updateconfig
1.81
KB
-rwxr-xr-x
dh_bash-completion
2.39
KB
-rwxr-xr-x
dh_bugfiles
3.58
KB
-rwxr-xr-x
dh_builddeb
4.96
KB
-rwxr-xr-x
dh_clean
4.91
KB
-rwxr-xr-x
dh_compress
7.58
KB
-rwxr-xr-x
dh_dkms
4.2
KB
-rwxr-xr-x
dh_dwz
3.84
KB
-rwxr-xr-x
dh_fixperms
5.28
KB
-rwxr-xr-x
dh_gconf
2.78
KB
-rwxr-xr-x
dh_gencontrol
5.85
KB
-rwxr-xr-x
dh_icons
2.04
KB
-rwxr-xr-x
dh_install
11.24
KB
-rwxr-xr-x
dh_installcatalogs
3.25
KB
-rwxr-xr-x
dh_installchangelogs
9
KB
-rwxr-xr-x
dh_installcron
1.6
KB
-rwxr-xr-x
dh_installdeb
7.8
KB
-rwxr-xr-x
dh_installdebconf
3.21
KB
-rwxr-xr-x
dh_installdirs
3
KB
-rwxr-xr-x
dh_installdocs
14.67
KB
-rwxr-xr-x
dh_installemacsen
3.74
KB
-rwxr-xr-x
dh_installexamples
5.33
KB
-rwxr-xr-x
dh_installgsettings
2.24
KB
-rwxr-xr-x
dh_installifupdown
1.47
KB
-rwxr-xr-x
dh_installinfo
2.87
KB
-rwxr-xr-x
dh_installinit
14.31
KB
-rwxr-xr-x
dh_installinitramfs
2.18
KB
-rwxr-xr-x
dh_installlogcheck
1.94
KB
-rwxr-xr-x
dh_installlogrotate
1.14
KB
-rwxr-xr-x
dh_installman
11.07
KB
-rwxr-xr-x
dh_installmanpages
4.89
KB
-rwxr-xr-x
dh_installmenu
2.15
KB
-rwxr-xr-x
dh_installmime
1.3
KB
-rwxr-xr-x
dh_installmodules
2.63
KB
-rwxr-xr-x
dh_installpam
1.13
KB
-rwxr-xr-x
dh_installppp
1.38
KB
-rwxr-xr-x
dh_installsystemd
13.06
KB
-rwxr-xr-x
dh_installsystemduser
7.41
KB
-rwxr-xr-x
dh_installtex
17.95
KB
-rwxr-xr-x
dh_installudev
2.1
KB
-rwxr-xr-x
dh_installwm
3.25
KB
-rwxr-xr-x
dh_installxfonts
2.91
KB
-rwxr-xr-x
dh_link
4.24
KB
-rwxr-xr-x
dh_lintian
1.29
KB
-rwxr-xr-x
dh_listpackages
824
B
-rwxr-xr-x
dh_makeshlibs
10.87
KB
-rwxr-xr-x
dh_md5sums
3.4
KB
-rwxr-xr-x
dh_missing
6.32
KB
-rwxr-xr-x
dh_movefiles
4.69
KB
-rwxr-xr-x
dh_perl
4.23
KB
-rwxr-xr-x
dh_perl_dbi
1.04
KB
-rwxr-xr-x
dh_perl_openssl
1.36
KB
-rwxr-xr-x
dh_phpcomposer
3.01
KB
-rwxr-xr-x
dh_phppear
5.63
KB
-rwxr-xr-x
dh_prep
1.87
KB
-rwxr-xr-x
dh_pysupport
11.95
KB
-rwxr-xr-x
dh_python2
1.03
KB
-rwxr-xr-x
dh_shlibdeps
6.13
KB
-rwxr-xr-x
dh_strip
14.45
KB
-rwxr-xr-x
dh_strip_nondeterminism
2.68
KB
-rwxr-xr-x
dh_systemd_enable
8.97
KB
-rwxr-xr-x
dh_systemd_start
8.57
KB
-rwxr-xr-x
dh_testdir
1.3
KB
-rwxr-xr-x
dh_testroot
2.86
KB
-rwxr-xr-x
dh_ucf
2.29
KB
-rwxr-xr-x
dh_update_autotools_config
1.84
KB
-rwxr-xr-x
dh_usrlocal
4.2
KB
-rwxr-xr-x
diff
215.28
KB
-rwxr-xr-x
diff3
66.84
KB
-rwxr-xr-x
dig
146.51
KB
-rwxr-xr-x
dircolors
46.66
KB
-rwxr-xr-x
dirmngr
553.55
KB
-rwxr-xr-x
dirmngr-client
114.76
KB
-rwxr-xr-x
dirname
34.59
KB
-rwxr-xr-x
discover-config
2.86
KB
-rwxr-xr-x
dnstap-read
18.01
KB
-rwxr-xr-x
dos2unix
50.02
KB
-rwxr-xr-x
dotlockfile
18.5
KB
-rwxr-sr-x
dpkg
298.53
KB
-rwxr-xr-x
dpkg-architecture
12.55
KB
-rwxr-xr-x
dpkg-buildflags
7.39
KB
-rwxr-xr-x
dpkg-buildpackage
29.89
KB
-rwxr-xr-x
dpkg-checkbuilddeps
7.45
KB
-rwxr-xr-x
dpkg-deb
162.38
KB
-rwxr-xr-x
dpkg-distaddfile
2.72
KB
-rwxr-xr-x
dpkg-divert
150.44
KB
-rwxr-xr-x
dpkg-genbuildinfo
16.4
KB
-rwxr-xr-x
dpkg-genchanges
17.08
KB
-rwxr-xr-x
dpkg-gencontrol
13.82
KB
-rwxr-xr-x
dpkg-gensymbols
10.65
KB
-rwxr-xr-x
dpkg-maintscript-helper
20.03
KB
-rwxr-xr-x
dpkg-mergechangelogs
8.35
KB
-rwxr-xr-x
dpkg-name
6.63
KB
-rwxr-xr-x
dpkg-parsechangelog
4.46
KB
-rwxr-xr-x
dpkg-query
158.43
KB
-rwxr-xr-x
dpkg-scanpackages
8.49
KB
-rwxr-xr-x
dpkg-scansources
8.95
KB
-rwxr-xr-x
dpkg-shlibdeps
30.68
KB
-rwxr-xr-x
dpkg-source
22.48
KB
-rwxr-xr-x
dpkg-split
122.34
KB
-rwxr-xr-x
dpkg-statoverride
62.12
KB
-rwxr-xr-x
dpkg-trigger
78.34
KB
-rwxr-xr-x
dpkg-vendor
3.19
KB
-rwxr-xr-x
du
107.09
KB
-rwxr-xr-x
dumpkeys
174.91
KB
-rwxr-xr-x
dvipdf
1023
B
-rwxr-xr-x
dwp
2.74
MB
-rwxr-xr-x
dwz
164.09
KB
-rwxr-xr-x
edit
17.74
KB
-rwxr-xr-x
editor
240.39
KB
-rwxr-xr-x
editres
69.38
KB
-rwxr-xr-x
eject
30.69
KB
-rwxr-xr-x
elfedit
38.84
KB
-rwxr-xr-x
enc2xs
41.12
KB
-rwxr-xr-x
encguess
2.99
KB
-rwxr-xr-x
enchant
22.07
KB
-rwxr-xr-x
enchant-lsmod
13.99
KB
-rwxr-xr-x
env
42.66
KB
-rwxr-xr-x
envsubst
42.64
KB
-rwxr-xr-x
eps2eps
639
B
-rwxr-xr-x
eqn
201.19
KB
-rwxr-xr-x
ex
2.58
MB
-rwxr-xr-x
expand
42.69
KB
-rwxr-xr-x
expiry
30.27
KB
-rwxr-sr-x
expr
50.72
KB
-rwxr-xr-x
extcheck
6.34
KB
-rwxr-xr-x
factor
74.75
KB
-rwxr-xr-x
faillog
22.29
KB
-rwxr-xr-x
faked-sysv
26.56
KB
-rwxr-xr-x
faked-tcp
30.58
KB
-rwxr-xr-x
fakeroot
3.76
KB
-rwxr-xr-x
fakeroot-sysv
3.76
KB
-rwxr-xr-x
fakeroot-tcp
3.76
KB
-rwxr-xr-x
fallocate
30.08
KB
-rwxr-xr-x
fc-cache
18.51
KB
-rwxr-xr-x
fc-cat
18.46
KB
-rwxr-xr-x
fc-conflist
14.27
KB
-rwxr-xr-x
fc-list
14.34
KB
-rwxr-xr-x
fc-match
14.4
KB
-rwxr-xr-x
fc-pattern
14.33
KB
-rwxr-xr-x
fc-query
14.3
KB
-rwxr-xr-x
fc-scan
14.34
KB
-rwxr-xr-x
fc-validate
14.34
KB
-rwxr-xr-x
fcgistarter
13.99
KB
-rwxr-xr-x
filan
83.78
KB
-rwxr-xr-x
file
26.31
KB
-rwxr-xr-x
fincore
30.13
KB
-rwxr-xr-x
find
308.5
KB
-rwxr-xr-x
findaffix
11.74
KB
-rwxr-xr-x
finger
27.08
KB
-rwxr-xr-x
firewall-cmd
113.47
KB
-rwxr-xr-x
firewall-offline-cmd
101.17
KB
-rwxr-xr-x
flock
34.16
KB
-rwxr-xr-x
fmt
42.66
KB
-rwxr-xr-x
fold
38.66
KB
-rwxr-xr-x
formail
46.59
KB
-rwxr-xr-x
free
18.08
KB
-rwxr-xr-x
from
10.24
KB
-rwxr-xr-x
ftp
99.62
KB
-rwxr-xr-x
funzip
22.26
KB
-rwxr-xr-x
g++
1.05
MB
-rwxr-xr-x
g++-8
1.05
MB
-rwxr-xr-x
galera_new_cluster
917
B
-rwxr-xr-x
galera_recovery
3.28
KB
-rwxr-xr-x
gamma4scanimage
13.99
KB
-rwxr-xr-x
gapplication
22.07
KB
-rwxr-xr-x
gawk
658.81
KB
-rwxr-xr-x
gcc
1.05
MB
-rwxr-xr-x
gcc-4.9
813.49
KB
-rwxr-xr-x
gcc-6
926.77
KB
-rwxr-xr-x
gcc-8
1.05
MB
-rwxr-xr-x
gcc-ar
34.47
KB
-rwxr-xr-x
gcc-ar-4.9
24.25
KB
-rwxr-xr-x
gcc-ar-6
26.53
KB
-rwxr-xr-x
gcc-ar-8
34.47
KB
-rwxr-xr-x
gcc-nm
34.47
KB
-rwxr-xr-x
gcc-nm-4.9
24.19
KB
-rwxr-xr-x
gcc-nm-6
26.53
KB
-rwxr-xr-x
gcc-nm-8
34.47
KB
-rwxr-xr-x
gcc-ranlib
34.47
KB
-rwxr-xr-x
gcc-ranlib-4.9
24.19
KB
-rwxr-xr-x
gcc-ranlib-6
26.53
KB
-rwxr-xr-x
gcc-ranlib-8
34.47
KB
-rwxr-xr-x
gcov
672.09
KB
-rwxr-xr-x
gcov-4.9
440.43
KB
-rwxr-xr-x
gcov-6
507.93
KB
-rwxr-xr-x
gcov-8
672.09
KB
-rwxr-xr-x
gcov-dump
511.95
KB
-rwxr-xr-x
gcov-dump-6
439.86
KB
-rwxr-xr-x
gcov-dump-8
511.95
KB
-rwxr-xr-x
gcov-tool
548.02
KB
-rwxr-xr-x
gcov-tool-6
463.92
KB
-rwxr-xr-x
gcov-tool-8
548.02
KB
-rwxr-xr-x
gdbus
50.08
KB
-rwxr-xr-x
gdk-pixbuf-csource
14.01
KB
-rwxr-xr-x
gdk-pixbuf-pixdata
13.99
KB
-rwxr-xr-x
gdk-pixbuf-thumbnailer
18.08
KB
-rwxr-xr-x
gencat
26.6
KB
-rwxr-xr-x
geqn
201.19
KB
-rwxr-xr-x
getconf
34.37
KB
-rwxr-xr-x
getent
35.34
KB
-rwxr-xr-x
getfacl
30.62
KB
-rwxr-xr-x
getkeycodes
14.3
KB
-rwxr-xr-x
getopt
22.07
KB
-rwxr-xr-x
gettext
42.62
KB
-rwxr-xr-x
gettext.sh
4.52
KB
-rwxr-xr-x
gettextize
42.73
KB
-rwxr-xr-x
ghostscript
14.18
KB
-rwxr-xr-x
ginstall-info
47.73
KB
-rwxr-xr-x
gio
86.09
KB
-rwxr-xr-x
gio-querymodules
13.99
KB
-rwxr-xr-x
glib-compile-schemas
46.07
KB
-rwxr-xr-x
gold
2.97
MB
-rwxr-xr-x
gpasswd
82.05
KB
-rwsr-xr-x
gpg
1021.73
KB
-rwxr-xr-x
gpg-agent
396.73
KB
-rwxr-xr-x
gpg-connect-agent
158.85
KB
-rwxr-xr-x
gpg-wks-server
199.05
KB
-rwxr-xr-x
gpg-zip
3.43
KB
-rwxr-xr-x
gpg2
1021.73
KB
-rwxr-xr-x
gpgcompose
853.98
KB
-rwxr-xr-x
gpgconf
166.32
KB
-rwxr-xr-x
gpgparsemail
30.07
KB
-rwxr-xr-x
gpgsm
495.09
KB
-rwxr-xr-x
gpgsplit
82.45
KB
-rwxr-xr-x
gpgtar
151.32
KB
-rwxr-xr-x
gpgv
434.99
KB
-rwxr-xr-x
gpic
208.03
KB
-rwxr-xr-x
gprof
96.39
KB
-rwxr-xr-x
gresource
21.99
KB
-rwxr-xr-x
groff
117.22
KB
-rwxr-xr-x
grog
2.71
KB
-rwxr-xr-x
grops
177.63
KB
-rwxr-xr-x
grotty
129.25
KB
-rwxr-xr-x
groups
38.66
KB
-rwxr-xr-x
grub-editenv
369.96
KB
-rwxr-xr-x
grub-file
801.21
KB
-rwxr-xr-x
grub-fstest
922.9
KB
-rwxr-xr-x
grub-glue-efi
244.77
KB
-rwxr-xr-x
grub-kbdcomp
1.64
KB
-rwxr-xr-x
grub-menulst2cfg
228.85
KB
-rwxr-xr-x
grub-mkfont
269.46
KB
-rwxr-xr-x
grub-mkimage
349.96
KB
-rwxr-xr-x
grub-mklayout
249.09
KB
-rwxr-xr-x
grub-mknetdir
402.76
KB
-rwxr-xr-x
grub-mkpasswd-pbkdf2
249.15
KB
-rwxr-xr-x
grub-mkrelpath
240.49
KB
-rwxr-xr-x
grub-mkrescue
979.63
KB
-rwxr-xr-x
grub-mkstandalone
487.09
KB
-rwxr-xr-x
grub-mount
745.85
KB
-rwxr-xr-x
grub-ntldr-img
38.38
KB
-rwxr-xr-x
grub-render-label
817.77
KB
-rwxr-xr-x
grub-script-check
264.62
KB
-rwxr-xr-x
grub-syslinux2cfg
766.29
KB
-rwxr-xr-x
gs
14.18
KB
-rwxr-xr-x
gsbj
350
B
-rwxr-xr-x
gsdj
352
B
-rwxr-xr-x
gsdj500
352
B
-rwxr-xr-x
gsettings
30.07
KB
-rwxr-xr-x
gslj
353
B
-rwxr-xr-x
gslp
350
B
-rwxr-xr-x
gsnd
277
B
-rwxr-xr-x
gtbl
138.2
KB
-rwxr-xr-x
gtk-builder-tool
34.42
KB
-rwxr-xr-x
gtk-launch
18.15
KB
-rwxr-xr-x
gtk-query-settings
13.99
KB
-rwxr-xr-x
gtk-update-icon-cache
38.47
KB
-rwxr-xr-x
h2ph
28.54
KB
-rwxr-xr-x
h2xs
59.44
KB
-rwxr-xr-x
hd
26.55
KB
-rwxr-xr-x
head
46.72
KB
-rwxr-xr-x
helpztags
2.46
KB
-rwxr-xr-x
hexdump
26.55
KB
-rwxr-xr-x
host
126.63
KB
-rwxr-xr-x
hostid
34.59
KB
-rwxr-xr-x
hostnamectl
26.07
KB
-rwxr-xr-x
hsdb
6.35
KB
-rwxr-xr-x
htcacheclean
34
KB
-rwxr-xr-x
htdbm
25.99
KB
-rwxr-xr-x
htdigest
13.99
KB
-rwxr-xr-x
htpasswd
25.99
KB
-rwxr-xr-x
i386
22.34
KB
-rwxr-xr-x
icombine
34.38
KB
-rwxr-xr-x
iconv
59.01
KB
-rwxr-xr-x
id
42.78
KB
-rwxr-xr-x
idlj
6.34
KB
-rwxr-xr-x
ifnames
4.03
KB
-rwxr-xr-x
ijoin
14.03
KB
-rwxr-xr-x
info
242.79
KB
-rwxr-xr-x
infobrowser
242.79
KB
-rwxr-xr-x
infocmp
62.07
KB
-rwxr-xr-x
infotocap
86.11
KB
-rwxr-xr-x
innochecksum
3.46
MB
-rwxr-xr-x
innotop
445.81
KB
-rwxr-xr-x
install
151.6
KB
-rwxr-xr-x
install-info
47.73
KB
-rwxr-xr-x
instmodsh
4.27
KB
-rwxr-xr-x
ionice
30.08
KB
-rwxr-xr-x
ipcmk
30.14
KB
-rwxr-xr-x
ipcrm
30.08
KB
-rwxr-xr-x
ipcs
66.08
KB
-rwxr-xr-x
iptables-xml
100.68
KB
-rwxr-xr-x
ischroot
14.23
KB
-rwxr-xr-x
ispell
94.46
KB
-rwxr-xr-x
ispell-wrapper
7.05
KB
-rwxr-xr-x
jar
6.34
KB
-rwxr-xr-x
jarsigner
6.34
KB
-rwxr-xr-x
java
6.3
KB
-rwxr-xr-x
javac
6.34
KB
-rwxr-xr-x
javadoc
6.34
KB
-rwxr-xr-x
javah
6.34
KB
-rwxr-xr-x
javap
6.34
KB
-rwxr-xr-x
jcmd
6.34
KB
-rwxr-xr-x
jconsole
6.36
KB
-rwxr-xr-x
jdb
6.35
KB
-rwxr-xr-x
jdeps
6.34
KB
-rwxr-xr-x
jexec
10.33
KB
-rwxr-xr-x
jfr
6.34
KB
-rwxr-xr-x
jhat
6.34
KB
-rwxr-xr-x
jinfo
6.38
KB
-rwxr-xr-x
jjs
6.34
KB
-rwxr-xr-x
jmap
6.38
KB
-rwxr-xr-x
join
50.75
KB
-rwxr-xr-x
jps
6.34
KB
-rwxr-xr-x
jrunscript
6.34
KB
-rwxr-xr-x
jsadebugd
6.35
KB
-rwxr-xr-x
json_pp
4.28
KB
-rwxr-xr-x
jstack
6.38
KB
-rwxr-xr-x
jstat
6.34
KB
-rwxr-xr-x
jstatd
6.34
KB
-rwxr-xr-x
kbdinfo
14.31
KB
-rwxr-xr-x
kbxutil
162.66
KB
-rwxr-xr-x
kernel-install
4.53
KB
-rwxr-xr-x
keytool
6.34
KB
-rwxr-xr-x
killall
31.72
KB
-rwxr-xr-x
laptop-detect
3.73
KB
-rwxr-xr-x
last
46.08
KB
-rwxr-xr-x
lastb
46.08
KB
-rwxr-xr-x
lastlog
22.07
KB
-rwxr-xr-x
lcf
7.6
KB
-rwxr-xr-x
ld
1.7
MB
-rwxr-xr-x
ld.bfd
1.7
MB
-rwxr-xr-x
ld.gold
2.97
MB
-rwxr-xr-x
ldd
5.27
KB
-rwxr-xr-x
less
166.76
KB
-rwxr-xr-x
lessecho
14.02
KB
-rwxr-xr-x
lessfile
8.36
KB
-rwxr-xr-x
lesskey
23.39
KB
-rwxr-xr-x
lesspipe
8.36
KB
-rwxr-xr-x
lexgrog
94.57
KB
-rwxr-xr-x
lft
2.43
KB
-rwxr-xr-x
lft.db
2.43
KB
-rwxr-xr-x
libnetcfg
15.41
KB
-rwxr-xr-x
libtoolize
128.26
KB
-rwxr-xr-x
link
34.59
KB
-rwxr-xr-x
linux-boot-prober
1.54
KB
-rwxr-xr-x
linux-check-removal
4.56
KB
-rwxr-xr-x
linux-update-symlinks
6.17
KB
-rwxr-xr-x
linux-version
2.63
KB
-rwxr-xr-x
linux32
22.34
KB
-rwxr-xr-x
linux64
22.34
KB
-rwxr-xr-x
listres
10.62
KB
-rwxr-xr-x
lnstat
22.74
KB
-rwxr-xr-x
loadkeys
207.14
KB
-rwxr-xr-x
loadunimap
34.61
KB
-rwxr-xr-x
locale
54.04
KB
-rwxr-xr-x
localectl
26.07
KB
-rwxr-xr-x
localedef
299.75
KB
-rwxr-xr-x
locate
38.68
KB
-rwxr-sr-x
lockfile
18.25
KB
-rwxr-sr-x
logger
46.67
KB
-rwxr-xr-x
logname
34.59
KB
-rwxr-xr-x
logresolve
14
KB
-rwxr-xr-x
look
10.49
KB
-rwxr-xr-x
lorder
2.82
KB
-rwxr-xr-x
lsattr
14
KB
-rwxr-xr-x
lsb_release
3.55
KB
-rwxr-xr-x
lscpu
86.08
KB
-rwxr-xr-x
lsinitramfs
706
B
-rwxr-xr-x
lsipc
90.08
KB
-rwxr-xr-x
lslocks
34.41
KB
-rwxr-xr-x
lslogins
66.08
KB
-rwxr-xr-x
lsmem
62.08
KB
-rwxr-xr-x
lsns
50.08
KB
-rwxr-xr-x
lsof
171.47
KB
-rwxr-xr-x
lspci
80.31
KB
-rwxr-xr-x
lspgpot
1.06
KB
-rwxr-xr-x
luit
48.72
KB
-rwxr-xr-x
lwp-download
10.05
KB
-rwxr-xr-x
lwp-dump
2.65
KB
-rwxr-xr-x
lwp-mirror
2.36
KB
-rwxr-xr-x
lwp-request
15.82
KB
-rwxr-xr-x
lzcat
79.29
KB
-rwxr-xr-x
lzcmp
6.48
KB
-rwxr-xr-x
lzdiff
6.48
KB
-rwxr-xr-x
lzegrep
5.76
KB
-rwxr-xr-x
lzfgrep
5.76
KB
-rwxr-xr-x
lzgrep
5.76
KB
-rwxr-xr-x
lzless
1.76
KB
-rwxr-xr-x
lzma
79.29
KB
-rwxr-xr-x
lzmainfo
14.31
KB
-rwxr-xr-x
lzmore
2.11
KB
-rwxr-xr-x
m-a
57.17
KB
-rwxr-xr-x
m4
159.18
KB
-rwxr-xr-x
mac2unix
50.02
KB
-rwxr-xr-x
mail
110.24
KB
-rwxr-xr-x
mailq
1.13
MB
-rwsr-xr-x
mailstat
5.72
KB
-rwxr-xr-x
mailx
110.24
KB
-rwxr-xr-x
make
226.59
KB
-rwxr-xr-x
make-first-existing-target
4.79
KB
-rwxr-xr-x
makeinfo
52.78
KB
-rwxr-xr-x
man
112.5
KB
-rwxr-xr-x
mandb
134.72
KB
-rwxr-xr-x
manpath
34.47
KB
-rwxr-xr-x
mapscrn
26.58
KB
-rwxr-xr-x
mariadb
3.91
MB
-rwxr-xr-x
mariadb-check
3.67
MB
-rwxr-xr-x
mariadb-service-convert
2.45
KB
-rwxr-xr-x
mawk
119.12
KB
-rwxr-xr-x
mc
1011.96
KB
-rwxr-xr-x
mcdiff
1011.96
KB
-rwxr-xr-x
mcedit
1011.96
KB
-rwxr-xr-x
mcookie
34.14
KB
-rwxr-xr-x
mcview
1011.96
KB
-rwxr-xr-x
md5sum
46.72
KB
-rwxr-xr-x
md5sum.textutils
46.72
KB
-rwxr-xr-x
mdig
46.09
KB
-rwxr-xr-x
mesg
14.07
KB
-rwxr-xr-x
migrate-pubring-from-classic-g...
2.99
KB
-rwxr-xr-x
mk_modmap
15.78
KB
-rwxr-xr-x
mkfifo
62.91
KB
-rwxr-xr-x
mkpasswd
26.47
KB
-rwxr-xr-x
mlocate
38.68
KB
-rwxr-sr-x
mlock
14.3
KB
-rwxr-sr-x
module-assistant
57.17
KB
-rwxr-xr-x
msgattrib
26.45
KB
-rwxr-xr-x
msgcat
22.45
KB
-rwxr-xr-x
msgcmp
26.56
KB
-rwxr-xr-x
msgcomm
22.43
KB
-rwxr-xr-x
msgconv
22.41
KB
-rwxr-xr-x
msgen
22.41
KB
-rwxr-xr-x
msgexec
18.45
KB
-rwxr-xr-x
msgfilter
34.54
KB
-rwxr-xr-x
msgfmt
83.37
KB
-rwxr-xr-x
msggrep
42.79
KB
-rwxr-xr-x
msginit
67.17
KB
-rwxr-xr-x
msgmerge
71.39
KB
-rwxr-xr-x
msgunfmt
30.64
KB
-rwxr-xr-x
msguniq
22.42
KB
-rwxr-xr-x
msql2mysql
1.41
KB
-rwxr-xr-x
mtrace
6.32
KB
-rwxr-xr-x
munchlist
31.23
KB
-rwxr-xr-x
mutt
1.02
MB
-rwxr-xr-x
mutt_dotlock
14.01
KB
-rwxr-sr-x
my_print_defaults
3.37
MB
-rwxr-xr-x
myisam_ftdump
3.64
MB
-rwxr-xr-x
myisamchk
3.75
MB
-rwxr-xr-x
myisamlog
3.62
MB
-rwxr-xr-x
myisampack
3.65
MB
-rwxr-xr-x
mysql
3.91
MB
-rwxr-xr-x
mysql_convert_table_format
4.12
KB
-rwxr-xr-x
mysql_embedded
18.94
MB
-rwxr-xr-x
mysql_find_rows
3.21
KB
-rwxr-xr-x
mysql_fix_extensions
1.22
KB
-rwxr-xr-x
mysql_install_db
19.74
KB
-rwxr-xr-x
mysql_plugin
3.37
MB
-rwxr-xr-x
mysql_secure_installation
12.23
KB
-rwxr-xr-x
mysql_setpermission
17.13
KB
-rwxr-xr-x
mysql_tzinfo_to_sql
3.37
MB
-rwxr-xr-x
mysql_upgrade
3.46
MB
-rwxr-xr-x
mysql_waitpid
3.36
MB
-rwxr-xr-x
mysqlaccess
109.3
KB
-rwxr-xr-x
mysqladmin
3.7
MB
-rwxr-xr-x
mysqlanalyze
3.67
MB
-rwxr-xr-x
mysqlbinlog
3.92
MB
-rwxr-xr-x
mysqlcheck
3.67
MB
-rwxr-xr-x
mysqld_multi
26.67
KB
-rwxr-xr-x
mysqld_safe
30.08
KB
-rwxr-xr-x
mysqld_safe_helper
3.33
MB
-rwxr-xr-x
mysqldump
3.75
MB
-rwxr-xr-x
mysqldumpslow
8.05
KB
-rwxr-xr-x
mysqlhotcopy
34.14
KB
-rwxr-xr-x
mysqlimport
3.66
MB
-rwxr-xr-x
mysqloptimize
3.67
MB
-rwxr-xr-x
mysqlrepair
3.67
MB
-rwxr-xr-x
mysqlreport
50.03
KB
-rwxr-xr-x
mysqlshow
3.66
MB
-rwxr-xr-x
mysqlslap
3.68
MB
-rwxr-xr-x
mytop
63.3
KB
-rwxr-xr-x
namei
34.08
KB
-rwxr-xr-x
native2ascii
6.34
KB
-rwxr-xr-x
nawk
658.81
KB
-rwxr-xr-x
ncal
29.15
KB
-rwxr-xr-x
neqn
913
B
-rwxr-xr-x
netkit-ftp
99.62
KB
-rwxr-xr-x
newaliases
1.13
MB
-rwsr-xr-x
newgrp
43.4
KB
-rwsr-xr-x
ngettext
42.63
KB
-rwxr-xr-x
nice
38.63
KB
-rwxr-xr-x
nl
42.78
KB
-rwxr-xr-x
nload
138.03
KB
-rwxr-xr-x
nm
47.91
KB
-rwxr-xr-x
nohup
38.66
KB
-rwxr-xr-x
nproc
38.66
KB
-rwxr-xr-x
nroff
3.22
KB
-rwxr-xr-x
nsenter
34.28
KB
-rwxr-xr-x
nslookup
134.51
KB
-rwxr-xr-x
nstat
79.14
KB
-rwxr-xr-x
nsupdate
70.02
KB
-rwxr-xr-x
numfmt
62.81
KB
-rwxr-xr-x
objcopy
175.42
KB
-rwxr-xr-x
objdump
345.55
KB
-rwxr-xr-x
od
70.78
KB
-rwxr-xr-x
openssl
719.52
KB
-rwxr-xr-x
orbd
6.39
KB
-rwxr-xr-x
os-prober
4.44
KB
-rwxr-xr-x
pack200
6.34
KB
-rwxr-xr-x
pager
166.76
KB
-rwxr-xr-x
paperconf
14.29
KB
-rwxr-xr-x
parsechangelog
8.63
KB
-rwxr-xr-x
partx
106.08
KB
-rwxr-xr-x
passwd
62.24
KB
-rwsr-xr-x
paste
38.66
KB
-rwxr-xr-x
patch
183.44
KB
-rwxr-xr-x
pathchk
38.63
KB
-rwxr-xr-x
pcimodules
14.59
KB
-rwxr-xr-x
pcre-config
2.29
KB
-rwxr-xr-x
pcre2-config
1.93
KB
-rwxr-xr-x
pdb
45.02
KB
-rwxr-xr-x
pdb2
45.02
KB
-rwxr-xr-x
pdb2.7
45.02
KB
-rwxr-xr-x
pdb3
61.08
KB
-rwxr-xr-x
pdb3.7
61.08
KB
-rwxr-xr-x
pdf2dsc
698
B
-rwxr-xr-x
pdf2ps
909
B
-rwxr-xr-x
pdftexi2dvi
1.27
KB
-rwxr-xr-x
pear
793
B
-rwxr-xr-x
peardev
814
B
-rwxr-xr-x
pecl
727
B
-rwxr-xr-x
peekfd
14.28
KB
-rwxr-xr-x
perf
528
B
-rwxr-xr-x
perl
3.05
MB
-rwxr-xr-x
perl5.28-x86_64-linux-gnu
14.17
KB
-rwxr-xr-x
perl5.28.1
3.05
MB
-rwxr-xr-x
perlbug
45.28
KB
-rwxr-xr-x
perldoc
125
B
-rwxr-xr-x
perlivp
10.61
KB
-rwxr-xr-x
perlthanks
45.28
KB
-rwxr-xr-x
perror
3.55
MB
-rwxr-xr-x
pf2afm
498
B
-rwxr-xr-x
pfbtopfa
516
B
-rwxr-xr-x
pftp
99.62
KB
-rwxr-xr-x
pgrep
26.09
KB
-rwxr-xr-x
phar
14.88
KB
-rwxr-xr-x
phar.phar
14.88
KB
-rwxr-xr-x
phar.phar5.6
14.48
KB
-rwxr-xr-x
phar.phar7.0
14.48
KB
-rwxr-xr-x
phar.phar7.2
14.47
KB
-rwxr-xr-x
phar.phar7.3
14.47
KB
-rwxr-xr-x
phar.phar7.4
14.54
KB
-rwxr-xr-x
phar.phar8.2
14.88
KB
-rwxr-xr-x
phar5
14.48
KB
-rwxr-xr-x
phar5.6
14.48
KB
-rwxr-xr-x
phar7.0
14.48
KB
-rwxr-xr-x
phar7.2
14.47
KB
-rwxr-xr-x
phar7.3
14.47
KB
-rwxr-xr-x
phar7.4
14.54
KB
-rwxr-xr-x
phar7.4.phar
14.54
KB
-rwxr-xr-x
phar8.2
14.88
KB
-rwxr-xr-x
phar8.2.phar
14.88
KB
-rwxr-xr-x
php
4.53
MB
-rwxr-xr-x
php-cgi
4.43
MB
-rwxr-xr-x
php-cgi7.2
4.68
MB
-rwxr-xr-x
php-cgi7.3
4.47
MB
-rwxr-xr-x
php-cgi7.4
4.43
MB
-rwxr-xr-x
php-config
4.24
KB
-rwxr-xr-x
php-config7.2
4.14
KB
-rwxr-xr-x
php-config7.3
4.11
KB
-rwxr-xr-x
php-config7.4
4.24
KB
-rwxr-xr-x
php5
8.66
MB
-rwxr-xr-x
php5.6
4.3
MB
-rwxr-xr-x
php7.0
4.3
MB
-rwxr-xr-x
php7.2
4.79
MB
-rwxr-xr-x
php7.3
4.57
MB
-rwxr-xr-x
php7.4
4.53
MB
-rwxr-xr-x
php8.2
5.37
MB
-rwxr-xr-x
phpdbg
4.65
MB
-rwxr-xr-x
phpdbg7.2
4.91
MB
-rwxr-xr-x
phpdbg7.3
4.69
MB
-rwxr-xr-x
phpdbg7.4
4.65
MB
-rwxr-xr-x
phpize
4.81
KB
-rwxr-xr-x
phpize7.2
4.84
KB
-rwxr-xr-x
phpize7.3
4.87
KB
-rwxr-xr-x
phpize7.4
4.81
KB
-rwxr-xr-x
pic
208.03
KB
-rwxr-xr-x
pico
240.39
KB
-rwxr-xr-x
piconv
8.16
KB
-rwxr-xr-x
pigz
114.2
KB
-rwxr-xr-x
pinentry
86.49
KB
-rwxr-xr-x
pinentry-gtk-2
86.49
KB
-rwxr-xr-x
pinentry-x11
86.49
KB
-rwxr-xr-x
pinky
42.81
KB
-rwxr-xr-x
pkaction
14.31
KB
-rwxr-xr-x
pkcheck
22.66
KB
-rwxr-xr-x
pkcon
71.71
KB
-rwxr-xr-x
pkg-config
54.83
KB
-rwxr-xr-x
pkgtools
1.34
KB
-rwxr-xr-x
pkill
26.09
KB
-rwxr-xr-x
pkmon
22.49
KB
-rwxr-xr-x
pkttyagent
18.37
KB
-rwxr-xr-x
pl2pm
4.43
KB
-rwxr-xr-x
pldd
22.57
KB
-rwxr-xr-x
pmap
30.09
KB
-rwxr-xr-x
po2debconf
8.47
KB
-rwxr-xr-x
pod2html
4.04
KB
-rwxr-xr-x
pod2man
14.86
KB
-rwxr-xr-x
pod2texi
19.65
KB
-rwxr-xr-x
pod2text
10.85
KB
-rwxr-xr-x
pod2usage
3.86
KB
-rwxr-xr-x
podchecker
3.57
KB
-rwxr-xr-x
podebconf-display-po
12.67
KB
-rwxr-xr-x
podebconf-report-po
31.76
KB
-rwxr-xr-x
podselect
2.47
KB
-rwxr-xr-x
policytool
6.34
KB
-rwxr-xr-x
pphs
404
B
-rwxr-xr-x
pr
74.94
KB
-rwxr-xr-x
precat
5.52
KB
-rwxr-xr-x
preconv
66.2
KB
-rwxr-xr-x
preunzip
5.52
KB
-rwxr-xr-x
prezip
5.52
KB
-rwxr-xr-x
prezip-bin
13.99
KB
-rwxr-xr-x
print
17.74
KB
-rwxr-xr-x
printafm
395
B
-rwxr-xr-x
printenv
34.59
KB
-rwxr-xr-x
printerbanner
22.23
KB
-rwxr-xr-x
printf
54.69
KB
-rwxr-xr-x
prlimit
38.59
KB
-rwxr-xr-x
procan
71.68
KB
-rwxr-xr-x
procmail
95.2
KB
-rwsr-sr-x
prove
13.33
KB
-rwxr-xr-x
prtstat
18.36
KB
-rwxr-xr-x
ps2ascii
631
B
-rwxr-xr-x
ps2epsi
2.69
KB
-rwxr-xr-x
ps2pdf
272
B
-rwxr-xr-x
ps2pdf12
215
B
-rwxr-xr-x
ps2pdf13
215
B
-rwxr-xr-x
ps2pdf14
215
B
-rwxr-xr-x
ps2pdfwr
1.07
KB
-rwxr-xr-x
ps2ps
647
B
-rwxr-xr-x
ps2ps2
669
B
-rwxr-xr-x
ps2txt
631
B
-rwxr-xr-x
psfaddtable
22.31
KB
-rwxr-xr-x
psfgettable
22.31
KB
-rwxr-xr-x
psfstriptable
22.31
KB
-rwxr-xr-x
psfxtable
22.31
KB
-rwxr-xr-x
pslog
14.23
KB
-rwxr-xr-x
pstree
31.48
KB
-rwxr-xr-x
pstree.x11
31.48
KB
-rwxr-xr-x
ptar
3.47
KB
-rwxr-xr-x
ptardiff
2.57
KB
-rwxr-xr-x
ptargrep
4.29
KB
-rwxr-xr-x
ptx
74.91
KB
-rwxr-xr-x
pwdx
10.07
KB
-rwxr-xr-x
py3clean
7.62
KB
-rwxr-xr-x
py3compile
11.83
KB
-rwxr-xr-x
py3versions
11.44
KB
-rwxr-xr-x
pyclean
4.03
KB
-rwxr-xr-x
pycompile
11.62
KB
-rwxr-xr-x
pydoc
79
B
-rwxr-xr-x
pydoc2
79
B
-rwxr-xr-x
pydoc2.7
79
B
-rwxr-xr-x
pydoc3
79
B
-rwxr-xr-x
pydoc3.7
79
B
-rwxr-xr-x
pygettext
21.56
KB
-rwxr-xr-x
pygettext2
21.56
KB
-rwxr-xr-x
pygettext2.7
21.56
KB
-rwxr-xr-x
pygettext3
21.04
KB
-rwxr-xr-x
pygettext3.7
21.04
KB
-rwxr-xr-x
python
3.51
MB
-rwxr-xr-x
python2
3.51
MB
-rwxr-xr-x
python2.7
3.51
MB
-rwxr-xr-x
python3
4.65
MB
-rwxr-xr-x
python3.7
4.65
MB
-rwxr-xr-x
python3.7m
4.65
MB
-rwxr-xr-x
python3m
4.65
MB
-rwxr-xr-x
pyversions
14.76
KB
-rwxr-xr-x
querybts
10.75
KB
-rwxr-xr-x
ranlib
63.1
KB
-rwxr-xr-x
rcp
98.14
KB
-rwxr-xr-x
rdma
107.16
KB
-rwxr-xr-x
readelf
583.06
KB
-rwxr-xr-x
realpath
46.69
KB
-rwxr-xr-x
recode-sr-latin
14.4
KB
-rwxr-xr-x
rename.ul
22.07
KB
-rwxr-xr-x
renice
14.07
KB
-rwxr-xr-x
replace
3.34
MB
-rwxr-xr-x
report-hw
2.05
KB
-rwxr-xr-x
reportbug
105.14
KB
-rwxr-xr-x
reset
30
KB
-rwxr-xr-x
resizecons
22.58
KB
-rwxr-xr-x
resizepart
58.08
KB
-rwxr-xr-x
resolve_stack_dump
3.37
MB
-rwxr-xr-x
resolvectl
114.22
KB
-rwxr-xr-x
resolveip
3.36
MB
-rwxr-xr-x
rev
14.07
KB
-rwxr-xr-x
rgrep
30
B
-rwxr-xr-x
rlogin
714.79
KB
-rwxr-xr-x
rmic
6.34
KB
-rwxr-xr-x
rmid
6.34
KB
-rwxr-xr-x
rmiregistry
6.34
KB
-rwxr-xr-x
rotatelogs
26.07
KB
-rwxr-xr-x
routef
208
B
-rwxr-xr-x
routel
1.62
KB
-rwxr-xr-x
rpcgen
90.98
KB
-rwxr-xr-x
rpcinfo
34.16
KB
-rwxr-xr-x
rsh
714.79
KB
-rwxr-xr-x
rsync
488.37
KB
-rwxr-xr-x
rtstat
22.74
KB
-rwxr-xr-x
run-mailcap
17.74
KB
-rwxr-xr-x
run-with-aspell
57
B
-rwxr-xr-x
runcon
38.72
KB
-rwxr-xr-x
rview
2.58
MB
-rwxr-xr-x
rvim
2.58
MB
-rwxr-xr-x
sane-find-scanner
114.7
KB
-rwxr-xr-x
savelog
10.22
KB
-rwxr-xr-x
scanimage
50.77
KB
-rwxr-xr-x
schemagen
6.34
KB
-rwxr-xr-x
scp
98.14
KB
-rwxr-xr-x
screendump
14.29
KB
-rwxr-xr-x
script
50.08
KB
-rwxr-xr-x
scriptreplay
30.08
KB
-rwxr-xr-x
sdiff
50.77
KB
-rwxr-xr-x
see
17.74
KB
-rwxr-xr-x
select-default-iwrap
474
B
-rwxr-xr-x
select-editor
2.38
KB
-rwxr-xr-x
sensible-browser
1.18
KB
-rwxr-xr-x
sensible-editor
1.08
KB
-rwxr-xr-x
sensible-pager
433
B
-rwxr-xr-x
seq
50.69
KB
-rwxr-xr-x
serialver
6.34
KB
-rwxr-xr-x
servertool
6.34
KB
-rwxr-xr-x
setarch
22.34
KB
-rwxr-xr-x
setfacl
38.68
KB
-rwxr-xr-x
setkeycodes
14.3
KB
-rwxr-xr-x
setleds
14.29
KB
-rwxr-xr-x
setlogcons
14.3
KB
-rwxr-xr-x
setmetamode
14.34
KB
-rwxr-xr-x
setpci
22.54
KB
-rwxr-xr-x
setpriv
42.08
KB
-rwxr-xr-x
setsid
14.07
KB
-rwxr-xr-x
setterm
42.08
KB
-rwxr-xr-x
setvtrgb
14.42
KB
-rwxr-xr-x
sftp
150.35
KB
-rwxr-xr-x
sg
43.4
KB
-rwsr-xr-x
sha1sum
50.72
KB
-rwxr-xr-x
sha224sum
54.72
KB
-rwxr-xr-x
sha256sum
54.72
KB
-rwxr-xr-x
sha384sum
62.72
KB
-rwxr-xr-x
sha512sum
62.72
KB
-rwxr-xr-x
shasum
9.74
KB
-rwxr-xr-x
showconsolefont
18.38
KB
-rwxr-xr-x
showkey
18.34
KB
-rwxr-xr-x
shred
58.94
KB
-rwxr-xr-x
shtool
138.76
KB
-rwxr-xr-x
shtoolize
15.16
KB
-rwxr-xr-x
shuf
58.81
KB
-rwxr-xr-x
size
34.97
KB
-rwxr-xr-x
skill
26.08
KB
-rwxr-xr-x
slabtop
18.08
KB
-rwxr-xr-x
slogin
714.79
KB
-rwxr-xr-x
smime_keys
30.08
KB
-rwxr-xr-x
snice
26.08
KB
-rwxr-xr-x
socat
369.43
KB
-rwxr-xr-x
soelim
42.2
KB
-rwxr-xr-x
sort
111.45
KB
-rwxr-xr-x
sotruss
4.18
KB
-rwxr-xr-x
splain
18.7
KB
-rwxr-xr-x
split
59.32
KB
-rwxr-xr-x
splitfont
14.19
KB
-rwxr-xr-x
sprof
26.69
KB
-rwxr-xr-x
sq
5.99
KB
-rwxr-xr-x
ssh
714.79
KB
-rwxr-xr-x
ssh-add
334.13
KB
-rwxr-xr-x
ssh-agent
314.13
KB
-rwxr-sr-x
ssh-argv0
1.42
KB
-rwxr-xr-x
ssh-copy-id
10.41
KB
-rwxr-xr-x
ssh-keygen
406.15
KB
-rwxr-xr-x
ssh-keyscan
410.15
KB
-rwxr-xr-x
stat
79.03
KB
-rwxr-xr-x
stdbuf
50.69
KB
-rwxr-xr-x
strings
31.13
KB
-rwxr-xr-x
strip
175.43
KB
-rwxr-xr-x
sudo
153.51
KB
-rwsr-xr-x
sudoedit
153.51
KB
-rwsr-xr-x
sudoreplay
62.84
KB
-rwxr-xr-x
sum
42.73
KB
-rwxr-xr-x
symcryptrun
118.73
KB
-rwxr-xr-x
systemd-analyze
1.38
MB
-rwxr-xr-x
systemd-cat
14.08
KB
-rwxr-xr-x
systemd-cgls
18.17
KB
-rwxr-xr-x
systemd-cgtop
38.09
KB
-rwxr-xr-x
systemd-delta
26.07
KB
-rwxr-xr-x
systemd-detect-virt
14.06
KB
-rwxr-xr-x
systemd-id128
14.06
KB
-rwxr-xr-x
systemd-mount
46.29
KB
-rwxr-xr-x
systemd-path
18.06
KB
-rwxr-xr-x
systemd-resolve
114.22
KB
-rwxr-xr-x
systemd-run
50.27
KB
-rwxr-xr-x
systemd-socket-activate
26.07
KB
-rwxr-xr-x
systemd-stdio-bridge
18.07
KB
-rwxr-xr-x
systemd-umount
46.29
KB
-rwxr-xr-x
tabs
17.99
KB
-rwxr-xr-x
tac
42.72
KB
-rwxr-xr-x
tail
70.91
KB
-rwxr-xr-x
tasksel
16.1
KB
-rwxr-xr-x
taskset
34.08
KB
-rwxr-xr-x
tbl
138.2
KB
-rwxr-xr-x
tee
38.72
KB
-rwxr-xr-x
telnet
113.37
KB
-rwxr-xr-x
telnet.netkit
113.37
KB
-rwxr-xr-x
test
50.66
KB
-rwxr-xr-x
texi2any
52.78
KB
-rwxr-xr-x
texi2dvi
60.31
KB
-rwxr-xr-x
texi2pdf
1.27
KB
-rwxr-xr-x
texindex
3.96
KB
-rwxr-xr-x
tic
86.11
KB
-rwxr-xr-x
time
14.73
KB
-rwxr-xr-x
timedatectl
38.07
KB
-rwxr-xr-x
timeout
43.26
KB
-rwxr-xr-x
tload
14.09
KB
-rwxr-xr-x
tnameserv
6.39
KB
-rwxr-xr-x
toe
21.99
KB
-rwxr-xr-x
top
113.89
KB
-rwxr-xr-x
touch
94.88
KB
-rwxr-xr-x
tput
22.02
KB
-rwxr-xr-x
tr
50.69
KB
-rwxr-xr-x
traceproto
2.82
KB
-rwxr-xr-x
traceproto.db
2.82
KB
-rwxr-xr-x
traceroute
67.16
KB
-rwxr-xr-x
traceroute-nanog
1.58
KB
-rwxr-xr-x
traceroute.db
67.16
KB
-rwxr-xr-x
traceroute6
67.16
KB
-rwxr-xr-x
traceroute6.db
67.16
KB
-rwxr-xr-x
troff
723.59
KB
-rwxr-xr-x
truncate
42.66
KB
-rwxr-xr-x
tryaffix
4.8
KB
-rwxr-xr-x
tset
30
KB
-rwxr-xr-x
tsort
42.66
KB
-rwxr-xr-x
tty
34.63
KB
-rwxr-xr-x
txixml2texi
14.67
KB
-rwxr-xr-x
tzselect
15.01
KB
-rwxr-xr-x
ucf
39.73
KB
-rwxr-xr-x
ucfq
18.91
KB
-rwxr-xr-x
ucfr
10.47
KB
-rwxr-xr-x
ul
14.3
KB
-rwxr-xr-x
umax_pp
179.07
KB
-rwxr-xr-x
unattended-upgrade
83.83
KB
-rwxr-xr-x
unattended-upgrades
83.83
KB
-rwxr-xr-x
unexpand
42.69
KB
-rwxr-xr-x
unicode_stop
530
B
-rwxr-xr-x
uniq
50.75
KB
-rwxr-xr-x
unix2dos
50.02
KB
-rwxr-xr-x
unix2mac
50.02
KB
-rwxr-xr-x
unlink
34.59
KB
-rwxr-xr-x
unlzma
79.29
KB
-rwxr-xr-x
unmkinitramfs
3.51
KB
-rwxr-xr-x
unpack200
101.48
KB
-rwxr-xr-x
unpigz
114.2
KB
-rwxr-xr-x
unshare
26.27
KB
-rwxr-xr-x
unsq
5.99
KB
-rwxr-xr-x
unxz
79.29
KB
-rwxr-xr-x
unzip
178.84
KB
-rwxr-xr-x
unzipsfx
82.66
KB
-rwxr-xr-x
update-alternatives
54.25
KB
-rwxr-xr-x
update-mime-database
55.19
KB
-rwxr-xr-x
update-perl-sax-parsers
6.03
KB
-rwxr-xr-x
updatedb
46.82
KB
-rwxr-xr-x
updatedb.mlocate
46.82
KB
-rwxr-xr-x
uptime
10.07
KB
-rwxr-xr-x
users
34.66
KB
-rwxr-xr-x
utmpdump
30.07
KB
-rwxr-xr-x
vi
2.58
MB
-rwxr-xr-x
view
2.58
MB
-rwxr-xr-x
viewres
27.38
KB
-rwxr-xr-x
vim
2.58
MB
-rwxr-xr-x
vim.basic
2.58
MB
-rwxr-xr-x
vim.tiny
1.15
MB
-rwxr-xr-x
vimdiff
2.58
MB
-rwxr-xr-x
vimtutor
2.07
KB
-rwxr-xr-x
vmstat
34.09
KB
-rwxr-xr-x
volname
5.99
KB
-rwxr-xr-x
w
18.07
KB
-rwxr-xr-x
w.procps
18.07
KB
-rwxr-xr-x
w3m
1.4
MB
-rwxr-xr-x
w3mman
1.18
KB
-rwxr-xr-x
wall
34.08
KB
-rwxr-xr-x
watch
26.41
KB
-rwxr-xr-x
watchgnupg
17.99
KB
-rwxr-xr-x
wc
46.76
KB
-rwxr-xr-x
wget
455.56
KB
-rwxr-xr-x
whatis
54.98
KB
-rwxr-xr-x
whereis
30.51
KB
-rwxr-xr-x
which
946
B
-rwxr-xr-x
whiptail
26.7
KB
-rwxr-xr-x
who
54.81
KB
-rwxr-xr-x
whoami
34.63
KB
-rwxr-xr-x
whois
153.27
KB
-rwxr-xr-x
word-list-compress
13.99
KB
-rwxr-xr-x
write
14.39
KB
-rwxr-sr-x
wsgen
6.34
KB
-rwxr-xr-x
wsimport
6.34
KB
-rwxr-xr-x
wsrep_sst_common
54.05
KB
-rwxr-xr-x
wsrep_sst_mariabackup
50.87
KB
-rwxr-xr-x
wsrep_sst_mysqldump
7.67
KB
-rwxr-xr-x
wsrep_sst_rsync
32.17
KB
-rwxr-xr-x
wsrep_sst_rsync_wan
32.17
KB
-rwxr-xr-x
www-browser
1.4
MB
-rwxr-xr-x
x86_64
22.34
KB
-rwxr-xr-x
x86_64-linux-gnu-addr2line
31.09
KB
-rwxr-xr-x
x86_64-linux-gnu-ar
63.07
KB
-rwxr-xr-x
x86_64-linux-gnu-as
872.93
KB
-rwxr-xr-x
x86_64-linux-gnu-c++filt
30.69
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-cpp-4.9
814.43
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-6
930.77
KB
-rwxr-xr-x
x86_64-linux-gnu-cpp-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-dwp
2.74
MB
-rwxr-xr-x
x86_64-linux-gnu-elfedit
38.84
KB
-rwxr-xr-x
x86_64-linux-gnu-g++
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-g++-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-4.9
813.49
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-6
926.77
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-8
1.05
MB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-4.9
24.25
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ar-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-4.9
24.19
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-nm-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-4....
24.19
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-6
26.53
KB
-rwxr-xr-x
x86_64-linux-gnu-gcc-ranlib-8
34.47
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov
672.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-4.9
440.43
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-6
507.93
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-8
672.09
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump
511.95
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-6
439.86
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-dump-8
511.95
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool
548.02
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-6
463.92
KB
-rwxr-xr-x
x86_64-linux-gnu-gcov-tool-8
548.02
KB
-rwxr-xr-x
x86_64-linux-gnu-gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-gprof
96.39
KB
-rwxr-xr-x
x86_64-linux-gnu-ld
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.bfd
1.7
MB
-rwxr-xr-x
x86_64-linux-gnu-ld.gold
2.97
MB
-rwxr-xr-x
x86_64-linux-gnu-nm
47.91
KB
-rwxr-xr-x
x86_64-linux-gnu-objcopy
175.42
KB
-rwxr-xr-x
x86_64-linux-gnu-objdump
345.55
KB
-rwxr-xr-x
x86_64-linux-gnu-pkg-config
2
KB
-rwxr-xr-x
x86_64-linux-gnu-ranlib
63.1
KB
-rwxr-xr-x
x86_64-linux-gnu-readelf
583.06
KB
-rwxr-xr-x
x86_64-linux-gnu-size
34.97
KB
-rwxr-xr-x
x86_64-linux-gnu-strings
31.13
KB
-rwxr-xr-x
x86_64-linux-gnu-strip
175.43
KB
-rwxr-xr-x
x86_64-pc-linux-gnu-pkg-config
54.83
KB
-rwxr-xr-x
xargs
70.21
KB
-rwxr-xr-x
xauth
47.45
KB
-rwxr-xr-x
xdg-user-dir
234
B
-rwxr-xr-x
xdg-user-dirs-update
26.07
KB
-rwxr-xr-x
xdpyinfo
31.49
KB
-rwxr-xr-x
xdriinfo
10.19
KB
-rwxr-xr-x
xev
30.96
KB
-rwxr-xr-x
xfd
32.33
KB
-rwxr-xr-x
xfontsel
40.33
KB
-rwxr-xr-x
xgettext
269.8
KB
-rwxr-xr-x
xjc
6.34
KB
-rwxr-xr-x
xkill
14.32
KB
-rwxr-xr-x
xlsatoms
10.26
KB
-rwxr-xr-x
xlsclients
14.34
KB
-rwxr-xr-x
xlsfonts
18.44
KB
-rwxr-xr-x
xmessage
23.33
KB
-rwxr-xr-x
xprop
40.9
KB
-rwxr-xr-x
xsubpp
5.04
KB
-rwxr-xr-x
xvinfo
14.26
KB
-rwxr-xr-x
xwininfo
42.78
KB
-rwxr-xr-x
xxd
18.12
KB
-rwxr-xr-x
xz
79.29
KB
-rwxr-xr-x
xzcat
79.29
KB
-rwxr-xr-x
xzcmp
6.48
KB
-rwxr-xr-x
xzdiff
6.48
KB
-rwxr-xr-x
xzegrep
5.76
KB
-rwxr-xr-x
xzfgrep
5.76
KB
-rwxr-xr-x
xzgrep
5.76
KB
-rwxr-xr-x
xzless
1.76
KB
-rwxr-xr-x
xzmore
2.11
KB
-rwxr-xr-x
yes
34.59
KB
-rwxr-xr-x
zdump
18.4
KB
-rwxr-xr-x
zipdetails
47.36
KB
-rwxr-xr-x
zipgrep
2.88
KB
-rwxr-xr-x
zipinfo
178.84
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : m-a
#!/usr/bin/perl # # -*- Mode: Perl -*- # make-kpkg --- # Author : Eduard Bloch <blade@debian.org> # Status : Useable, new features planed # # Script to assist users with building of the kernel modules # First purpose: automate as much as possible for Joe User # Second purpose: have a database about the source of module packages # (and all steps needed to get it) # Third purpose: provide general debian/rules include snippets # # TARGETs: # see usage require 5.002; #use strict; #use diagnostics; use Text::WrapI18N qw(wrap $columns); BEGIN { eval 'use Locale::gettext'; if ($@) { eval q{ sub gettext { return shift; } }; } else { textdomain('module-assistant'); } } # not so nice, but sufficient. See #396299 for details. delete $ENV{'VERSION'}; my $ret=0; use Getopt::Long qw(:config no_ignore_case bundling pass_through); use File::Basename; use Cwd; use filetest 'access'; $res = exists $ENV{"MA_DIR"} ? $ENV{"MA_DIR"} : "/usr/share/modass"; $var= exists $ENV{"MA_VARDIR"} ? $ENV{"MA_VARDIR"} : "/var/cache/modass"; my $aptcmd = exists $ENV{"MA_APTCMD"} ? $ENV{"MA_APTCMD"} : "apt-get"; $main::Author = "Eduard Bloch"; $main::AuthorMail = "blade\@debian.org"; $main::Version = ' $Id: $ '; $helpmsg="\n" . wrap('', '', gettext("USAGE: module-assistant update module-assistant [options] COMMAND [ packages ] module-assistant is the tool to get debianized source of kernel modules, build module package from it and install them. The most frequently used command may be auto-install followed by the 'alli' argument. Commands: update - refresh internal information about the packages unpack - unpacks the tarballs of specified packages (or similar action) get - download/install the source (package) and unpack if needed build - build the specified package(s) list - print information about installed/available/compiled packages install - install the generated binary modules DEB package with dpkg auto-install - the whole process, get & build & install (abbreviated: a-i) prepare - install headers for the current kernel and set the linux symlink clean - quick clean of the source (eg. wiping the build directory) purge - removes cached data and existing modules packages la (alias for \"list all\"), li (= \"list all installed\"), search (= \"list -s\") Package arguments: Source package name(s). If -src or -source is omitted, name completion will try to guess the package name. If the first argument is 'all', the list will be expanded to all packages. 'alli' will be expanded to \"all installed\". Options: -h, --help Print this help screen -v, --verbose Be verbose, show full paths, etc. -q, --quiet The opposite of verbose -n, --no-rebuild Don't rebuild when any usable modules package for this kernel exists (even an old one) -i, --non-inter Don't stop on build failures, auto-install deps when needed -o, --unpack-once Unpack the source only once after source upgrade or clean -O, --not-unpack Don't unpack the source at all -s, --apt-search Search for installation candidates in the Debian archive -S, --sudo-cmd An alternative command for sudo -f, --force Force duplicated work: source package reinstallation, rebuild though existing packages are found, etc. -t, --text-mode Text mode, no dialog boxes -u, --userdir Specifies a (writeable) replacement directory for /var&/usr -k, --kernel-dir List of kernel headers/source directories, comma separated -l, --kvers-list List of kernel versions to work on (default: current version) Lists in options are strings separated by commas, spaces or newlines. Example: m-a update ; m-a a-i nvidia-kernel ; echo Enjoy!")) . "\n"; $reqsrcmsg="\n" . gettext("Warning: the selected module source is known to require a complete kernel source structure in order to be built correctly. However, only a reduced version of the source (linux-headers) has been found, so the build process will probably fail. In order to get a full kernel source, you have the following options: - fake the source directory - create one that may look very similar to the one that has been used to build your kernel (based on its configuration and fresh source archive). The results are uncertain, but it should work in most cases. Call \"module-assistant fakesource\" to automate this. - use a custom kernel built from scratch (custom configuration, custom source, custom kernel package installed). Please read the Kernel HOWTO and/or make-kpkg documentation for the further steps."). "\n"; chomp($my_kvers=`uname -r`); my $distrib_id = get_distrib_id(); my $usrc="/usr/src"; my $opt_help; my @opt_kerneldirs; my @opt_kverslist; my $opt_verbose; my $opt_force; my $opt_norebuild; my $opt_quiet; my $opt_debug; my $opt_search; my $opt_nogui; my $opt_userdir; my $opt_noninter; my $opt_unponce; my $opt_notunp; my $sudo; %options = ( "q|quiet" => \$opt_quiet, "d|debug" => \$opt_debug, "h|help" => \$opt_help, "f|force" => \$opt_force, "o|unpack-once" => \$opt_unponce, "O|not-unpack" => \$opt_notunp, "n|no-rebuild" => \$opt_norebuild, "i|non-inter" => \$opt_noninter, "k|kernel-dir=s" => \@opt_kerneldirs, "l|kvers-list=s" => \@opt_kverslist, "v|verbose" => \$opt_verbose, "t|text-mode" => \$opt_nogui, "u|userdir|user-dir=s" => \$opt_userdir, "s|apt-search" => \$opt_search, "S|sudo-cmd=s" => \$sudo ); &help unless ( GetOptions(%options)); &help if ($opt_help); $ENV{"VERBOSE"}=1 if($opt_verbose); $ENV{"REINSTALL"} .= " -y --force-yes "; #$ENV{"APT_LISTCHANGES_FRONTEND"} = "mail" if $opt_noninter; # STFU my $buildNumber = time(); $opt_nogui=1 if $opt_noninter; if(!$opt_nogui) { chomp($rows=`tput lines`); chomp($columns=`tput cols`); } $rows=25 if !$rows; $columns=80 if !$columns; $columns--; # fallback, don't confuse wrap $columns=40 if ($columns < 10); my $command=shift(@ARGV); @targets=@ARGV; @opt_kverslist = split(/,|\ |\r|\n/,join(',',@opt_kverslist)); @opt_kerneldirs = split(/,|\ |\r|\n/,join(',',@opt_kerneldirs)); map { $_=Cwd::abs_path($_) if(!/^\//); } @opt_kerneldirs; # add current kernel to the kvers list, check validity later push(@opt_kverslist, $my_kvers) if ($#opt_kverslist < 0 && $#opt_kerneldirs < 0); push(@opt_kerneldirs, split(/,|\ |\r|\n/,$ENV{"KERNELDIRS"})) if (defined $ENV{"KERNELDIRS"}); $modloc=$ENV{"MODULE_LOC"} ? $ENV{"MODULE_LOC"}:"$usrc/modules"; if(open(complist, "$res/compliant.list")) { for(<complist>) { chomp; next if !$_; print "Known compliant: $_\n" if $opt_debug; #$packs{$_}="MA_SOURCE_PKG=$_ $res/packages/default.sh"; $packs{$_}="$res/packages/default.sh"; $compliant{$_}=1; } } opendir($resdir, $res."/packages"); foreach(readdir($resdir)) { print "Known with extensions/workarounds: $_\n" if $opt_debug; $packs{$_}=$res."/packages/".$_ if(-e $res."/packages/".$_ && !/^\.|.sh$|~$/); } sub scan_overrides { opendir($overdir, $res."/overrides"); foreach(readdir($overdir)) { print "Known overrides: $_\n" if $opt_debug; $packs{$_}=$res."/overrides/".$_ if(-e $res."/overrides/".$_ && !/^\.|.sh$|~$/); } } &scan_overrides; if($command eq "comp") { map {print "$_\n"} grep(/^$targets[0]/, ("all", "alli", "allu", keys %packs)); exit 0; } if($command eq "compi") { map {print "$_\n" if($_ eq "alli" || ! pexec($_, "installed")) } grep(/^$targets[0]/, ("alli", keys %packs)); exit 0; } if($command eq "compv") { &initksrc; print grep(/^$targets[0]/, @seenkvers); exit 0; } if(!$opt_nogui) { $dialog=$ENV{"DIALOG"}; if(!$dialog) { if($ENV{"TERM"} ne "dumb" && `infocmp 2>/dev/null` ne '') { @expaths=split(/:/,$ENV{"PATH"}); for $dia ("dialog", "whiptail") { for(@expaths) { last if($dialog); $dialog="$_/$dia" if(-x "$_/$dia"); } } } } $opt_nogui = !$dialog; $wtmode=1 if($dialog=~/whiptail$/); } sub lsd { my @list; $path=shift; opendir($dir, $path); foreach(readdir($dir)) { if ($_ ne "." && $_ ne ".." && -d "$path/$_") { my $name=complete_name($_, 1); push(@list, $name) if($name); } } return @list; } sub help() { print $helpmsg; exit 1; }; sub ende { if($ret >= 250 && $ret < 256) { exit $ret; } else { exit (($ret%250)+($ret>0)); } } sub withecho { # weed undefs out for($i=0; $i<=$#_; $i++) { splice(@_, $i, 1) if(!defined($_[$i])); } print STDERR join(' ',@_, "\n") if($opt_verbose); my $myret=system(@_); $ret += $myret; #%env=%envbackup; return $myret; } sub pread { my $p=shift; $ENV{MA_SOURCE_PKG}=$p; return "" if(! exists $packs{$p}); print STDERR 'Reading output from "'.$packs{$p}." ".join(" ", @_)."\"\n" if($opt_debug); open(my $fh, "-|", $packs{$p}, @_); my $retval=join("", <$fh>); close($fh); return $retval; } sub pexec { my $p=shift; $ENV{MA_SOURCE_PKG}=$p; for($i=0; $i<=$#_; $i++) { splice(@_, $i, 1) if(!defined($_[$i])); } if($_[0] eq "VERB") { shift; print STDERR join(' ',@_, "\n") if($opt_verbose); } return system($packs{$p}, @_); } sub countList { return scalar @_; } my $catchprint; sub printwrap { if($catchprint) { $printbuf .= join('', @_); } else { print @_; } } if(!$opt_nogui) { $smso=`tput smso`; $rmso=`tput rmso`; } sub printmsg { my $orgcolumns=$columns; if(!$opt_nogui) { $columns=65; chomp($tmpname = `mktemp`); open($tmpfile, ">$tmpname"); print $tmpfile wrap('','',@_); close($tmpfile); if($wtmode) { system($dialog, "--scrolltext", "--title", gettext("module-assistant, error message"), "--textbox", $tmpname, 18, 70); } else { system($dialog, "--aspect", 12, "--title", gettext("module-assistant, error message"), "--textbox", $tmpname, 0, 0); } unlink $tmpname; } else { $columns=$ENV{"COLUMNS"} -2 if( $ENV{"COLUMNS"} > 10); print STDERR $smso; print STDERR wrap('','',@_); print STDERR $rmso; print "\n"; } } sub printconfirm { printmsg(@_); if($opt_nogui) { print "\n" . gettext("Press Return to continue... (ctrl-c to abort)") . "\n"; ($opt_noninter || <STDIN>); } } restart: # User-trimmed paths if($opt_userdir) { die sprintf(gettext("%s is not a directory!"), $opt_userdir) . "\n" if(! -d "$opt_userdir/."); die sprintf(gettext("%s is not writeable!"), $opt_userdir) . "\n" if(! -w "$opt_userdir/."); $opt_userdir=Cwd::abs_path($opt_userdir); $var="$opt_userdir/var_cache_modass"; $ENV{"MA_VARDIR"}=$var; mkdir $var; die sprintf(gettext("%s is not writeable!"), $opt_userdir) . "\n" if(! (-d $var && -w $var)); $ENV{"MOD_TOPDIR"}="$opt_userdir/usr_src"; mkdir "$opt_userdir/usr_src"; $ENV{"MODULE_LOC"}="$opt_userdir/usr_src/modules"; $ENV{"KPKG_DEST_DIR"}=$opt_userdir if(! defined($ENV{"KPKG_DEST_DIR"})); if (! defined($sudo)) { if(-x "/usr/bin/sudo") { print wrap('','',gettext("Found sudo, will use it for %s and dpkg commands."), $aptcmd . "\n") if $opt_verbose; $sudo="/usr/bin/sudo"; } else { print wrap('','',gettext("Warning: sudo not found. Automatic package installations not possible!") . "\n") if !$opt_quiet; } } } sub setvars { $ENV{"KDREV"} = $KDREV if defined($KDREV); $ENV{"KVERS"} = $KVERS; $ENV{"KSRC"} = $kerneldirs{$KVERS}; $ENV{"KPKG_DEST_DIR"}=Cwd::abs_path($kerneldirs{$KVERS}."/..") if(! defined($ENV{"KPKG_DEST_DIR"})); $ENV{"MA_DEBUG"}=1 if $opt_debug; $ENV{"MA_NOTUNP"}=1 if $opt_notunp; print "Setting environment: KDREV: $ENV{KDREV} KVERS: $ENV{KVERS} KSRC: $ENV{KSRC} KPKG_DEST_DIR: $ENV{KPKG_DEST_DIR} " if($opt_debug); } sub have_source_or_break { # if user specified no source, extra_vers[0] is our $my_kvers. If # user specified something but without useable source, then # extra_vers[0] is at least this one value. If there are more, don't # complaing about them, though my $kvers=$extra_kvers[0]; my $kheadpkg = get_kpackage($kvers)."-headers-$kvers"; if(!(keys %kerneldirs)) { printmsg "\n\n" . wrap('','',gettext("Bad luck, the kernel headers for the target kernel version could not be found and you did not specify other valid kernel headers to use.")) . " " if !$kernelwarned; if (length(`apt-cache show $kheadpkg 2>/dev/null`) ) { printmsg "\n" .sprintf( gettext( "However, you can install the header files for your kernel which are provided by the %s package. For most modules packages, these files are perfectly sufficient without having the original kernel source. To install the package, run" ), $kheadpkg).($opt_nogui ? "" : gettext( " the PREPARE command from the main menu, or on the command line")).sprintf(gettext( ": module-assistant prepare or %s install %s") , $aptcmd, $kheadpkg) . "\n\n" ; exit 255 if($opt_nogui); $ret++; return 0; } else { printmsg "\n" . sprintf( gettext( "If the running kernel has been shipped with the Debian distribution, please install the package %s. If your kernel source tree (or headers) is located in some non-usual location, please set the KERNELDIRS environment variable to the path of this directory, or (alternatively) specify the source directory we build for with the --kernel-dir option in module-assistant calls." ), $kheadpkg) . "\n" if !$kernelwarned; exit 255 if($opt_nogui); $ret++; return 0; } } return 1; } sub up { my $pkg; my $out; my @packnames; if(@_) { # direct call, needs completion for(@_) { push(@packnames, complete_name($_));} } else { @packnames=sort(keys %packs); } # we provide apt-policy data, polling it with one call for # performance reasons print "Reading APT data: LANG=C apt-cache policy ".join(' ', @packnames)."\n" if $opt_debug; open($apt, "LANG=C apt-cache policy ".join(' ', @packnames)." 2>/dev/null |"); while(<$apt>) { if (/^(\w\S+):/) { $pkg=$1; close($out); if(! exists $compliant{$pkg}) { # for "others" print "Opening $var/$pkg.apt_policy\n" if $opt_debug; open($out, ">$var/$pkg.apt_policy") or die "Unable to write to $var/$pkg.apt_policy"; } } else { if(! exists $compliant{$pkg}) { # copy for "others" print $out $_; } $instvers{$pkg} = $1 if (/Installed: (.*)\n/ && $1 ne "(none)"); $candvers{$pkg} = $1 if (/Candidate: (.*)\n/ && $1 ne "(none)"); } } close($out); my $i; if(!$opt_nogui) { open($dpipe, "| $dialog --title \"" . gettext("Updating cached package data") . "\" --gauge \"" . gettext("Reading apt-cache output...") . "\" 7 75 0"); select($dpipe); $|=1; select(*STDOUT); } foreach(@packnames) { $i++; if($opt_nogui) { if($opt_verbose) { print sprintf(gettext("Updating info about %s"), $_) . "\n"; } elsif(!$opt_quiet) {syswrite(STDERR,'.');} } else { $pr=sprintf("%.0f", $i * 100 / ($#packnames+1)); print $dpipe "$pr\nXXX\n$_\nXXX\n"; } my $oldret; print "W: instvers from $_? $instvers{$_}\n" if $opt_debug; if($instvers{$_}) { print "W: $var/$_.cur_version\n" if $opt_debug; open(cv, ">", "$var/$_.cur_version") || $ret++; print cv $instvers{$_}; close cv; } else { unlink "$var/$_.cur_version"}; if($candvers{$_}) { print "W: $var/$_.avail_version" if $opt_debug; open(cv, ">$var/$_.avail_version") || $ret++; print cv $candvers{$_}; close cv; } else { unlink "$var/$_.avail_version"}; if($oldret != $ret) { $ret += pexec($_, "update"); } } close($dpipe); print "\n" . ($i ? sprintf(gettext("Updated infos about %s packages"), $i) : sprintf(gettext("Updated infos about %s package"), $i))."\n" if !$opt_quiet; #unlink (<$var/*.apt_policy>); } # get distrib_id from /etc/lsb-release; default to Debian sub get_distrib_id { my $LSB; my $distrib_id = "Debian"; if (open($LSB, "/etc/lsb-release")) { while (defined(my $lsb = <$LSB>)) { return "Ubuntu" if ($lsb =~ /DISTRIB_ID.*Ubuntu/i); return "Debian" if ($lsb =~ /DISTRIB_ID.*Debian/i); } close($LSB); } return "Debian"; } # get kernel package prefix depending on distribution and kernel version sub get_kpackage { return "linux" if ($distrib_id eq "Ubuntu"); # Ubuntu uses "linux" # Debian started using "linux" with 2.6.12 my @versar = split(/\D/, $_[0]); return "linux" if( $versar[0] > 2 || ($versar[1] >= 6 && $versar[2] >= 12)); # default to "kernel" return "kernel"; } sub prep { print "chdir $usrc\n" if $opt_debug; %envbackup=%ENV; $ENV{ROOT_CMD}=$sudo if ($sudo && !$ENV{ROOT_CMD}); if(@opt_kerneldirs) { print "I: skipping headers package lookup, since specified by user\n" if $opt_debug; goto just_install_be; } for $todo ($opt_kverslist[0]) { print "Trying headers from $todo\n" if $opt_debug; my $kheaders = get_kpackage($todo)."-headers"; $source=$kerneldirs{$todo}; die "Bad kernel version specification" if ! $todo; print STDERR gettext("Getting source for kernel version:")." $todo\n"; print STDERR sprintf(gettext("%s."), $source) . "\n" if $opt_debug; print STDERR values(%kerneldirs),"\n\n" if $opt_debug; my $symfrom; if(defined($source)) { print STDERR sprintf(gettext("Kernel headers available in %s"), $source) . "\n"; $opt_verbose=1; # if source was resolved to linux before, it is okay. If not, # make the symlink. If linux exists but points to sth. wrong for # us, move it away by renaming if($source ne "$usrc/linux") { $symfrom = (dirname($source) eq "$usrc") ? basename($source) : Cwd::abs_path($source); } } else { $opt_verbose=1; withecho($sudo, $aptcmd, ($opt_noninter?"-y":undef), "install", "$kheaders-$todo"); if($my_kvers eq $todo) { $symfrom="$kheaders-$todo"; } } if(-l "$usrc/linux" && readlink("$usrc/linux") eq $symfrom ) { #great, nothing to do anymore } else { print STDERR gettext("Creating symlink...") . "\n"; rename("$usrc/linux","$usrc/linux-OLDVERSION.".time) if(-e "$usrc/linux" || -l "$usrc/linux"); symlink($symfrom,"$usrc/linux") || print STDERR sprintf(gettext("Couldn't create the %s/linux symlink!"), $usrc). "\n"; } } just_install_be: # if(`apt-cache policy build-essential` =~ /Installed:..none/) { print STDERR gettext("Installing packages needed for the build environment...") . "\n" if (!opt_quiet); withecho($sudo, $aptcmd, ($opt_noninter?"-y":undef), "install", "build-essential"); # } print STDERR "\n". gettext("Done!") . "\n"; %ENV=%envbackup; } sub complete_name { my ($target) = @_; $target=~s/^\s+//; my $pkg; my @posnames=($target); my $d; if(defined($packs{$target})) { return $target; } # no luck, begin with probing # for $sufMult ("", "s") { for $sufType ("", "-driver", "-kernel", "-module") { for $sufSrc ("-source", "-src") { push(@posnames, $target.$sufType.$sufMult.$sufSrc); } } } PROBE: for (@posnames) { print STDERR gettext("PROBE:") . " $_\n" if $opt_debug; if(defined($packs{$_})) { print STDERR gettext("GOT NAME:") . " $_\n" if $opt_debug; return $_; } } for $getName (keys %packs) { if(!defined($pkg)) { $prefix=pread($pkg, prefix); chomp($prefix); return $prefix if($prefix eq $getName); } } # ugly, ugly, ugly, looking for an available package with similar # name and constructing a call for it open($d, "apt-cache policy ".join(" ", @posnames)." 2>/dev/null |"); print "\n\n\nhm, apt-cache policy ".join(" ", @posnames)."\n\n\nend" if $opt_debug; pol: while(<$d>) { if(/^(\S+):/) { $pkg=$1; print "Forced compliant: $pkg\n" if $opt_debug; $packs{$pkg}="$res/packages/default.sh"; $compliant{$pkg}=1; return $pkg; } } close($d); return "0" if(defined($_[1])); # some cosmetical workaround die sprintf(gettext("%s, what is %s?"), $target, $target) . "\n"; } sub unpackone { my ($pkg) = @_; if(!$opt_unponce) { return pexec($pkg, "VERB", "unpack"); } # continue with unpack-once operation chomp(my $pkgvers=pread($pkg, "cur_version")); my $flagfile="$var/$pkg.unpackflag.$pkgvers"; #print "Looking for unpacked flag: $flagfile\n"; return 0 if (-e $flagfile && !$opt_force); #remove old flags unlink(<$var/$pkg.unpackflag.*>); if(! pexec($pkg, "VERB", "unpack")) { open (tmp,">$flagfile"); close tmp; } } sub get { my $newstuff=0; my $faillog=""; %envbackup=%ENV; $ENV{ROOT_CMD}=$sudo if ($sudo && !$ENV{ROOT_CMD}); SKIP: foreach $target (@_) { my $pkg; my $reti=0; $pkg=complete_name($target); next SKIP if( $installed_only && pexec($pkg, "installed")); # war is peace! zero is success! non-zero is failure! if($opt_force) { $ENV{"REINSTALL"} .= " --reinstall " unless ($ENV{"REINSTALL"}=~/--reinstall/); $reti=pexec($pkg, "VERB", "download"); $newstuff++; } else { if(pexec($pkg, "installed")) { $reti=pexec($pkg, "VERB", "download"); $newstuff++; } else { my $curpkgvers=pread($pkg, "cur_version"); chomp($curpkgvers); my $avpkgvers =pread($pkg, "avail_version"); chomp($avpkgvers); if($curpkgvers ne $avpkgvers) { # workaround for correct sudo command passing # NOTE: env set from pread above! $reti=withecho($sudo, $packs{$pkg}, "download"); $newstuff++; } } } print "D: download, ret: $reti\n" if $opt_debug; my @tounpack; # and don't unpack if download failed if (!$reti) { push(@tounpack, $pkg); ## if($opt_ondemand) { ## if(`$packs{$pkg} cur_version` ne $before) { ## withecho("$packs{$pkg} unpack"); ## } ## } ## else { # withecho("$packs{$pkg} unpack"); ## } } else { my $msg=sprintf(gettext("Installation of the %s source failed."), $pkg) . "\n"; # $msg.=gettext("Ignoring this package. Maybe you need to add something to sources.list, maybe the contrib and non-free archives.") . "\n"; $blacklist{$pkg}=1; $faillog .= ($faillog ? $msg : $msg."\n".gettext("Ignoring this package. Maybe you need to add something to sources.list, maybe the contrib and non-free archives.")."\n\n"); sleep(2); #printmsg $msg; } } printmsg $faillog if $faillog; # done with critical stuff, restore env %ENV=%envbackup; if($newstuff) { &up(@_); &scan_overrides(); } unpackone($_) for @tounpack; } sub unp { SKIP: foreach $target (@_) { my $pkg; $pkg=complete_name($target); next SKIP if( $installed_only && pexec($pkg, "installed")); unpackone($pkg); # $opt_ondemand || withecho("$packs{$pkg} unpack"); } } sub getkdrev { if(open($chlog, $kerneldirs{$KVERS}."/debian/changelog")) { if (<$chlog> =~ /^(\S+)\s*\((.+)\)/) { $KDREV=$2; } close($chlog); } # fallback to -headers oder -image version, may be incorrect but better than nothing my $kheaders = get_kpackage($KVERS)."-headers"; my $kimage = get_kpackage($KVERS)."-image"; FROMAPT: for $pb ($kheaders, $kimage) { last FROMAPT if(defined($KDREV)); if(open($aptpipe,"LANG=C apt-cache policy $pb-$KVERS 2>/dev/null |")) { while(<$aptpipe>) { if(/Installed:\s*(.+)\n/ && ($1 ne "(none)")) { $KDREV=$1; } } close $aptpipe; } } } sub build { # lart the user if there is no source (only @extra_kvers) # exit in non-dialog mode # if have_source_or_break terminates the program, okay. If # have_source_or_break returns 0, then build should not continue; # otherwise, go ahead return if (!have_source_or_break()); foreach(values %kerneldirs) { if( (! $ENV{"KPKG_DEST_DIR"}) && (! -w Cwd::abs_path("$_/..")) ) { printconfirm gettext("\$KPKG_DEST_DIR is not set and the target directory") . "\n". sprintf(gettext("%s is not writeable for you!\nYour build will probably fail!"), Cwd::abs_path("$_/..")) . "\n"; #sleep(5) if($opt_nogui); } } my $pkg; my $res; SKIP: foreach $target (@_) { $pkg=complete_name($target); next SKIP if( $installed_only && pexec($pkg, "installed")); next SKIP if($blacklist{$pkg}); labKVERS: foreach $KVERS ((values %kernelvers)) { undef $newdeb; undef $lastdeb; undef $KDREV; &getkdrev($KVERS); &setvars; unpackone($pkg); $lastdeb=pread($pkg, "lastpkg"); $newdeb=pread($pkg, "echodebfile"); chomp($lastdeb); chomp($newdeb); # An incomplete hack to track versions by creating fingerprint files # that refer to KDREV, KVERS, package version. IMO not needed since # most package use module-assistant now if($lastdeb && !$newdeb) { # that's crap. this package does not use m-a includes and so it # does not show its target deb. Assume that the new deb will be the # same if kdrev, kvers, and package version do match $fprfile = $lastdeb; $fprfile =~ s#/#_#g; $fprfile = "$var/$fprfile.txt"; if(open(fingerprint, $fprfile)) { my ($pver, $pkvers, $pkdrev) = <fingerprint>; close(fingerprint); my $curpkgvers=pread($pkg, "cur_version"); chomp($curpkgvers); $newdeb = $lastdeb if($pver eq "$curpkgvers\n" && $pkvers eq "$KVERS\n" && $pkdrev eq "$KDREV\n"); } } if (length($lastdeb) && -e $lastdeb && !$opt_force) { $lastdeb=Cwd::abs_path($lastdeb); $newdeb =Cwd::abs_path($newdeb); # there is a candidate if($opt_norebuild) { # and do _not_ rebuild choosen print wrap('','',sprintf(gettext("Recently built package %s found, not rebuilding %s"), $lastdeb, $pkg)) , "\n"; next labKVERS; } if ($lastdeb eq $newdeb) { # target file is absolutely the same print STDERR wrap('','',sprintf(gettext("Target package file %s already exists, not rebuilding!"), $newdeb)) . "\n"; print STDERR wrap('','', "(however, you could use the -f switch to ignore it)\n"); next labKVERS; } } # implicit else # keeping as is :(, environment set above # that sucks, need to supress make's bitching and so use a subshell call if( !system("\"$packs{$pkg}\" reqsrc 2>/dev/null") && !isfullsrc($kerneldirs{$KVERS}) ) { # crap, wants full source but does not get it printconfirm $reqsrcmsg; } $cmd ="\"$packs{$pkg}\" build KVERS=$KVERS KSRC=". $kerneldirs{$KVERS}. ( (defined($KDREV)) ? " KDREV=$KDREV" : ""). ( (defined($ENV{"KPKG_DEST_DIR"})) ? "" : "KPKG_DEST_DIR=".Cwd::abs_path($kerneldirs{$KVERS}."/..") ). ( ($ENV{"SIGNCHANGES"}) ? " kdist" : " kdist_image" ) ; print STDERR "$cmd\n" if($opt_verbose); if(!$opt_nogui) { # guess how verbose the build will be... $pkg=~/^([^-]+)/; map { $lnumber++ } `find $modloc/$1*`; $lnumber = 250 if($lnumber<100); open($bpipe, "$cmd 2>&1 |"); $step=1; open($dpipe, "| $dialog --title \"" . sprintf(gettext("Building %s, step %d, please wait..."), $pkg, $step) . "\" --gauge \"" . gettext("Build starting...") . "\" 15 75 0"); select($dpipe); $|=1; select(*STDOUT); my $linebuf; my $anz=1; PARSEOUTPUT: while($anz) { my $input; $anz=sysread($bpipe, $input, 8); $linebuf.=$input; if(!$anz) { # last iteration, line may be incomplete $line=$linebuf; } elsif($linebuf=~/([^\n]+)\n(.*)/) { $line=$1; $linebuf=$2; } else { next PARSEOUTPUT; } $pr=sprintf("%.0f", $lfdzeile++ * 100 / $lnumber); if($pr> 100) { # eeeeks, overflow, restart dialog $step++; close($dpipe); open($dpipe, "| $dialog --title \"". sprintf(gettext("Building %s, step %d, please wait..."), $pkg, $step) . "\" --gauge \"". gettext("Build continues...") . "\" 15 75 0"); select($dpipe); $|=1; select(*STDOUT); $lfdzeile=0; $pr=0; } # detox before printing #$line=~s/'|"|`//g; syswrite($dpipe,"$pr\nXXX\n$line\nXXX\n"); } close($bpipe); $res = ($? >> 8); $ret += $res; if(!$?) { $deb=pread($pkg, "lastpkg"); chomp($deb); print $dpipe "100\nXXX\n" . sprintf(gettext("Done! Run\nm-a install %s\nto install."), $pkg) . "\nXXX\n"; # $build_ok{$pkg} } else { # hack. Dirty hack. But if this fails, what is reliable # then? chomp($file=`ls -tr $var/$pkg.buildlog.$KVERS.* | tail -n1`); if(!$opt_noninter) { $gui_loop=1; $defsel="VIEW"; sleep 1; RES: while($gui_loop) { open($intro, "$dialog --default-item $defsel --clear --title ".'"' . gettext("module-assistant, interactive mode") .'" --menu "' . sprintf(gettext("Build of the package %s failed! How do you wish to proceed?"), $pkg) . '\n\n" 14 65 5 VIEW "' . gettext("Examine the build log file") . '" CONTINUE "' . gettext("Skip and continue with the next operation") . '" STOP "' . gettext("Stop processing the build commands") . '" 2>&1 >/dev/tty |'); @out = <$intro>; close($intro); $dialog_ret= ($? >> 8); last RES if($dialog_ret); die gettext("Dialog command not working correctly!") . "\n" if($#out != 0); $defsel=$out[0]; if($defsel eq "VIEW") { system($dialog, ($wtmode ? "--scrolltext" : "--clear" ), "--title", gettext("module-assistant, log file viewer"), "--textbox", $file, 21, 78); } elsif($defsel eq "CONTINUE") { $gui_loop=0; } elsif($defsel eq "STOP") { close $dpipe; return; } } } else { print $dpipe "100\nXXX\n" . sprintf(gettext("Build failed! See %s for details!"), $file) . "\nXXX\n"; } } close $dpipe; print STDERR sprintf(gettext("Done with %s ."), $deb) . "\n" if $deb; } else { $res = system $cmd; if( (!$opt_noninter) && $res) { print gettext("Build failed. Press Return to continue...") . "\n"; ($opt_noninter || <STDIN>); } $ret += $res; } $blacklist{$pkg}=1 if $res; if(! pread($pkg, "echodebfile") && !$res) { # keep a fingerprint from "old" packages $fprfile = pread($pkg,"lastpkg"); chomp($fprfile); $fprfile =~ s#/#_#g; $fprfile = "$var/$fprfile.txt"; open(fpr, ">$fprfile"); my $curpkgvers=pread($pkg, "cur_version"); chomp($curpkgvers); print fpr "$curpkgvers\n$KVERS\n$KDREV\n"; close(fpr); } } } } sub install { my $pkg; SKIP: foreach $target (@_) { $pkg=complete_name($target); next SKIP if($blacklist{$pkg}); &setvars; #print "D: ", keys %kernelvers, "\n"; foreach $KVERS ((values %kernelvers), @extra_kvers) { &setvars; $deb=pread($pkg, "lastpkg"); chomp($deb); if (length($deb) && -e $deb) { print "TODO: ".Cwd::abs_path($deb)."\n" if $opt_debug; push(@debs, Cwd::abs_path($deb)); } else { my $pattern="$var/$pkg*buildlog*"; printmsg sprintf(gettext("Package %s was not built successfully, see %s for details!"), $pkg, $pattern) . "\n"; if ($command ne "auto-install" && $opt_nogui) { print gettext("You maybe want to run \"auto-install\" instead of install.") . "\n"; } } } } $ret_save = $ret; withecho ($sudo, "dpkg", ($opt_force? "-i" : "-Ei"), @debs) if($#debs >= 0); if($ret > $ret_save) { $ret--; print STDERR "\nI: " . gettext("Direct installation failed, trying to post-install the dependencies") . "\n\n"; $ret += withecho($sudo, $aptcmd, $opt_noninter?"-fy":"-f","install"); } foreach $deb (@debs) { my @scores = split "_", File::Basename::fileparse($deb); push(@buildpkgs, $scores[0]); } withecho ($sudo, "apt-mark", "auto", @buildpkgs) if($#buildpkgs >= 0); } sub clean { my $pkg; SKIP: foreach $target (@_) { $pkg=complete_name($target); next SKIP if( $installed_only && pexec($pkg, "installed")); $ret += pexec($pkg, "VERB", "clean"); } } sub purge { my $pkg; SKIP: foreach $target (@_) { $pkg=complete_name($target); next SKIP if( $installed_only && pexec($pkg, "installed")); $ret += pexec($pkg, "VERB", "purge"); } } sub list { print gettext("Warning, the cache is empty. You maybe wish to run the command \"module-assistant update\" first!") . "\n" if ("" eq <$var/*>); my $i; $retcode=1; my $tellsearch; PKG: foreach (sort @_) { $requested=$_; #syswrite(STDERR,'.') if(!$opt_quiet); $pkg=complete_name($_); # is i(nstall)ed or not? # print "is it installed?\n" if $opt_debug; if(!pexec($pkg, "installed") ) { my $curpkgvers=pread($pkg, "cur_version"); chomp($curpkgvers); my $avpkgvers= pread($pkg, "avail_version"); chomp($avpkgvers); #printwrap "$pkg (source package installed"; if($curpkgvers ne $avpkgvers) { printwrap sprintf(gettext("%s (source) available (not up-to-date, V: %s vs. %s)"), $pkg, $curpkgvers, $avpkgvers) . "\n"; } else { printwrap sprintf(gettext("%s (source) installed (V: %s):"), $pkg, $curpkgvers) . "\n"; } } elsif($installed_only) { # nichts damit machen next PKG; } else { # not installed but try the bins though printwrap sprintf(gettext("%s (source package not installed):"), $pkg) . "\n"; } $retcode=0; my $binstring; foreach $KVERS ((values %kernelvers), @extra_kvers) { &setvars; $lastbin=pread($pkg, "lastpkg"); chomp($lastbin); $binstring .= " + ($KVERS): "; if(length($lastbin) >0 ) { $binstring .= ( $opt_verbose ? Cwd::abs_path($lastbin) : basename($lastbin))."\n"; } elsif($opt_search) { my $packname = ((split(/-/, $pkg))[0]); if(@precomp=`apt-cache pkgnames $packname- | grep -- -$KVERS\$`) { # preset but try others if needed my $binpackage=$precomp[0]; if($#precomp > 0) { $shortname=$pkg; $shortname=~s/-(source|src)$//; # stupid similar looking names for(@precomp) { if(/$shortname-$KVERS/) { $binpackage=$_; last; } } } if(`apt-cache show $binpackage`=~/Filename:/) { $binstring .= gettext("not found, possible candidate(s) installable with %s:"), $aptcmd . "\n\t"; } else { printwrap gettext("package not found, but following is already installed:") . "\n\t"; } $binstring .= join("\n\t", @precomp); } } else { $binstring .= gettext("not found") . "\n"; $tellsearch++; } } if(length($binstring)) { printwrap " " . gettext("-- Binary package(s) for kernel(s):") . "\n$binstring"; #printwrap (($tellsearch>1 ? "Some packages were not found" : "One package could not be found").". Use the \"search\" command to look in the pool.\n") if($tellsearch && !$opt_quiet); } # else # { # # printwrap " -- No binary packages found" . (!$opt_search && # " (use the \"search\" command to look in the pool)")."\n" if(!$opt_quiet); # } $i++; #printwrap "\n"; } if($tellsearch) { my($orgcolumns) = $columns; $columns -= 4; printwrap wrap('', '', gettext("Some packages could not be found. The \"search\" command can search in the package pool for precompiled packages.")) . "\n"; $columns = $orgcolumns; } if(!$i) { printwrap gettext("No data? You maybe want to run \"module-assistant update\" first.") . "\n" ; $ret++; } return $retcode; } sub argv_expand { # @ARGV= grep { !system "$packs{$_} installed" } keys %packs ; @ARGV=split(/,|\ /,join(',',@ARGV)); if ($ARGV[0] eq "all") { @ARGV=sort(keys %packs); } elsif ($ARGV[0] eq "alli") { @ARGV=sort(keys %packs); $installed_only=1; } elsif ($ARGV[0] eq "allu") { @ARGV=lsd($modloc); } } sub init_packs_desc { # allow control scripts to preset descriptions open($descfile, "<$var/descriptions"); while(<$descfile>) { if(/([^:]+):\ ?(.*)/) { $packsdesc{$1}=$2; last; } } close($descfile); for $source (keys %packs) { $shortname=$source; $shortname=~s/-(source|src)$//; if(!defined($packsdesc{$shortname})) { # accidentaly named after -source package if(defined($packsdesc{$source})) { $namefound = $packsdesc{$source}; delete $packsdesc{$source}; } else { # precache once with cummulative apt-get run if(!(keys %descache)) { open($getdesc, "apt-cache show ".join(' ',keys %packs)." 2>/dev/null |"); while(<$getdesc>) { $pkg=$1 if(/^Package: (.*)\n/); if(/^Description: (.*)\n/) { $descache{$pkg}=$1; } } close($getdesc); } $namefound=$descache{$source}; } $namefound=~s/\(source.*\)//i; $namefound=~s/(source)?\.?$//i; $namefound=~s/^(driver|module)?.?sources? (code )?(for|of)? (the )?//i; # and if there still nothing, it will be an empty description $packsdesc{$shortname} = $namefound; } } open($descfile, ">$var/descriptions"); for(keys %packsdesc) { print $descfile $_.": ".$packsdesc{$_}."\n"; } close($descfile); delete $packsdesc{""}; # wherever it comes from } sub isfullsrc { $src=$_[0]; return ( (!-l "$src/arch") && (countList(<$src/arch/*>) > 1) ); } sub fakesrc { my $kvers=$_[0]; my $kpkg = get_kpackage($kvers)."-image-".$kvers; my $knmbr=$kvers; $knmbr=~s/^([\d\.]+)(.*)/$1/; my $extra=$2; my $writedir=(-d $opt_userdir)?$opt_userdir."/usr_src":$usrc; my $confile="/boot/config-$kvers"; my $kheaders=get_kpackage($kvers)."-headers"; my $ksource=get_kpackage($kvers)."-source"; my $symverfile="$usrc/$kheaders-$kvers/Module.symvers"; my $compileh="$usrc/$kheaders-$kvers/include/linux/compile.h"; print gettext("Experimental kernel source recreating method...\nGetting source...") . "\n"; return 0 if withecho($sudo, $aptcmd, ($opt_noninter?"-y":undef), "install", "$ksource-$knmbr"); if(! -f $confile) { print gettext("Config not found, getting headers to extract the config...") . "\n"; return 0 if withecho($sudo, $aptcmd, ($opt_noninter?"-y":undef), "install", "$kheaders-$kvers"); $confile="$usrc/$kheaders-$kvers/.config"; } $tmpdir="$writedir/tmp-".rand; mkdir $tmpdir; # show the user what's going on print gettext("Extracting pristine kernel source, please wait...") . "\n"; return 0 if withecho("tar", "jxf", "$writedir/$ksource-$knmbr.tar.bz2", "-C", $tmpdir); print gettext("Installing to final location and configuring, please wait...") . "\n"; withecho "mv", "$tmpdir/$ksource-$knmbr", "$writedir/$ksource-$kvers"; withecho "cp", $confile, "$writedir/$ksource-$kvers/.config"; if (-f $symverfile) { withecho "cp", $symverfile, "$writedir/$ksource-$kvers/Module.symvers"; } if (-f $compileh) { withecho "cp", $compileh, "$writedir/$ksource-$kvers/include/linux/compile.h"; } rmdir $tmpdir; if($extra) { open(mk,"<$writedir/$ksource-$kvers/Makefile"); while(<mk>) { if($extra && s/^EXTRAVERSION.*/EXTRAVERSION=$extra\n/) { undef($extra); } push(@mkcont,$_); } close(mk); open(mk,">$usrc/$ksource-$kvers/Makefile"); print mk @mkcont; close(mk); } if(0 != withecho("make", "-C", "$usrc/$ksource-$kvers" , "prepare", "modules_prepare")) { withecho("make", "-C", "$usrc/$ksource-$kvers" , "oldconfig", "dep"); } print "\n" . wrap('', '', sprintf(gettext("Faked kernel source for the Kernel %s.\nWarning: the configuration may not match the running kernel."), $kvers)) . "\n\n"; &initksrc; } #die "FIXME, hier oben"; #$maxlen=0; #foreach $key (keys %packs) { # $maxlen = length($key) if (length($key) > $maxlen); #} #print @output; # things that belong together: # Kernel version of some directory # $kernelvers{"directory"}= VERSION-NUMBER # Directory to some kernel version # $kerneldirs{VERSION-NUMBER} = "directory" sub initksrc { # so initialise them undef %kernelvers; undef %kerneldirs; undef @extra_kvers; foreach(@opt_kerneldirs) { if(-d $_) { print "PROBEKDIR: $_\n" if $opt_debug; open($versionh, "<$_/include/generated/utsrelease.h")|| open($versionh, "<$_/include/linux/utsrelease.h")|| open($versionh, "<$_/include/generated/uapi/linux/version.h")|| open($versionh, "<$_/include/linux/version.h"); <$versionh> =~ /"(.+)"/; if(close($versionh)) { print "I: found version $1\n" if ($opt_debug); $kernelvers{$_}=$1; $kerneldirs{$1}=$_; } elsif(-r "$_/Makefile") { printmsg sprintf(gettext("Warning, %s seems to contain unconfigured kernel source (see manpage for details)!"), $_) if !$opt_quiet; $kernelwarned=1; } elsif(!-r $_ || !-x $_) { printmsg sprintf(gettext("Warning, could not access the %s directory!"), $_) . "\n" if !$opt_quiet; $kernelwarned=1; } else { printmsg sprintf(gettext("Warning, %s does not contain a valid kernel source tree, skipping!"), $_) . "\n" if !$opt_quiet; $kernelwarned=1; } } } # now go trough the user-specified kverslist (skipping kvers for # user-specified directories) and look for for the appropriate kernel # headers for the rest HAVEIT: foreach $kvers (@opt_kverslist) { next HAVEIT if(defined($kerneldirs{$kvers})); my $kheaders=get_kpackage($kvers)."-headers"; LOOKUP: foreach $poskdir ("/lib/modules/$kvers/build", "/lib/modules/$kvers/source", <$opt_userdir/usr_src/*>, "$usrc/linux", "$usrc/$kheaders-$kvers", <$usrc/*>, </usr/local/src/*>) { if(defined($poskdir) && -d $poskdir) { if(!-x $poskdir) { if(!$opt_quiet) { my $msg=sprintf(gettext("Warning, could not access the %s directory!"), $poskdir); if($opt_userdir) { printmsg $msg if !$ksrcstfu; $ksrcstfu=1 } else { print $msg if $opt_verbose; } } } else { if(-e "$poskdir/include/linux/version.h" || -e "$poskdir/include/generated/uapi/linux/version.h") { open($versionh, "<$poskdir/include/generated/utsrelease.h") || open($versionh, "<$poskdir/include/linux/utsrelease.h") || open($versionh, "<$poskdir/include/generated/uapi/linux/version.h") || open($versionh, "<$poskdir/include/linux/version.h"); <$versionh> =~ /"(.+)"/; push(@seenkvers, "$1\n"); if($1 eq $kvers) { if($kerneldirs{$kvers}) { if(isfullsrc($poskdir)) { # we have a dupe and the new one looks like better source # # drop the previous one print "D: $kvers dupe, prefer the one from $poskdir\n" if $opt_debug; delete $kernelvers{$kerneldirs{$kvers}}; $kernelvers{$poskdir}=$kvers; $kerneldirs{$kvers}=$poskdir; last LOOKUP; } # just ignore otherwise } else { $kernelvers{$poskdir}=$kvers; $kerneldirs{$kvers}=$poskdir; } } } # elsif(-r "$poskdir/include/linux" && -r "$poskdir/Makefile") { # printmsg sprintf(gettext("Warning, %s seems to contain unconfigured kernel source!"), $poskdir) if !$opt_quiet; # } } } } } # finaly, go trough @opt_kverslist and push versions with no source to # @extra_kvers for(@opt_kverslist) { if(!defined($kerneldirs{$_})) { push(@extra_kvers, $_); } } #print "valid: ", (keys %kerneldirs), " extra: ", @extra_kvers if($opt_debug); } &initksrc; &argv_expand; ### MAIN part ### sub do_stuff { my $cmd=$_[0]; if($cmd eq "list" || $cmd eq "list-available" || $cmd eq "la") { if($#ARGV<0) { $ARGV[0]="all" ; &argv_expand} &list(@ARGV); } elsif($cmd eq "search") { if($#ARGV<0) { $ARGV[0]="all" ; &argv_expand} $opt_search=1; &list(@ARGV); } elsif($cmd eq "list-installed" || $cmd eq "l-i" || $cmd eq "li") { if($#ARGV<0) { $ARGV[0]="alli" ; &argv_expand} &list(@ARGV); } elsif($cmd eq "get") { &help if($#ARGV<0); die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &get(@ARGV); } elsif($cmd eq "unpack") { &help if($#ARGV<0); die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &unp(@ARGV); } elsif($cmd eq "build") { $opt_nogui = 0 if $wtmode; # whiptail's gauge sucks die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &build(@ARGV); } elsif($cmd eq "update") { if($#ARGV<0) { $ARGV[0]="all" ; &argv_expand} &up(@ARGV); } elsif($cmd eq "prepare") { &prep(); initksrc(); } elsif($cmd eq "auto-install" || $cmd eq "ai" || $cmd eq "a-i") { &help if($#ARGV<0); die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); if($#ARGV<0) { $ARGV[0]="all" ; &argv_expand} @tmp=@ARGV; # workaround for a funny bug, up() alters the data somehow &up(@tmp); &prep(); &initksrc(); &get(@ARGV); &build(@ARGV); &install(@ARGV); } elsif($cmd eq "auto-build" || $cmd eq "ab" || $cmd eq "a-b") { die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &get(@ARGV); &build(@ARGV); } elsif($cmd eq "build-install" || $cmd eq "b-i") { die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &build(@ARGV); &install(@ARGV); } elsif($cmd eq "install") { die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &install(@ARGV); } elsif($cmd eq "clean") { die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &clean(@ARGV); } elsif($cmd eq "purge") { die gettext("Do you really wish to remove all binary packages?\nIf so, use the --force option.") . "\n" if(!$opt_force); die gettext("No package specified. STOP.") . "\n" if($#ARGV<0); &purge(@ARGV); } elsif($cmd eq "fakesource" || $cmd eq "fakersrc" || $cmd eq "fakersource") { #$ARGV[0]=$my_kvers if($#ARGV < 0); &fakesrc($_) for(@opt_kverslist); } elsif(!$gui_done) { $gui_done=1; # bounce with error message if there is no gui, otherwise work with dialog &help() if ($opt_nogui || !$dialog); print STDERR gettext("Starting the Dialog UI...") . "\n"; chomp($tmpname=`mktemp`); $gui_loop=1; $defsel="OVERVIEW"; GUI: while($gui_loop) { my($orgcolumns) = $columns; $columns = 65; open($intro, "$dialog --default-item $defsel --clear --title ".'"' . gettext("module-assistant, interactive mode") . '" '.($wtmode?"":" --aspect 5 ").' --menu "' . wrap('', '', gettext("Welcome to the dialog frontend of module-assistant. This user interface provides access to the few commands of this program.")) . '\n\n' . wrap('', '', gettext("If you wish to learn more, choose the OVERVIEW option.")) . '\n\n' . wrap('', '', gettext("You should better run UPDATE once before you proceed.") . " " . gettext("If you wish to look for existing module packages for your needs or wish to compile a new one from source, choose them in the SELECT dialog and continue with possible commands.")) . '\n\n" 22 '.$columns.' 5 OVERVIEW "' . gettext("Show all possible command line commands") . '" UPDATE "' . gettext("Update the cached package information") . '" PREPARE "' . gettext("Configure the system to compile modules") . '" "SELECT" "' . gettext("Select the module/source packages to work on") . '" "EXIT" "' . gettext("Exit the program") . '" 2>&1 >/dev/tty |'); $columns = $orgcolumns; @out = <$intro>; close($intro); $dialog_ret= ($? >> 8); last GUI if($dialog_ret); die gettext("Dialog command not working correctly!") . "\n" if($#out != 0); $defsel=$out[0]; if($defsel eq "OVERVIEW") { open($tmpfile, ">$tmpname"); print $tmpfile $helpmsg; close($tmpfile); system($dialog, ($wtmode ? "--scrolltext" : "--clear" ), "--title", gettext("module-assistant, command overview"), "--textbox", $tmpname, $rows-2, $columns-1); unlink $tmpname; } elsif($defsel eq "UPDATE") { up(); } elsif($defsel eq "PREPARE") { prep(); print STDERR "\n\n" . gettext("Press Return to continue..."); ($opt_noninter || <STDIN>); initksrc(); #goto restart; } elsif($defsel eq "SELECT") { &init_packs_desc(); %packsel = %packsdesc; for(keys %packsel) { $packsel{$_}="off"}; SELECTION: while(1) { my $tmpstring = $dialog.' --clear --title "' . gettext("module-assistant, package selection") . '" --checklist "\n' . wrap('', '', gettext("Please select the interesting module (source) packages.")) . '\n' . wrap('', '', gettext("Use Cursor keys to browse, Space to select and Return to continue.")) . '\n' . wrap('', '', gettext("Cancel to return to the main menu.")) . '" '. ($rows - 4) . ' 70 ' . ($rows-15); for(sort(keys %packsel)) { $tmpstring .= " $_ \"".$packsdesc{$_}.'" '.$packsel{$_}; } $tmpstring .= ' 2>&1 >/dev/tty |'; #die "jo, $tmpstring"; open($select, $tmpstring); @out = <$select>; close $select; last SELECTION if($? >> 8); # die gettext("Dialog command not working correctly!") . "\n" if($#out != 0); $selection=$out[0]; $selection=~s/\"//g; @selected=split(/\ /,$selection); for(@selected) { $packsel{$_}="on"}; next SELECTION if($#selected < 0); ACTION: while(1) { $tmpstring = $dialog.' --clear --title "' . gettext("module-assistant, interactive mode") . '" --menu "' . gettext("You have selected the following packages:") . '\n\n' .join(', ', @selected) .'\n\n' . gettext("Choose one of the following commands to proceed or Cancel to return to the selection menu.") . '\n\n" 18 65 6 LIST "' . gettext("List installed (binary) packages") . '" SEARCH "' . gettext("List and search with apt-cache") . '" GET "' . gettext("Get or update the source package") . '" "BUILD" "' . gettext("Compiles module packages for the current kernel") . '" INSTALL "' . gettext("Installs the packages for the current kernel") . '" BACK "' . gettext("Returns to the module selection") . '" 2>&1 >/dev/tty |'; open($select, $tmpstring); @out = <$select>; close $select; last SELECTION if($? >> 8); $selection=$out[0]; if($selection eq "LIST" | $selection eq "SEARCH") { $opt_search=1 if($selection eq "SEARCH"); undef $printbuf; $catchprint=1; list(@selected); undef $catchprint; open($tmpfile, ">$tmpname"); print $tmpfile $printbuf; close($tmpfile); system($dialog, "--title", gettext("module-assistant, present packages"), "--textbox", $tmpname, 21, 78); unlink $tmpname; undef $opt_search; } elsif($selection eq "GET") { get(@selected); } elsif($selection eq "BUILD") { my $instatus; for(@selected) {$instatus += pexec(complete_name($_), "installed") }; my($orgcolumns) = $columns; $columns = 56; if($instatus && !system($dialog, "--title", gettext("module-assistant, source installation"), "--yesno", wrap('', '', gettext("The source package may not to be installed. Would you like to install or upgrade selected source packages now?")), 10, 60)) { get(@selected); } $columns = $orgcolumns; my $retold=$ret; build(@selected); #if($ret > $retold) { # printmsg "The build was not successful! See /var/cache/modass/*buildlog* for more details."; #} if($retold == $ret && !system($dialog, "--title", gettext("module-assistant, package installation"), "--yesno", gettext("Would you like to install the created module package(s) now?"), 7, 60)) { install(@selected); } } elsif($selection eq "INSTALL") { install(@selected); } else { next SELECTION; } } } } else { exit; } } } } if( !(`id -u`=~/^0/) && !$opt_userdir ) { if(`groups`=~/(^| )src(\ |$)/) { $opt_userdir="$usrc/modass"; my($orgcolumns) = $columns; $columns -= 4; printmsg sprintf(gettext("NOTE: You are not root but member of the src group. Mapping the base working directory to \"%s\"."), $opt_userdir) if !$opt_quiet; $columns = $orgcolumns; if(!-w $opt_userdir) { mkdir $opt_userdir; } if(!-w $opt_userdir) { my($orgcolumns) = $columns; $columns -= 4; printmsg sprintf(gettext("You are member of the src group but the replacement directory %s could not be created or is not writeable."), $opt_userdir) if !$opt_quiet; $columns = $orgcolumns; exit 254; } goto restart; } else { my($orgcolumns) = $columns; $columns -= 4; printmsg gettext("You are not root and no replacement directory (the -u option) is specified. Unable to continue.") if !$opt_quiet; $columns = $orgcolumns; exit 254; } } $command="somethinginvalid" if !$command; for(split(/,/, $command)) { do_stuff($_) } ende(); __END__
Close