smartd fails to send an email

  • Done
  • quality assurance status badge
Details
3 participants
  • 45mg
  • Hilton Chain
  • Tomas Volf
Owner
unassigned
Submitted by
Tomas Volf
Severity
normal

Debbugs page

Tomas Volf wrote 2 months ago
(address . bug-guix@gnu.org)
87r056rxbe.fsf@wolfsden.cz
Hi,

I have tried to write a service type for smartd from smartmontools,
however the bundled script fails.

When the test (-m root -M test) is executed, some programs seem to be
missing in the $PATH:

Toggle snippet (6 lines)
Jan 14 01:34:19 localhost smartd[3138]: Executing test of <mail> to root ...
Jan 14 01:34:19 localhost smartd[3138]: Test of <mail> to root produced unexpected output (118 bytes) to STDOUT/STDERR:
Jan 14 01:34:19 localhost smartd[3138]: /gnu/store/ks6lnp8hssm9zkka47ysa4qp9xd9f8bv-smartmontools-7.4/etc/smartd_warning.sh: line 132: sed: command not found
Jan 14 01:34:19 localhost smartd[3138]: Test of <mail> to root: failed (32-bit/8-bit exit status: 32512/127)

At the start of the script I see:

Toggle snippet (3 lines)
export PATH="/usr/local/bin:/usr/bin:/bin"

That does not look correct. I am not sure if any wrapping is necessary.

Have a nice day,
Tomas

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
45mg wrote 2 months ago
87wmeyc67s.fsf@gmail.com
Hi Tomas,

Tomas Volf <~@wolfsden.cz> writes:

Toggle quote (15 lines)
> Hi,
>
> I have tried to write a service type for smartd from smartmontools,
> however the bundled script fails.
>
> When the test (-m root -M test) is executed, some programs seem to be
> missing in the $PATH:
>
> --8<---------------cut here---------------start------------->8---
> Jan 14 01:34:19 localhost smartd[3138]: Executing test of <mail> to root ...
> Jan 14 01:34:19 localhost smartd[3138]: Test of <mail> to root produced unexpected output (118 bytes) to STDOUT/STDERR:
> Jan 14 01:34:19 localhost smartd[3138]: /gnu/store/ks6lnp8hssm9zkka47ysa4qp9xd9f8bv-smartmontools-7.4/etc/smartd_warning.sh: line 132: sed: command not found
> Jan 14 01:34:19 localhost smartd[3138]: Test of <mail> to root: failed (32-bit/8-bit exit status: 32512/127)
> --8<---------------cut here---------------end--------------->8---

I've seen other package definitions deal with this problem by using
`substitute*` to replace executables specified in scripts, etc. (like
sed here) with the corresponding store paths. See 'light' in (gnu
packages linux) for an example.
Tomas Volf wrote 2 months ago
[PATCH] gnu: smartmontools: Fix PATH in smartd_warning.sh.
(name . Tomas Volf)(address . ~@wolfsden.cz)
d7320ddeb1939ce0eeeea10f7267883692c269e7.1736898019.git.~@wolfsden.cz
The script started with reset of the $PATH to a value not suitable to Guix.
In addition, the script requires coreutils and sed, so add those into the
$PATH.

* gnu/packages/admin.scm (smartmontools)[arguments]<#:phases>: Add 'fix-path.

Change-Id: Ide97f572e6f369fe24337f945474dc7a65584eda
---
gnu/packages/admin.scm | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

