17 nov 2010

Repositori local per a Ubuntu 10.04

No Comments Informàtica

En un entorn local on tin­guem una colla d’ordinadors amb Ubuntu com­par­tint ADSL és una molt bona idea dis­po­sar d’un equip que actuï com a repo­si­tori local, de manera que no s’eternitzin les actu­a­lit­za­ci­ons o les instal·lacions de nou pro­gra­mari amb tots els ordi­na­dors de la xarxa des­car­re­gant alhora les matei­xes dades. El sen­tit comú indica que és molt millor que des­car­re­gui les dades un de sol i les com­par­teixi amb la resta. D’això tracta aquesta entrada: de com con­fi­gu­rar un repo­si­tori local per a Ubuntu 10.04 (encara que ser­veix per a qual­se­vol altra ver­sió i dis­tri­bu­ció basada en Debian). És molt sen­zill de fer, però escric el pro­cés per­què m’he tro­bat algun mal­de­cap que val la pena aclarir.

D’entrada neces­si­tem un ordi­na­dor amb GNU/​Linux (no cal que sigui Ubuntu per a fer un mir­ror d’aquest sis­tema, però sem­bla el més lògic). Jo faré ser­vir un vell por­tà­til HP Compaq nx6310 amb un Core 2 Du0 T5500 @1,66Ghz i 512MB de memò­ria amb Lucid Lynx instal·lat. El repo­si­tori ens ocu­parà uns 36GB de disc per cada ver­sió del SO que neces­si­tem si només volem els seus paquets bina­ris (els neces­sa­ris per a les actu­a­lit­za­ci­ons i les noves instal·lacions) i gai­rebé el doble si volem també el codi font (source) de tot el sis­tema. Podem con­sul­tar la quan­ti­tat d’espai dis­po­ni­ble en cada par­ti­ció des del ter­mi­nal amb la comanda:

1
df -h

En el meu cas, tinc una par­ti­ció de 40GB del disc mun­tada sobre la car­peta /​ubuntu on hi haurà les dades del mir­ror sense codis font. Comencem la cre­a­ció del repositori:

Part servidor

Aquestes són les con­fi­gu­ra­ci­ons que hem de fer a la màquina que actu­arà com a repo­si­tori local. Després veu­rem com hem de con­fi­gu­rar la resta d’ordinadors client.

1 Instal·lem l'aplicació apt-mirror

1
sudo apt-get ins­tall apt-mir­ror

Aquesta és l’aplicació que farem ser­vir per a crear i man­te­nir el nos­tre repo­si­tori. El següent que hem de fer és la configuració.

2 Creem les carpetes i els canviem el propietari

L’apt-mirror s’executa amb per­mi­sos de l’usuari homò­nim creat auto­mà­ti­ca­ment durant el pas ante­rior, per tant, per­què el repo­si­tori s’ompli de dades cor­rec­ta­ment cal que la car­peta on el vul­guem situar sigui pro­pi­e­tat d’aquest usu­ari. Si volem situar el mir­ror a la car­peta per defecte /​var/​spool/​apt-​​mirror no cal que ho fem, però si pre­fe­rim esco­llir una ubi­ca­ció per­so­na­lit­zada sí.

1
2
3
4
sudo mkdir /​ubuntu/​var
sudo mkdir /​ubuntu/​skel
sudo mkdir /​ubuntu/​mir­ror
sudo chown -R apt-mir­ror:apt-mir­ror /​ubuntu

Substituïu /​ubuntu per la car­peta que vul­gueu. En cas de no fer-​​ho des­prés ens tro­ba­rem amb l’error touch: no s’han pogut can­viar les dates de «/​ubuntu/​var/​apt-​​mirror-​​lock»: No such file or directory

3 Configurem apt-mirror

El fit­xer del con­fi­gu­ra­ció de l’apt-mirror el tro­ba­rem, un cop instal·lat, a la ruta /etc/apt/mirror.list i el podem edi­tar en el nos­tre edi­tor pre­fe­rit (en el meu cas: joe). Si no teniu un “edi­tor pre­fe­rit” podeu uti­lit­zar gedit, que serà el més sen­zill:

1
gksudo gedit /​etc/​apt/​mir­ror.list

i tro­ba­rem un fit­xer si fa o no fa així:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
############# con­fig ##################
#
# set base_​path    /​var/​spool/​apt-mir­ror
#
# set mirror_​path  $base_​path/​mir­ror
# set skel_​path    $base_​path/​skel
# set var_​path     $base_​path/​var
# set cle­ans­cript $var_​path/​clean.sh
# set defaul­tarch  <run­ning host arc­hi­tec­ture>
# set postmirror_​script $var_​path/​post­mir­ror.sh
# set run_​postmirror 0
set nth­re­ads     20
set _​tilde 0
#
############# end con­fig ##############
deb http://archive.ubuntu.com/ubuntu lucid main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​proposed main res­tric­ted uni­verse multiverse
deb http://archive.ubuntu.com/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-​​proposed main res­tric­ted uni­verse multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
clean http://archive.ubuntu.com/ubuntu<br />

