Aiuto per compilazione amule adunanza con entware

Ciao a tutti,
sto cercando di installare amule adunanza su un NAS qnap 128a (architettura arm).
Ho visto le guide in aduteca ma non sono più valide per i qnap perchè basate su Optware mentre ora con gli ultimi firmware i qnap permetto di installare solo Entware non più optware. Di fatto non si possono più usare i comandi ipkg indicati nelle guide.
C’è qualche volenteroso che è in grado di aiutarmi e indicarmi come fare? Cercando anche altrove non si trova nulla, tutte le guide sono ferme a optware…

Ti aiuterei volentieri, ma non ho un qnap sotto mano (e costicchiano =)

Potresti provare sul forum di qnap magari, è più facile che trovi aiuto lì.

Poi sei riesci, posta qui la guida :wink:

mah il fatto è che avendo fastweb volevo installare adunanza, mentre amule sono già riuscito ad installarlo perchè il pacchetto è disponibile per entware senza necessità di compilarlo…

vediamo se c’è qualche buon samaritano… :wink:

Spera che il Dev @mr_hyde abbia del tempo libero da dedicarvi,
è l’unica possibilità!

Dunque,
io normalmente mi compilo amule e amuleadunanza per QNAP (io ho un 453Be, quindi x86_64).

Ovviamente uso i sorgenti versioni di sviluppo.
Non è difficile ma non è una cosa brevissima da spiegare, ti anticipo che uso una macchina virtuale di sviluppo Debian/UBuntu per compilare e creare i pacchetti e che, in generale, creo due pacchetti, uno per le wxWidgets (versione recente) ed uno per amule (o amuleadunanza).

Avrei sempre voluto fare un documentino da mettere nei sorgenti ma ovviamente non ho mai tempo…

Se mi ricordo in questi giorni provo a scrivere il tutto, nel fratempo ti suggerisco di cercare in rete un po’ di documentazione sul come si creano i pacchetti per Optware/OpenWrt (nasce tutto da questi), quindi qualcosa tipo

https://openwrt.org/docs/guide-developer/packages

2 Likes

Beh, io nel mentre ho installato e configurato amule “standard” (con avvio automatico da utenza non root prendendo un po dalle guide sparse in giro) tramite l’installazione del pacchetto disponibile per Entware della versione amule_2.3.2-1_aarch64-3.10. Il mio qnap 128a è infatti un aarch64 (credo arm v8). Fortunatamente funziona tutto bene :slight_smile:
.
Diciamo che mi resta il pallino di metterci adunanza (rimuovendo amule attuale), quindi se/quando avrai tempo per una guida ci proverò… :wink:

1 Like

PRIMA PARTE: preparazione environment

  1. leggere le seg. pagine a cui mi sono liberamente ispirato

https://oldwiki.archive.openwrt.org/about/toolchain

https://oldwiki.archive.openwrt.org/doc/howto/buildroot.exigence

  1. preparare una macchina linux (io ho creato una virtuale Debian), le guide riportate prima usano tipicamente Debian based, quindi i comandi e i pacchetti a cui farò riferimento sono appunto per Debian

  2. fai il boot nella macchina virtuale; consiglio di creare un utente apposta per creare i pacchetti Entware e di fare il login usando quello, in questo modo la home dell’utente alla fine conterrà solo quello che serve per il build Entware (per evitare, durante i lavori, di rischiare di cancellare accidentalmente altro)

  3. a questo punto occorre installare un po’ di cose che serviranno per scaricare i sorgenti e compilare.
    Suggerisco quindi di “diventare momentaneamente” root con

su -

e quindi installare i segg. pacchetti con

apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev
apt-get install subversion mercurial

alla fine uscire dall’utenza di root con

logout

o, in alternativa, digitate semplicemente CTRL+D

  1. E aprire sempre un terminale/shell con l’utente da usare per compilare e fare i pacchetti Entware (se non avete chiuso la shell del punto precedente va benissimo pure quella, però occorre ricordarsi di uscire dall’utente root) e scaricate i sorgenti di Entware con git
cd
git clone https://github.com/Entware/Entware.git

Se è andato tutto bene, dovrebbe esserci nella home una nuova directory che si chiama “Entware”

  1. Ora occorre decidere per quale architettura compilare e selezionare quindi il file di impostazioni da usare per questa architettura.

Nella directory Entware/configs trovate le architetture al momento disponibili, occorre copiare uno di questi file con il nome “.config” (sì, usa lo stesso sistema dei sorgenti del kernel di linux) dentro la directory Entware.

Nel caso del 128a immagino occorra la aarch64 (@blueandriver meglio però se verifichi, può essere utile controllare l’output dei comandi “/opt/bin/opkg print-architecture” e “uname -a” eseguiti sul NAS), quindi supponendo che sia vero occorre fare

