1Sys::Path(3) User Contributed Perl Documentation Sys::Path(3)
2
3
4
6 Sys::Path - supply autoconf style installation directories
7
9 Paths for basic Unix installation when Perl is in /usr/bin:
10
11 use Sys::Path;
12
13 print Sys::Path->sysconfdir, "\n";
14 # /etc
15 print Sys::Path->datadir, "\n";
16 # /usr/share
17 print Sys::Path->logdir, "\n";
18 # /var/log
19 print Sys::Path->sharedstatedir, "\n";
20 # /var/lib
21
22 Paths for Unix when Perl is in home folder /home/daxim/local/bin:
23
24 print Sys::Path->sysconfdir, "\n";
25 # /home/daxim/local/etc
26 print Sys::Path->datadir, "\n";
27 # /home/daxim/local/share
28 print Sys::Path->logdir, "\n";
29 # /home/daxim/local/log
30 print Sys::Path->sharedstatedir, "\n";
31 # /home/daxim/local/lib
32
33 Paths for MS Windows Strawberry Perl when installed to C:\Strawberry\
34
35 print Sys::Path->sysconfdir, "\n";
36 # C:\Strawberry\etc
37 print Sys::Path->datadir, "\n";
38 # C:\Strawberry\share
39 print Sys::Path->logdir, "\n";
40 # C:\Strawberry\log
41 print Sys::Path->sharedstatedir, "\n";
42 # C:\Strawberry\lib
43
45 The goal is that Sys::Path provides autoconf style system paths.
46
47 The default paths for file locations are based on
48 <http://www.pathname.com/fhs/> (Filesystem Hierarchy Standard) if the
49 Perl was installed in /usr. For all other non-standard Perl
50 installations or systems the default prefix is the prefix of Perl it
51 self. Still those are just defaults and can be changed during "perl
52 Build.PL" prompting. After Sys::Path is configured and installed all
53 programs using it can just read/use the paths.
54
55 In addition Sys::Path includes some functions that are related to
56 modules build or installation. For now there is only Module::Build
57 based Module::Build::SysPath that uses Sys::Path.
58
60 PERL_MM_USE_DEFAULT=1 perl Build.PL \
61 --sp-prefix=/usr/local \
62 --sp-sysconfdir=/usr/local/etc \
63 --sp-localstatedir=/var/local
64
66 This is an experiment and lot of questions and concerns can come out
67 about the paths configuration. Distributions build systems integration
68 and the naming. And as this is early version things may change. For
69 these purposes there is a mailing list
70 <http://lists.meon.sk/mailman/listinfo/sys-path>.
71
72 WHY?
73 The filesystem standard has been designed to be used by Unix
74 distribution developers, package developers, and system implementors.
75 However, it is primarily intended to be a reference and is not a
76 tutorial on how to manage a Unix filesystem or directory hierarchy.
77
78 Sys::Path follows this standard when it is possible. Or when Perl
79 follows. Perl can be installed in many places. Most Linux
80 distributions place Perl in /usr/bin/perl where FHS suggest. In this
81 case the FHS folders are suggested in prompt when doing `"perl
82 Build.PL"`. In other cases for other folders or home-folder Perl
83 distributions Sys::Path will suggest folders under Perl install prefix.
84 (ex. c:\strawerry\ for the ones using Windows).
85
86 PATHS
87 Here is the list of paths. First the default FHS path, then (to
88 compare) a suggested path when Perl is not installed in /usr.
89
90 prefix
91
92 /usr - $Config::Config{'prefix'}
93
94 Is a helper function and should not be used directly.
95
96 localstatedir
97
98 /var - $Config::Config{'prefix'}
99
100 Is a helper function and should not be used directly.
101
102 sysconfdir
103
104 /etc - $prefix/etc
105
106 The /etc hierarchy contains configuration files. See
107 <http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCHOSTSPECIFICSYSTEMCONFIGURATION>.
108
109 datadir
110
111 /usr/share - $prefix/share
112
113 The /usr/share hierarchy is for all read-only architecture independent
114 data files. See
115 <http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA>.
116
117 docdir
118
119 /usr/share/doc - $prefix/share/doc
120
121 See "datadir"
122
123 localedir
124
125 /usr/share/locale - $prefix/share/locale
126
127 See "datadir"
128
129 cachedir
130
131 /var/cache - $localstatedir/cache
132
133 /var/cache is intended for cached data from applications. See
134 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEAPPLICATIONCACHEDATA>.
135
136 logdir
137
138 /var/log - $localstatedir/logdir
139
140 This directory contains miscellaneous log files. Most logs must be
141 written to this directory or an appropriate subdirectory. See
142 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOGLOGFILESANDDIRECTORIES>.
143
144 spooldir
145
146 /var/spool - $localstatedir/spool
147
148 Contains data which is awaiting some kind of later processing. See
149 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLAPPLICATIONSPOOLDATA>.
150
151 rundir
152
153 /var/run - $localstatedir/rundir
154
155 This directory contains system information data describing the system
156 since it was booted. See
157 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARRUNRUNTIMEVARIABLEDATA>.
158
159 lockdir
160
161 /var/lock - $localstatedir/lock
162
163 Lock files folder. See
164 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOCKLOCKFILES>.
165
166 sharedstatedir
167
168 /var/lib - $localstatedir/lib
169
170 The directory for installing modifiable architecture-independent data.
171 See
172 <http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBVARIABLESTATEINFORMATION>.
173
174 srvdir
175
176 /srv - $prefix/srv
177
178 Data for services provided by system. See
179 <http://www.pathname.com/fhs/pub/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM>.
180
181 webdir
182
183 /var/www - $localstatedir/www
184
185 Directory where distribution put static web files.
186
187 HOW IT WORKS
188 The heart of Sys::Path is just:
189
190 use Config;
191 if ($Config::Config{'prefix'} eq '/usr') { ... do stuff ... }
192
193 The idea is that if the Perl was installed to /usr it is FHS type
194 installation and all path defaults are made based on FHS. For the rest
195 of the installations "prefix" and "localstatedir" is set exactly to
196 $Config::Config{'prefix'} which is the prefix of Perl that was used to
197 install. In this case "sysconfdir" is set to "prefix+'etc'". See
198 Sys::Path::SPc for the implementation.
199
201 prefix
202 localstatedir
203 sysconfdir
204 datadir
205 docdir
206 localedir
207 cachedir
208 logdir
209 spooldir
210 rundir
211 lockdir
212 sharedstatedir
213 webdir
214 srvdir
215
217 find_distribution_root(__PACKAGE__)
218 Find the root folder of a modules distribution by going up the folder
219 structure.
220
221 prompt_cfg_file_changed($src_file, $dst_file, $prompt_function)
222 Will prompt if to overwrite $dst_file with $src_file. Returns true for
223 "yes" and false for "no".
224
225 changed_since_install($dest_file, $file)
226 Return if $dest_file changed since install. If optional $file is set
227 then this one is compared against install $dest_file checksum.
228
229 install_checksums(%filenames_with_checksums)
230 Getter and setter for files checksums recording.
231
233 Module::Build::SysPath
234
236 Jozef Kutej, "<jkutej at cpan.org>"
237
239 The following people have contributed to the Sys::Path by committing
240 their code, sending patches, reporting bugs, asking questions,
241 suggesting useful advises, nitpicking, chatting on IRC or commenting on
242 my blog (in no particular order):
243
244 Lars DXXXXXX XXX
245 Emmanuel Rodriguez
246 Salve J. Nilsen
247 Daniel Perrett
248 Jose Luis Perez Diez
249 Petr PisaX
250 Mohammad S Anwar
251
253 Copyright 2009 Jozef Kutej, all rights reserved.
254
255 This program is free software; you can redistribute it and/or modify it
256 under the same terms as Perl itself.
257
258
259
260perl v5.36.0 2022-07-22 Sys::Path(3)