lsync.8 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433
  1. .rn '' }`
  2. ''' $RCSfile$$Revision$$Date$
  3. '''
  4. ''' $Log$
  5. '''
  6. .de Sh
  7. .br
  8. .if t .Sp
  9. .ne 5
  10. .PP
  11. \fB\\$1\fR
  12. .PP
  13. ..
  14. .de Sp
  15. .if t .sp .5v
  16. .if n .sp
  17. ..
  18. .de Ip
  19. .br
  20. .ie \\n(.$>=3 .ne \\$3
  21. .el .ne 3
  22. .IP "\\$1" \\$2
  23. ..
  24. .de Vb
  25. .ft CW
  26. .nf
  27. .ne \\$1
  28. ..
  29. .de Ve
  30. .ft R
  31. .fi
  32. ..
  33. '''
  34. '''
  35. ''' Set up \*(-- to give an unbreakable dash;
  36. ''' string Tr holds user defined translation string.
  37. ''' Bell System Logo is used as a dummy character.
  38. '''
  39. .tr \(*W-|\(bv\*(Tr
  40. .ie n \{\
  41. .ds -- \(*W-
  42. .ds PI pi
  43. .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  44. .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  45. .ds L" ""
  46. .ds R" ""
  47. ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
  48. ''' \*(L" and \*(R", except that they are used on ".xx" lines,
  49. ''' such as .IP and .SH, which do another additional levels of
  50. ''' double-quote interpretation
  51. .ds M" """
  52. .ds S" """
  53. .ds N" """""
  54. .ds T" """""
  55. .ds L' '
  56. .ds R' '
  57. .ds M' '
  58. .ds S' '
  59. .ds N' '
  60. .ds T' '
  61. 'br\}
  62. .el\{\
  63. .ds -- \(em\|
  64. .tr \*(Tr
  65. .ds L" ``
  66. .ds R" ''
  67. .ds M" ``
  68. .ds S" ''
  69. .ds N" ``
  70. .ds T" ''
  71. .ds L' `
  72. .ds R' '
  73. .ds M' `
  74. .ds S' '
  75. .ds N' `
  76. .ds T' '
  77. .ds PI \(*p
  78. 'br\}
  79. .\" If the F register is turned on, we'll generate
  80. .\" index entries out stderr for the following things:
  81. .\" TH Title
  82. .\" SH Header
  83. .\" Sh Subsection
  84. .\" Ip Item
  85. .\" X<> Xref (embedded
  86. .\" Of course, you have to process the output yourself
  87. .\" in some meaninful fashion.
  88. .if \nF \{
  89. .de IX
  90. .tm Index:\\$1\t\\n%\t"\\$2"
  91. ..
  92. .nr % 0
  93. .rr F
  94. .\}
  95. .TH LSYNC 1 "perl 5.005, patch 03" "18/Sep/2001" "User Contributed Perl Documentation"
  96. .UC
  97. .if n .hy 0
  98. .if n .na
  99. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  100. .de CQ \" put $1 in typewriter font
  101. .ft CW
  102. 'if n "\c
  103. 'if t \\&\\$1\c
  104. 'if n \\&\\$1\c
  105. 'if n \&"
  106. \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  107. '.ft R
  108. ..
  109. .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
  110. . \" AM - accent mark definitions
  111. .bd B 3
  112. . \" fudge factors for nroff and troff
  113. .if n \{\
  114. . ds #H 0
  115. . ds #V .8m
  116. . ds #F .3m
  117. . ds #[ \f1
  118. . ds #] \fP
  119. .\}
  120. .if t \{\
  121. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  122. . ds #V .6m
  123. . ds #F 0
  124. . ds #[ \&
  125. . ds #] \&
  126. .\}
  127. . \" simple accents for nroff and troff
  128. .if n \{\
  129. . ds ' \&
  130. . ds ` \&
  131. . ds ^ \&
  132. . ds , \&
  133. . ds ~ ~
  134. . ds ? ?
  135. . ds ! !
  136. . ds /
  137. . ds q
  138. .\}
  139. .if t \{\
  140. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  141. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  142. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  143. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  144. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  145. . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
  146. . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
  147. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  148. . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
  149. .\}
  150. . \" troff and (daisy-wheel) nroff accents
  151. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  152. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  153. .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
  154. .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
  155. .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
  156. .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
  157. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  158. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  159. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  160. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  161. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  162. .ds ae a\h'-(\w'a'u*4/10)'e
  163. .ds Ae A\h'-(\w'A'u*4/10)'E
  164. .ds oe o\h'-(\w'o'u*4/10)'e
  165. .ds Oe O\h'-(\w'O'u*4/10)'E
  166. . \" corrections for vroff
  167. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  168. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  169. . \" for low resolution devices (crt and lpr)
  170. .if \n(.H>23 .if \n(.V>19 \
  171. \{\
  172. . ds : e
  173. . ds 8 ss
  174. . ds v \h'-1'\o'\(aa\(ga'
  175. . ds _ \h'-1'^
  176. . ds . \h'-1'.
  177. . ds 3 3
  178. . ds o a
  179. . ds d- d\h'-1'\(ga
  180. . ds D- D\h'-1'\(hy
  181. . ds th \o'bp'
  182. . ds Th \o'LP'
  183. . ds ae ae
  184. . ds Ae AE
  185. . ds oe oe
  186. . ds Oe OE
  187. .\}
  188. .rm #[ #] #H #V #F C
  189. .SH "NAME"
  190. \fBlsync\fR \- Access Layer Synchronization Tool
  191. .SH "SYNOPSIS"
  192. \fBlsync\fR
  193. [\fB--version\fR|\fB\-v\fR]
  194. [\fB--help\fR|\fB\-h\fR]
  195. [\fB--init\fR|\fB\-i\fR]
  196. [\fB--nop\fR|\fB\-n\fR]
  197. [\fB--quiet\fR|\fB\-q\fR]
  198. [\fB--trace\fR|\fB\-t\fR]
  199. [\fB--local\fR|\fB\-l\fR]
  200. [\fB--uninstall\fR|\fB\-u\fR]
  201. [\fB--root=\fR\fIroot\fR]
  202. [\fB--pkgdir=\fR\fIpkgdir\fR]
  203. [\fB--subdirs=\fR\fIsubdir\fR[,\fIsubdir\fR,...]]
  204. .SH "DESCRIPTION"
  205. This program activates software packages which were locally
  206. installed in a sub-directory of a package hierarchy (located under
  207. \fIroot\fR/\fIpkgdir\fR/) by managing symbolic links in an access layer
  208. (located under \fIroot\fR/) corresponding to package installation
  209. files (found in \fIroot\fR/\fIpkgdir\fR/pkgname/subdir/) which need to be
  210. collected in global directories (located under \fIroot\fR/subdir/).
  211. .PP
  212. The purpose of this is that individual packages can be installed and
  213. deinstalled seperately without interfering with other packages while
  214. all packages as a whole still can be treated like a single package
  215. (installed into the access layer).
  216. .PP
  217. The
  218. actual creation of symbolic links is as following ("foo\*(R" indicating an
  219. arbitrary file; \*(L"bar\*(R" indicating an arbitrary package name):
  220. .Ip "\fIroot\fR\fB/bin/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/bin/\fRfoo" 4
  221. This activates the user executeable
  222. \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/bin\fR/foo as \fIroot\fR\fB/bin/\fRfoo. It can
  223. be found by the shell by placing \fIroot\fR\fB/bin\fR into the environment
  224. variable \f(CWPATH\fR (\fB\s-1PATH\s0=\*(R"..:\fR\fIroot\fR\fB/bin:..\*(R"\fR).
  225. .Ip "\fIroot\fR\fB/sbin/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/sbin/\fRfoo" 4
  226. This activates the system executeable
  227. \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/sbin\fR/foo as \fIroot\fR\fB/sbin/\fRfoo. It can
  228. be found by the shell by placing \fIroot\fR\fB/sbin\fR into the environment
  229. variable \f(CWPATH\fR (\fB\s-1PATH\s0=\*(R"..:\fR\fIroot\fR\fB/sbin:..\*(R"\fR).
  230. .Ip "\fIroot\fR\fB/man/man\fR\fIN\fR\fB/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/man/man\fR\fIN\fR\fB/\fRfoo" 4
  231. This activates the Unix manual page
  232. \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/man/man\fR\fIN\fR\fB/\fRfoo as
  233. \fIroot\fR\fB/man/man\fR\fIN\fR\fB/\fRfoo. It can be found by the \fIman\fR\|(1) tool
  234. by placing \fIroot\fR\fB/man\fR into the environment variable \f(CWMANPATH\fR
  235. (\fB\s-1MANPATH\s0=\*(R"..:\fR\fIroot\fR\fB/man:..\*(R"\fR). Keep in mind that \fIlsync\fR\|(1)
  236. activates any files found in the \fBman/man\fIN\fR\fR sub-directory of the
  237. package, but the \fIman\fR\|(1) tool usually requires the filename scheme
  238. foo\fB.\fR\fIN\fR before it can find the file.
  239. .Ip "\fIroot\fR\fB/info/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/info/\fRfoo" 4
  240. This activates the \s-1GNU\s0 info page \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/info/\fRfoo
  241. as \fIroot\fR\fB/info/\fRfoo. It can be found by the \fIinfo\fR\|(1) and \fIpinfo\fR\|(1)
  242. tools by placing \fIroot\fR\fB/info\fR into the environment variable
  243. \f(CWINFOPATH\fR (\fB\s-1INFOPATH\s0=\*(R"..:\fR\fIroot\fR\fB/info:..\*(R"\fR). Keep in mind that
  244. \fIlsync\fR\|(1) activates any files found in the \fBinfo/\fR sub-directory of the
  245. package, but the \fIinfo\fR\|(1) and \fIpinfo\fR\|(1) tools usually require the filename
  246. scheme foo\fB.info\fR before it can find the file.
  247. .Ip "\fIroot\fR\fB/include/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/include/\fRfoo" 4
  248. This activates the C header \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/include\fR/foo
  249. as \fIroot\fR\fB/include/\fRfoo. It can be found by the C/\*(C+ compilers
  250. by adding \fIroot\fR\fB/include\fR to their include search path (\fBcc ..
  251. \-I\fR\fIroot\fR\fB/include\fR \fB...\fR). Keep in mind that \fIlsync\fR\|(1) activates any
  252. files found in the \fBinclude/\fR sub-directory of the package, but the
  253. C/\*(C+ compiler usually by convention use the filename scheme foo\fB.h\fR.
  254. .Ip "\fIroot\fR\fB/lib/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/lib/\fRfoo" 4
  255. This activates the C library \fIroot\fR\fB/\fR\fIpkgdir\fR\fB/\fRbar\fB/lib\fR/foo
  256. as \fIroot\fR\fB/lib/\fRfoo. It can be found by the C/\*(C+ compilers (and
  257. the linker they use) by adding \fIroot\fR\fB/lib\fR to their library search
  258. path (\fBcc .. \-L\fR\fIroot\fR\fB/lib\fR \fB...\fR). It can be found by the Unix
  259. Dynamic Loader by adding \fIroot\fR\fB/lib\fR to the environment variable
  260. \f(CWLD_LIBRARY_PATH\fR (\fB\s-1LD_LIBRARY_PATH\s0=\*(R"..:\fR\fIroot\fR\fB/lib:..\*(R"\fR).
  261. Keep in mind that \fIlsync\fR\|(1) activates any files found in the \fBlib/\fR
  262. sub-directory of the package, but the C/\*(C+ compiler usually require the
  263. filename scheme \fBlib\fRfoo\fB.a\fR and the Unix Dynamic Loader the filename
  264. scheme \fBlib\fRfoo\fB.so\fR before they actually can use the file.
  265. .PP
  266. It is obvious that more sub-directories in a package installation
  267. might exist -- for instance \fBshare/\fR, \fBvar/\fR, \fBlibexec/\fR, etc. But
  268. \fIlsync\fR\|(1) intentionally does not link files in those directories into
  269. corresponding directories of the access layer, because those files do
  270. not require that they are located in a global area in order to be used.
  271. So \fIlsync\fR\|(1) only creates the access layer for files where a common area
  272. is required for (easy) use.
  273. .SH "SPECIAL FEATURES"
  274. There are two special features supported by \fIlsync\fR\|(1):
  275. .Ip "\fBRun-Command Files\fR" 4
  276. \fIlsync\fR\|(1) on startup implicitly reads command line options from
  277. \&\f(CW.lsyncrc\fR files. They are searched in all parent directories and in
  278. the callers home directory. Their contents is prepended to the list of
  279. given command line options.
  280. .Ip "\fBMultiple Package Versions\fR" 4
  281. \fIlsync\fR\|(1) skips all directories under \fIroot\fR/\fIpkgdir\fR/ which contain
  282. the pattern \*(L"\-[0-9]\*(R" in their directory name. On the other hand,
  283. \fIlsync\fR\|(1) follows also symbolic links under \fIroot\fR/\fIpkgdir\fR/.
  284. This can be used for installing multiple versions of a package and
  285. switching between them. For instance, if version 1.0 of package
  286. \*(L"foo\*(R" is installed into directory \fIroot\fR/\fIpkgdir\fR/foo-1.0,
  287. version 1.1 into \fIroot\fR/\fIpkgdir\fR/foo-1.1 and version 1.2 into
  288. \fIroot\fR/\fIpkgdir\fR/foo-1.2, \fIlsync\fR\|(1) does skip all three. To enable
  289. version 1.1 one just creates a symbolic link \fIroot\fR/\fIpkgdir\fR/foo
  290. pointing to foo-1.1. Then \fIlsync\fR\|(1) picks up the files in
  291. \fIroot\fR/\fIpkgdir\fR/foo-1.1. If you want to temporarily upgrade to
  292. foo-1.2, all you have to do is to change the symlink pointing from
  293. foo-1.1 to foo-1.2.
  294. .Ip "\fBTemporarily Deactivated Package\fR" 4
  295. One can deactivate a package \*(L"foo\*(R" by going to \fIroot\fR/\fIpkgdir\fR/foo/
  296. and running \*(L"lsync --local --uninstall\*(R", of course. Alternatively
  297. one can set the sticky bit on the directory \fIroot\fR/\fIpkgdir\fR/foo.
  298. Then \fIlsync\fR\|(1) also skips the package. Alternatively, assume
  299. package \*(L"foo\*(R" as a whole should not be deactivated, but its
  300. \fIroot\fR/\fIpkgdir\fR/foo/lib directory (usually because this directory
  301. unfortunately contains non-library files), one just sets the sticky bit
  302. on \fIroot\fR/\fIpkgdir\fR/foo/lib.
  303. .SH "OPTIONS"
  304. .Ip "\fB--version\fR, \fB\-v\fR" 4
  305. Display program version information only.
  306. .Ip "\fB--help\fR, \fB\-h\fR" 4
  307. Display program usage information only.
  308. .Ip "\fB--init\fR, \fB\-i\fR" 4
  309. Create an initial access layer hierarchy under \fIroot\fR.
  310. .Ip "\fB--nop\fR, \fB\-n\fR" 4
  311. No Operation -- causes \fIlsync\fR\|(1) to not perform any filesystem
  312. operations. In conjunction with \fB--trace\fR you can at least see what
  313. would be executed.
  314. .Ip "\fB--quiet\fR, \fB\-q\fR" 4
  315. Forces \fIlsync\fR\|(1) to perform the operations quietly, i.e., without any
  316. verbose messages.
  317. .Ip "\fB--trace\fR, \fB\-t\fR" 4
  318. Forces \fIlsync\fR\|(1) to show what filesystem operations are performed.
  319. .Ip "\fB--local\fR, \fB\-l\fR" 4
  320. This restricts the operations to a local package area. This option can
  321. only be used if you are physically staying below a package sub-directory
  322. under \fIroot\fR/\fIpkgdir\fR/. For instance, when you are staying in
  323. \fIroot\fR/\fIpkgdir\fR/bar or \fIroot\fR/\fIpkgdir\fR/bar/bin and use \fB--local\fR,
  324. all operations are restricted to the package \*(L"bar\*(R".
  325. .Ip "\fB--uninstall\fR, \fB\-u\fR" 4
  326. This performs only package uninstallation operations, i.e., only
  327. symbolic links are removed. This can be used to completely empty the
  328. access layer. Additionally it is very useful in combination with
  329. \fB--local\fR in order to uninstall a particular package without having to
  330. remove its files.
  331. .Ip "\fB--root=\fR\fIroot\fR" 4
  332. Sets the root directory where the access layer and package subdirectory
  333. is located. The default can be determined by running \f(CWlsync --help\fR
  334. (see section \*(L"Current configuration").
  335. .Ip "\fB--pkgdir=\fR\fIpkgdir\fR" 4
  336. Sets the sub-directory under the root directory where packages are
  337. located. The default can be determined by running \f(CWlsync --help\fR (see
  338. section \*(L"Current configuration").
  339. .Ip "\fB--subdirs=\fR\fIsubdirs\fR[,\fIsubdir\fR,...]" 4
  340. Sets one or more sub-directories of the access layer on which \fIlsync\fR\|(1)
  341. should act. The default can be determined by running \f(CWlsync --help\fR
  342. (see section \*(L"Current configuration").
  343. .SH "RESULTS"
  344. This program uses the following return codes on exit: 0 (operation
  345. successful), 1 (system error), 2 (command line error) and 3 (other user
  346. error).
  347. .SH "HISTORY"
  348. The idea of filesystem access layers consisting of symbolic links
  349. pointing to actual package installation areas is a rather old one. It
  350. dates back to the early days of Unix and was implemented many times over
  351. the last decades. One of many implementation was \fBGenOPT\fR, written by
  352. Ralf S. Engelschall for sd&m GmbH & Co KG, Munich in 1992. The name
  353. indicates the programs purpose: to generate symbolic links in an access
  354. layer which was located under \f(CW/opt\fR. \fBGenOPT\fR was very flexible, but
  355. hence also very complex. Because of lack of documentation it was never
  356. released and so only used at sd&m and on all machines which were under
  357. control of Ralf S. Engelschall.
  358. .PP
  359. For Cable & Wireless Deutschland GmbH, Munich, the old \fBGenOPT\fR
  360. principle was again needed to manage the \f(CW/cw/local\fR area on their
  361. servers. For this in November 2000 the functionality of \fBGenOPT\fR was
  362. revised, heavily stripped down and finally implemented from scratch. The
  363. result is the current \fBLSync\fR.
  364. .SH "AUTHOR"
  365. .PP
  366. .Vb 3
  367. \& Ralf S. Engelschall
  368. \& rse@engelschall.com
  369. \& www.engelschall.com
  370. .Ve
  371. .rn }` ''
  372. .IX Title "LSYNC 1"
  373. .IX Name "B<lsync> - Access Layer Synchronization Tool"
  374. .IX Header "NAME"
  375. .IX Header "SYNOPSIS"
  376. .IX Header "DESCRIPTION"
  377. .IX Item "\fIroot\fR\fB/bin/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/bin/\fRfoo"
  378. .IX Item "\fIroot\fR\fB/sbin/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/sbin/\fRfoo"
  379. .IX Item "\fIroot\fR\fB/man/man\fR\fIN\fR\fB/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/man/man\fR\fIN\fR\fB/\fRfoo"
  380. .IX Item "\fIroot\fR\fB/info/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/info/\fRfoo"
  381. .IX Item "\fIroot\fR\fB/include/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/include/\fRfoo"
  382. .IX Item "\fIroot\fR\fB/lib/\fRfoo \-> \fB../\fR\fIpkgdir\fR\fB/\fRbar\fB/lib/\fRfoo"
  383. .IX Header "SPECIAL FEATURES"
  384. .IX Item "\fBRun-Command Files\fR"
  385. .IX Item "\fBMultiple Package Versions\fR"
  386. .IX Item "\fBTemporarily Deactivated Package\fR"
  387. .IX Header "OPTIONS"
  388. .IX Item "\fB--version\fR, \fB\-v\fR"
  389. .IX Item "\fB--help\fR, \fB\-h\fR"
  390. .IX Item "\fB--init\fR, \fB\-i\fR"
  391. .IX Item "\fB--nop\fR, \fB\-n\fR"
  392. .IX Item "\fB--quiet\fR, \fB\-q\fR"
  393. .IX Item "\fB--trace\fR, \fB\-t\fR"
  394. .IX Item "\fB--local\fR, \fB\-l\fR"
  395. .IX Item "\fB--uninstall\fR, \fB\-u\fR"
  396. .IX Item "\fB--root=\fR\fIroot\fR"
  397. .IX Item "\fB--pkgdir=\fR\fIpkgdir\fR"
  398. .IX Item "\fB--subdirs=\fR\fIsubdirs\fR[,\fIsubdir\fR,...]"
  399. .IX Header "RESULTS"
  400. .IX Header "HISTORY"
  401. .IX Header "AUTHOR"