cp configs/aarch64-3.10.config .config
  1. PUNTO DA VERIFICARE NON SONO SICURISSIMO CHE SERVA VERAMENTE
    Aggiornare la configurazione con il comando
make oldconfig

ATTENZIONE: il sistema moolto probabilmente chiederà, per le impostazioni “nuove” (=> impostazioni previste dai sorgenti che però non erano presenti nell’attuale .config) come comportarsi, nel dubbio provare a rispondere con il valore di default proposto

NOTA: come per il kernel di linux esiste anche “make menuconfig”, se non avete mai compilato il kernel di linux per ora lasciate perdere…

  1. ed ora la parte luuuuuunga (nel senso che, a seconda di quanto è veloce la vostra macchina, sarà una cosa che occuperà moooooooooolto tempo oppure solo mooolto tempo :slight_smile: )

date in sequenza i seg. comandi

make tools/install
make toolchain/install
make target/compile

Ok, per questa sera basta, domani spero di ricordarmi di aggiungere la parte 2 (ma anticipo che probabilmente ci sarà anche una parte 3…)

Ciao,
Mr Hyde

2 Likes

SECONDA PARTE: preparazione di wxWidgets e amuleadunanza

Adesso riporto come ho fatto io…
Ho creato dei custom feed (vedi sotto) per i pacchetti delle wxWidgets e amuleadunanza (e amule), partendo dai pacchetti esistenti attualmente in Entware.

Trovate i miei feed qui: custom feed mr_hyde

In pratica: i custom feed sono ciò che serve al meccanismo di compilazione di Entware per “costruire” i pacchetti (sono in pratica file di definizione che contengono la descrizione del pacchetto, un Makefile vero e proprio che dice da dove e come scaricare i sorgenti, come compilarli e quali sono le dipendenze/altri pacchetti che servono per compilare o far funzionare il pacchetto che stiamo creando - insomma, le “dipendenze”)

I feed del link sopra permettono di fare il build di:

  • amuleGIT (amule ufficiale, versione corrente di sviluppo)
  • amuleadunanzaSVN (amuleadunanza, versione corrente di sviluppo)
  • wxWidgets 3.1.3 (è usata per amuleGIT e amuleadunanzaSVN)