Toggle diff (28 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 7f50d5f4e9..098e21ff8a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2921,8 +2921,19 @@ (define-public smartmontools
"0gcrzcb4g7f994n6nws26g6x15yjija1gyzd359sjv7r3xj1z9p9"))))
(build-system gnu-build-system)
(arguments
- (list #:make-flags
- #~(list "BUILD_INFO=\"(Guix)\"")))
+ (list
+ #:make-flags
+ #~(list "BUILD_INFO=\"(Guix)\"")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'fix-path
+ (lambda _
+ (substitute* (string-append #$output "/etc/smartd_warning.sh")
+ (("export PATH=.*$" all)
+ (string-append "PATH="
+ #$(file-append sed "/bin") ":"
+ #$(file-append coreutils "/bin") ":"
+ "$PATH\n"))))))))
(inputs (list libcap-ng))
(home-page "https://www.smartmontools.org/")
(synopsis "S.M.A.R.T. harddisk control and monitoring tools")
--
2.47.1
Tomas Volf wrote 2 months ago
control message for bug #75550
(address . control@debbugs.gnu.org)
338703f3736c814d1d204e9b74acbdc9@wolfsden.cz
reassign 75550 guix-patches
quit
Hilton Chain wrote 2 months ago
Re: bug#75550: [PATCH] gnu: smartmontools: Fix PATH in smartd_warning.sh.
(name . Tomas Volf)(address . ~@wolfsden.cz)
87ed14ssck.wl-hako@ultrarare.space
Hi Tomas,

On Wed, 15 Jan 2025 07:40:19 +0800,
Tomas Volf wrote:
Toggle quote (36 lines)
>
> The script started with reset of the $PATH to a value not suitable to Guix.
> In addition, the script requires coreutils and sed, so add those into the
> $PATH.
>
> * gnu/packages/admin.scm (smartmontools)[arguments]<#:phases>: Add 'fix-path.
>
> Change-Id: Ide97f572e6f369fe24337f945474dc7a65584eda
> ---
> gnu/packages/admin.scm | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index 7f50d5f4e9..098e21ff8a 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -2921,8 +2921,19 @@ (define-public smartmontools
> "0gcrzcb4g7f994n6nws26g6x15yjija1gyzd359sjv7r3xj1z9p9"))))
> (build-system gnu-build-system)
> (arguments
> - (list #:make-flags
> - #~(list "BUILD_INFO=\"(Guix)\"")))
> + (list
> + #:make-flags
> + #~(list "BUILD_INFO=\"(Guix)\"")
> + #:phases
> + #~(modify-phases %standard-phases
> + (add-after 'install 'fix-path
> + (lambda _
> + (substitute* (string-append #$output "/etc/smartd_warning.sh")
> + (("export PATH=.*$" all)
> + (string-append "PATH="
> + #$(file-append sed "/bin") ":"
> + #$(file-append coreutils "/bin") ":"
> + "$PATH\n"))))))))

Please add sed and coreutils-minimal to inputs and use search-input-file or
this-package-input instead.

For smartmontools the proper way is to set --with-scriptpath='...' configure
flag, which is documented in its INSTALL file. (It can be disabled with a 'no'
value as well.)

Toggle quote (6 lines)
> (inputs (list libcap-ng))
> (home-page "https://www.smartmontools.org/")
> (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
> --
> 2.47.1

Thanks
Tomas Volf wrote 2 months ago
(name . Hilton Chain)(address . hako@ultrarare.space)
877c6kjkib.fsf@wolfsden.cz
Thank you for the review, responses below.

Hilton Chain <hako@ultrarare.space> writes:

Toggle quote (43 lines)
> Hi Tomas,
>
> On Wed, 15 Jan 2025 07:40:19 +0800,
> Tomas Volf wrote:
>>
>> The script started with reset of the $PATH to a value not suitable to Guix.
>> In addition, the script requires coreutils and sed, so add those into the
>> $PATH.
>>
>> * gnu/packages/admin.scm (smartmontools)[arguments]<#:phases>: Add 'fix-path.
>>
>> Change-Id: Ide97f572e6f369fe24337f945474dc7a65584eda
>> ---
>> gnu/packages/admin.scm | 15 +++++++++++++--
>> 1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
>> index 7f50d5f4e9..098e21ff8a 100644
>> --- a/gnu/packages/admin.scm
>> +++ b/gnu/packages/admin.scm
>> @@ -2921,8 +2921,19 @@ (define-public smartmontools
>> "0gcrzcb4g7f994n6nws26g6x15yjija1gyzd359sjv7r3xj1z9p9"))))
>> (build-system gnu-build-system)
>> (arguments
>> - (list #:make-flags
>> - #~(list "BUILD_INFO=\"(Guix)\"")))
>> + (list
>> + #:make-flags
>> + #~(list "BUILD_INFO=\"(Guix)\"")
>> + #:phases
>> + #~(modify-phases %standard-phases
>> + (add-after 'install 'fix-path
>> + (lambda _
>> + (substitute* (string-append #$output "/etc/smartd_warning.sh")
>> + (("export PATH=.*$" all)
>> + (string-append "PATH="
>> + #$(file-append sed "/bin") ":"
>> + #$(file-append coreutils "/bin") ":"
>> + "$PATH\n"))))))))
>
> Please add sed and coreutils-minimal to inputs and use search-input-file or
> this-package-input instead.

Why? I will of course do so, but would first like to understand why.
The current way seems to work and keeps all the references in just one
place. If I switch to the suggested approach, both `sed' and
`coreutils' will be referenced in two places (once in the `inputs' and
once here) and those will need to be kept in sync. So, uh, why do it?

