type=page
status=published
title=uninstall-node
next=uninstall-node-dcom.html
prev=unfreeze-transaction-service.html
~~~~~~
uninstall-node
==============

[[uninstall-node-1]][[GSRFM00246]][[uninstall-node]]

uninstall-node
--------------

uninstalls \{product---name} software from specified hosts

[[sthref2206]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] uninstall-node [--help]
[--installdir as-install-parent]
[--sshport ssh-port] [--sshuser ssh-user]
[--sshkeyfile ssh-keyfile]
[--force={false|true}]
host-list
----

[[sthref2207]]

Description

The `uninstall-node` subcommand uninstalls \{product---name} software
from the hosts that are specified as the operand of the subcommand. This
subcommand requires secure shell (SSH) to be configured on the host
where the subcommand is run and on each host where the \{product---name}
software is being uninstalled.


[NOTE]
=======================================================================

This subcommand is equivalent to the
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]
subcommand. To uninstall \{product---name} software on hosts that use
the Distributed Component Object Model (DCOM) remote protocol, use the
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)]
subcommand.

=======================================================================


By default, if any node except the predefined node `localhost-`domain
resides on any host from which \{product---name} software is being
uninstalled, the subcommand fails. To uninstall the \{product---name}
software from a host on which user-defined nodes reside, set the
`--force` option to `true`. If the `--force` option is `true`, the
subcommand removes the entire content of the parent of the base
installation directory.

If a file under the parent of the base installation directory is open,
the subcommand fails.

If multiple hosts are specified, the configuration of the following
items must be the same on all hosts:

* Parent of the base installation directory for the \{product---name}
software
* SSH port
* SSH user
* SSH key file

The subcommand does not modify the configuration of the domain
administration server (DAS).

This subcommand is supported in local mode only.

[[sthref2208]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--installdir`::
  The absolute path to the parent of the base installation directory
  where the \{product---name} software is installed on each host, for
  example, `/export/glassfish3/`. +
  The user that is running this subcommand must have write access to the
  specified directory. Otherwise, an error occurs. +
  The specified directory must contain the installation of the
  \{product---name} software on the host. Otherwise, an error occurs. +
  The default is the parent of the base installation directory of the
  \{product---name} software on the host where this subcommand is run.
`--sshport`::
  The port to use for SSH connections to the host where the
  \{product---name} software is to be uninstalled. The default is 22.
`--sshuser`::
  The user on the host where the \{product---name} software is to be
  uninstalled that is to run the process for connecting through SSH to
  the host. The default is the user that is running this subcommand. To
  ensure that the DAS can read this user's SSH private key file, specify
  the user that is running the DAS process.
`--sshkeyfile`::
  The absolute path to the SSH private key file for user that the
  `--sshuser` option specifies. This file is used for authentication to
  the `sshd` daemon on the host. +
  The user that is running this subcommand must be able to reach the
  path to the key file and read the key file. +
  The default is a key file in the user's `.ssh` directory. If multiple
  key files are found, the subcommand uses the following order of
  preference: +
  1.  `id_rsa`
  2.  `id_dsa`
  3.  `identity`
`--force`::
  Specifies whether the subcommand uninstalls the \{product---name}
  software from a host even if a user-defined node resides on the host.
  Possible values are as follows: +
  `false`;;
    If a user-defined node resides on a host, the software is not
    uninstalled and the subcommand fails (default). +
    If the `--force` option is `false`, the subcommand removes only the
    \{product---name} software files. Other content if the parent of the
    base installation directory, such as configuration files, are not
    removed.
  `true`;;
    The subcommand uninstalls the \{product---name} software from the
    host even if a user-defined node resides on the host. +
    If the `--force` option is `true`, the subcommand removes the entire
    content of the parent of the base installation directory.

[[sthref2209]]

Operands

host-list::
  A space-separated list of the names of the hosts from which the
  \{product---name} software is to be uninstalled.

[[sthref2210]]

Examples

[[GSRFM773]][[sthref2211]]

Example 1   Uninstalling \{product---name} Software From the Default
Location

This example uninstalls \{product---name} software on the hosts
`sj03.example.com` and `sj04.example.com` from the default location.

[source,oac_no_warn]
----
asadmin> uninstall-node sj03 sj04
Successfully connected to gfuser@sj03.example.com using keyfile /home/gfuser
/.ssh/id_rsa
Successfully connected to gfuser@sj04.example.com using keyfile /home/gfuser
/.ssh/id_rsa
Command uninstall-node executed successfully.
----

[[GSRFM774]][[sthref2212]]

Example 2   Forcibly Uninstalling \{product---name} Software

This example uninstalls \{product---name} software on the host
`sj02.example.com`.

The software is uninstalled even if a user-defined node resides on the
host. The entire content of the `/export/glassfish3` directory is
removed.

Some lines of output are omitted from this example for readability.

[source,oac_no_warn]
----
asadmin> uninstall-node --force --installdir /export/glassfish3 sj02.example.com
Successfully connected to gfuser@sj02.example.com using keyfile /home/gfuser
/.ssh/id_rsa
Force removing file /export/glassfish3/mq/lib/help/en/add_overrides.htm
Force removing file /export/glassfish3/mq/lib/help/en/add_connfact.htm
...
Force removing directory /export/glassfish3/glassfish/lib/appclient
Force removing directory /export/glassfish3/glassfish/lib
Force removing directory /export/glassfish3/glassfish
Command uninstall-node executed successfully.
----

[[sthref2213]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref2214]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:install-node.html#install-node-1[`install-node`(1)],
link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)]