ATTENZIONE: per evitare sovrapposizioni con i pacchetti ufficiali di Entware nei miei custom feed ho modificato le directory in cui poi i pacchetti vengono installati:

  • per amuleadunanza viene creata la dir “/opt/amuleadunanzaSVN” (che poi a sua volta conterrà una bin contenente i vari binari
  • per amule, similarmente, viene creata “/opt/amuleGIT”

Se volete cambiare questa directory occorre modificare i “Makefile” che trovate nelle dir dei miei custom feed.

ATTENZIONE 2: per diminuire i tempi di compilazione di amule/amuleadunanza ho fatto in modo di evitare di compilare boost (se usate invece i feed ufficiali di Entware, almeno se non hanno cambiato rispetto al passato, occorrerà fare il build anche di boost.

Vi consiglio quindi di scaricare l’ultima versione di boost (intendo i sorgenti, al momento in cui scrivo l’ultima versione e’ la 1.72).

Ok, ora mettiamo tutto insieme.

  • scaricate quindi il file contenente i miei feed e decomprimetelo allo stesso livello della dir Entware (se avete fatto tutto come suggerito nel post precedente, in pratica nella home)
  • scaricate boost, create una directory “src” nella home e quindi nella home decomprimete boost

A questo punto dovreste avere una struttura tipo la seg.:

drwxr-xr-x 17 mrhyde mrhyde  4096 Jan 10 23:51 Entware
drwxr-xr-x  5 mrhyde mrhyde  4096 Jan 10 23:23 entware_custom_feeds_mr_hyde
drwxr-xr-x  3 mrhyde mrhyde  4096 Jan 11 00:19 src

E “src” dovrebbe contenere

mrhyde@debby:~$ ls -la src
total 12
drwxr-xr-x  3 mrhyde mrhyde 4096 Jan 11 00:19 .
drwxr-xr-x 20 mrhyde mrhyde 4096 Jan 11 00:19 ..
drwxr-xr-x  8 mrhyde mrhyde 4096 Dec 10 01:45 boost_1_72_0

la dir dei feed invece:

mrhyde@debby:~$ ls -la entware_custom_feeds_mr_hyde
total 20
drwxr-xr-x  5 mrhyde mrhyde 4096 Jan 10 23:23 .
drwxr-xr-x 20 mrhyde mrhyde 4096 Jan 11 00:19 ..
drwxr-xr-x  4 mrhyde mrhyde 4096 Jan 10 23:45 amuleadunanzaSVN
drwxr-xr-x  4 mrhyde mrhyde 4096 Jan 10 23:29 amuleGIT
drwxr-xr-x  2 mrhyde mrhyde 4096 Nov 21 00:55 wxbase31

Ora occorre far capire a Entware che, oltre ai feed presenti nei sorgenti di Entware stesso, deve anche “considerare” i feed dentro la mia dir dei custom feed.

Per far questo occorre editare il file di test

Entware/feeds.conf

e aggiungere in fondo una riga che punti alla directory dei custom feed, nel mio caso ho aggiunto le seg. righe:


# Added for mr_hyde packages
src-link mr_hyde /home/mrhyde/entware_custom_feeds_mr_hyde

ovviamente dovete sostituire “/home/mrhyde/” con la dir dove avete decompresso i miei custom feed.

E poi occorre aggiornare i feed di Entware con

cd
cd Entware
./scripts/feeds update -a

Quindi aggiungiamo i miei feed con

./scripts/feeds install libwxbase31
./scripts/feeds install amuleadunanzaSVN
./scripts/feeds install amuleGIT

A questo punto occorre “adattare” i Makefile di amule/amuleadunanza per la vostra macchina di sviluppo.

  1. entrate nella dir dei miei custom feed
  2. entrate nella dir di amuleGIT (per amule) o amuleadunanzaSVN (per amuleadunanza)
  3. editate il file “Makefile”
  4. cercate la riga contenente
--with-boost=/home/mrhyde/src/boost_1_72_0 \

e modificatela per mettere il path corretto dove avete decompresso boost, quindi salvate il file e uscite.

Per aMuleAdunanzA: occorre ancora aggiornare un po’ di dati (in particolare il numero di versione), ho cercato di automatizzare la cosa (ovviamente occorre che la macchina virtuale sia collegata in rete), quindi fate

cd
cd entware_custom_feeds_mr_hyde/amuleadunanzaSVN
./update_version_number.sh

Per amule: qui non ho ancora fatto uno script, prima o poi aggiornerò il post per spiegare come si fa, per ora usate lo script così come è

A questo punto aggiorniamo di nuovo i feed di Entware

cd
cd Entware
./scripts/feeds update -a

Ed ora abilitiamo le compilazioni di wxWigets31, amuleGIT e amuleadunanzaSVN (insomma: i pacchetti definiti nei miei custom feed, gli altri pacchetti standard di Entware, in generale, sono già abilitati).

Per far questo si procede come si farebbe con il kernel di linux (Entware usa la stessa struttura a maschere)

cd
cd Entware
make menuconfig

(CONTINUA…)

2 Likes

Dovreste trovarvi a una maschera come in figura:

In questa maschera potete spostarvi usando le frecce/tasti cursore, spostatevi sulla riga “Libraries” e premete return/enter

A questo punto contunuate a muovervi verso il basso fino a che non trovate “libwxbase31”

Come vedete alcune righe hanno “” mentre la libwxbase31 ha “< >”, questo significa che al momento non è abilitata la compilazione per questa.
Per abilitarla, mentre la selezione corrente è proprio sulla riga delle libwxbase31, semplicemente premete la lettera “M” sulla tastiera (e dovrebbe apparire “”) quindi premete il tasto cursore/freccia destra per selezionare in basso il tasto “Save”:

e premete nuovamente il tasto return/enter

Se vi venisse proposto, accettate .config come nome del file e quindi premete enter fino a che non tornate alla stessa maschera, quindi usate il tasto cursore/freccia sinistra per selezionare il tasto “Exit” e premete return/enter per tornare alla schermata di partenza

Scendete di una riga e questa volta selezionate “Network” e premete return/enter

Quindi spostatevi su “P2P” e premete return/enter

Analogamente a quanto fatto prima, mettete la “M” sia a amuleGIT che amuleadunanzaSVN, quindi spostatevi sul tasto “Save” e slavate la configurazione

Una volta salvata la configurazione, continuate a premere i tasti “Exit” fino a che non tornerete alla shell.

Ok, è quasi fatta, ora teoricamente si può iniziare a compilare il tutto (ma sicuramente qualcosa l’avrò dimenticata…), lo vedremo nella prox puntata.
Per questa sera ciao a tutti e buona notte.

2 Likes

Grazie mille per la guida!
Sto provando a seguirla usando debian installato da zero su una virtualbox.
Il primo problema lo trovo al punto 8, il comando make /tools/install non va a buon fine e all’inizioa da una serie di warning. Ecco l’output del comando:

Output

user1@debian:~/Entware$ make tools/install
WARNING: Makefile ‘package/utils/busybox/Makefile’ has a dependency on ‘libpam’, which does not exist
WARNING: Makefile ‘package/utils/busybox/Makefile’ has a build dependency on ‘libpam’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libgnutls’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libopenldap’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libidn2’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libssh2’, which does not exist
WARNING: Makefile ‘package/boot/kexec-tools/Makefile’ has a dependency on ‘liblzma’, which does not exist
WARNING: Makefile ‘package/network/services/lldpd/Makefile’ has a dependency on ‘libnetsnmp’, which does not exist
WARNING: Makefile ‘package/network/config/ltq-adsl-app/Makefile’ has a build dependency on ‘ltq-adsl’, which does not exist
WARNING: Makefile ‘package/network/config/ltq-vdsl-app/Makefile’ has a build dependency on ‘ltq-vdsl’, which does not exist
WARNING: Makefile ‘package/network/utils/nftables/Makefile’ has a dependency on ‘jansson’, which does not exist
make[1] tools/install
make[2] -C tools/flock compile
make[2] -C tools/xz compile
make[2] -C tools/sed compile
make[2] -C tools/patch compile
make[2] -C tools/tar compile
make[2] -C tools/m4 compile
make[2] -C tools/autoconf compile
make[2] -C tools/pkg-config compile
make[2] -C tools/automake compile
make[2] -C tools/missing-macros compile
make[2] -C tools/libtool compile
make[2] -C tools/gmp compile
make[2] -C tools/mpfr compile
make[2] -C tools/mpc compile
make[2] -C tools/libelf compile
make[2] -C tools/expat compile
make[2] -C tools/flex compile
make[2] -C tools/bison compile
make[2] -C tools/mklibs compile
make[2] -C tools/sstrip compile
make[2] -C tools/findutils compile
make[2] -C tools/quilt compile
make[2] -C tools/mm-macros compile
make[2] -C tools/cmake compile
make[2] -C tools/bc compile
make[2] -C tools/gengetopt compile
make[2] -C tools/patchelf compile
make[2] -C tools/mtools compile
make[2] -C tools/lzma compile
make[2] -C tools/zip compile
make[2] -C tools/go-bootstrap compile
make -r tools/install: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what’s going on
make: *** [/home/user1/Entware/include/toplevel.mk:218: tools/install] Error 1

Cosa potrebbe essere?

Per fare la guida ho anche io creato una Debian 64 (per la precisione ho usato la ISO debian-bullseye-DI-alpha1-amd64-netinst.iso) da 0 e ho riportato in questa guida ciò che facevo, passo per passo.

E’ però possibilissimo che mi sia dimenticato qualche copia e incolla!

Ad ogni modo, per capire cosa non va sulla tua, una prima cosa che puoi fare è esattamente quello che ti suggerisce la compilazione di Entware.
Vedi le ultime righe della tua compilazione?

make -r tools/install: build failed. Please re-run make with -j1 V=s or V=sc for a higher verbosity level to see what’s going on

Normalmente Entware sopprime un bel po’ di output e presumo provi anche a compilare un po’ di cose in parallelo per velocizzare le cose.

Quando però una compilazione fallisce, Entware ti invita a eliminare il parallelismo (parametro j) e ad aumentare la verbosity degli errori (parametro V)

Quindi prova a rilanciare la compilazione specificando quei parametri, quindi

make tools/install -j1 V=s

e riporta qui l’output.

Ciao,
Mr Hyde

Ho ricontrollato l’history dei comandi che ho usato io e c’è praticamente tutto.

Le uniche cose che non ho scritto, che non dovrebbero avere rilevanza, sono che, tra i comandi eseguiti come root, ho innanzitutto fatto

apt-get update
apt-get upgrade

per aggiornare il sistema

e anche

apt-get install vim vim-gtk3

per installare vim/gvim in modo da poter editare file

Prova anche tu a eseguirli (come root), riporto poi le altre installazioni eseguite come root nel caso ti fossero sfuggite o abbia sbagliato io prima il copia-incolla

apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev
apt-get install subversion mercurial

Allora, ho ricontrollato, ma mancava solo vim e vim-gtk3, per il resto tutto installato e aggiornato e seguito alla regola la tua guida partendo da una virtualbox debian pulita…

L’unica differenza è che la debian che sto usando è diversa da quella usata da te, io con virtual box ho montato debian-10.2.0-i386-xfce-CD-1.

Questo è invece l’output del make con il verbose, verso la fine compaiono gli errori:

Output

user1@debian:~/Entware$ make tools/install -j1 V=s
WARNING: Makefile ‘package/utils/busybox/Makefile’ has a dependency on ‘libpam’, which does not exist
WARNING: Makefile ‘package/utils/busybox/Makefile’ has a build dependency on ‘libpam’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libgnutls’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libopenldap’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libidn2’, which does not exist
WARNING: Makefile ‘package/network/utils/curl/Makefile’ has a dependency on ‘libssh2’, which does not exist
WARNING: Makefile ‘package/boot/kexec-tools/Makefile’ has a dependency on ‘liblzma’, which does not exist
WARNING: Makefile ‘package/network/services/lldpd/Makefile’ has a dependency on ‘libnetsnmp’, which does not exist
WARNING: Makefile ‘package/network/config/ltq-adsl-app/Makefile’ has a build dependency on ‘ltq-adsl’, which does not exist
WARNING: Makefile ‘package/network/config/ltq-vdsl-app/Makefile’ has a build dependency on ‘ltq-vdsl’, which does not exist
WARNING: Makefile ‘package/network/utils/nftables/Makefile’ has a dependency on ‘jansson’, which does not exist
make[1]: Entering directory ‘/home/user1/Entware’

  • mkdir -p /home/user1/Entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27
  • cd /home/user1/Entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27
  • mkdir -p bin lib include stamp
    mkdir -p /home/user1/Entware/build_dir/target-aarch64_cortex-a53_glibc-2.27/stamp
    touch /home/user1/Entware/staging_dir/target-aarch64_cortex-a53_glibc-2.27/.prepared
  • mkdir -p /home/user1/Entware/staging_dir/host
  • cd /home/user1/Entware/staging_dir/host
  • mkdir -p bin lib include stamp
    mkdir -p /home/user1/Entware/build_dir/host/stamp /home/user1/Entware/staging_dir/host/include/sys
    install -m0644 /home/user1/Entware/tools/include/.h /home/user1/Entware/staging_dir/host/include/
    install -m0644 /home/user1/Entware/tools/include/sys/
    .h /home/user1/Entware/staging_dir/host/include/sys/
    ln -sf lib /home/user1/Entware/staging_dir/host/lib64
    touch /home/user1/Entware/staging_dir/host/.prepared
    make[2]: Entering directory ‘/home/user1/Entware/tools/flock’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/flock’
    time: tools/flock/compile#0.07#0.04#0.13
    make[2]: Entering directory ‘/home/user1/Entware/tools/xz’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/xz’
    time: tools/xz/compile#0.12#0.04#0.20
    make[2]: Entering directory ‘/home/user1/Entware/tools/sed’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/sed’
    time: tools/sed/compile#0.11#0.05#0.20
    make[2]: Entering directory ‘/home/user1/Entware/tools/patch’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/patch’
    time: tools/patch/compile#0.11#0.06#0.19
    make[2]: Entering directory ‘/home/user1/Entware/tools/tar’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/tar’
    time: tools/tar/compile#0.12#0.06#0.19
    make[2]: Entering directory ‘/home/user1/Entware/tools/m4’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/m4’
    time: tools/m4/compile#0.11#0.08#0.19
    make[2]: Entering directory ‘/home/user1/Entware/tools/autoconf’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/autoconf’
    time: tools/autoconf/compile#0.09#0.04#0.16
    make[2]: Entering directory ‘/home/user1/Entware/tools/pkg-config’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/pkg-config’
    time: tools/pkg-config/compile#0.11#0.04#0.16
    make[2]: Entering directory ‘/home/user1/Entware/tools/automake’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/automake’
    time: tools/automake/compile#0.12#0.08#0.22
    make[2]: Entering directory ‘/home/user1/Entware/tools/missing-macros’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/missing-macros’
    time: tools/missing-macros/compile#0.05#0.04#0.11
    make[2]: Entering directory ‘/home/user1/Entware/tools/libtool’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/libtool’
    time: tools/libtool/compile#0.11#0.04#0.18
    make[2]: Entering directory ‘/home/user1/Entware/tools/gmp’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/gmp’
    time: tools/gmp/compile#0.17#0.09#0.29
    make[2]: Entering directory ‘/home/user1/Entware/tools/mpfr’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/mpfr’
    time: tools/mpfr/compile#0.12#0.06#0.19
    make[2]: Entering directory ‘/home/user1/Entware/tools/mpc’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/mpc’
    time: tools/mpc/compile#0.09#0.06#0.17
    make[2]: Entering directory ‘/home/user1/Entware/tools/libelf’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/libelf’
    time: tools/libelf/compile#0.08#0.04#0.13
    make[2]: Entering directory ‘/home/user1/Entware/tools/expat’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/expat’
    time: tools/expat/compile#0.11#0.02#0.15
    make[2]: Entering directory ‘/home/user1/Entware/tools/flex’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/flex’
    time: tools/flex/compile#0.09#0.05#0.17
    make[2]: Entering directory ‘/home/user1/Entware/tools/bison’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/bison’
    time: tools/bison/compile#0.12#0.07#0.21
    make[2]: Entering directory ‘/home/user1/Entware/tools/mklibs’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/mklibs’
    time: tools/mklibs/compile#0.08#0.04#0.14
    make[2]: Entering directory ‘/home/user1/Entware/tools/sstrip’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/sstrip’
    time: tools/sstrip/compile#0.09#0.02#0.13
    make[2]: Entering directory ‘/home/user1/Entware/tools/findutils’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/findutils’
    time: tools/findutils/compile#0.13#0.10#0.23
    make[2]: Entering directory ‘/home/user1/Entware/tools/quilt’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/quilt’
    time: tools/quilt/compile#0.09#0.04#0.15
    make[2]: Entering directory ‘/home/user1/Entware/tools/mm-macros’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/mm-macros’
    time: tools/mm-macros/compile#0.09#0.04#0.16
    make[2]: Entering directory ‘/home/user1/Entware/tools/cmake’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/cmake’
    time: tools/cmake/compile#0.96#0.76#2.26
    make[2]: Entering directory ‘/home/user1/Entware/tools/bc’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/bc’
    time: tools/bc/compile#0.08#0.04#0.13
    make[2]: Entering directory ‘/home/user1/Entware/tools/gengetopt’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/gengetopt’
    time: tools/gengetopt/compile#0.09#0.06#0.18
    make[2]: Entering directory ‘/home/user1/Entware/tools/patchelf’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/patchelf’
    time: tools/patchelf/compile#0.10#0.03#0.15
    make[2]: Entering directory ‘/home/user1/Entware/tools/mtools’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/mtools’
    time: tools/mtools/compile#0.10#0.03#0.15
    make[2]: Entering directory ‘/home/user1/Entware/tools/lzma’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/lzma’
    time: tools/lzma/compile#0.11#0.03#0.20
    make[2]: Entering directory ‘/home/user1/Entware/tools/zip’
    make[2]: Leaving directory ‘/home/user1/Entware/tools/zip’
    time: tools/zip/compile#0.11#0.05#0.19
    make[2]: Entering directory ‘/home/user1/Entware/tools/go-bootstrap’
    mkdir -p /home/user1/Entware/dl
    SHELL= flock /home/user1/Entware/tmp/.go1.4.3.linux-386.tar.gz.flock -c ’ /home/user1/Entware/scripts/download.pl “/home/user1/Entware/dl” “go1.4.3.linux-386.tar.gz” “ce3140662f45356eb78bc16a88fc7cfb29fb00e18d7c632608245b789b2086d2” “” “https://storage.googleapis.com/golang” ’
    Can’t exec “curl”: No such file or directory at /home/user1/Entware/scripts/download.pl line 77.
  • wget --tries=5 --timeout=20 --no-check-certificate --output-document=- https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
    –2020-01-12 18:43:04-- https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
    Resolving storage.googleapis.com (storage.googleapis.com)… 172.217.22.80, 2a00:1450:4001:800::2010
    Connecting to storage.googleapis.com (storage.googleapis.com)|172.217.22.80|:443… connected.
    HTTP request sent, awaiting response… 200 OK
    Length: 50117362 (48M) [application/octet-stream]
    Saving to: ‘STDOUT’
  •                                       100%[========================================================================================>]  47.79M  3.14MB/s    in 16s     
    

2020-01-12 18:43:26 (3.08 MB/s) - written to stdout [50117362/50117362]

Hash of the downloaded file does not match (file: 20c666025dd84dd7f2ec856aa5c0c104b6477c13b564113555b048a65e105306, requested: ce3140662f45356eb78bc16a88fc7cfb29fb00e18d7c632608245b789b2086d2) - deleting download.
Can’t exec “curl”: No such file or directory at /home/user1/Entware/scripts/download.pl line 77.

Download failed.
Can’t exec “curl”: No such file or directory at /home/user1/Entware/scripts/download.pl line 77.

Download failed.
Can’t exec “curl”: No such file or directory at /home/user1/Entware/scripts/download.pl line 77.

Download failed.
No more mirrors to try - giving up.
make[2]: *** [Makefile:38: /home/user1/Entware/dl/go1.4.3.linux-386.tar.gz] Error 2
make[2]: Leaving directory ‘/home/user1/Entware/tools/go-bootstrap’
time: tools/go-bootstrap/compile#5.74#2.41#37.97
make[1]: *** [tools/Makefile:130: tools/go-bootstrap/compile] Error 2
make[1]: Leaving directory ‘/home/user1/Entware’
make: *** [/home/user1/Entware/include/toplevel.mk:218: tools/install] Error 2

ho provato anche a fare
apt-get install curl
poi con la user1 rifare il makr install ma l’errore finale diventa:

Output


mkdir -p /home/user1/Entware/dl
SHELL= flock /home/user1/Entware/tmp/.go1.4.3.linux-386.tar.gz.flock -c ’ /home/user1/Entware/scripts/download.pl “/home/user1/Entware/dl” “go1.4.3.linux-386.tar.gz” “ce3140662f45356eb78bc16a88fc7cfb29fb00e18d7c632608245b789b2086d2” “” “https://storage.googleapis.com/golang” ’

  • curl -f --connect-timeout 20 --retry 5 --location --insecure https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 47.7M 100 47.7M 0 0 1699k 0 0:00:28 0:00:28 --:–:-- 2937k
    Hash of the downloaded file does not match (file: 20c666025dd84dd7f2ec856aa5c0c104b6477c13b564113555b048a65e105306, requested: ce3140662f45356eb78bc16a88fc7cfb29fb00e18d7c632608245b789b2086d2) - deleting download.
  • curl -f --connect-timeout 20 --retry 5 --location --insecure https://sources.openwrt.org/go1.4.3.linux-386.tar.gz
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:–:-- 0:00:05 --:–:-- 0
    curl: (22) The requested URL returned error: 404 Not Found
    Download failed.
  • curl -f --connect-timeout 20 --retry 5 --location --insecure https://mirror2.openwrt.org/sources/go1.4.3.linux-386.tar.gz
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:–:-- 0:00:05 --:–:-- 0
    curl: (22) The requested URL returned error: 404 Not Found
    Download failed.
  • curl -f --connect-timeout 20 --retry 5 --location --insecure https://src.entware.net/go1.4.3.linux-386.tar.gz
    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    0 0 0 0 0 0 0 0 --:–:-- 0:00:05 --:–:-- 0
    curl: (22) The requested URL returned error: 404
    Download failed.
    No more mirrors to try - giving up.
    make[2]: *** [Makefile:38: /home/user1/Entware/dl/go1.4.3.linux-386.tar.gz] Error 2
    make[2]: Leaving directory ‘/home/user1/Entware/tools/go-bootstrap’
    time: tools/go-bootstrap/compile#3.53#4.13#45.49
    make[1]: *** [tools/Makefile:130: tools/go-bootstrap/compile] Error 2
    make[1]: Leaving directory ‘/home/user1/Entware’
    make: *** [/home/user1/Entware/include/toplevel.mk:218: tools/install] Error 2

Ok, direi che non è colpa tua: il sistema ha solo provato a scaricare alcune cose ma non c’è riuscito.

Ti suggerisco di installare anche curl con

apt-get install curl

ovviamente devi farlo come root

(non è essenziale ma vedo dai tuoi log che, per scaricare i sorgenti via rete, prima prova ad usare “curl” e poi, non riuscendoci, riprova con “wget”, installando direttamente curl dovresti abbreviare un po’)

Per il resto forse hai solo avuto un po’ di sfiga nel senso che in quel momento per qualche motivo non è riuscito a scaricare i sorgenti di “go”

Usi forse un proxy?
Hai le variabili di ambiante del proxy configurate (e magari vuote)?
Per controllare puoi fare

echo $http_proxy
echo $https_proxy
echo $ftp_proxy

o anche

env | grep -i proxy

Se non hai queste variabili impostate va bene.
Se le hai impostate e sono vuote oppure contengono il proxy sbagliato va male.

Ad esempio ho una macchina virtuale dove, non ho ancora capito il perché ma non è che ci abbia perso troppo tempo, le variabili sono vuote:

mrhyde@OA:~/Entware$ env | grep proxy
ftp_proxy=http://
https_proxy=http://
http_proxy=http://

In questa macchina virtuale, se provo a fare quello che fa Entware per scaricare il file, lo scaricamento fallisce:

mrhyde@OA:~$ wget --tries=5 --timeout=20 --no-check-certificate --output-document=- https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
Error parsing proxy URL http://: Invalid host name.

Per ovviare, nella stessa shell, prima di eseguire il comando, rimuovo le variabili di ambiente (o le faccio puntare a un proxy).
Per rimuoverle

mrhyde@OA:~$ unset http_proxy
mrhyde@OA:~$ unset ftp_proxy
mrhyde@OA:~$ unset https_proxy

e a quel punto il comando va

mrhyde@OA:~$ wget --tries=5 --timeout=20 --no-check-certificate --output-document=- https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
--2020-01-12 20:25:40--  https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz
Resolving storage.googleapis.com (storage.googleapis.com)... 2a00:1450:4001:821::2010, 216.58.206.16
Connecting to storage.googleapis.com (storage.googleapis.com)|2a00:1450:4001:821::2010|:443... ^C

Comunque puoi provare anche a fare così: scarica il file https://storage.googleapis.com/golang/go1.4.3.linux-386.tar.gz e poi spostalo nella directory

Entware/dl

poi rilancia il make: se sei fortunato lo script lanciato dal make vedrà che hai già scaricato il file e quindi procederà con i passi successivi.

Se non ricordo male anche a me in passato in qualche esperimento si era piantato proprio nello stesso modo e proprio su go, immagino che il server sia mooolto trafficato, e avevo risolto proprio facendogli saltare il download.

Però mi raccomando i controlli sulle impostazioni del proxy, altrimenti rischi che si ripianti nuovamente nei passi successivi (le compilazioni di Entware più o meno funzionano in quel modo: capisce quali sono i sorgenti che servono, li scarica e li compila)

Se anche tu dovessi avere le var d’ambiente che puntano a stringa vuota ti consiglio di rimuoverle con gli unset come mostrato prima e poi, dalla stessa shell riprovare il make. In questo caso ti ricordo che l’unset resta valido solo sulla shell dove l’hai eseguito e solo fino a che hai la shell aperta.

Ciao,
Mr Hyde

dunque dunque, sono arrivato a prima di lanciare “make menuconfig”.
Il comando che riaggiorna i feed mi da un msg di errore:

ERROR: please fix feeds/mr_hyde/amuleadunanzaSVN/Makefile - see logs/feeds/mr_hyde/amuleadunanzaSVN/dump.txt for details

e il dump.txt segnala:

Dump

Collecting package info: done
user1@debian:~/Entware$
Build-Depends: libgd !BUILD_NLS:libiconv !BUILD_NLS:gettext
Package: amuleadunanzaSVN
Submenu: P2P
Version: 2016.1b1-r-1
Depends: +libc +GCC_LIBSSP:libssp +USE_GLIBC:librt +USE_GLIBC:libpthread +BUILD_NLS:libiconv-full +libpng +libncurses +libreadline +libwxbase31 +libcryptoxx +libbfd
Conflicts: amule +amuleGIT +amuleadunanza
Menu-Depends:
Provides:
Section: net
Category: Network
Repository: base
Title: Fastweb users P2P ed2k client derived from amule (MoonRover SVN-development version)
Maintainer:
Source: amuleadunanzaSVN-2016.1b1-r.tar.bz2
Type: ipkg
Description: aMuleAdunanzA is a mod of well known P2P client amule, used by customers of
italian Fastweb internet provider.
aMuleAdunanzA, like aMule, works on Linux, Mac, *BSD and Windows.
Warning: This is a development (SVN) release!
http://www.adunanza.net

@@

Makefile:138: *** Download/default is missing the VERSION field… Arresto.

Ho sbagliato qualcosa??

Ti sei ricordato di

cd
cd entware_custom_feeds_mr_hyde/amuleadunanzaSVN
./update_version_number.sh

?

l’esecuzione di update_version_number.sh ti ha forse dato qualche errore?

Gli unici comandi usati da quello script sono “svn” (subversion) e “sed”, quindi in caso non ti trovi uno dei due puoi sempre eseguire come root i segg. comandi per installarli

apt-get install sed subversion

ok, ho trovato l’errore. Lo script update_version_number.sh greppa “^Revision:” mentre dal comando “svn info …” esce “Revisione:”. L’ho sistemato e ora funziona. Ho fatto l’update dei feeds ma quando poi lanciomake menuconfig, prima di aprirsi il menu grafico, ho i seguenti warnings.

Li posso ignorare o devo sistemare qualcosa?

user1@debian:~/Entware$ make menuconfig
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libgnutls', which does not exist
WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libopenldap', which does not exist
WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libidn2', which does not exist
WARNING: Makefile 'package/network/utils/curl/Makefile' has a dependency on 'libssh2', which does not exist
WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
WARNING: Makefile 'package/network/config/ltq-adsl-app/Makefile' has a build dependency on 'ltq-adsl', which does not exist
WARNING: Makefile 'package/network/config/ltq-vdsl-app/Makefile' has a build dependency on 'ltq-vdsl', which does not exist
WARNING: Makefile 'package/network/utils/nftables/Makefile' has a dependency on 'jansson', which does not exist
tmp/.config-target.in:208:warning: config symbol defined without type

tranquillo, ignorabili

Ottimo, sono arrivato alla fine.
Resta quindi da compilare, aspetto allora la ultima puntata :wink:

Riassumendo anche per chi volesse cimentarsi, la guida è completamente replicabile - nel mio caso architettura aarch64 - solo con 2 dettagli diversi:

  1. il make tolos/install non riusciva a scaricare un file tramite comando “curl” ma lo ho copiato manualmente con il comando wget
  2. ho editato lo script update_version_number.sh sostituendo “^Version:” con “^Versione:”
1 Like