Les úniques modi­fi­ca­ci­ons que farem en aquest docu­ment seran a la línia 3 de manera que quedi:
1
2
3
4
############# con­fig ##################
#
set base_​path    /​ubuntu
#

Fixem-​​nos que ha des­a­pa­re­gut el sos­tin­gut # del prin­cipi de la línia (les línies que comen­cen per un # sem­pre són igno­ra­des en els fit­xers de con­fi­gu­ra­ció) i hem can­viat la car­peta base per defecte per la nos­tra. No cal tocar la resta de vari­a­bles (línies 5–11). Per des­comp­tat si vol­gués­sim fer un mir­ror d’una ver­sió dife­rent can­vi­a­ríem la paraula lucid per l’adequada en totes les línies de la 17 a la 27. Per últim, posa­rem un sos­tin­gut # davant les línies 23–25 per evi­tar que es des­car­re­guin els codis font.

4 Començar la descàrrega

Un cop ho tenim tot con­fi­gu­rat cal indi­car que volem comen­çar la des­càr­rega de paquets. Com que són –com a mínim– 36GB hem de pen­sar en no menys de 8 hores de des­càr­rega! Iniciar el pro­cés és molt sen­zill però ens podem tro­bar algun con­tra­temps. La comanda és la següent:

1
sudo su - apt-mir­ror -c apt-mir­ror

Això des­car­re­garà els índexs dels paquets  i des­prés els pro­ces­sarà. En aquest moment ens pot apa­rèi­xer un error que indi­qui apt-​​mirror: can’t open index in proceed_​index_​gz at /​usr/​bin/​apt-​​mirror line 449 que solu­ci­o­na­rem cor­re­gint un petit error en l’script que fa la des­car­rega. Hem d’editar el fit­xer /​usr/​bin/​apt-​​mirror i situar-​​nos a la línia 449
1
gksudo gedit /​usr/​bin/​apt-mir­ror

(amb CTRL+I podem sal­tar a la línia desit­jada) per a fer el següent canvi:
1
open STREAM, “< $path/$index>” or die([...]);

1
open STREAM, “< $path$index>” or die([...]);

És a dir, eli­mi­nem la barra /​ que separa $path/$index.

En repren­dre la des­càr­rega és pro­ba­ble que ens tro­bem amb un nou incon­ve­ni­ent: apt-​​mirror is alre­ady run­ning, exi­ting at /​usr/​bin/​apt-​​mirror line 187. És una pràc­tica habi­tual que molts pro­gra­mes creïn un fit­xer buit de blo­queig (lock) per a evi­tar que els exe­cu­tem dues vega­des simul­tà­ni­a­ment i, en haver avor­tat l’execució prè­vi­a­ment apt-​​mirror es pensa que ja està en exe­cu­ció quan en rea­li­tat no és així. Aleshores hem de bor­rar manu­al­ment el fit­xer de blo­queig i repren­dre la des­càr­rega. Aquest cop hau­ria d’anar bé!

1
2
sudo rm /​ubuntu/​var/​apt-mir­ror.lock
sudo su - apt-mir­ror -c apt-mir­ror

5 Instal·lar el servidor web

Després d’unes quan­tes hores de des­càr­rega pro­ce­di­rem a instal·lar el ser­vi­dor web, ja que la trans­fe­rèn­cia de dades amb els nos­tres cli­ents la farem mit­jan­çant http. Això és tan fàcil com exe­cu­tar:

1
sudo apt-get ins­tall apache2

No cal fer cap con­fi­gu­ra­ció, l’establerta per defecte és per­fecta per als nos­tres interessos.

6 Establir els vincles del servidor web a la carpeta del mirror

La única car­peta acces­si­ble via http per defecte del nos­tre sis­tema és /​var/​www però com que hem instal·lat el mir­ror en una ubi­ca­ció dife­rent, farem ser­vir uns enlla­ços sim­bò­lics.

1
2
3
sudo ln -s /​ubuntu/​mir­ror/​arc­hive.ubuntu.com /​var/​www/​arc­hive-ubuntu
sudo ln -s /​ubuntu/​mir­ror/​arc­hive.cano­ni­cal.com /​var/​www/​arc­hive-cano­ni­cal
sudo ln -s /​ubuntu/​mir­ror/​secu­rity.ubuntu.com /​var/​www/​secu­rity-ubuntu

