Este tutorial demonstra como utilizar o desenvolvimento remoto de projetos C/C++. Alguma vez já desejou desenvolver um aplicativo SolarisTM ou Linux no seu laptop executando o Windows 7 ou o Mac OS X? Ou testar seu aplicativo em sistemas operacionais diferentes sem sair do IDE? Ou simplesmente compilar aplicativos grandes em servidores rápidos com vários núcleos em vez de compilar na sua estação de trabalho habitual? A resposta à todas estas necessidades é a funcionalidade de desenvolvimento remoto do NetBeans IDE 6.9.
Consulte este tutorial para descobrir como utilizar este recurso.
Conceitos de desenvolvimento remoto
O desenvolvimento remoto funciona da seguinte forma:
Execute o NetBeans IDE no sistema do cliente e você poderá criar projetos, editar arquivos e utilizar os recursos de assistência a códigos da mesma forma que faz em projetos locais. No entanto, ao construir, executar ou depurar o projeto, o processo é executado no servidor remoto com a saída e a entrada transferidas para o sistema do cliente. Desta forma, não devem haver diferenças no fluxo de trabalho entre o desenvolvimento local e remoto após a configuração da máquina de desenvolvimento remoto.
Os elementos necessários para permitir o uso de uma máquina remota para a execução das ferramentas são:
O sistema do cliente local e o sistema remoto devem ter acesso aos arquivos do projeto, ou através de recursos compartilhados, ou através do uso do protocolo Secure Shell (SSH).
O cliente deve poder se conectar a um sistema remoto através de uma secure shell (SSH) mesmo se os arquivos do projeto estiverem em pastas compartilhadas.
O sistema remoto deve ter acesso a uma coleção de ferramentas suportadas.
O sistema remoto deve possuir as bibliotecas do sistema de suporte que seu projeto necessita para habilitar a assistência ao código.
Cada um destes requisitos são explicados abaixo.
Compartilhando fontes
Tanto o sistema do cliente como o servidor remoto devem ter conhecimento dos arquivos de origem. Os arquivos de origem podem estar em um caminho de rede compartilhada ou podem ser copiados de forma segura pelo IDE a partir do sistema local para o sistema remoto. Na seção Configurando o sistema, é possível encontrar mais detalhes sobre as formas de configurar as pastas compartilhadas em diferentes sistemas.
Conectividade
Todas as transferências de dados entre o cliente e o servidor, exceto o caminho de rede compartilhada, são feitas através do protocolo Secure Shell (SSH). O SSH é um protocolo comum para comunicações seguras entre dois dispositivos de rede. Para permitir a conexão SSH entre o sistema do cliente e o servidor, o seu servidor deve ter o servidor SSH instalado.
Coleções de ferramentas
O IDE deve estar habilitado a encontrar uma coleção de ferramenta suportada: Coleção do compilador GNU, Sun Studio ou Oracle Solaris Studio. As ferramentas executáveis devem estar no caminho da conta do usuário utilizada para conectar à máquina remota, de forma que o IDE possa localizar facilmente tais ferramentas. Isto é verdadeiro principalmente em caso de as ferramentas estarem instaladas em uma localização sem ser a padrão.
Assistência ao código
Para um suporte correto dos recursos do editor, como por exemplo a conclusão de código e o realce semântico, a janela Classes, e outros, o projeto deve ser utilizado no ambiente apropriado, o que significa que o sistema inclui definições macro, plataforma, etc. Todas estas informações são reunidas no servidor remoto e armazenadas localmente no sistema do cliente, de forma que, ao editar localmente, a assistência de código funcionará mesmo quando o projeto estiver configurado para utilizar uma máquina de desenvolvimento remoto.
Configurando o sistema
O sistema remoto deve permitir que haja comunicação através do protocolo SSH do cliente no qual se está executando o IDE. Se quiser utilizar o compartilhamento de arquivos em vez de permitir que o IDE copie os arquivos para o servidor remoto, o compartilhamento de arquivos de ambos os sistemas deve ser configurado na rede.
Protocolo SSH
O servidor SSH geralmente está incluído nos sistemas operacionais Linux e Solaris e, na maioria dos casos, é executado por padrão. Caso não esteja, é possível encontrar informações sobre a instalação e o gerenciamento do SSH em http://en.wikipedia.org/wiki/Secure_Shell
O IDE fornece seu próprio cliente ssh, de forma que não é necessário instalar o cliente ssh no computador local.
Uma conexão SSH deve ser permitida entre o cliente e os sistemas do servidor, o que geralmente significa que a porta 22 deve estar aberta no servidor. Pode ser necessário o acesso de raiz ou a ajuda do administrador de sistema caso a porta 22 esteja desativada.
A SSH deve estar ativada entre os sistemas mesmo se não estiver usando a opção Smart Secure Copy para transferir os arquivos de projetos para um servidor remoto.
Compartilhando fontes
Caso ainda não tenha arquivos de configuração compartilhada entre seu sistema Windows e uma máquina remota Unix para outros usos, é bem mais simples utilizar a opção Smart Secure Copy ao invés do compartilhamento de arquivos.
Para a configuração do Windows para o UNIX®, há duas principais formas de compartilhamento de fontes:
Servidor Samba no sistema UNIX
Pacote Windows Services for UNIX (SFU) instalado no sistema Windows
Organização de fontes usando o Samba
Um servidor Samba permite que o usuário Windows mapeie as pastas NFS compartilhadas como unidades de rede do Windows. O pacote Samba está incluído na maioria das distribuições dos sistemas operacionais Linux e Solaris. Caso não esteja incluído na sua distribuição, é possível fazer seu download em www.samba.org
Caso possua o acesso raiz no seu servidor, você mesmo pode configurar o Samba seguindo as instruções nos links seguintes. Caso contrário, você terá que contatar o administrador do sistema.
Depois de iniciar o Samba, é possível mapear as pastas do servidor UNIX da mesma forma que as pastas do Windows.
Windows Services para UNIX (SFU)
Outra opção é o Windows Services For UNIX, um conjunto de utilitários fornecido pela Microsoft para acessar os sistemas de arquivos NFS a partir do Windows.
É possível baixá-los no Centro de download da Microsoft e ler a documentação na página Windows Services for Unix.
O pacote SFU não está disponível para os usuários do Windows Vista ou do Windows 7. O Windows Vista e o Windows 7 Enterprise e Ultimate Editions incluem os componentes do Services for Unix, renomeados para os aplicativos com base no Subsystem for UNIX (SUA), e o Client for NFS v3. Para obter mais informações, consulte http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX
Configuração do Mac OS X
O Mac OS X inclui suporte para conexão aos servidores Samba. O Mac OS X também pode montar NFS compartilhados a partir de um servidor.
É possível utilizar Localizador > Ir > Conectar ao servidor e inserir um endereço do servidor.
Para conectar aos servidores SMB/CIFS (Windows) e às pastas compartilhadas, insira o endereço do servidor em um destes formulários:
Não será solicitado inserir o nome do usuário e a senha, mas será verificada a autorização contra seu Mac UID. O UID é um inteiro exclusivo designado para o nome de usuário em sistemas operacionais similares ao Unix, como o Max OS X, o Solaris e o Linux. Para utilizar o NFS, o Mac UID deve ser o mesmo que o UID da sua conta no servidor.
Configuração UNIX-UNIX
Para compartilhamento de arquivos entre os sistemas Solaris ou Linux, não é necessária nenhuma configuração especial. Só é preciso compartilhar uma pasta de um dos sistemas ou pode utilizar o diretório inicial, caso este esteja montado em um servidor de arquivo de rede e esteja acessível a partir de ambos os sistemas.
Mapeamento de caminho
Ao utilizar o modelo de fontes compartilhadas, pode ser necessário mapear a localização das fontes na máquina local para o caminho utilizado na máquina remota para obter as fontes.
Por exemplo, observe esta configuração:
Servidor Solaris solserver com a pasta compartilhada /export/pub
Estação de trabalho com Windows XP em execução, com o SFU instalado e o caminho \\solserver\export\pub montado como unidade P:
Arquivos de origem do projeto localizados em solserver na pasta /export/pub/myproject
Neste caso, do ponto de vista do servidor, os arquivos de origem estão localizados no /export/pub/myproject. Porém, do ponto de vista do cliente, a localização dos arquivos de origem é P:\myproject. Portanto, é necessário informar ao IDE que estes caminhos estão mapeados:
/export/pub -> P:\
Se for configurado o recurso compartilhado para os arquivos de origem antes de configurar a máquina remota no NetBeans IDE, o IDE descobrirá automaticamente os mapeamentos dos caminhos necessários na maioria dos casos.
Configurando o IDE
No exemplo seguinte, a máquina do cliente é uma estação de trabalho que executa o Windows Vista. A máquina remota chamada b20 é um servidor que executa o sistema operacional Solaris.
Abra a janela Serviços selecionando Janela > Serviços.
Clique com o botão direito no nó Máquinas de desenvolvimento C/C++ e selecione Adicionar nova máquina.
Na caixa de diálogo Nova máquina de desenvolvimento remoto, o IDE descobre suas máquinas de rede locais. Os nomes das máquinas são adicionados a uma tabela na caixa de diálogo e são marcados como Disponível se estiverem em execução no servidor SSH.
Clique duas vezes no nome do servidor desejado, ou digite o nome do servidor diretamente no campo Nome da máquina. Clique em Próximo.
Na tela Configuração da máquina, digite o nome do usuário que você utiliza para efetuar o login na máquina remota, e selecione um método de autenticação. Para este tutorial, selecione Senha e clique em Próximo.
Caso deseje utilizar as teclas ssh, será necessário configurá-las primeiro fora do IDE. Então, será possível especificar a localização para as teclas ssh no IDE, e utilizar as teclas para fazer a conexão ssh à máquina de desenvolvimento remoto.
Após ter sido feita a conexão ao servidor, insira a senha na caixa de diálogo Autenticação.
Outra opção é clicar em Lembrar senha para que o IDE seja criptografado e salve a senha no disco local, de forma que não seja necessário inseri-la cada vez que o IDE se conectar a uma máquina remota.
O IDE configura a máquina remota e procura por coleções de ferramentas na máquina remota.
Quando a máquina é configurada com êxito, uma página de resumo exibe informações sobre a máquina remota: a plataforma, o nome da máquina, o nome de usuário utilizado para login e as coleções de ferramentas encontradas.
Na parte inferior da página de resumo são exibidas duas opções adicionais. Caso sejam encontradas mais de uma coleção de ferramentas, é possível selecionar uma das coleções para ser a Coleção de ferramentas padrão.
Para obter a opção Sincronização:
Selecione a opção Smart Secure Copy se o sistema do cliente e a máquina de desenvolvimento remoto não tiverem acesso compartilhado aos arquivos do projeto. Ao selecionar a opção Smart Secure Copy, os arquivos do projeto serão copiados no diretório Home do servidor usando o comando scp ou sftp.
Selecione Compartilhamento do sistema de arquivos (sem sincronização) se o cliente e o servidor tiverem acesso à mesma pasta.
Clique em Concluir para completar o assistente.
Na janela Serviços, a nova máquina remota é exibida sob o nó Máquinas de desenvolvimento C/C++. Expanda o nó para a nova máquina e deverá obter uma ou mais coleções de ferramentas na lista Coleções de ferramentas.
Caso não esteja listada nenhuma coleção de ferramentas:
Na máquina remota, adicione o diretório bin da coleção de ferramentas ao caminho do usuário na máquina. Caso não haja nenhuma coleção disponível na máquina remota, será necessário instalar a coleção do compilador GNU ou o software do Sun Studio ou do Oracle Solaris Studio na máquina remota.
Quando o caminho para as ferramentas executáveis estiver no caminho do usuário da máquina remota, você pode tentar configurar novamente a coleção de ferramentas no sistema local. Clique com o botão direito na máquina na janela Serviços e selecione Restaurar coleções de ferramentas padrão, para fazer com que o IDE tente encontrar novamente as coleções de ferramentas na máquina remota.
Alternativamente, clique com o botão direito na máquina na janela Serviços e selecione Adicionar coleção de ferramentas para especificar ou procurar por um caminho para uma coleção de ferramentas na máquina remota.
Ao obter uma coleção de ferramentas listada, a criação da máquina de desenvolvimento remoto está concluída. Vamos ver como se pode utilizá-la para o desenvolvimento.
Construção de um projeto local em uma máquina remota
Vamos criar um novo projeto modelo selecionando Arquivo > Novo projeto.
Expanda a opção Modelos > C/C++ e selecione Bem vindo ao projeto modelo e, a seguir, clique em Próximo.
Neste exemplo, nós não utilizaremos as pastas compartilhadas, portanto podemos manter a localização sugerida para o projeto na pasta Projetos NetBeans, no diretório de usuário Windows, o qual não é compartilhado.
Caso queira utilizar os arquivos de origem compartilhados, certifique-se de selecionar, na opção Localização do projeto, um caminho que seja compartilhado com o servidor remoto.
Selecione a nova máquina remota para a Máquina de desenvolvimento. A lista de coleção de ferramentas está atualizada para exibir as ferramentas disponíveis na máquina remota.
Clique em Concluir para criar o projeto. Observe que quando você posiciona o mouse sobre o nome do projeto na janela Projetos, uma dica de ferramenta exibe a localização do projeto e a máquina remota que está configurada para construção.
Agora, clique em Construir na barra de ferramentas ou clique com o botão direito do mouse no nó do projeto e selecione Construir, e o projeto modelo será construído remotamente na máquina remota de desenvolvimento selecionada.
Na captura de tela a seguir, é possível ver em uma dica de ferramenta que o arquivo original está localizado na máquina local e o suporte de assistência ao código está funcionando ao pressionar Ctrl-Espaço com o cursor no símbolo argc.
Na janela Saída é possível ver o nome da máquina onde o aplicativo foi construído e que os compiladores remotos e os utilitários de execução foram utilizados para a construção. Os arquivos de projeto estão no diretório do usuário .netbeans/remote/plataforma do sistema na máquina remota.
Quase não há diferença no fluxo de trabalho depois da configuração de uma máquina remota. Você pode utilizar todos os recursos do editor, construir, executar, testar e depurar como está acostumado a fazer localmente.
Iniciando uma sessão terminal na máquina remota
É possível iniciar a sessão terminal da secure shell dentro do IDE para conectar ao sistema remoto ou ao sistema local. Este recurso é conveniente principalmente nas plataformas Windows, as quais não suportam nativamente a SSH.
No IDE, selecione Janela > Saída > Terminal para abrir a aba Terminal, que pode ser utilizada para iniciar uma sessão terminal na máquina local ou remota.
Clique no botão Criar terminal remoto para abrir a caixa de diálogo Conexão SSH.
Insira o nome do usuário e o nome da máquina e, a seguir, clique em OK.
O IDE inicia a sessão ssh para a máquina especificada e a aba Terminal exibe a solicitação de login na máquina remota.
Vá para o diretório $HOME/.netbeans/remote para ver seus arquivos de projeto, os quais, por padrão, são salvos em subdiretórios que indicam o nome e a plataforma do sistema local onde o projeto foi criado.
É possível utilizar o terminal interno IDE para fazer qualquer coisa que feita geralmente em uma sessão ssh para uma máquina remota.
Dicas de desenvolvimento remoto
É possível alternar a máquina de desenvolvimento para um projeto clicando com o botão direito do mouse no nó Projeto e selecionando Definir a máquina de desenvolvimento remoto.
É possível mudar as propriedades de uma máquina de desenvolvimento remoto após uma configuração inicial, clicando com o botão direito na máquina na janela Serviços e selecionando Propriedades.
Caso esteja usando uma máquina remota para construir e executar um aplicativo com uma UI gráfica, é possível selecionar Ativar X11 Forwarding nas propriedades das máquinas de forma que a UI possa ser vista no seu sistema local enquanto é executada na máquina remota.
É possível acessar a máquina remota e as informações sobre ferramentas a partir do menu Ferramentas do IDE, assim como a janela Serviços. Selecione Ferramentas > Opções > C/C++ > Construir ferramentas e clique no botão Editar ao lado da lista Máquina de desenvolvimento.
Ao utilizar o compartilhamento de arquivo para os arquivos do projeto, é possível mapear o local e os caminhos remotos para a pasta compartilhada através do recurso Mapeamento do caminho. É possível definir o mapeamento selecionando Ferramentas > Opções > C/C++ > Construir ferramentas > Editar. A seguir, selecione a máquina remota e clique no botão Mapeamento do caminho.
Caso esteja construindo o projeto remotamente ao compilar bibliotecas ou gerar outros arquivos adicionais ao produto de construção principal, o IDE solicitará o download dos arquivos para o sistema local. É possível selecionar quais os arquivos alterados devem ser baixados.