Como construir plugins dnscrypt?

1

Eu tentei criar um plugin para o DNSCrypt, mas ele continua me dizendo que precisa de alguns outros arquivos.

Eu preciso saber como posso construí-lo e nunca compilei um pacote do zero. Eu sempre fui capaz de usar um repositório.

Eu uso o Ubuntu 14.04 (64 bits) com o gcc em CodeAnywhere

Aqui está o link para o plugin: Plugin GeoIP

Aqui está o link para dnscrypt: DNSCrypt

Aqui está o que eu recebo quando tento compilar:

cabox@box-codeanywhere:~/workspace$ cmake . && make                                                                                                            
CMake Error: The source directory "/home/cabox/workspace" does not appear to contain CMakeLists.txt.                                                           
Specify --help for usage, or press the help button on the CMake GUI.                                                                                           
cabox@box-codeanywhere:~/workspace$ cd plugin                                                                                                                  
cabox@box-codeanywhere:~/workspace/plugin$ cmake . && make                                                                                                     
-- Configuring done                                                                                                                                            
-- Generating done                                                                                                                                             
-- Build files have been written to: /home/cabox/workspace/plugin                                                                                              
[100%] Building C object CMakeFiles/geoip-block.dir/geoip-block.c.o                                                                                            
/home/cabox/workspace/plugin/geoip-block.c:14:29: fatal error: dnscrypt/plugin.h: No such file or directory                                                    
 #include <dnscrypt/plugin.h>                                                                                                                                  
                             ^                                                                                                                                 
compilation terminated.                                                                                                                                        
make[2]: *** [CMakeFiles/geoip-block.dir/geoip-block.c.o] Error 1                                                                                              
make[1]: *** [CMakeFiles/geoip-block.dir/all] Error 2                                                                                                          
make: *** [all] Error 2                         

Se mais informações forem necessárias, eu adicionarei o mais rápido possível.

A compilação Dnscrypt estava tudo bem, mas eu ainda recebo link

    
por poqdavid 21.11.2014 / 16:44

1 resposta

2

Atualizar

Parece que o Terdon adicionou e atualizou alguns comandos durante o feriado de Ação de Graças. Isso adiciona funcionalidades extras e necessárias. Quero agradecer-lhe por adicionar estes.

Tarefa

Primeiro, vamos começar com uma lousa limpa.

cd ~ && rm -Rv workspace

Agora, nos certificamos de que temos as ferramentas certas para o Ubuntu:

sudo apt-get update  ## run make sure you get all things right
sudo apt-get install build-essential checkinstall
sudo apt-get install cmake wget software-properties-common python-software-properties autoconf
sudo add-apt-repository ppa:shnatsel/dnscrypt
sudo add-apt-repository ppa:maxmind/ppa
sudo apt-get update
sudo apt-get install libtool openssl libssl-dev

Em seguida, caso você queira um pacote no Controle de código-fonte, precisamos adicionar mais ferramentas. O DNScrypt não precisa disso, mas no caso de você criar um item da fonte novamente:

sudo apt-get install cvs subversion git-core mercurial

Você deve estar em seu diretório home, então agora precisamos do tarball de origem para dnscrypt-proxy:

  • Faça o download do libsodium (se você não o tiver instalado)

    wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.1.tar.gz
    tar xzf libsodium-1.0.1.tar.gz && cd libsodium-1.0.1 && ./configure
    make && make check && sudo make install
    sudo ldconfig && ./configure && cd ..
    
  • Faça o download da API do geoip (se você não a tiver instalado)

    wget https://github.com/maxmind/geoip-api-c/archive/v1.6.3.tar.gz
    tar xzf v1.6.3.tar.gz && cd geoip-api-c-1.6.3
    sh bootstrap && ./configure
    make && make check && sudo make install && cd ..
    
  • Faça o download dos ldns (se você não o tiver instalado)

    wget http://www.nlnetlabs.nl/downloads/ldns/ldns-1.6.17.tar.gz
    tar xzf ldns-1.6.17.tar.gz && cd ldns-1.6.17
    ./configure && make && sudo make install && cd ..
    
  • Faça o download do DNSCrypt-Proxy Versão 1.4.1 Tar.bz2 Arquivo. Para o Ubuntu Way, adicione este DNSCrypt-PPA Observe que este PPA é datado ( a versão mais recente é 1.4.0 para 13.10), portanto iremos instalar a partir da fonte

    tar -xvjpf dnscrypt-proxy-1.4.1.tar.bz2 && cd dnscrypt-proxy-1.4.1
    ./configure && make && sudo make install
    
    • Desde que excluímos o Plugin, precisamos baixar novamente o arquivo zip do GitHub Repo . O diretório que criamos será chamado de master

      sudo apt-get install zip unzip Tar não extrairá zips, por isso precisamos de novas ferramentas. Você já pode ter estes.

      unzip master.zip && cd master

    • Depois de descompactar o arquivo, vá para a pasta e edite CMakeLists.txt e adicione as linhas

include_directories(/home/cabox/workspace/dnscrypt-proxy-1.4.1/src/include) include_directories(/home/cabox/workspace/geoip-api-c-1.6.3/libGeoIP) include_directories(/home/cabox/workspace/ldns-1.6.17/ldns)

  • Em seguida, execute

    cmake . && make
    cd .. && cp -v master/nameofplugin.ext /some/dir/where/you/store/plugins
    

Por que seu erro está ocorrendo

O arquivo de cabeçalho para DNSCrypt plugin.h é instalado apenas em /usr/include/dnscrypt depois de você compilar com sucesso o próprio DNSCrypt. Você não pode compilar DNSCrypt por dois motivos:

  1. Você não tem o tarball de origem.
  2. Cross-Make, ou CMake é um sistema independente de compilação que não usa o processo padrão de compilação do Linux. Os clientes que o utilizam incluem o KDE e o Poppler.

Referências

  1. Usuário do Gentoo . Nós construímos a partir da Fonte rotineiramente. Toda atualização, na verdade.
  2. O Ubuntu EasyCompilingHOWTO
por 21.11.2014 / 17:48