@@ -16,20 +16,49 @@ Generate the configure script when it is not available (cloned git repo):
16
16
To get the required dependencies on Debian or Ubuntu, run:
17
17
18
18
$ sudo apt-get install libncursesw5-dev libcairo2-dev libpango1.0-dev \
19
- build-essential libtokyocabinet -dev
19
+ build-essential libtkrzw -dev
20
20
21
+ On Debian 11 (bullseye), you need to have the following line in your
22
+ /etc/apt/sources.list file:
21
23
22
- On RHEL or CentOS systems, you need to do:
24
+ deb http://deb.debian.org/debian bullseye-backports main
25
+
26
+ Then you would do:
27
+
28
+ $ sudo apt update
29
+
30
+ $ sudo apt-get install libncursesw5-dev libcairo2-dev libpango1.0-dev \
31
+ build-essential libtkrzw-dev tkrzw-doc tkrzw-utils
32
+
33
+
34
+ On older RHEL or CentOS systems, you need to do:
23
35
24
36
$ sudo yum install pango-devel cairo-devel tokyocabinet-devel
25
37
26
38
27
- Duc comes with various user interfaces and a number of backends for database
28
- access and graph drawing. You can choose which options should be used with the
29
- ./configure script to build Duc to fit best in your environment.
39
+ RHEL 8 & 9 / Rockly Linux 8 & 9 / Alma Linux 8 & 9
40
+
41
+ Install epel-release & update
42
+
43
+ $ sudo yum install epel-release
44
+ $ sudo yum update
45
+
46
+ Install tkrzw and other packages:
47
+
48
+ $ sudo yum install tkrzw tkrzw-devel tkrzw-doc tkrzw-libs pango-devel cairo-devel tokyocabinet-devel
49
+
50
+
51
+ Configuration Options
52
+ ---------------------
53
+
54
+ Duc comes with support for various user interfaces and a number of
55
+ backends for database access and graph drawing. You can choose which
56
+ options should be used with the ./configure script to build Duc to fit
57
+ best in your environment.
30
58
31
59
This document describes the various options which can be passed to the
32
- ./configure script, and the impact these options have on Duc functionality.
60
+ ./configure script, and the impact these options have on Duc
61
+ functionality. But the ./configure --help is the definitive source.
33
62
34
63
35
64
User interfaces
@@ -38,7 +67,7 @@ User interfaces
38
67
Duc comes with the following user interfaces:
39
68
40
69
- Command line interface (duc ls): This user interface has no external
41
- dependencies and is always enabled
70
+ dependencies and is always enabled.
42
71
43
72
- Ncurses console interface (duc ui): an interactive console interface, which
44
73
depends on ncurses or ncursesw. This user interface is enabled by default. If
@@ -59,51 +88,64 @@ Duc comes with the following user interfaces:
59
88
--enable-opengl --disable-x11
60
89
61
90
62
- Database backend
63
- ----------------
91
+ Database backends
92
+ -----------------
64
93
65
94
Duc supports various key-value database backends:
66
95
- Tokyo Cabinet: tokyocabinet
67
96
- LevelDB: leveldb
68
97
- Sqlite3: sqlite3
69
98
- Lightning Memory-Mapped Database: lmdb
70
99
- Kyoto Cabinet: kyotocabinet
100
+ - Tkrzw: tkrzw (default as of v1.5.0)
71
101
72
- Duc uses Tokyo Cabinet by default: the performance is acceptable and generates
73
- in the smallest database size.
102
+ Duc now uses Tkrzw by default: the performance is acceptable and it
103
+ handles extremely large databases of volumes with terabytes of storage
104
+ and millions of files.
74
105
75
106
--with-db-backend=ARG
76
107
77
- If your system supports none of the above, contact the author to see if we can
78
- add your favourite backend.
108
+ If your system supports none of the above, contact the authors to see
109
+ if we can add your favourite backend.
110
+
111
+ Please note: Not all database formats can be shared between machines
112
+ with different architectures. Notably, Tokyo Cabinet is built with
113
+ non-standard options which break compatibility with other linux
114
+ distributions, even on the same architecture [1]. If you are planning
115
+ to share databases between different platforms (index machine A,
116
+ display on machine B) we recommend using the sqlite3 backend.
79
117
80
- Please note: Not all database formats can be shared between machines with
81
- different architectures. Notably, Tokyo Cabinet is built with non-standard
82
- options which break compatibility with other linux distributions, even on the
83
- same architecture [1]. If you are planning to share databases between different
84
- platforms (index machine A, display on machine B) we recommend using the
85
- sqlite3 backend.
118
+ Note, Tokyo Cabiner, Kyoto Cabinet, LevelDB and LMDB are all being
119
+ deprecated from future versions because the lack of development and
120
+ support for these libraries, especially for super large volumes to be
121
+ indexed.
86
122
87
123
1. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=667979
88
124
89
- When picking a backend you probably need to choose between speed, size and
90
- robustness. Some measurements on my system of a 372G directory with 1.6M files:
91
-
92
- ----------------------------------
93
- Database Run time Db size
94
- (s) (kB)
95
- ----------------------------------
96
- tokyocabinet [*] 8.4 19.2
97
- leveldb 7.1 31.5
98
- sqlite3 13.5 71.1
99
- lmdb 5.9 78.7
100
- kyotocabinet 8.3 26.7
101
- ----------------------------------
102
-
103
- [*] Tokyo Cabinet currenty is the default used by Duc because of the good
104
- compression and reasonable performance. A problem is that Tokyo Cabinet is not
105
- very stable and can create corrupt databases when interrupting the indexing. If
106
- this is a problem for you, choose a different db backend.
125
+ When picking a backend you probably need to choose between speed, size
126
+ and robustness. Some (out of date) measurements on a system with a
127
+ 372G directory containing 1.6M files:
128
+
129
+ ----------------------------------
130
+ Database Run time Db size
131
+ (s) (kB)
132
+ ----------------------------------
133
+ tokyocabinet 8.4 19.2
134
+ leveldb 7.1 31.5
135
+ sqlite3 13.5 71.1
136
+ lmdb 5.9 78.7
137
+ kyotocabinet 8.3 26.7
138
+ tkrzw [*] ??? ???
139
+ ----------------------------------
140
+
141
+
142
+ [*] Tkrzw currently is the default used by Duc because of it's current
143
+ development, good compression and reasonable performance.
144
+
145
+ Tokyo Cabinet is not very stable and can create corrupt databases when
146
+ interrupting the indexing. If this is a problem for you, choose a
147
+ different db backend.
148
+
107
149
108
150
Graphics
109
151
--------
@@ -137,7 +179,8 @@ embedded systems not all graphics libraries are available.
137
179
Testing
138
180
-------
139
181
140
- Duc comes with a rudimentary test harness which can be run with
182
+ Duc comes with a rudimentary test harness which can be run at the top
183
+ level directory with:
141
184
142
185
./test.sh
143
186
@@ -148,5 +191,6 @@ If you have valgrind and you want to run the tests using it do:
148
191
It will complain if you try this and valgrind isn't installed. The
149
192
test harness still needs work and more tests, but should hopefully
150
193
help keep us from re-introducing bugs as they are fixed and checked
151
- for.
194
+ for. We would love to see more tests and a better harness, patches
195
+ welcome!
152
196
0 commit comments