Toggle quote (5 lines)
>
> For smartmontools the proper way is to set --with-scriptpath='...' configure
> flag, which is documented in its INSTALL file. (It can be disabled with a 'no'
> value as well.)

This does indeed seem to be more elegant approach, will use it for v2.

Toggle quote (9 lines)
>
>> (inputs (list libcap-ng))
>> (home-page "https://www.smartmontools.org/")
>> (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
>> --
>> 2.47.1
>
> Thanks

Tomas

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
-----BEGIN PGP SIGNATURE-----

iQJCBAEBCgAsFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmeTsmwOHH5Ad29sZnNk
ZW4uY3oACgkQL7/ufbZ/wanI5w//RgKJ61iB5BO70O8AdgNZz8hvv5XStvP8vani
KyDTeWSd1Rnkc5R2nxJjwJuWtTJKIf2yGPsLyU5YO9gNc2sj2h1aQ6R6BV69bOVe
rvksqUNrYuWmfiEE43FdESjI1b1oSrSaoAxg7RMxXcWT1yzImSxOeVKy23HSFHV6
tlyg2evu9FbqwDyNUJP22IKP6ogaaerbTI7+RfpIyUWauMuNGb1azzVhcS8I1t/J
nZA3qZFn4g0tKxwU1EtV0eyTosjphJf5YZoFJh1IOopzISk2FIPpHYYrBOIS1T8u
Jtf+awfffy80E5Up7RBh8lIlfo6co+fPXsgwHNcNCqOABz2dVkOdnGJbHe3G+wDD
a+kTlvuRVHCm19gr0AaN/6stIJkellIBITG8VDY+LBGvFUZYlkaSlMkoV02VEu/b
0uhr5Tt5Mc9g076/NMODPI3GWMYiiGAMvJjyB4VigbfDaEWF4bULaownYWsYvo5u
RlOZljVwAMplNElR0ST7PZIfbR1teCqX4QNzyeaMtM6Q6etQgemNRa1rO63zw9Y5
lNS8xO44SgfOxQOQlw2/UGHROeZuqmEShU9RmBsnS77R0hKalYPGOqN3w2faSBd3
R47YEKJQMCrubyX0xPppyNm8BiI2ojUa7DB2Jn5h5e0BMEosPSz30ZGa3ltnR4OE
XXFo2o0=
=EeeP
-----END PGP SIGNATURE-----

Hilton Chain wrote 2 months ago
(name . Tomas Volf)(address . ~@wolfsden.cz)
877c6kyykl.wl-hako@ultrarare.space
On Fri, 24 Jan 2025 23:31:56 +0800,
Tomas Volf wrote:
Toggle quote (15 lines)
> [...]
> >> + (string-append "PATH="
> >> + #$(file-append sed "/bin") ":"
> >> + #$(file-append coreutils "/bin") ":"
> >> + "$PATH\n"))))))))
> >
> > Please add sed and coreutils-minimal to inputs and use search-input-file or
> > this-package-input instead.
>
> Why? I will of course do so, but would first like to understand why.
> The current way seems to work and keeps all the references in just one
> place. If I switch to the suggested approach, both `sed' and
> `coreutils' will be referenced in two places (once in the `inputs' and
> once here) and those will need to be kept in sync. So, uh, why do it?

