# Scrivere Ebuild

## geps2

Mi sto cimentando ancora nello scrivere un ebuild (vedi http://gentoo-wiki.com/HOWTO_Write_Ebuilds). Quando vado a dare il comando per la creazione del file Manifest

```
ebuild myebuild.ebuild manifest
```

Tenta di scaricare i sorgenti da http://gentoo.inode.at/distfiles/file-0.1.zip invece che da SRC_URI, che ho impostato a http://www.sito.com/file-0.1.zip, dove ci sono i veri sorgenti... eppure ho trovato scritto dappertutto che i sorgenti sono scaricati dall'URL specificata nella variabile SRC_URI...

Che mi sono perso?

Incollo l'ebuild più sotto.

Grazie per l'attenzione, cia!

GePs

```

inherit eutils versionator

MY_PV=$(delete_all_version_separators)

MY_P=${PN}${MY_PV}

DESCRIPTION=""

HOMEPAGE="http://www.sito.com"

SRC_URI="http://www.sito.com/file-0.1.zip"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86 ~arm"

IUSE=""

DEPEND=""

src_compile() {

   cd ${WORKDIR}/file

        emake || die "emake failed"

}

src_install() {

        dodir /usr/sbin

   dodir /etc

   dodir /usr/share/man/man1

   cd ${WORKDIR}/file

   make install DESTDIR=${D} || die "einstall failed"

}

```

----------

## Scen

Prova con il "trucchetto"

```

RESTRICT="nomirror" ebuild myebuild.ebuild manifest

```

Basta farlo la prima volta per fargli scaricare il tarball dall'indirizzo SRC_URI "upstream".

----------

## fedeliallalinea

Ma teoricamente se non ricordo male prima prova sul mirror che hai impostato e se non lo trova passa al tuo SRC_URI.

----------

## geps2

 *Scen wrote:*   

> Prova con il "trucchetto"
> 
> ```
> 
> RESTRICT="nomirror" ebuild myebuild.ebuild manifest
> ...

 

Sembrerebbe non funzionare... va ancora sul mirror!!!

----------

## otaku

 *geps2 wrote:*   

>  *Scen wrote:*   Prova con il "trucchetto"
> 
> ```
> 
> RESTRICT="nomirror" ebuild myebuild.ebuild manifest
> ...

 

Prova ad inserire la variabile d'ambiente all'interno dell'ebuild.

----------

## Luca89

prova anche RESTRICT="primaryuri", comunque è solo problema di perdere tempo, perchè se non lo trova nei mirror il file lo scarica lo stesso dall'uri segnalato nell'ebuild.

----------

## geps2

 *Luca89 wrote:*   

> prova anche RESTRICT="primaryuri", comunque è solo problema di perdere tempo, perchè se non lo trova nei mirror il file lo scarica lo stesso dall'uri segnalato nell'ebuild.

 

Io non lo so come è possibile, ma invece del file ZIP puntato dalla variabile SRC_URI scarica in /usr/portage/distfiles un file di testo con lo stesso nome dell'archivio, che contiene codice html, di cui riporto qui un interessante estratto:

```

Your request for the object @ GD.TUWIEN.AC.AT may be incorrect,

the object has possibly been relocated or might actually be missing

for some reason, hmmm ...<p>

Sorry for the inconvenience.
```

----------

## Kernel78

 *geps2 wrote:*   

> Io non lo so come è possibile, ma invece del file ZIP puntato dalla variabile SRC_URI scarica in /usr/portage/distfiles un file di testo con lo stesso nome dell'archivio, che contiene codice html, di cui riporto qui un interessante estratto:
> 
> 

 

Non sono un mega esperto di web ma penso che il server possa discriminare la richiesta in base allo user agent ... se lo scarichi con wget ci riesci ?

----------

## fedeliallalinea

 *Kernel78 wrote:*   

>  se lo scarichi con wget ci riesci ?

 

Non penso visto che comunque portage usa wget

----------

## Kernel78

 *fedeliallalinea wrote:*   

>  *Kernel78 wrote:*    se lo scarichi con wget ci riesci ? 
> 
> Non penso visto che comunque portage usa wget

 

Giusto per puntualizzare:di default usa wget, io l'ho configurato per usare aria2c.

In ogni caso è proprio per avere una controprova che non abbia sbagliato l'indirizzo o altro e soprattutto da linea di comando può fare in un attimo una prova specificando un user-agent tipo firefox per verificare se possa essere quello il problema.

Ad ogni caso se il server ha di queste restrizioni (sempre che sia una questione di user-agent) probabilmente dovresti considerare di segnalare nel tuo ebuild che ci sono delle restrizioni sul fetch del pacchetto e farlo fare a mano, per sicurezza rileggiti la licenza sotto cui viene fornito tale sw.

----------

## geps2

 *Kernel78 wrote:*   

>  *geps2 wrote:*   Io non lo so come è possibile, ma invece del file ZIP puntato dalla variabile SRC_URI scarica in /usr/portage/distfiles un file di testo con lo stesso nome dell'archivio, che contiene codice html, di cui riporto qui un interessante estratto:
> 
>  
> 
> Non sono un mega esperto di web ma penso che il server possa discriminare la richiesta in base allo user agent ... se lo scarichi con wget ci riesci ?

 

Sì, con wget è ok...

----------

## Kernel78

 *geps2 wrote:*   

>  *Kernel78 wrote:*    *geps2 wrote:*   Io non lo so come è possibile, ma invece del file ZIP puntato dalla variabile SRC_URI scarica in /usr/portage/distfiles un file di testo con lo stesso nome dell'archivio, che contiene codice html, di cui riporto qui un interessante estratto:
> 
>  
> 
> Non sono un mega esperto di web ma penso che il server possa discriminare la richiesta in base allo user agent ... se lo scarichi con wget ci riesci ? 
> ...

 

allora hai sbagliato a scrivere l'url nell'ebuild ...

emerge di default si appoggia su wget quindi a meno che non emergano altri dettagli direi che il problema è questo ... controlla e facci sapere  :Wink: 

----------

## geps2

 *Kernel78 wrote:*   

>  *geps2 wrote:*    *Kernel78 wrote:*    *geps2 wrote:*   Io non lo so come è possibile, ma invece del file ZIP puntato dalla variabile SRC_URI scarica in /usr/portage/distfiles un file di testo con lo stesso nome dell'archivio, che contiene codice html, di cui riporto qui un interessante estratto:
> 
>  
> 
> Non sono un mega esperto di web ma penso che il server possa discriminare la richiesta in base allo user agent ... se lo scarichi con wget ci riesci ? 
> ...

 

L'URL sull'ebuild è corretto...

----------

## Kernel78

 *geps2 wrote:*   

> L'URL sull'ebuild è corretto...

 

Interessante ... sei sicuro ? non è che c'è finito dentro qualche carattere non stampabile ?

Prova a lanciare questi comandi

```
emerge -pf <tuoebuild> 2>&1 | cut -f1 -d " " | grep [ftp,http] > /tmp/lista.txt

wget -N -i /tmp/lista.txt
```

----------