Ja hem acabat!

Part client

En tots els ordi­na­dors que vul­guem que emprin el repo­si­tori local hau­rem de subs­ti­tuir el fit­xer de les fonts de pro­gra­mari /etc/apt/sources.list per un de nou.

1 Fem una copia de seguretat de les fonts actuals

1
sudo mv /​etc/​apt/​sour­ces.list /​etc/​apt/​sour­ces.list.ori­gi­nal

2 Creem en nou fitxer de fonts

Amb el següent con­tin­gut (subs­ti­tu­ïnt la IP 192.168.0.2 per la del nos­tre repo­si­tori local, és clar.)

1
2
3
4
5
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-​​updates main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-​​backports main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/security-ubuntu/ubuntu lucid-​​security main res­tric­ted uni­verse multiverse
deb http://192.168.0.2/archive-canonical/ubuntu lucid partner

3 Rellegim les fonts

1
sudo apt-get update

Actualització del repositori local

Evidentment per tal que els ordi­na­dors es man­tin­guin ben actu­a­lit­zats hau­rem d’actualitzar el repo­si­tori local peri­ò­di­ca­ment (a diari o, a tot esti­rar, set­ma­nal­ment seria el més ade­quat). Això podem fer-​​ho de forma manual exe­cu­tant:

1
sudo su - apt-mir­ror -c apt-mir­ror

o con­fi­gu­rar que es faci peri­ò­di­ca­ment de forma auto­mà­tica grà­cies a cron o ana­cron afe­gint la línia
1
@daily 10 mir­ror nice su - apt-mir­ror -c apt-mir­ror

al fit­xer /​etc/​anacrontab

{lang: «ca»}

13 mai 2010

Spotify integrat amb Facebook a Ubuntu

2 Comments Informàtica

Suposant que ja tin­guem un compte d’Spotify, si volem integrar-​​lo amb el Facebook i veure les llis­tes de repro­duc­ció publi­ca­des pels nos­tres amics la única cosa que hem de fer és actu­a­lit­zar l’Spotify a la nova ver­sió. A la pràc­tica, si fem ser­vir Ubuntu, això vol dir anar al lloc web i des­car­re­gar la ver­sió per Windows. Si tenim el wine instal·lat només cal que mar­quem la pro­pi­e­tat d’executable del fit­xer (Menú con­tex­tual > Propietats > Permisos > Permet exe­cu­tar aquest fit­xer com un pro­grama) i fem doble clic per instal·lar-lo. Un cop instal·lat i fun­ci­o­nant, des del propi pro­grama podem vincular-​​lo amb el Facebook seguint les intruc­ci­ons, no té cap secret. El que sí que és més empi­pa­dor és que el nave­ga­dor obri els enlla­ços de can­çons, llis­tes o usu­a­ris d’Spotify auto­mà­ti­ca­ment. Però en aquesta vida gai­rebé tot té solu­ció… Creem un script capaç d’executar l’Spotify rebent una adreça com a parà­me­tre, fent:

1
[ALT+F2] &gt; gksudo gedit

i engan­xem el següent codi a l’editor de text:
1
2
#!/​bin/​bash
exec wine “C<span>:\Program Files\Spotify\spotify.e</span>xe” /​uri “$1″

Desem aquest fit­xer amb el nom /​usr/​bin/​spotify i poste­ri­or­ment li donem per­mís d’execució des del ter­mi­nal:
1
sudo ch<span>mod +x /​usr/​bin/​spo­tify</​span>

Per com­pro­var que fun­ci­oni, podem exe­cu­tar:
1
/​usr/​bin/​spo­tify spo­tify:track:6dDuP1vwKdGFToOwkCesOk

Si sona, anem per bon camí. Ara ja només falta obrir el Firefox i escriure about:config a la barra d’adreces. Clicant amb el botó dret afe­gim dues regles noves a la con­fi­gu­ra­ció: Una del tipus “cadena” (string) amb el nom network.protocol-handler.app.spotify i el valor /​usr/​bin/​spotify i una altra de tipus “boo­leà” amb el nom network.protocol-handler.expose.spotify i valor false. Només amb això, en cli­car un enllaç d’Spotify com per exem­ple: http://​open​.spo​tify​.com/​t​r​a​c​k​/​6​3​2​Z​k​p​0​H​q​h​T​k​Bqns7EufHy ens hau­ria de sor­tir la fines­treta per esco­llir amb quin pro­grama volem obrir els vin­cles d’Spotify. Escollim com a pro­grama l’script que hem creat /​usr/​bin/​spotify i li diem que recordi aquesta asso­ci­a­ció. Et voilà!

{lang: «ca»}