Bug#224509: Don't require a TTY during maintainer script execution
The previous discussion on this bug didn't reach a final consensus on
wording, but I still believe we have a consensus that this is the right
general direction. Here's an updated patch that includes the permission
suggested by Steve Langasek for maintainer scripts to abort for
high-priority questions without a reasonable default, but with a caution
against setting up that situation.
I'm looking for seconds or further discussion if people don't believe that
this is the right direction to go.
diff --git a/policy.sgml b/policy.sgml
index af00c0e..3f6b82d 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -3557,15 +3557,26 @@ Files:
<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.
- Because these scripts may be executed with standard output
- redirected into a pipe for logging purposes, Perl scripts
- should set unbuffered output by setting <tt>$|=1</tt> so
- that the output is printed immediately rather than being
- buffered.
+ Maintainer scripts are not guaranteed to run with a controlling
+ terminal and may not be able to interact with the user. They
+ must be able to fall back to noninteractive behavior if no
+ controlling terminal is available. Maintainer scripts that
+ prompt via a program conforming to the Debian Configuration
+ Management Specification (see <ref id="maintscriptprompt">) may
+ assume that program will handle falling back to noninteractive
+ behavior.
+ </p>
+
+ <p>
+ For high-priority prompts without a reasonable default answer,
+ maintainer scripts may abort if there is no controlling
+ terminal. However, this situation should be avoided if at all
+ possible, since it prevents automated or unattended installs.
+ In most cases, users will consider this to be a bug in the
+ package.
</p>
</sect>
+
<sect id="exitstatus">
<heading>Exit status</heading>
@@ -9537,9 +9548,9 @@ END-INFO-DIR-ENTRY
</p>
<p>
- The maintainer scripts are guaranteed to run with a
- controlling terminal and can interact with the user.
- See <ref id="controllingterminal">.
+ The maintainer scripts are not guaranteed to run with a
+ controlling terminal and may not be able to interact with
+ the user. See <ref id="controllingterminal">.
</p>
</item>
--
Russ Allbery (rra@debian.org) <http://www.eyrie.org/~eagle/>
Reply to: