1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
*************
USER COMMANDS
*************
SYNOPSIS
========
**autodep** [options] <command>
DESCRIPTION
===========
Auto dependency (autodep) builder is a tool for the analysis of accessed files during
the build of a package. It also can be used for runtime dependencies analysis.
The tool can trace, log and block access to files of given packages.
OPTIONS
=======
.. program:: autodep
.. cmdoption:: --help, -h
Show this help message and exit.
.. cmdoption:: -b, --block
strict mode: Deny all access to files from non-dependency packages.
.. cmdoption:: --blockpkgs=PACKAGES
Block access to files from this packages.
.. cmdoption:: -f, --files
Show all files, accessed and missing (not found).
.. cmdoption:: -v, --verbose
Show non-important packages, unknown packages and unknown building stages.
.. cmdoption:: --nocolor, -C
Don't colorize output
.. cmdoption:: --hooklib
Use LD_PRELOAD logging approach (default).
.. cmdoption:: --fusefs
Use FUSE logging approach (slow, but reliable).
HOOKLIB VS FUSEFS
=================
+------------------------------------------------+-------------+---------------+
| | Hooklib | FuseFS |
+================================================+=============+===============+
| Who can use this approach? | **Any user**| Only root |
+------------------------------------------------+-------------+---------------+
| Does approach allows to block access to files? | **YES** | **YES** |
+------------------------------------------------+-------------+---------------+
| Is the overhead in performance noticeable? | **NO** | YES [#f1]_ |
+------------------------------------------------+-------------+---------------+
| What events are logged? | Most [#f2]_| **ALL** |
+------------------------------------------------+-------------+---------------+
| When is it recomended to use an approach? | Analysis | Analysis |
| | of | of *runtime* |
| | *buildtime* | dependencies |
| | dependencies| |
+------------------------------------------------+-------------+---------------+
| Are there any pre-requirements | **NO** | FUSE must be |
| for using an approach? | | enabled in |
| | | kernel |
+------------------------------------------------+-------------+---------------+
.. rubric:: Notes
.. [#f1] FUSE filesystems are slower than a normal one. A Program accesses many files
while launching, so this will take more time than usual.
.. [#f2] Loading of Dynamic libraries and direct syscalls will not be logged.
Examples
========
Get the potential dependencies for net-irc/xchat:
-------------------------------------------------
autodep emerge net-irc/xchat
Get the potential dependencies for net-irc/xchat, blocking files from x11-misc/util-macros package:
---------------------------------------------------------------------------------------------------
autodep emerge --block x11-misc/util-macros emerge net-irc/xchat
Get the potential dependencies for net-irc/xchat package, and show accessed files:
----------------------------------------------------------------------------------
autodep --files emerge net-irc/xchat
Get the runtime dependencies of a xchat and show accessed files:
----------------------------------------------------------------
autodep --fusefs --files xchat
|