/opt
é para aplicativos de terceiros que não dependem de nenhuma dependência fora do escopo do pacote. /usr/local
é para pacotes instalados nesta máquina fora do escopo do gerenciador de pacotes de distribuição.
Um exemplo:
Um cliente sip de código aberto fornecido como um .deb seria instalado em /usr
. Se fosse construído com o framework Qt, o apt o colocaria como dependência.
O mesmo cliente sip de código aberto criado a partir da fonte residiria em /usr/local
, de modo que não seria confundido com o apt se você instalasse posteriormente um pacote .deb para o mesmo aplicativo. Você pode construir suas dependências a partir do código-fonte ou obtê-las do gerenciador de pacotes.
Um aplicativo de terceiros em /opt
deve ser independente. Por exemplo, um cliente sip proprietário usando o Qt não dependeria da versão do apt, mas o teria empacotado ou vinculado estaticamente.
Para mais informações, consulte o Padrão de hierarquia do sistema de arquivos .