Package: debian-policy Severity: wishlist Current policy says a controlling terminal is guaranteed to be available in the maintainer scripts. This is simply not true, for dpkg will happily run without one - which makes all scripts that make explicit use of /dev/tty (as policy recommends) fail with the error message '/dev/tty: No such device or address'.
The following patch should correct policy so it documents current practise instead of making incorrect guarantees:
--- policy.sgml 2003-08-19 14:32:23.000000000 +0200 +++ policy.sgml.new 2003-12-19 00:18:48.000000000 +0100 @@ -3229,8 +3229,8 @@ <heading>Controlling terminal for maintainer scripts</heading> <p> - The maintainer scripts are guaranteed to run with a - controlling terminal and can interact with the user. + The maintainer scripts might run with a controlling + terminal and can in that case interact with the user. If they need to prompt for passwords, do full-screen interaction or something similar you should do these things to and from <file>/dev/tty</file>, since @@ -3244,6 +3244,16 @@ buffered. </p> + <p> + Availability of a controlling terminal is not guaranteed, + so before making use of it you should take care to check for + its availability. If it is unavailable, you should ensure + this is handled gracefully by assuming noninteractive + behaviour. Determining the availability of a controlling + terminal can for example be done by inspecting the return + code of the command <prgn>tty</prgn>. + </p> + <p> Each script should return a zero exit status for success, or a nonzero one for failure. @@ -8709,8 +8719,8 @@ </p> <p> - The maintainer scripts are guaranteed to run with a - controlling terminal and can interact with the user. + The maintainer scripts might run with a controlling + terminal and can in that case interact with the user. See <ref id="controllingterminal">. </p> </item>
-- Tore Anderson