The reason is to record dependency information at <package> level, since this is
where the UI and most of the tools work. (`guix show', `guix refresh', package
transformation etc.)

For referencing dependencies from inputs in arguments, the benefit is mainly for
transformations. Maybe it doesn't make much sense in this case (sed and
coreutils), but it's a good practice to follow.
Tomas Volf wrote 1 months ago
(name . Hilton Chain)(address . hako@ultrarare.space)
87o6zqfv17.fsf@wolfsden.cz
Hilton Chain <hako@ultrarare.space> writes:

Toggle quote (21 lines)
> On Fri, 24 Jan 2025 23:31:56 +0800,
> Tomas Volf wrote:
>> [...]
>> >> + (string-append "PATH="
>> >> + #$(file-append sed "/bin") ":"
>> >> + #$(file-append coreutils "/bin") ":"
>> >> + "$PATH\n"))))))))
>> >
>> > Please add sed and coreutils-minimal to inputs and use search-input-file or
>> > this-package-input instead.
>>
>> Why? I will of course do so, but would first like to understand why.
>> The current way seems to work and keeps all the references in just one
>> place. If I switch to the suggested approach, both `sed' and
>> `coreutils' will be referenced in two places (once in the `inputs' and
>> once here) and those will need to be kept in sync. So, uh, why do it?
>
> The reason is to record dependency information at <package> level, since this is
> where the UI and most of the tools work. (`guix show', `guix refresh', package
> transformation etc.)

Is there a technical reason it cannot inspect the gexps used or is it
just matter of "no one wrote the code yet"?

Toggle quote (5 lines)
>
> For referencing dependencies from inputs in arguments, the benefit is mainly for
> transformations. Maybe it doesn't make much sense in this case (sed and
> coreutils), but it's a good practice to follow.

I did not realize this at all. That is very good to know.

Tomas

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
-----BEGIN PGP SIGNATURE-----

iQJCBAEBCgAsFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmeZViQOHH5Ad29sZnNk
ZW4uY3oACgkQL7/ufbZ/walLAQ/+MUtkTPuAvabDHhuNCJBOEI66Ggtwa/lXEdjE
gF558n/07oHiBqM5k06/dsu/BMMX5USp9/7qDLKbyh+qBU9suFp2w+CGH6prVZos
5MSvi7xV0mB3tRtwXz1F907TnJqmekuQ/4UnuR9pqOWXC6LzYoeESFBMdrrwCwI9
TvOQqnjI7WkVq97h9UpnA3nrLPWRCrA1oOcS7bR9/cbiYdFZC5vi8vrwTS7YgbVH
NudP2YufK4XFvP93714rn/zLiaVwU+VnL7sEMPVzDoqDvIo4ci294VjlIJAbSLPD
4rjAK9rOjr40yZ6MgN05TJtB+QBJpl5qMEjr0Wxk3a757KnBTg1EHbnDMSq/cE1T
pZnXvZxYeDT/PwmXm2WQpRSWJNMpMbjT1/m7HgMAKAhrEA8LYMRihEYlHHiM8A6r
r4s2EFbzj0zXM/6KQemC2X8HLvBWb2cdFF6u5IbQ25JRLue+IUlR/Lf7vciKnU1t
5XXaY4sIJX5wn/ALUzx10iQe/2LFwqc0P/HzGMBWMxbKYOCeMsFZXwkHw0eAmbPy
37QGad/nHp3sIJkzAYGBQYdvWSPDtMdyHy6btfAxy2v7TjYqiWq+ge+9HbxHmnZF
WwTY4ht3It6XfPrN2QLK1+gExN8+c+6wDCaA0+9+Y3HeC2SQSb01EF+oyaT8Cmcs
GG8JlZk=
=xzY/
-----END PGP SIGNATURE-----

Tomas Volf wrote 1 months ago
[PATCH v2] gnu: smartmontools: Fix PATH in smartd_warning.sh.
(address . 75550@debbugs.gnu.org)(name . Tomas Volf)(address . ~@wolfsden.cz)
3a4c0627e02cfe286e21017c77cc8100bb42b4fc.1738105215.git.~@wolfsden.cz
The script started with reset of the $PATH to a value not suitable to Guix.
In addition, the script requires coreutils and sed, so add those into the
$PATH.

* gnu/packages/admin.scm (smartmontools)[inputs]: Add sed, coreutils-minimal.
[arguments]<#:configure-flags>: Pass --with-scriptpath=.

Change-Id: Ide97f572e6f369fe24337f945474dc7a65584eda
---
gnu/packages/admin.scm | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

Toggle diff (26 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index fd5d67ec50..e21f3f6e19 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -3051,9 +3051,16 @@ (define-public smartmontools
"0gcrzcb4g7f994n6nws26g6x15yjija1gyzd359sjv7r3xj1z9p9"))))
(build-system gnu-build-system)
(arguments
- (list #:make-flags
- #~(list "BUILD_INFO=\"(Guix)\"")))
- (inputs (list libcap-ng))
+ (list
+ #:make-flags
+ #~(list "BUILD_INFO=\"(Guix)\"")
+ #:configure-flags
+ #~(list (format #f "--with-scriptpath=~a:~a:$PATH"
+ (dirname (search-input-file %build-inputs "bin/sed"))
+ (dirname (search-input-file %build-inputs "bin/true"))))))
+ (inputs (list coreutils-minimal
+ libcap-ng
+ sed))
(home-page "https://www.smartmontools.org/")
(synopsis "S.M.A.R.T. harddisk control and monitoring tools")
(description
--
2.47.1
Tomas Volf wrote 1 months ago
Re: bug#75550: [PATCH] gnu: smartmontools: Fix PATH in smartd_warning.sh.
(name . Hilton Chain)(address . hako@ultrarare.space)
87h65ifspf.fsf@wolfsden.cz
Hilton Chain <hako@ultrarare.space> writes:

Toggle quote (8 lines)
>
> Please add sed and coreutils-minimal to inputs and use search-input-file or
> this-package-input instead.
>
> For smartmontools the proper way is to set --with-scriptpath='...' configure
> flag, which is documented in its INSTALL file. (It can be disabled with a 'no'
> value as well.)

Thank you for the review, I have sent v2 that hopefully incorporates
your feedback.

Tomas

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
-----BEGIN PGP SIGNATURE-----

iQJCBAEBCgAsFiEEt4NJs4wUfTYpiGikL7/ufbZ/wakFAmeZYewOHH5Ad29sZnNk
ZW4uY3oACgkQL7/ufbZ/walY3w/9GlYjZdREHw+/ufbit5qHM8PdLFISBrQoFDCe
lww+ViYjIUgCoJJk4dQjQu9BRUsSioyZnP/LGudnjUzNyjoMzGKkLD5KkB8an24e
eNeF8UyCvm9DkXjwLkXFHwOqxoTUItvWV61LaXpYJQ6aXZC/Od55caUmCjr5hG7L
aMzUE2nsftN5pPtCISwoEhd6NKHX372jTzOewziAh8Qc7o0rt+DisoySwmC3dNuH
MO9dQRv9s+RZfLnayid0P0fZoO5dQhoP479G1fWyyuxTK5WxenN+DW3FQyDpQO5c
ECJaxUuesArkErj9kgxJFdR+7GwZMivwAW/E4qcXHZLWZFocS4ekDPX8LCKVXUrw
AXVbwqA2vpwnOer/BONaSr1sLnOk14cTjzrEmMso4xLU8qDG8iYkUy7J0hY4ViJ6
hfrZ/gGnTlSjHdf1wR3iRJZ+dQw+MMbasDU4UHFGyt0A08d9lpGf685lgb+Af7py
jG92kU1rDBc8nhDa0wYyx6D3wL2co/vak8GP8PhgalBKdtD768joWgQBcOMOgBgs
f1xbp4WkEmB399570WIWD28eO34UY6OFTHgRbRSuaofOTqYLF2LAutX6UXCWBMwb
MywAX9ShrS9WopUGGmTxOXAsdYPoEC5qwcyPuAK4+5dsAIZeA1w/sc9VruEaHNyI
kb2OEE0=
=DrQe
-----END PGP SIGNATURE-----

Hilton Chain wrote 1 months ago
Re: [bug#75550] [PATCH v2] gnu: smartmontools: Fix PATH in smartd_warning.sh.
(name . Tomas Volf)(address . ~@wolfsden.cz)
87jzaccwo4.wl-hako@ultrarare.space
On Wed, 29 Jan 2025 07:00:15 +0800,
Tomas Volf wrote:
Toggle quote (32 lines)
>
> The script started with reset of the $PATH to a value not suitable to Guix.
> In addition, the script requires coreutils and sed, so add those into the
> $PATH.
>
> * gnu/packages/admin.scm (smartmontools)[inputs]: Add sed, coreutils-minimal.
> [arguments]<#:configure-flags>: Pass --with-scriptpath=.
>
> Change-Id: Ide97f572e6f369fe24337f945474dc7a65584eda
> ---
> gnu/packages/admin.scm | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index fd5d67ec50..e21f3f6e19 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -3051,9 +3051,16 @@ (define-public smartmontools
> "0gcrzcb4g7f994n6nws26g6x15yjija1gyzd359sjv7r3xj1z9p9"))))
> (build-system gnu-build-system)
> (arguments
> - (list #:make-flags
> - #~(list "BUILD_INFO=\"(Guix)\"")))
> - (inputs (list libcap-ng))
> + (list
> + #:make-flags
> + #~(list "BUILD_INFO=\"(Guix)\"")
> + #:configure-flags
> + #~(list (format #f "--with-scriptpath=~a:~a:$PATH"
> + (dirname (search-input-file %build-inputs "bin/sed"))
> + (dirname (search-input-file %build-inputs "bin/true"))))))

I have modified #:configure-flags to use `this-package-input', to have proper
cross build support:
Toggle snippet (7 lines)
#~(list (format #f "--with-scriptpath=~{~a:~}$PATH"
(map (lambda (pkg)
(in-vicinity pkg "bin"))
'#$(list (this-package-input "coreutils-minimal")
(this-package-input "sed")))))

Thinking of the limitation of %build-inputs, it might be convenient to define
`inputs' and `native-inputs' directly in builder's environment. 🤔

Anyway, applied as f7fc4caf7da8f1d7cc76b3bc6ac0c4e643507454 with above change.

Toggle quote (9 lines)
> + (inputs (list coreutils-minimal
> + libcap-ng
> + sed))
> (home-page "https://www.smartmontools.org/")
> (synopsis "S.M.A.R.T. harddisk control and monitoring tools")
> (description
> --
> 2.47.1

Thanks
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 75550@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 75550
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help