aboutsummaryrefslogtreecommitdiff
blob: b49fb543888b2dd811f2eebd6b90dcd8e4f00e01 (plain)
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 builder is a tool for analysis files accessed during 
building a package. It also can be used for runtime dependencies analysis.

The tool can block an access to files of defined packages.

OPTIONS
=======

.. program:: autodep

.. cmdoption:: --help, -h

   show this help message and exit

.. cmdoption:: -b, --block

   strict mode: deny all access to non-dependency packages

.. cmdoption:: --blockpkgs=PACKAGES

   block an access to files from this packages

.. cmdoption:: -f, --files 

   show accessed files and not founded files
.. cmdoption:: -v, --verbose 

   show non-important packages, show unknown package and unknown stage
.. cmdoption:: --nocolor, -C

   don't output color
.. 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   |
+------------------------------------------------+-------------+---------------+
| Is approach allows blocking an access to files?|  **YES**    | **YES**       |
+------------------------------------------------+-------------+---------------+
| Is overhead in performance big?                |  **NO**     | YES [#f1]_    |
+------------------------------------------------+-------------+---------------+
| What events are logged?                        |  Most [#f2]_| **ALL**       |
+------------------------------------------------+-------------+---------------+
| When is it recomended to use an approach?      | For analysis| For analysis  |
|                                                | of          | of *runtime*  |
|                                                | *buildtime* | dependencies  |
|                                                | dependencies|               |
+------------------------------------------------+-------------+---------------+
| Is any pre-requirements for using an approach? | **NO**      | FUSE must be  |
|                                                |             | enabled in    |
|                                                |             | kernel        |
+------------------------------------------------+-------------+---------------+

.. rubric:: Notes

.. [#f1] Fuse file system is slower than normal one. Program reads 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 of a xchat package:
-----------------------------------------------------
autodep emerge xchat

Get the potential dependencies of a xchat package, blocking x11-misc/util-macros package:
--------------------------------------------------------------------------------------------
autodep emerge --block x11-misc/util-macros emerge xchat

Get the potential dependencies of a xchat package, and show files accessed:
------------------------------------------------------------------------------
autodep --files emerge xchat

Get the runtime dependencies of a xchat and show files accessed:
-------------------------------------------------------------------
autodep --fusefs --files xchat