# man > bts(1)

[_BTS_(1)](https://www.chedong.com/phpMan.php/man/BTS/1/markdown)                                                                                        [_BTS_(1)](https://www.chedong.com/phpMan.php/man/BTS/1/markdown)

## NAME
       bts - developers' command line interface to the Debian Bug Tracking System

## SYNOPSIS
       **bts **[_options_] _command_ [_args_] [**#_**comment_] [**.**|**, _**command_ [_args_] [**#_**comment_]] ...

## DESCRIPTION
       This is a command line interface to the Debian Bug Tracking System (BTS), intended mainly for
       use by developers. It lets the BTS be manipulated using simple commands that can be run at
       the prompt or in a script, does various sanity checks on the input, and constructs and sends
       a mail to the BTS control address for you. A local cache of web pages and e-mails from the
       BTS may also be created and updated.

       In general, the command line interface is the same as what you would write in a mail to
       <control@bugs.debian.org>, just prefixed with "bts". For example:

        % bts severity 69042 normal
        % bts merge 69042 43233
        % bts retitle 69042 blah blah

       A few additional commands have been added for your convenience, and this program is less
       strict about what constitutes a valid bug number. For example, "severity Bug#85942 normal" is
       understood, as is "severity #85942 normal".  (Of course, your shell may regard "#" as a
       comment character though, so you may need to quote it!)

       Also, for your convenience, this program allows you to abbreviate commands to the shortest
       unique substring (similar to how cvs lets you abbreviate commands). So it understands things
       like "bts cl 85942".

       It is also possible to include a comment in the mail sent to the BTS. If your shell does not
       strip out the comment in a command like "bts severity 30321 normal #inflated severity", then
       this program is smart enough to figure out where the comment is, and include it in the email.
       Note that most shells do strip out such comments before they get to the program, unless the
       comment is quoted.  (Something like "bts severity #85942 normal" will not be treated as a
       comment!)

       You can specify multiple commands by separating them with a single dot, rather like
       **update-rc.d**; a single comma may also be used; all the commands will then be sent in a single
       mail. It is important the dot/comma is surrounded by whitespace so it is not mistaken for
       part of a command.  For example (quoting where necessary so that **bts **sees the comment):

        % bts severity 95672 normal , merge 95672 95673 \#they are the same!

       The abbreviation "it" may be used to refer to the last mentioned bug number, so you could
       write:

        % bts severity 95672 wishlist , retitle it "bts: please add a --foo option"

       Please use this program responsibly, and do take our users into consideration.

## OPTIONS
       **bts **examines the **devscripts **configuration files as described below.  Command line options
       override the configuration file settings, though.

### -o --offline
           Make  **bts **use cached bugs for the **show **and **bugs **commands, if a cache is available for the
           requested data. See the **cache **command, below for information on setting up a cache.

       **--online**, **--no-offline**
           Opposite of **--offline**; overrides any configuration file directive to work offline.

### -n --no-action
           Do not send emails but print them to standard output.

       **--cache**, **--no-cache**
           Should we attempt to cache new versions of BTS pages when performing **show**/**bugs  **commands?
           Default is to cache.

       **--cache-mode=**{**min**|**mbox**|**full**}
           When running a **bts cache **command, should we only mirror the basic bug (**min**), or should we
           also  mirror  the mbox version (**mbox**), or should we mirror the whole thing, including the
           mbox and the boring attachments to the BTS  bug  pages  and  the  acknowledgement  emails
           (**full**)?  Default is **min**.

       **--cache-delay=_**seconds_
           Time  in  seconds  to delay between each download, to avoid hammering the BTS web server.
           Default is 5 seconds.

### --mbox
           Open a mail reader to read the mbox corresponding to a given bug number for **show **and **bugs**
           commands.

       **--mailreader=_**READER_
           Specify the command to read the mbox.  Must contain a "**%s**" string (unquoted!), which will
           be replaced by the name of the mbox file.  The command will be split on white  space  and
           will  not  be passed to a shell.  Default is '**mutt -f %s**'.  (Also, **%% **will be substituted
           by a single **% **if this is needed.)

       **--cc-addr=_**CC_EMAIL_ADDRESS_
           Send carbon copies to a list of users. _CC_EMAIL_ADDRESS_ should be a comma-separated  list
           of email addresses. Multiple options add more CCs.

### --use-default-cc
           Add  the  addresses specified in the configuration file option **BTS_DEFAULT_CC **to the list
           specified using **--cc-addr**.  This is the default.

### --no-use-default-cc
           Do not add addresses specified in **BTS_DEFAULT_CC **to the carbon copy list.

       **--sendmail=_**SENDMAILCMD_
           Specify the **sendmail **command.  The command will be split on white space and will  not  be
           passed  to  a shell.  Default is _/usr/sbin/sendmail_.  The **-t **option will be automatically
           added if the command is _/usr/sbin/sendmail_ or _/usr/sbin/exim*_.   For  other  mailers,  if
           they  require  a  **-t  **option,  this  must  be  included  in the _SENDMAILCMD_, for example:
           **--sendmail="/usr/sbin/mymailer -t"**.

### --mutt
           Use **mutt **for sending of mails. Default is not to use **mutt**, except for some commands.

           Note that one of **$DEBEMAIL **or **$EMAIL **must be set in the environment in order to use  **mutt**
           to send emails.

### --no-mutt
           Don't use **mutt **for sending of mails.

       **--soap-timeout=_**SECONDS_
           Specify a timeout for SOAP calls as used by the **select **and **status **commands.

       **--smtp-host=_**SMTPHOST_
           Specify an SMTP host.  If given, **bts **will send mail by talking directly to this SMTP host
           rather than by invoking a **sendmail **command.

           The  host  name may be followed by a colon (":") and a port number in order to use a port
           other than the default.  It may also begin with "ssmtp://" or "smtps://" to indicate that
           SMTPS should be used.

           If SMTPS not specified, **bts **will still try to use STARTTLS if it's advertised by the SMTP
           host.

           Note that one of **$DEBEMAIL **or **$EMAIL **must be set in  the  environment  in  order  to  use
           direct SMTP connections to send emails.

           Note  that  when  sending directly via an SMTP host, specifying addresses in **--cc-addr **or
           **BTS_DEFAULT_CC **that the SMTP host will not relay will cause the SMTP host to  reject  the
           entire mail.

           Note   also   that   the  use  of  the  **reassign  **command  may,  when  either  **--mutt  **or
           **--force-interactive **mode  is  enabled,  lead  to  the  automatic  addition  of  a  Cc  to
           _$<newpackage_@packages.debian.org>.   In  these  cases,  the  note  above regarding relaying
           applies.  The submission interface (port 587) on reportbug.debian.org  does  not  support
           relaying  and,  as  such,  should  not  be  used  as  an  SMTP  server  for **bts **under the
           circumstances described in this paragraph.

       **--smtp-username=_**USERNAME_, **--smtp-password=_**PASSWORD_
           Specify the  credentials  to  use  when  connecting  to  the  SMTP  server  specified  by
           **--smtp-host**.  If the server does not require authentication then these options should not
           be used.

           If  a  username  is specified but not a password, **bts **will prompt for the password before
           sending the mail.

       **--smtp-helo=_**HELO_
           Specify the name to use in the _HELO_ command when connecting to the SMTP server;  defaults
           to the contents of the file _/etc/mailname_, if it exists.

           Note that some SMTP servers may reject the use of a _HELO_ which either does not resolve or
           does not appear to belong to the host using it.

### --bts-server
           Use a debbugs server other than <https://bugs.debian.org>.

### -f --force-refresh
           Download  a  bug  report again, even if it does not appear to have changed since the last
           **cache **command.  Useful if a **--cache-mode=full **is requested for the first time  (otherwise
           unchanged bug reports will not be downloaded again, even if the boring bits have not been
           downloaded).

### --no-force-refresh
           Suppress any configuration file **--force-refresh **option.

### --only-new
           Download only new bugs when caching. Do not check for updates in bugs we already have.

### --include-resolved
           When caching bug reports, include those that are marked as resolved.  This is the default
           behaviour.

### --no-include-resolved
           Reverse the behaviour of the previous option.  That is, do not cache bugs that are marked
           as resolved.

### --no-ack
           Suppress  acknowledgment  mails from the BTS.  Note that this will only affect the copies
           of messages CCed to bugs, not those sent to the control bot.

### --ack
           Do not suppress acknowledgement mails.  This is the default behaviour.

### -i --interactive
           Before sending an e-mail to the control bot, display the  content  and  allow  it  to  be
           edited, or the sending cancelled.

### --force-interactive
           Similar  to  **--interactive**, with the exception that an editor is spawned before prompting
           for confirmation of the message to be sent.

### --no-interactive
           Send control e-mails without confirmation.  This is the default behaviour.

### -q --quiet
           When running **bts cache**, only display information about newly cached pages,  not  messages
           saying already cached.  If this option is specified twice, only output error messages (to
           stderr).

       **--no-conf**, **--noconf**
           Do  not read any configuration files.  This can only be used as the first option given on
           the command-line.

## COMMANDS
       For    full    details    about    the    commands,    see     the     BTS     documentation.
       <<https://www.debian.org/Bugs/server-control>>

       **show **[_options_] [_bug_ _number_ | _package_ | _maintainer_ | **: **] [_opt_**=_**val_ ...]
       **show **[_options_] [**src:_**package_ | **from:_**submitter_] [_opt_**=_**val_ ...]
       **show **[_options_] [**tag:_**tag_ | **usertag:_**tag_ ] [_opt_**=_**val_ ...]
       **show **[**release-critical **| **release-critical/**... | **RC**]
           This is a synonym for **bts bugs**.

       **bugs **[_options_] [_bug_number_ | _package_ | _maintainer_ | **: **] [_opt_**=_**val_ ...]
       **bugs **[_options_] [**src:_**package_ | **from:_**submitter_] [_opt_**=_**val_ ...]
       **bugs **[_options_] [**tag:_**tag_ | **usertag:_**tag_ ] [_opt_**=_**val_ ...]
       **bugs **[**release-critical **| **release-critical/**... | **RC**]
           Display the page listing the requested bugs in a web browser using [**sensible-browser**(1)](https://www.chedong.com/phpMan.php/man/sensible-browser/1/markdown).

           Options  may  be specified after the **bugs **command in addition to or instead of options at
           the  start   of   the   command   line:   recognised   options   at   this   point   are:
           **-o**/**--offline**/**--online**,  **-m**/**--mbox**,  **--mailreader  **and  **--**[**no-**]**cache**.  These are described
           earlier in this manpage.  If either the **-o **or **--offline  **option  is  used,  or  there  is
           already an up-to-date copy in the local cache, the cached version will be used.

           The meanings of the possible arguments are as follows:

           (none)  If  nothing  is  specified, **bts bugs **will display your bugs, assuming that either
                   **DEBEMAIL **or **EMAIL **(examined in that  order)  is  set  to  the  appropriate  email
                   address.

           _bug_number_
                   Display bug number _bug_number_.

           _package_ Display the bugs for the package _package_.

           **src:_**package_
                   Display the bugs for the source package _package_.

           _maintainer_
                   Display the bugs for the maintainer email address _maintainer_.

           **from:_**submitter_
                   Display the bugs for the submitter email address _submitter_.

           **tag:_**tag_ Display the bugs which are tagged with _tag_.

           **usertag:_**tag_
                   Display  the  bugs  which are tagged with usertag _tag_.  See the BTS documentation
                   for more information on usertags.  This will require the  use  of  a  **users=_**email_
                   option.

           **:       **Details  of  the  bug  tracking system itself, along with a bug-request page with
                   more options than this script, can be found  on  <https://bugs.debian.org/>.   This
                   page itself will be opened if the command 'bts bugs :' is used.

           **release-critical**, **RC**
                   Display  the  front  page  of  the  release-critical pages on the BTS.  This is a
                   synonym  for  <https://bugs.debian.org/release-critical/index.html>.   It  is  also
                   possible  to say release-critical/debian/main.html and the like.  RC is a synonym
                   for release-critical/other/all.html.

           After the argument specifying what to display, you can optionally specify options to  use
           to  format  the page or change what it displayed.  These are passed to the BTS in the URL
           downloaded. For example, pass dist=stable to see bugs affecting the stable version  of  a
           package,  version=1.0  to see bugs affecting that version of a package, or reverse=yes to
           display newest messages first in a bug log.

           If caching has been enabled (that is, **--no-cache **has not been used, and **BTS_CACHE **has not
           been set to **no**), then any page requested by **bts show **will automatically be cached, and be
           available offline thereafter.  Pages which are automatically cached in this way  will  be
           deleted on subsequent "**bts show**|**bugs**|**cache**" invocations if they have not been accessed in
           30  days.   Warning:  on  a  filesystem  mounted  with the "noatime" option, running "**bts**
           **show**|**bugs**" does not update the cache files' access times;  a  cached  bug  will  then  be
           subject to auto-cleaning 30 days after its initial download, even if it has been accessed
           in the meantime.

           Any  other  **bts  **commands  following  this on the command line will be executed after the
           browser has been exited.

           The desired browser can be specified and configured by setting  the  **BROWSER  **environment
           variable.     The    conventions    follow    those    defined   by   Eric   Raymond   at
           <http://www.catb.org/~esr/BROWSER/>; we here reproduce the relevant part.

           The value of **BROWSER **may consist of a colon-separated series of  browser  command  parts.
           These  should  be  tried  in  order  until one succeeds. Each command part may optionally
           contain the string **%s**; if it does, the URL to  be  viewed  is  substituted  there.  If  a
           command  part  does  not contain **%s**, the browser is to be launched as if the URL had been
           supplied as its first argument. The string **%% **must be substituted as a single %.

           Rationale: We need to be able to specify multiple browser commands  so  programs  obeying
           this  convention  can  do  the  right thing in either X or console environments, trying X
           first. Specifying multiple commands may also be useful for people who  share  files  like
           _.profile_  across  multiple systems. We need **%s **because some popular browsers have remote-
           invocation syntax that requires it. Unless **%% **reduces to %, it won't be possible to  have
           a literal **%s **in the string.

           For example, on most Linux systems a good thing to do would be:

           BROWSER='mozilla -raise -remote "openURL(%s,new-window)":links'

       **select **[_key_**:_**value_ ...]
           Uses  the  SOAP  interface  to  output  a  list  of  bugs which match the given selection
           requirements.

           The following keys are allowed, and may be given multiple times.

           **package **Binary package name.

           **source  **Source package name.

           **maintainer**
                   E-mail address of the maintainer.

           **submitter**
                   E-mail address of the submitter.

           **severity**
                   Bug severity.

           **status  **Status of the bug.  One of **open**, **done**, or **forwarded**.

           **tag     **Tags applied to the bug. If **users **is specified, may include usertags in  addition
                   to the standard tags.

           **owner   **Bug's owner.

           **correspondent**
                   Address of someone who sent mail to the log.

           **affects **Bugs which affect this package.

           **bugs    **List of bugs to search within.

           **users   **Users to use when looking up usertags.

           **archive **Whether  to  search archived bugs or normal bugs; defaults to **0 **(i.e. only search
                   normal bugs). As a special case, if archive is **both**, both archived and unarchived
                   bugs are returned.

           For example, to select the set of  bugs  submitted  by  <jrandomdeveloper@example.com>  and
           tagged **wontfix**, one would use

           bts select submitter:<jrandomdeveloper@example.com> tag:wontfix

           If a key is used multiple times then the set of bugs selected includes those matching any
           of the supplied values; for example

           bts select package:foo severity:wishlist severity:minor

           returns all bugs of package foo with either wishlist or minor severity.

       **status **[_bug_ | **file:_**file_ | **fields:_**field_[**,_**field_ ...] | **verbose**] ...
           Uses  the SOAP interface to output status information for the given bugs (or as read from
           the listed files -- use **- **to indicate STDIN).

           By default, all populated fields for a bug are displayed.

           If **verbose **is given, empty fields will also be displayed.

           If **fields **is given, only those  fields  will  be  displayed.   No  validity  checking  is
           performed on any specified fields.

       **clone _**bug_ _new_ID_ [_new_ID_ ...]
           The  **clone **control command allows you to duplicate a _bug_ report. It is useful in the case
           where a single report actually indicates that multiple distinct bugs have occurred.  "New
           IDs"  are  negative numbers, separated by spaces, which may be used in subsequent control
           commands to refer to the newly duplicated bugs.  A new report is generated for  each  new
           ID.

       **done _**bug_ [_version_]
           Mark  a  _bug_  as Done. This forces interactive mode since done messages should include an
           explanation why the bug is being closed.  You should specify which _version_ of the package
           closed the bug, if possible.

       **reopen _**bug_ [_submitter_]
           Reopen a _bug_, with optional _submitter_.

       **archive _**bug_
           Archive a _bug_ that has previously been archived but  is  currently  not.   The  _bug_  must
           fulfill  all of the requirements for archiving with the exception of those that are time-
           based.

       **unarchive _**bug_
           Unarchive a _bug_ that is currently archived.

       **retitle _**bug_ _title_
           Change the _title_ of the _bug_.

       **summary _**bug_ [_messagenum_]
           Select a message number that should be used as the summary of a _bug_.

           If no message number is given, the summary is cleared.

       **submitter _**bug_ [_bug_ ...] _submitter-email_
           Change the submitter address of a _bug_ or a number  of  bugs,  with  **!  **meaning  `use  the
           address on the current email as the new submitter address'.

       **reassign _**bug_ [_bug_ ...] _package_ [_version_]
           Reassign  a  _bug_  or  a  number  of  bugs  to  a different _package_.  The _version_ field is
           optional; see the explanation at <<https://www.debian.org/Bugs/server-control>>.

       **found _**bug_ [_version_]
           Indicate that a _bug_ was found to exist in a particular package version.  Without _version_,
           the list of fixed versions is cleared and the bug is reopened.

       **notfound _**bug_ _version_
           Remove the record that _bug_ was encountered in the given version of the package  to  which
           it is assigned.

       **fixed _**bug_ _version_
           Indicate  that  a  _bug_  was  fixed in a particular package version, without affecting the
           _bug_'s open/closed status.

       **notfixed _**bug_ _version_
           Remove the record that a _bug_ was fixed in the given version of the package to which it is
           assigned.

           This is equivalent to the  sequence  of  commands  "**found  _**bug_  _version_",  "**notfound  _**bug_
           _version_".

       **block _**bug_ **by**|**with _**bug_ [_bug_ ...]
           Note that a _bug_ is blocked from being fixed by a set of other bugs.

       **unblock _**bug_ **by**|**with _**bug_ [_bug_ ...]
           Note that a _bug_ is no longer blocked from being fixed by a set of other bugs.

       **merge _**bug_ _bug_ [_bug_ ...]
           Merge a set of bugs together.

       **forcemerge _**bug_ _bug_ [_bug_ ...]
           Forcibly  merge  a  set of bugs together. The first _bug_ listed is the master bug, and its
           settings (those which must be equal in a normal **merge**) are assigned to  the  bugs  listed
           next.

       **unmerge _**bug_
           Unmerge a _bug_.

       **tag _**bug_ [**+**|**-**|**=**] _tag_ [_tag_ ...]
       **tags _**bug_ [**+**|**-**|**=**] _tag_ [_tag_ ...]
           Set  or  unset  a  _tag_  on  a  _bug_. The tag may either be the exact tag name or it may be
           abbreviated to any unique tag substring. (So using **fixed **will  set  the  tag  **fixed**,  not
           **fixed-upstream**,  for  example,  but  **fix  **would  not be acceptable.) Multiple tags may be
           specified as well. The two commands (tag and tags) are identical. At least one  tag  must
           be specified, unless the **= **flag is used, where the command

             bts tags <bug> =

           will remove all tags from the specified _bug_.

           Adding/removing  the  **security **tag will add "team\@security.debian.org" to the Cc list of
           the control email.

           The   list   of    valid    tags    and    their    significance    is    available    at
           <<https://www.debian.org/Bugs/Developer#tags>>. The current valid tags are:

           patch,  wontfix, moreinfo, unreproducible, fixed, help, security, upstream, pending, d-i,
           confirmed, ipv6, lfs, fixed-upstream, l10n, newcomer, a11y, ftbfs

           There is also a tag for each release of Debian since "potato". Note that this list may be
           out of date, see the website for the most up to date source.

       **affects _**bug_ [**+**|**-**|**=**] _package_ [_package_ ...]
           Indicates that a _bug_ affects a _package_ other than that against which it is filed, causing
           the _bug_ to be listed by default in the _package_ list of the other  _package_.   This  should
           generally  be used where the _bug_ is severe enough to cause multiple reports from users to
           be assigned to the wrong package.  At least one _package_ must be specified, unless  the  **=**
           flag is used, where the command

             bts affects <bug> =

           will remove all indications that _bug_ affects other packages.

       **user _**email_
           Specify a user _email_ address before using the **usertags **command.

       **usertag _**bug_ [**+**|**-**|**=**] _tag_ [_tag_ ...]
       **usertags _**bug_ [**+**|**-**|**=**] _tag_ [_tag_ ...]
           Set or unset a user tag on a _bug_. The _tag_ must be the exact tag name wanted; there are no
           defaults  or  checking  of  tag  names.   Multiple tags may be specified as well. The two
           commands (**usertag **and **usertags**) are identical.  At  least  one  _tag_  must  be  specified,
           unless the **= **flag is used, where the command

             bts usertags <bug> =

           will remove all user tags from the specified _bug_.

       **claim _**bug_ [_claim_]
           Record  that  you have claimed a _bug_ (e.g. for a bug squashing party).  _claim_ should be a
           unique token allowing the bugs you have claimed to be identified; an  e-mail  address  is
           often used.

           If  no  _claim_  is  specified, the environment variable **DEBEMAIL **or **EMAIL **(checked in that
           order) is used.

       **unclaim _**bug_ [_claim_]
           Remove the record that you have claimed a bug.

           If no _claim_ is specified, the environment variable **DEBEMAIL **or  **EMAIL  **(checked  in  that
           order) is used.

       **severity _**bug_ _severity_
           Change  the  _severity_  of  a  _bug_.  Available  severities  are:  **wishlist**, **minor**, **normal**,
           **important**, **serious**, **grave**, **critical**. The  severity  may  be  abbreviated  to  any  unique
           substring.

       **forwarded _**bug_ _address_
           Mark  the _bug_ as forwarded to the given _address_ (usually an email address or a URL for an
           upstream bug tracker).

       **notforwarded _**bug_
           Mark a _bug_ as not forwarded.

       **package **[_package_ ...]
           The following commands will only apply to bugs against the listed _package_s; this acts  as
           a  safety  mechanism  for  the  BTS.  If no packages are listed, this check is turned off
           again.

       **limit **[_key_[**:_**value_]] ...
           The following commands will only apply to bugs which meet the specified  criterion;  this
           acts as a safety mechanism for the BTS.  If no _value_s are listed, the limits for that _key_
           are turned off again.  If no _key_s are specified, all limits are reset.

           **submitter**
                   E-mail address of the submitter.

           **date    **Date the bug was submitted.

           **subject **Subject of the bug.

           **msgid   **Message-id of the initial bug report.

           **package **Binary package name.

           **source  **Source package name.

           **tag     **Tags applied to the bug.

           **severity**
                   Bug severity.

           **owner   **Bug's owner.

           **affects **Bugs affecting this package.

           **archive **Whether  to  search archived bugs or normal bugs; defaults to **0 **(i.e. only search
                   normal bugs). As a special case, if archive is **both**, both archived and unarchived
                   bugs are returned.

           For example, to limit the set of bugs affected by  the  subsequent  control  commands  to
           those submitted by <jrandomdeveloper@example.com> and tagged **wontfix**, one would use

           bts limit submitter:<jrandomdeveloper@example.com> tag:wontfix

           If a key is used multiple times then the set of bugs selected includes those matching any
           of the supplied values; for example

           bts limit package:foo severity:wishlist severity:minor

           only  applies the subsequent control commands to bugs of package foo with either **wishlist**
           or **minor **severity.

       **owner _**bug_ _owner-email_
           Change the "owner" address of a _bug_, with **! **meaning `use the address on the current email
           as the new owner address'.

           The owner of a bug accepts responsibility for dealing with it.

       **noowner _**bug_
           Mark a bug as having no "owner".

       **subscribe _**bug_ [_email_]
           Subscribe the given _email_ address to the specified _bug_ report.  If no  email  address  is
           specified,  the environment variable **DEBEMAIL **or **EMAIL **(in that order) is used.  If those
           are not set, or **! **is given as email address, your default address will be used.

           After executing this command, you will be sent a subscription confirmation to  which  you
           have  to  reply.   When  subscribed  to a bug report, you receive all relevant emails and
           notifications.  Use the unsubscribe command to unsubscribe.

       **unsubscribe _**bug_ [_email_]
           Unsubscribe the given email address from the specified bug  report.   As  with  subscribe
           above,  if no email address is specified, the environment variables **DEBEMAIL **or **EMAIL **(in
           that order) is used.  If those are not set, or **! **is given as email address, your  default
           address will be used.

           After  executing  this  command, you will be sent an unsubscription confirmation to which
           you have to reply. Use the **subscribe **command to, well, subscribe.

       **reportspam _**bug_ ...
           The **reportspam **command allows you to report a _bug_ report as containing  spam.   It  saves
           one from having to go to the bug web page to do so.

       **spamreport _**bug_ ...
           **spamreport **is a synonym for **reportspam**.

       **cache **[_options_] [_maint_email_ | _pkg_ | **src:_**pkg_ | **from:_**submitter_]
       **cache **[_options_] [**release-critical **| **release-critical/**... | **RC**]
           Generate  or  update  a  cache  of bug reports for the given email address or package. By
           default it downloads all bugs belonging to the email address in the **DEBEMAIL  **environment
           variable  (or  the  **EMAIL **environment variable if **DEBEMAIL **is unset). This command may be
           repeated to cache bugs belonging to several people or packages. If multiple  packages  or
           addresses  are  supplied,  bugs  belonging  to any of the arguments will be cached; those
           belonging to more than one of the arguments will only be downloaded once. The cached bugs
           are stored in _$XDG_CACHE_HOME/devscripts/bts/_  or,  if  **XDG_CACHE_HOME  **is  not  set,  in
           _~/.cache/devscripts/bts/_.

           You can use the cached bugs with the **-o **switch. For example:

             bts -o bugs
             bts -o show 12345

           Also,  **bts **will update the files in it in a piecemeal fashion as it downloads information
           from the BTS using the **show **command. You might thus set up  the  cache,  and  update  the
           whole  thing  once  a week, while letting the automatic cache updates update the bugs you
           frequently refer to during the week.

           Some options affect the behaviour of the **cache **command.  The  first  is  the  setting  of
           **--cache-mode**,  which controls how much **bts **downloads of the referenced links from the bug
           page, including boring bits such as the acknowledgement emails,  emails  to  the  control
           bot,  and  the  mbox  version  of  the  bug  report.   It can take three values: **min **(the
           minimum), **mbox **(download the minimum plus the mbox version of the  bug  report)  or  **full**
           (the  whole works).  The second is **--force-refresh **or **-f**, which forces the download, even
           if the cached bug report is up-to-date.  The **--include-resolved **option indicates  whether
           bug reports marked as resolved should be downloaded during caching.

           Each  of these is configurable from the configuration file, as described below.  They may
           also be specified after the **cache **command as well as at the start of the command line.

           Finally, **-q **or **--quiet **will suppress messages about caches being up-to-date,  and  giving
           the option twice will suppress all cache messages (except for error messages).

           Beware  of caching RC, though: it will take a LONG time!  (With 1000+ RC bugs and a delay
           of 5 seconds between bugs, you're looking  at  a  minimum  of  1.5  hours,  and  probably
           significantly more than that.)

       **cleancache _**package_ | **src:_**package_ | _maintainer_
       **cleancache from:_**submitter_ | **tag:_**tag_ | **usertag:_**tag_ | _number_ | **ALL**
           Clean  the  cache for the specified _package_, _maintainer_, etc., as described above for the
           **bugs **command, or clean the entire cache if **ALL **is specified. This is useful  if  you  are
           going  to  have permanent network access or if the database has become corrupted for some
           reason.  Note that for safety, this command does not default to the value of **DEBEMAIL  **or
           **EMAIL**.

       **listcachedbugs **[_number_]
           List  cached  bug ids (intended to support bash completion). The optional number argument
           restricts the list to those bug ids that start with that number.

### version
           Display version and copyright information.

### help
           Display a short summary of commands, suspiciously similar to parts of this man page.

## ENVIRONMENT VARIABLES
       **DEBEMAIL**
           If this is set, the From: line in the email will be set to use this email address instead
           of your normal email address (as would be determined by **mail**).

       **DEBFULLNAME**
           If **DEBEMAIL **is set, **DEBFULLNAME **is examined to determine the full name to use; if this is
           not set, **bts **attempts to determine a name from your _passwd_ entry.

       **BROWSER**
           If set, it specifies the browser  to  use  for  the  **show  **and  **bugs  **options.   See  the
           description above.

## CONFIGURATION VARIABLES
       The  two configuration files _/etc/devscripts.conf_ and _~/.devscripts_ are sourced by a shell in
       that order to set configuration variables.  Command line options  can  be  used  to  override
       configuration  file  settings.   Environment  variable settings are ignored for this purpose.
       The currently recognised variables are:

       **BTS_OFFLINE**
           If this is set to **yes**, then it is the same as the **--offline **command line parameter  being
           used.   Only  has  an  effect on the **show **and **bugs **commands.  The default is **no**.  See the
           description of the **show **command above for more information.

       **BTS_CACHE**
           If this is set to **no**, then it is the same as the **--no-cache **command line parameter  being
           used.   Only has an effect on the **show **and **bug **commands.  The default is **yes**.  Again, see
           the **show **command above for more information.

       **BTS_CACHE_MODE=**{**min**,**mbox**,**full**}
           How much of the BTS should we mirror when we are asked  to  cache  something?   Just  the
           minimum,  or  also  the mbox or the whole thing?  The default is **min**, and it has the same
           meaning as the **--cache-mode **command line parameter.  Only has an  effect  on  the  cache.
           See the **cache **command for more information.

       **BTS_FORCE_REFRESH**
           If  this is set to **yes**, then it is the same as the **--force-refresh **command line parameter
           being used.  Only has an effect on the **cache **command.  The default is **no**.  See the  **cache**
           command for more information.

       **BTS_MAIL_READER**
           If this is set, specifies a mail reader to use instead of **mutt**.  Same as the **--mailreader**
           command line option.

       **BTS_SENDMAIL_COMMAND**
           If  this is set, specifies a **sendmail **command to use instead of _/usr/sbin/sendmail_.  Same
           as the **--sendmail **command line option.

       **BTS_ONLY_NEW**
           Download only new bugs when caching. Do not check for updates in bugs  we  already  have.
           The default is **no**.  Same as the **--only-new **command line option.

       **BTS_SMTP_HOST**
           If  this  is  set,  specifies  an SMTP host to use for sending mail rather than using the
           **sendmail **command.  Same as the **--smtp-host **command line option.

           Note that this option takes priority over **BTS_SENDMAIL_COMMAND **if both  are  set,  unless
           the **--sendmail **option is used.

       **BTS_SMTP_AUTH_USERNAME**, **BTS_SMTP_AUTH_PASSWORD**
           If  these options are set, then it is the same as the **--smtp-username **and **--smtp-password**
           options being used.

       **BTS_SMTP_HELO**
           Same as the **--smtp-helo **command line option.

       **BTS_INCLUDE_RESOLVED**
           If this is set to **no**, then it is the  same  as  the  **--no-include-resolved  **command  line
           parameter being used.  Only has an effect on the **cache **command.  The default is **yes**.  See
           the **cache **command for more information.

       **BTS_SUPPRESS_ACKS**
           If  this  is set to **yes**, then it is the same as the **--no-ack **command line parameter being
           used.  The default is **no**.

       **BTS_INTERACTIVE**
           If this is  set  to  **yes  **or  **force**,  then  it  is  the  same  as  the  **--interactive  **or
           **--force-interactive **command line parameter being used.  The default is **no**.

       **BTS_DEFAULT_CC**
           Specify  a list of e-mail addresses to which a carbon copy of the generated e-mail to the
           control bot should automatically be sent.

       **BTS_SERVER**
           Specify  the  name  of   a   debbugs   server   which   should   be   used   instead   of
           <https://bugs.debian.org>.

## SEE ALSO
       Please  see  <<https://www.debian.org/Bugs/server-control>>  for more details on how to control
       the BTS using emails and <<https://www.debian.org/Bugs/>> for more information about the BTS.

       [**querybts**(1)](https://www.chedong.com/phpMan.php/man/querybts/1/markdown), [**reportbug**(1)](https://www.chedong.com/phpMan.php/man/reportbug/1/markdown), [**pts-subscribe**(1)](https://www.chedong.com/phpMan.php/man/pts-subscribe/1/markdown), [**devscripts.conf**(5)](https://www.chedong.com/phpMan.php/man/devscripts.conf/5/markdown)

## COPYRIGHT
       This program is Copyright (C) 2001-2003 by Joey Hess <<joeyh@debian.org>>.  Many  modifications
       have been made, Copyright (C) 2002-2005 Julian Gilbey <<jdg@debian.org>> and Copyright (C) 2007
       Josh Triplett <<josh@freedesktop.org>>.

       It  is  licensed  under  the  terms  of the GPL, either version 2 of the License, or (at your
       option) any later version.

Debian Utilities                             2026-02-25                                       [_BTS_(1)](https://www.chedong.com/phpMan.php/man/BTS/1/markdown)
