÷ƒ’À;è TeX output 2003.11.26:1335‹ÿÿÿÿ Û_2 ý ~? ÕÁ ýZݺóþÖëI½q½qecss2074¼Building–fÑand“Installing“Soft–ÿwmw“a“re›fÑP“ack“ages˜fo“r˜LinuxŽ¤ ®„ØcÕÁGŽŽ¡ó 1ê± ecrm1000¹Mendel›„Co•Gop“er‘G°óqLË ectt1000ºmailto:thegrendel@theriver.com‘J4¹˜ó½HЃ ecti1000½http://p–ÿ}/ersonal.riverusers.c“om/the“gr“endel/‘¹v1.91,Ž¡27–U luglio“1999Ž¡Ÿ&°óŒ6 ecss1000¾-–§ÙCompilazione“ed“installazione“di“pacchetti“soft•¸èw“a“re–§ÙpšGer“Linux“-“Questa“€è“un'ampia“guida“p˜er“compila¸ère“edŽ¡installaš¸ère–97"generiche"“distribuzioni“di“soft˜w˜a˜re“UNIX‘8ºsotto“Linux.‘ ÆV˜engono“inoltre“discussi“i“fo˜rmati“bina˜riŽ¡pš¸èreimpacchettati–U "rpm"“e“"deb".‘q€T‘ÿ*¸raduzione“di“óø8‹ ecsi1000¿F˜ab˜rizio“Stefani“¾,“23“settemb˜re“1999.ŽŸ(Àœó&Lt$ffffecbx1440ÁIndiceŽ¤Øó]fŒ ecbx1000Â1Ž‘ÿIn®>troQÂduzione’€Ó2ŽŽ¡2Ž‘ÿSpacc®>hettare–Õi“le’fØ62ŽŽ¡3Ž‘ÿUsare‘Õmak®>e’†!3ŽŽ¡4Ž‘ÿBinari‘Õpreimpacc®>hettati’I05ŽŽ¤ؼ‘ÿ¹4.1Ž‘%ý¡Cosa–U c'€è“c¸èhe“non“v‘ÿqÐa“negli“rpm?‘ÿ ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï5ŽŽ¡‘ÿ4.2Ž‘%ý¡Problemi–U con“gli“rpm:‘q€un“esempio‘TË‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¤ØÂ5Ž‘ÿProblemi–Õriguardo“termcap“e“terminfo’ÿàm7ŽŽ¡6Ž‘ÿCompatibilit€à–Õall'indietro“con“i“binari“a.out’欫7ŽŽ©ؼ‘ÿ¹6.1Ž‘%ý¡Un‘U esempio‘tß‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï8ŽŽ¡Â7Ž‘ÿRisoluzione–Õdei“problemi’D›Æ8ŽŽ¦‘ÿ¹7.1Ž‘%ý¡Errori–U in“fase“di“link‘¯‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï8ŽŽ¦‘ÿ7.2Ž‘%ý¡Altri‘U problemi‘‘בü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï9ŽŽ¦‘ÿ7.3Ž‘%ý¡RitoGccš¸èhi–U e“messa“a“pun˜to‘š{‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?11ŽŽ¦‘ÿ7.4Ž‘%ý¡Do•¸èv“e›U tro“v‘ÿqÐare˜maggiore˜aiuto‘>·‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?11ŽŽ¡Â8Ž‘ÿConclusioni’©11ŽŽ¡9Ž‘ÿPrimo‘Õesempio:‘ Xscrabble’6á12ŽŽ¡10Ž‘ÿSecondo‘Õesempio:‘ Xloadimage’#13ŽŽ¡11Ž‘ÿT–ÿ ºerzo‘Õesempio:‘ F“ortune’Cö{14ŽŽ¡12Ž‘ÿQuarto‘Õesempio:‘ Hearts’AùÎ15ŽŽ¡13Ž‘ÿQuin®>to‘Õesempio:‘ XmDipmon’*?319ŽŽŽŽŒ‹* Û_2 ý ~?Ÿ„€ÕÁGŽÂ1.‘ñ8In®>troQÂduzione’~¯œ¹2ŽŽ ÕÁ ýV¯Â14Ž‘ÿDo•®>v“e›Õtro“v‘ÿ\|are˜arc“hivi˜sorgen“te’' 20ŽŽ¤Ø15Ž‘ÿConclusioni’©21ŽŽ¡16Ž‘ÿRiferimen®>ti–Õe“ulteriori“letture’&¨«21ŽŽ¡17Ž‘ÿCrediti’—µ(23ŽŽ©(ÀœÁ1Ž‘ÁInctropœduzioneŽŸ¿:¹P•¸èarecc“hi›†úpacc“hetti˜soft“w“are˜pGer˜i˜v‘ÿqÐari˜dialetti˜di˜UNIX‘†«e˜Lin“ux˜sono˜dati˜come˜arc“hivi˜compressi˜di˜leŽ¤ ®sorgenš¸èti.‘!tLo–Çstesso“pacc˜hetto“pu€ò“essere“compilato“pGer“girare“su“dieren˜ti“macc˜hine“ssate,‘žpe“ci€ò“risparmiaŽ¡l'autore–pdel“soft•¸èw“are–pdal“do•¸èv“er–pproGdurre“vš¸èersioni“m˜ultiple.‘ÄoUna“singola“v˜ersione“di“un“pacc˜hetto“soft˜w˜areŽ¡pu€ò–n¸cos€ì“nire“col“girare,›µin“v‘ÿqÐarie“incarnazioni,˜su“una“maccš¸èhina“In˜tel,›µun“DEC‘noAlpha,˜una“w¸èorkstationŽ¡RISC,–@ão“ancš¸èhe“un“mainframe.‘jÁSfortunatamen˜te,‘Dðquesto“scarica“la“respGonsabilit€à“della“eettiv‘ÿqÐa“compilazioneŽ¡ed–0ïinstallazione“del“soft•¸èw“are›0ïsull'uten“te˜nale,–gâl'amministratore˜di˜sistema˜de˜facto,“il˜tizio˜seduto˜allaŽ¡tastiera–’Y“vš¸èoi.‘)*F‘ÿ*¸atevi“coraggio,–¡§com˜unque,“il–’YprošGcesso“non“€è“p˜oi“cos€ì“terricanš¸ète“o“misterioso“come“sem˜bra,Ž¡come–U dimostrer€à“questa“guida.Ž¦Á2Ž‘ÁSpaccchettare–G\i“leŽŸ¿:¹A‘þã v¸èete–wŒscaricato“o“vi“siete“prošGcurati“in“altro“mo˜do“un“paccš¸èhetto“soft˜w˜are.‘ØÄMolto“probabilmen˜te“€è“arc˜hiviatoŽ¡(in–{formato“½tar‘}¹)“e“compresso“(in“formato“½gzip‘¡Ž¹),‘¦¤e“quindi“il“nome“del“le“terminer€à“con“º.tar.gz“¹o“º.tgz“¹(N.d.T:Ž¡Gli–W+arc¸èhivi“tar“compressi,›W­in“inglese,˜vš¸èengono“colloGquialmen˜te“detti“tarball,‘W­d'ora“in“pGoi“ci“riferiremo“ad“essiŽ¡come–v¹paccš¸èhetti“tar).‘ÖJInnanzi“tutto“copiatelo“in“una“directory“di“la˜v˜oro.‘ÖJP˜oi“decomprimetelo“(con“½gunzip‘¡Ž¹)“eŽ¡spaccš¸èhettatelo–ÄP(con“½tar‘}¹).‘A;Il“comando“appropriato“pGer“farlo“€è“Âtar–.xzvf“óë ecbi1000Ãnomele‘Ù‹¹,‘áFdo˜v˜e–ÄP½nomele‘„Ÿ¹€è“il“nome“delŽ¡le,‘Oªo•¸èvviamen“te.‘o9Il–NLproGcesso“di“dearcš¸èhiviazione“generalmen˜te“installer€à“i“le“appropriati“nelle“sottoGdirectoryŽ¡c•¸èhe›­a“vr€à˜creato.‘Ñ&Notate˜c“he˜se˜il˜nome˜del˜pacc“hetto˜ha˜susso˜½.Z‘sÒ¹,˜la˜pro•Gcedura˜su˜esp“osta˜sar€à˜ancoraŽ¡buona,› 9sebbGene–èhfunzioni“anc¸èhe“eseguire“Âuncompress¹,˜seguito“da“Âtar‘~wxvf¹.‘+WPš¸èotete“v˜edere“un'an˜teprima“diŽ¡tale–U proGcesso“con“Âtar–Õtzvf“nomele¹,–U cš¸èhe“elenca“i“le“con˜ten˜uti“nell'arc˜hivio“senza“in“eetti“estrarli.Ž©ؼIl–U suddetto“metošGdo“p˜er“spaccš¸èhettare“i“pacc˜hetti“tar“€è“equiv‘ÿqÐalen˜te“ad“uno“o“l'altro“dei“seguen˜ti:Ž¤ؼ‘ó !",š cmsy10¸ŽŽŽ‘¹gzip–U -cd“nomele“¸j“¹tar“xvf“-ŽŸ®‘¸ŽŽŽ‘¹gunzip–U -c“nomele“¸j“¹tar“xvf“-Ž¡(Il–U '-'“forza“il“comando“½tar‘h¹a“prendere“il“suo“input“dallo“ºstdin¹.)Ž¦I‘3île–3÷sorgenš¸èti“nel“n˜uo˜v˜o“formato“½bzip2‘Žç¹(º.bz2¹)“pGossono“essere“estratti“con“un“Âbzip2–®õ-cd“nomele“¸j“Âtar“xvfŽ¤ ®-¹,–FÖo,“pi€ù›CDsemplicemen¸ète,“con˜un˜Âtar–ÀŽxyvf“nomele¹,‘FÖsempre˜c•¸èhe˜ºtar˜¹sia˜stato˜oppGortunamen“te˜corretto˜conŽ¡l'appšGosita–ë1patc¸èh“(riferirsi“al“½Bzip2.HO¾˜WTO‘ë¹16“((tradotto))“p˜er“i“dettagli).‘N1La“distribuzione“Lin¸èux“di“DebianŽ¡usa–Ðuna“divš¸èersa“patc˜h“pGer“ºtar¹,‘­scritta“da“Hiroshi“T‘ÿ*¸ak˜ek‘ÿqÐa˜w˜a,–­c˜he,“in–Ðquella“particolare“v˜ersione“di“ºtar¹,‘­usa“leŽ¡opzioni‘U ½-I,–“°bzip2,“bunzip2‘Zð¹.Ž¦[Grazie–Ͻtanš¸ète“a“R.“BroGc˜k“Lynn“e“F‘ÿ*¸abrizio“Stefani“pGer“le“correzioni“e“gli“aggiornamen˜ti“sull'informazione“sopraŽ¡citata]Ž¦A‘àÄvš¸èolte–àèi“le“arc˜hiviati“dev˜ono“essere“estratti,›Úusando“tar,˜ed“installati“dalla“home“directory“dell'uten¸ète,˜oŽ¡magari–·in“una“cert'altra“directory‘ÿ*¸,›Ï}tipGo“º/¹,˜º/usr/src¹,˜o“º/opt¹,˜come“spGecicato“nelle“informazioni“di“cong-Ž¡urazione–•#del“paccš¸èhetto.‘1‰Qualora“si“ricev‘ÿqÐa“un“messaggio“di“errore“ten˜tando“l'estrazione“dall'arc˜hivio,‘¥$questaŽŽŽŒ‹h Û_2 ý ~?Ÿ„€ÕÁGŽÂ3.‘ñ8Usare‘Õmak®>e’ƒàµ¹3ŽŽ ÕÁ ýV¯p•Gotrebb“e–ž5esserne“la“ragione.‘L¾Leggete“i“le“di“doGcumenš¸ètazione“del“pacc˜hetto,‘°zspGecialmen˜te“i“le“ºREADME‘ž"¹e/oŽ¤ ®ºInstall¹,–7?se› presen¸èti,“ed˜editate˜i˜le˜di˜congurazione˜e/o˜i˜ºMakefile˜¹come˜necessario,“consisten•¸ètemen“teŽ¡con–=èle“istruzioni“di“installazione.‘iÃOsserv‘ÿqÐate“cš¸èhe“di“solito“Ânon“¹si“do˜vrebbšGe“mo˜dicare“il“le“ºImake¹,‘Bp˜oic¸èh€é“ci€òŽ¡p•Gotrebb“e›ãa•¸èv“ere˜conseguenze˜impreviste.‘UÁLa˜maggior˜parte˜dei˜pacc“hetti˜pGermettono˜di˜automatizzare˜questoŽ¡prošGcesso–U eseguendo“Âmak®>e‘Õinstall“¹p˜er“mettere“i“binari“nelle“appropriate“aree“di“sistema.Ž©ؼ‘¸ŽŽŽ‘¹P•¸èotreste›ÿincon“trare˜le˜ºshar¹,–Mo˜½ar‘ÿ}/chivi‘DŠshel‘‚Ðl‘w¹,“spGecialmen•¸ète˜sui˜newsgroup˜riguardan“ti˜il˜coGdice˜sorgen“teŽ¡‘in–ÄpInš¸èternet.‘¿qQuesti“v˜engono“ancora“usati“pGerc˜h€é“sono“in“formato“testo,‘àDe“ci€ò“pšGermette“ai“mo˜deratoriŽ¡‘dei–$.newsgroup“di“consultarli“e“respingere“quelli“inadatti.‘a/Essi“pGossono“essere“spacc¸èhettati“col“comandoŽ¡‘Âunshar‘Õnomele.shar¹.‘q€Altrimen¸èti–U la“prošGcedura“p˜er“trattarli“€è“la“stessa“dei“pacc¸èhetti“tar.Ž¦‘¸ŽŽŽ‘¹Alcuni–warcš¸èhivi“sorgen˜te“sono“stati“manipGolati“usando“utilit€à“di“compressione“non“standard“DOS,“MacŽ¡‘o–ú‹anc¸èhe“Amiga,› ©tipGo“½zip‘¡Ž¹,˜½ar–ÿ}/c‘¬¹,˜½lha‘ÄU¹,˜½arj‘rF¹,˜½zo“o‘¡Ž¹,˜½r“ar–}¹,e‘ú‹½shk“¹.‘SOF‘ÿ*¸ortunatamen¸ète,˜½Sunsite‘ú‹ºhttp://metalab.unc.Ž¡‘edu– ;¹e“altri“pšGosti“hanno“delle“utilit€à“di“decompressione“p˜er“Linš¸èux“c˜he“pGossono“trattare“molti“o“tutti“taliŽ¡‘formati.Ž¦Occasionalmenš¸ète,‘˜èp•Gotrebb“e–iÚessere“necessario“aggiungere“delle“correzioni“pGer“dei“bug“o“aggiornare“i“le“sorgen˜tiŽ¡estratti–ô~da“un“arcš¸èhivio“usando“un“le“ºpatch“¹o“ºdiff“¹c˜he“elenca“le“moGdic˜he.‘O›I‘ôUle“di“doGcumen˜tazione“e/oŽ¡ºREADME‘ºÄ¹vi–ºÞinformeranno“se“ci€ò“€è“necessario.‘¢ºLa“normale“sinš¸ètassi“pGer“in˜v˜ošGcare“la“p˜oten¸ète“utilit€à“di“½p‘ÿ}/atch‘3¹diŽ¡Larry–U W‘ÿ*¸all“€è“Âpatcš®>h–Õó  b> cmmi10µ<“Âpatc˜hle¹.Ž©ؼOra–U pšGotete“pro˜cedere“alla“fase“di“compilazione“del“pro˜cesso.ŽŸ(ÀœÁ3Ž‘ÁUsare‘G\makceŽŸ¿:¹Il–#vºMakefile“¹€è“la“c•¸èhia“v“e–#vdel“proGcesso“di“compilazione.‘`òNella“sua“forma“pi€ù“semplice,‘-eun“Mak¸èele“€è“uno“scriptŽ¡pGer–m·la“compilazione,›sÝo“building,˜dei“binari,˜le“parti“eseguibili“di“un“paccš¸èhetto.‘»EIl“Mak˜ele“pu€ò“anc˜he“fornireŽ¡un–…mezzo“pGer“aggiornare“un“paccš¸èhetto“soft˜w˜are“senza“do˜v˜er“ricompilare“ogni“singolo“le“sorgen˜te“in“esso,‘>maŽ¡questa–U €è“un'altra“storia“(o“un“altro“articolo).Ž¦Aš¸èd–Õˆun“certo“pun˜to,‘õ¢il“Mak˜ele“lancia“ºcc“¹o“ºgcc¹.‘ò¹Questo“in“realt€à“€è“un“preproGcessore,‘õ¢un“compilatore“C‘Õg(oŽ¡C++),›÷Óed–à€un“link•¸èer,˜in“v“ošGcati–à€in“quell'ordine.‘J Questo“pro˜cesso“con•¸èv“erte–à€il“sorgenš¸ète“nei“binari,‘÷Ói“v˜eri“eseguibili.Ž¦L'in•¸èv“oGcazione–ï]di“½make‘¯¬¹di“solito“ricš¸èhiede“solo“di“battere“Âmak®>e¹.‘@6Ci€ò,–ìgeneralmen˜te,“serv˜e–ï]a“compilare“tuttiŽ¡i–iÌle“eseguibili“necessari“pGer“il“paccš¸èhetto“in“questione.‘¯„T‘ÿ*¸utta˜via,‘®÷mak˜e“pu€ò“sv˜olgere“anc˜he“altri“compiti,Ž¡come–ü‰installare“i“le“nelle“loro“directory“appropriate“(Âmakš®>e‘o8install¹)“e“rim•¸èuo“v“ere–ü‰i“le“oggetto“stan¸ètii“(Âmak˜eŽ¡clean¹).‘–•L'esecuzione–a|di“Âmak®>e‘ µ-n“¹pGermette“di“vš¸èedere“un'an˜teprima“del“prošGcesso“di“compilazione,‘¤“p˜oic¸èh€éŽ¡stampa–U tutti“i“comandi“cš¸èhe“sarebbGero“attiv‘ÿqÐati“da“un“mak˜e,“ma“senza“in“eetti“eseguirli.Ž¦Solo– =i“soft•¸èw“are– =pi€ù“semplici“usano“un“Makš¸èele“generico.‘55Le“installazioni“pi€ù“complesse“ric˜hiedono“un“Mak˜eleŽ¡su–¾³misura“secondo“la“pšGosizione“delle“librerie,‘Ùdei“le“include“e“delle“risorse“sulla“v¸èostra“sp˜ecica“macc¸èhina.Ž¡Questo,–Y™in›X´particolare,“€è˜il˜caso˜c•¸èhe˜si˜ha˜quando˜duran“te˜il˜proGcesso˜di˜compilazione˜serv“ono˜le˜librerie˜ºX11Ž¡¹pGer–U l'installazione.‘q€½Imake‘o¹e“½xmkmf‘s’¹adempiono“questo“compito.Ž¦Un–뀺Imakefile“¹€è,›pGer“citare“la“pagina“di“man¸èuale,˜un“prototipGo“di“Makš¸èele.‘4¡L'utilit€à“imak˜e“costruisce“unŽ¡Makš¸èele–”adatto“al“v˜ostro“sistema“dall'Imak˜ele.‘/ÑNella“maggior“parte“dei“casi,–¤ltutta˜via,“preferirete‘”eseguireŽ¡Âxmkmf¹,‘È`uno–~ script“shell“cš¸èhe“in˜v˜oGca“imak˜e,‘È`un“suo“fron˜t“end.‘ì€Con˜trollate“il“le“README‘}Óo“INST‘ÿ*¸ALLŽ¡incluso–ÿnell'arc¸èhivio“pšGer“istruzioni“sp˜ecic¸èhe“(se,‘Kdop˜o“a•¸èv“er–ÿestratto“dall'arcš¸èhivio“i“le“sorgen˜ti,‘K€è“presen˜te“unŽ¡le–‘ÒºImake“¹nella“directory“base,‘ ÿ€è“un“cš¸èhiaro“segno“c˜he“do˜vrebbGe“essere“eseguito“Âxmkmf¹).‘'—Leggere“le“pagineŽ¡di–U man¸èuale“di“ºImake“¹e“ºxmkmf“¹pšGer“una“pi€ù“dettagliata“analisi“della“pro˜cedura.Ž¦€È‘ôbšGene–ô@essere“consap˜evš¸èoli“c˜he“ºxmkmf“¹e“ºmake“¹p•Gotrebb“ero–ô@do˜v˜er“essere“in˜v˜ošGcati“come“ro˜ot,‘sp˜ecialmen¸ète“nelŽ¡fare–‹Uun“Âmak®>e‘ninstall“¹pšGer“sp˜ostare“i“binari“sulle“directory“º/usr/bin“¹o“º/usr/local/bin¹.‘Usare“mak¸èe“comeŽŽŽŒ‹"- Û_2 ý ~?Ÿ„€ÕÁGŽÂ3.‘ñ8Usare‘Õmak®>e’ƒàµ¹4ŽŽ ÕÁ ýV¯uten¸ète–ˆ_normale,›±Rsenza“privilegi“di“ro•Got,˜p“orter€à–ˆ_probabilmen¸ète“a“dei“messaggi“d'errore“tipGo“½write›×Pac–ÿ}/c“ess˜denie“dŽ¤ ®¹(accesso–™in“scrittura“negato),‘·çpšGerc¸èh€é“manca“il“p˜ermesso“p˜er“la“scrittura“nelle“directory“di“sistema.‘/þCon¸ètrollateŽ¡anc•¸èhe›U c“he˜i˜binari˜creati˜abbiano˜i˜giusti˜p•Germessi˜di˜esecuzione˜p“er˜v•¸èoi˜ed˜ogni˜altro˜uten“te˜appropriato.Ž©ؼQuando–L viene“in•¸èv“ošGcato,‘MÛÂxmkmf–L ¹usa“il“le“ºImake“¹p˜er“costruire“il“Mak¸èele“appropriato“p˜er“il“v¸èostro“sistema.Ž¡Sarete–Làsoliti“in•¸èv“ošGcare–LàÂxmkmf“¹con“l'argomen¸èto“Â-a¹,‘ŠÐp˜er“eettuare“automaticamen¸ète“½make‘wMakeles‘Ò¹,‘ŠÐ½makeŽ¡includes‘òI¹e– 4½make‘cdep‘ÿ}/end‘w¹.‘_ÜCi€ò“impšGosta“le“v‘ÿqÐariabili“e“denisce“le“p˜osizioni“delle“librerie“p˜er“il“compilatore“ed“ilŽ¡link•¸èer.‘ZÔA‘ v“olte,›µnon–ci“sar€à“il“le“ºImake¹,˜ci“sar€à“in•¸èv“ece–uno“script“ºINSTALL‘ ¹o“ºconfigure¹,˜cš¸èhe“do˜vrebbGe“essereŽ¡in•¸èv“ošGcato–ú‘come“Â./congure“¹p˜er“assicurarsi“cš¸èhe“v˜enga“c˜hiamato“il“giusto“script“ºconfigure¹.‘aÒNella“maggiorŽ¡parte–U dei“casi,“il“le“ºREADME“¹incluso“con“la“distribuzione“spiegher€à“la“proGcedura“di“installazione.Ž¦€È‘ÑKdi–Ñ®solito“una“buona“idea“guardare“denš¸ètro“il“ºMakefile“¹c˜he“ºxmkmf¹,‘0Ño“uno“degli“script“di“installazione,Ž¡costruiscono.‘O˜Il–IÓMakš¸èele“sar€à“di“solito“adatto“pGer“il“v˜ostro“sistema,‘†ÿma“oGccasionalmen˜te“p•Gotrebb“e‘IÓessereŽ¡necessario–U ritoGccarlo“o“correggere“man•¸èualmen“te–U degli“errori.Ž¦P¸èer–K«installare“i“binari“appGena“compilati“nelle“appropriate“directory“di“sistema“di“solito“basta“eseguire,‘McomeŽ¡rošGot,–Œ³Âmak®>e‘ó¾install¹.‘]GSolitamen¸ète,“le–Nbdirectory“p˜er“i“binari“del“sistema“sulle“mo˜derne“distribuzioni“Lin¸èuxŽ¡sono›¾³º/usr/bin¹,–º/usr/X11R6/bin¹,“e˜º/usr/local/bin¹.‘®8La˜directory˜da˜preferire˜pGer˜i˜n•¸èuo“vi˜pacc“hetti˜€èŽ¡º/usr/local/bin¹,‘fpšGoic¸èh€é–/rin“tal“mo˜do“si“terranno“separati“i“binari“c¸èhe“non“fanno“parte“della“installazioneŽ¡Lin¸èux‘U originale.Ž¦I‘Opacc•¸èhetti›OÍoriginariamen“te˜mirati˜pGer˜v“ersioni˜commerciali˜di˜UNIX‘Op•Gotrebb“ero˜pro¸èv‘ÿqÐare˜ad˜installarsi˜inŽ¡º/opt–Õ6¹o“in“un'altra“directory“sconosciuta.‘FÝCi€ò,–îËnaturalmen¸ète,“causer€à–Õ6un“errore“di“installazione“se“la“directoryŽ¡in–À¡questione“non“esiste.‘@Il“mošGdo“pi€ù“semplice“p˜er“risolv¸èere“questo“problema“€è“quello“di“creare,‘ÞTcome“ro˜ot,‘ÞTunaŽ¡directory–Ó׺/opt¹,‘í²lasciare“cš¸èhe“il“pacc˜hetto“vi“si“installi,‘í²e“pGoi“aggiungere“tale“directory“alla“v‘ÿqÐariabile“d'am˜bien˜teŽ¡ºPATH¹.–U Oppure,“pšGotete“creare“dei“link“sim¸èb˜olici“alla“directory“º/usr/local/bin¹.Ž¦La–U proGcedura“di“installazione“generale“sar€à“quindi:Ž©ؼ‘¸ŽŽŽ‘¹Leggere–U il“le“ºREADME“¹ed“altri“le“di“doGcumen¸ètazione“appropriati.Ž¤®‘¸ŽŽŽ‘¹Eseguire–U Âxmkmf‘Õ-a¹,“o“lo“script“ºINSTALL“¹o“ºconfigure¹.Ž¡‘¸ŽŽŽ‘¹Con¸ètrollare–U il“ºMakefile¹.Ž¡‘¸ŽŽŽ‘¹Se–U necessario,“eseguire“Âmakš®>e‘Õclean¹,“Âmak˜e‘ÕMak˜eles¹,“Âmak˜e‘Õincludes¹,“e“Âmak˜e‘ÕdepQÂend¹.Ž¡‘¸ŽŽŽ‘¹Eseguire‘U Âmak®>e¹.Ž¡‘¸ŽŽŽ‘¹Con¸ètrollare–U i“pGermessi.Ž¡‘¸ŽŽŽ‘¹Se–U necessario,“eseguire“Âmak®>e‘Õinstall¹.Ž¦½Note:ŽŸؼ‘¸ŽŽŽ‘¹Normalmenš¸ète–‘ynon“si“compilano“i“pacc˜hetti“come“rošGot.‘&ŠL'eettuare“un“Âsu“¹a“ro˜ot“€è“necessario“solo“p˜erŽ© ®‘installare–U i“binari“compilati“nelle“directory“di“sistema.Ž¡‘¸ŽŽŽ‘¹Una–vš¸èolta“c˜he“a˜v˜ete“preso“condenza“con“½make‘ÝV¹e“col“suo“uso,‘(?pGotreste“v˜olere“c˜he“v˜engano“aggiun˜te“nelŽ¦‘ºMakefile–¢Þ¹standard“incluso“nel“(o“creato“col)“paccš¸èhetto“c˜he“state“installando“delle“opzioni“di“ottimiz-Ž¦‘zazione›jÿaggiun•¸ètiv“e.‘³Alcune˜di˜tali˜opzioni,–pwle˜pi€ù˜usate,“sono˜½-O2‘Zð¹,“½-fomit-fr–ÿ}/ame-p“ointer‘}¹,‘pw½-funr“ol‘‚Ðl-lo“opsŽ¦‘¹e–÷½-mp‘ÿ}/entium‘ßL¹(se“usate“un“proGcessore“P•¸èen“tium).‘ÃSiate–÷cauti“e“fatevi“guidare“dal“buon“senso“quandoŽ¦‘moGdicate–U un“ºMakefile¹!Ž¡‘¸ŽŽŽ‘¹DopšGo– c¸èhe“½make‘Ñ[¹ha“creato“i“binari,‘@p˜otreste“v¸èoler“usare“Âstrip“¹su“essi.‘¥EIl“comando“Âstrip“¹elimina“daiŽ¦‘le–†binari“le“informazioni“pšGer“il“debugging“sim¸èb˜olico“e“ne“riduce“la“dimensione,‘’Lsp˜esso“drasticamen¸ète.Ž¦‘Ovviamen¸ète–U ci€ò“disabiliter€à“il“debugging.ŽŽŽŒ‹6¡ Û_2 ý ~?Ÿ„€ÕÁGŽÂ4.‘ñ8Binari‘Õpreimpacc®>hettati’FÝĹ5ŽŽ ÕÁ ýV¯‘¸ŽŽŽ‘¹Il›€ñ½Pack–“Distribution“Pr–ÿ}/oje“ct˜ºhttp://sunsite.auc.dk/pack/˜¹utilizza˜un˜div¸èerso˜appro•Gccio˜p“er˜laŽ¤ ®‘creazione–‰Èdi“arcš¸èhivi“di“pacc˜hetti“soft˜w˜are,‘Öóbasato“su“un“insieme“di“strumen˜ti“scritti“in“Python“pGerŽ¡‘la–x´gestione“di“link“simš¸èbGolici“a“le“installati“in“½dir–ÿ}/e“ctory–´kdi“r–ÿ}/ac“c“olta‘= ¹separate.‘Ühetto.rpm–U ¹oppure“Ârpm–Õrebuild“nomepacc˜hetto.rpm¹.Ž¦T‘ÿ*¸erzo,›ö-alcuni–Õ÷binari“preimpacc¸èhettati“non“si“installano“bGene,˜e“anc¸èhe“se“si“installano,˜p•Gotrebb“ero‘Õ÷pian¸ètarsiŽ¡e–„Ãfare“un“core“dump.‘iEssi“p•Gotrebb“ero›„Ãdip“endere˜da˜v•¸èersioni˜di˜libreria˜div“erse˜da˜quelle˜presen“ti˜nel˜v“ostroŽ¡sistema,‘ò]o›Ù¬p•Gotrebb“ero˜essere˜stati˜preparati˜impropriamen•¸ète˜o˜essere˜semplicemen“te˜difettosi.‘HZA“d˜ogni˜moGdo,Ž¡quando–finstallate“un“½rpm‘*q¹o“un“½deb‘ª¹necessariamenš¸ète“fate“adamen˜to“sulla“compšGetenza“delle“p˜ersone“c¸èheŽ¡hanno–U preparato“quel“pacc¸èhetto.Ž¦Inne,‘ vaiuta›‘ea•¸èv“ere˜il˜coGdice˜sorgen“te˜in˜mano,‘ vp•Ger˜p“oter˜eettuare˜delle˜riparazioni˜ed˜imparare˜da˜esso.‘&O€ÈŽ¡molto–Õspi€ù“con•¸èv“enien“te›Õsa“v“ere˜il˜sorgen“te˜nell'arc“hivio˜da˜cui˜si˜stanno˜compilando˜i˜binari,‘õ‡piuttosto˜c“he˜inŽ¡un–U dierenš¸ète“pacc˜hetto“½rpm‘ÄU¹.Ž¦L'installazione–_di“un“paccš¸èhetto“½rpm‘Û´¹non“€è“necessariamen˜te“una“bazzecola.‘\êSe“c'€è“un“conitto“di“dipGendenza,Ž¡l'installazione›Ìdell'½rpm–T!¹fallir€à.‘/ºL'½rpm“¹p•Gotrebb“e˜ric•¸èhiedere˜una˜v“ersione˜delle˜librerie˜div“ersa˜da˜quelle˜presen“tiŽ¡sul–Láv¸èostro“sistema,›ŠÑl'installazione“p•Gotrebb“e–Lánon“funzionare,˜ancš¸èhe“se“create“dei“link“sim˜bGolici“alle“librerieŽ¡mancanš¸èti–Vda“quelle“a“pGosto.‘tjMalgrado“la“loro“con˜v˜enienza,‘VWle“installazioni“degli“½rpm‘n¹spšGesso“falliscono“p˜er“leŽ¡stesse–U ragioni“pGer“cui“lo“fanno“quelle“dei“pacc¸èhetti“tar.Ž¦Do•¸èv“ete–"—installare“gli“½rpm‘æì¹e“i“½deb‘Ä%¹come“ro•Got,‘,²p“er›"—a•¸èv“ere˜i˜necessari˜pGermessi˜di˜scrittura,‘,²e˜ci€ò˜apre˜un˜buco˜diŽ¡sicurezza–PÚpšGotenzialmen¸ète“serio,‘Qµp˜oic¸èh€é“p˜otreste“ina•¸èvv“ertitamen“te–PÚmassacrare“i“binari“di“sistema“e“le“librerie,Ž¡o–m*anc¸èhe“installare“un“½c›ÿ}/aval‘‚Ðlo–©Ídi“T‘ÿ;Èr˜oia‘1¹c¸èhe›m*p•Gotrebb“e˜lib“erare˜il˜caos˜sul˜v¸èostro˜sistema.‘¹€È‘m#quindi˜imp“ortan¸èteŽ¡ottenere–¸Ppaccš¸èhetti“½rpm‘|¥¹e“½deb‘YÞ¹da“una“fon˜te“data.‘›In“ogni“caso,‘Ñdo˜vreste“eseguire“una“'v˜erica“della“rma'Ž¡(rispšGetto–ÙÉad“un“co˜dice“di“conš¸ètrollo“MD5)“sul“pacc˜hetto,‘úôÂrpm›m¨c•®>hec“ksig˜nomepacc“hetto.rpm¹,‘úôprima‘ÙÉdiŽ¡installarlo.‘2õAllo–•œstesso“moGdo“€è“fortemen¸ète“raccomandata“l'esecuzione“di“Ârpm–A-K‘.nopgp“nomepacc®>het-Ž¡to.rpm¹.‘„I‘[Scomandi–[UcorrispšGonden¸èti“p˜er“i“pacc¸èhetti“½deb‘üã¹sono“Âdpkg–Ü;-I‘Ü9¸j“Âinfo“nomepacc®>hetto.deb–[U¹e“ÂdpkgŽ¡-e–Õ¸j“Âconš®>trol“nomepacc˜hetto.deb¹.ŽŽŽŒ‹H‚ Û_2 ý ~?Ÿ„€ÕÁGŽÂ4.‘ñ8Binari‘Õpreimpacc®>hettati’FÝĹ6ŽŽ ÕÁ ýV¯‘¸ŽŽŽ‘ºrpm–?¬checksig“gnucash-1.1.23-4.i386.rpmŽ¤Š=©®‘gnucash-1.1.23-4.i386.rpm:‘ Xsize–?¬md5“OKŽŸؼ‘¸ŽŽŽ‘ºrpm–?¬-K“nopgp“gnucash-1.1.23-4.i386.rpmŽ¡¦‘gnucash-1.1.23-4.i386.rpm:‘ Xsize–?¬md5“OKŽŸؼ¹Pš¸èer–2hi“tipi“v˜eramen˜te“paranoici“(e“in“questo“caso“ci“sarebbšGe“molto“da“dire“a“prop˜osito“di“paranoia),‘9Zci“sono“leŽ¤ ®utilit€à–]Ƚunrpm‘"¹e“½rpmunp›ÿ}/ack‘qE¹dispGonibili“presso“la“½dir˜e˜ctory–›§utils/p˜ackage“di“Sunsite–]ȹpGer“estrarre“e“con¸ètrollareŽ¡i–U singoli“compGonenš¸èti“dei“pacc˜hetti.Ž©ؼ½Kle‘ÿ}/e‘ êDiene–Øåºmailto:klee@debian.org“¹ha“scritto“il“paccš¸èhetto“spGerimen˜tale“½dpkgc‘ÿ}/ert‘òɹ,‘ùÖpGer“la“v˜erica“dell'in-Ž¡tegrit€à–›idei“le“½.deb‘<÷¹installati,‘ìûusando“i“cošGdici“di“con¸ètrollo“MD5.‘DZ€È‘›disp˜onibile“nell'“½ar‘ÿ}/chivio–¿Ýftp“DebianŽ¡ºftp://ftp.debian.org/pub/debian/project/experimental–Ž¹.‘ÐL'attuale“nome“/“v¸èersione“€è“½dpkgc‘ÿ}/ert_0.2-Ž¡4.1_al‘‚Ðl.deb‘¡Ž¹.‘ QîIl–õEsito“½Jim–þPick“Softwar‘ÿ}/e–õEºhttp://dpkgcert.jimpick.com“¹manš¸ètiene“un“serv˜er“databaseŽ¡sp•Gerimen¸ètale›U p“er˜fornire˜certicati˜½dpkgc‘ÿ}/ert‘Gé¹p“er˜i˜pacc¸èhetti˜di˜una˜tipica˜installazione˜Debian.Ž¦Nella–Ærloro“forma“pi€ù“semplice,‘âÆi“comandi“Ârpm–Wi-i“nomepaccš®>hetto.rpm–Ær¹e“Âdpkg–Wiinstall“nomepacc˜het-Ž¡to.deb–i¹automaticamenš¸ète“aprono“il“pacc˜hetto“ed“installano“il“soft˜w˜are.‘­pSiate“cauti,–ncom˜unque,“pGoic˜h€é‘iusareŽ¡tali–U comandi“ciecamen¸ète“pu€ò“essere“pšGericoloso“p˜er“la“salute“del“v¸èostro“sistema!Ž¦Notate–Qcš¸èhe“gli“a˜vv˜ertimen˜ti“suddetti“si“applicano“anc˜he,›QésebbGene“in“minor“misura,˜all'utilit€à“di“installazioneŽ¡½pkgto‘ÿ}/ol‘]—¹della›U Slac•¸èkw“are.‘q€T‘ÿ*¸utto˜il˜soft“w“are˜di˜installazione˜automatico˜ric“hiede˜cautela.Ž¦I‘ŸÊprogrammi– æ½martian“ºhttp://www.people.cornell.edu/pages/rc42/program/martian.html“¹e“½alienŽ¡ºhttp://kitenet.net/programs/alien/–oѹpGermettono“la“con•¸èv“ersione–oÑtra“i“formati“dei“pacc¸èhetti“½rpm‘ÄU¹,‘¶}½deb‘¡Ž¹,Ž¡StampGede–U ½slp‘ö®¹e“½tar.gz‘:—¹.‘q€Ci€ò“rende“questi“paccš¸èhetti“accessibili“a“tutte“le“distribuzioni“Lin˜ux.Ž¦Leggere›@|atten•¸ètamen“te˜le˜pagine˜di˜man“uale˜dei˜comandi˜½rpm‘ѹe˜½dpkg‘ân¹,‘Dœe˜fare˜riferimen“to˜all'˜½RPM‘€®HO¾˜WTO‘@v¹,Ž¡allaŽ¦½Quick–,Guide“to“R–ÿ}/e“d–,Hat's“Package“Manager–Õdºhttp://www.tfug.org/helpdesk/linux/rpm.html“¹del“TFUG,Ž¡e–’îa“½The–¸Debian“Package“Management“T‘ÿ;Èo‘ÿ}/ols›’îºhttp://www.debian.org/doc/FAQ/debian-–€faq-“7.html˜¹pGerŽ¡informazioni–U pi€ù“dettagliate.ŽŸ#ÃÅ4.2Ž‘¾Problemi–¸con“gli“rpm:‘ÿ un“esempioŽŸMª½Jan‘BiHubicka–üȺmailto:hubicka@paru.cas.cz“¹ha“scritto“un“bšGellissimo“pacc¸èhetto“p˜er“i“frattali,‘sc¸èhiamato“½xaos‘Ò¹.Ž¡Sulla‘U suaŽ¦½home‘…§p‘ÿ}/age–EÞºhttp://www.paru.cas.cz/~hubicka/XaoS“¹sono“dispGonibili“en•¸ètram“bi–EÞi“pacc¸èhetti“º.tar.gz“¹e“ºrpm¹.Ž¡In–U nome“della“comoGdit€à“proš¸èviamo“la“v˜ersione“rpm,“piuttosto“c˜he“il“pacc˜hetto“tar.Ž¦Sfortunatamenš¸ète,–U l'rpm“di“½xaos‘'5¹non“si“installa.‘q€Due“div˜erse“v˜ersioni“rpm“fanno“i“capricci.Ž¦Ârpm–Õ-i“test“XaoS-3.0-1.i386.rpmŽŸ´å‘óqLË ectt0900Çerror:–¹Nfailed“dependencies:Ž¤ Š=‘>Êrlibslang.so.0–¹Nis“needed“by“XaoS-3.0-1Ž¡‘>Êrlibpng.so.0–¹Nis“needed“by“XaoS-3.0-1Ž¡‘>Êrlibaa.so.1–¹Nis“needed“by“XaoS-3.0-1ŽŸؼÂrpm–Õ-i“test“xaos-3.0-8.i386.rpmŽŽŽŒ‹]™ Û_2 ý ~?Ÿ„€ÕÁGŽÂ5.‘ñ8Problemi–Õriguardo“termcap“e“terminfo’ý½¹7ŽŽ ÕÁ ýV¯‘Çerror:–¹Nfailed“dependencies:ŽŸ Š=‘>Êrlibaa.so.1–¹Nis“needed“by“xaos-3.0-8ŽŸؼ¹La–Zncosa“strana“€è“cš¸èhe“ºlibslang.so.0¹,–ÛÁºlibpng.so.0¹,“e–Znºlibaa.so.1“¹sono“tutte“presen˜ti“nella“directoryŽ¤ ®º/usr/lib–ì¹del“sistema“usato.‘6|Gli“rpm“di“½xaos‘¾4¹devš¸èono“essere“stati“compilati“con“delle“v˜ersioni“leggermen˜teŽ¡divš¸èerse–U di“quelle“librerie,“anc˜he“se“i“n˜umeri“di“v˜ersione“sono“iden˜tici.Ž©ؼCome–'®test,‘0Åpro¸èviamo“ad“installare“ºxaos-3.0-8.i386.rpm“¹con“l'opzione“½no‘ÿ}/deps‘ùùpGer“forzarne“l'installazione.Ž¡Proš¸èv‘ÿqÐando–U ad“eseguire“½xaos‘'5¹si“pian˜ta.ŽŸ´å‘Çxaos:–¹Nerror“in“loading“shared“libraries:“xaos:“undefined“symbol:“__fabslŽŸؼ¹(errore–U nel“caricamenš¸èto“delle“librerie“condivise,“il“sim˜bGolo“__fabsl“non“€è“denito)Ž¦Cerc•¸èhiamo›Ó½testardamen“te˜di˜andare˜in˜fondo˜alla˜cosa.‘íVLanciando˜½ldd‘Ü4¹sul˜binario˜di˜½xaos‘Ò¹,‘3dpGer˜tro“v‘ÿqÐareŽ¡da–Øçquali“librerie“dipGende,‘9Ùvš¸èediamo“c˜he“le“librerie“necessarie“ci“sono“tutte.‘üÕLanciando“½nm‘<¹sulla“libreriaŽ¡º/usr/lib/libaa.so.1¹,‘,pGer–ì]vš¸èedere“i“suoi“riferimen˜ti“sim˜bGolici,‘,ci“accorgiamo“c˜he“½__fabsl‘ôÔ¹manca“da˜vv˜ero.Ž¡Naturalmenš¸ète–Â$il“riferimen˜to“c˜he“manca“½p–ÿ}/otr“ebb“e‘‚s¹non–Â$essere“presen˜te“in“una“qualsiasi“delle“altre“librerie...‘@‚NonŽ¡c'€è–U nienš¸ète“da“fare,“salv˜o“rimpiazzare“una“o“pi€ù“librerie.Ž¦Basta!‘ éScaricš¸èhiamo–ÜCil“pacc˜hetto“tar,–> ºXaoS-3.0.tar.gz¹,“dispGonibile–ÜCsul“½sito‘ûˆftp“ºftp://ftp.ta.jcu.cz/Ž¡pub/linux/hubicka/XaoS/3.0–Df¹o“repGeribile“dalla“home“page.› ?SPro¸èviamo“a“compilarlo.˜L'esecuzione“diŽ¡Â./congure¹,–U Âmakš®>e“¹e“inne“(come“roGot)“Âmak˜e‘Õinstall“¹proGcede“senza“in¸ètoppi.Ž¦Questo–U €è“solo“uno“fra“i“tanš¸èti“esempi“di“binari“preimpacc˜hettati“c˜he“pGortano“pi€ù“problemi“c˜he“v‘ÿqÐan˜taggi.ŽŸ(ÀœÁ5Ž‘ÁProblemi–G\riguardo“termcap“e“terminfoŽŸ¿:¹Secondo–šala“pagina“di“man¸èuale,‘¿»½terminfo–çâ€è“un“datab›ÿ}/ase“che“descrive“i“terminali,‘ ?usato“da“pr˜o˜gr˜ammi“orientati-Ž¡al‘‚Ðlo-schermo...¹.‘©Esso–¯Ødenisce“un“generico“insieme“di“sequenze“di“con¸ètrollo“(cošGdici“di“escap˜e)“usati“p˜erŽ¡mostrare–\pil“testo“sui“terminali,‘Ž-e“rende“pšGossibile“il“supp˜orto“p˜er“dierenš¸èti“terminali“hardw˜are“senza“la“necessit€àŽ¡di–Ϻdrivš¸èer“spGeciali.‘áNLe“librerie“½terminfo‘qH¹si“tro˜v‘ÿqÐano“in“º/usr/share/terminfo¹,‘î`sulle“moGderne“distribuzioni“diŽ¡Lin¸èux.Ž¦Il–H2database“½terminfo‘éÀ¹ha“ampiamenš¸ète“sostituito“il“pi€ù“v˜ecc˜hio“½termc‘ÿ}/ap‘éÀ¹ed“il“completamen˜te“obsoleto“½termlib‘¡Ž¹.Ž¡Ci€ò–úMnormalmenš¸ète“non“ha“nessuna“attinenza“con“l'installazione“dei“programmi,‘#˜eccetto“quando“si“ha“a“c˜heŽ¡fare–U con“un“paccš¸èhetto“c˜he“ric˜hiede“½termc‘ÿ}/ap‘¡Ž¹.Ž¦La–7Rmaggior“parte“delle“distribuzioni“Lin¸èux“ora“usano“½terminfo‘¡Ž¹,‘oßma“ancora“conserv‘ÿqÐano“le“librerie“½termc‘ÿ}/apŽ¡¹pGer–Γcompatibilit€à“con“le“applicazioni“legacy“(vš¸èedere“º/etc/termcap¹).‘ÝÙA‘Îtv˜olte“c'€è“uno“spGeciale“pacc˜hetto“diŽ¡compatibilit€à–m³cš¸èhe“€è“necessario“a˜v˜er“installato“pGer“facilitare“l'uso“dei“binari“link‘ÿqÐati“con“termcap.‘»:Raramen˜te,Ž¡p•Gotrebb“e–"essere“necessario“togliere“il“commenš¸èto“da“una“dic˜hiarazione“½#dene‘1ïtermc‘ÿ}/ap‘¢°¹in“un“le“sorgen˜te.Ž¡Conš¸ètrollate–U i“le“di“doGcumen˜tazione“appropriati“nella“v˜ostra“distribuzione“pGer“informazioni“a“tal“riguardo.ŽŸ(ÀœÁ6Ž‘ÁCompatibilit€à–G\all'indietro“con“i“binari“a.outŽŸ¿:¹In–‚¾rarissimi“casi,›Ž&€è“necessario“usare“binari“a.out,˜o“pšGerc¸èh€é“il“co˜dice“sorgen¸ète“non“€è“disp˜onibile“o“p˜erc¸èh€é,‘Ž&p˜erŽ¡una–U qualcš¸èhe“ragione,“non“€è“pGossibile“compilare“n˜uo˜vi“binari“ELF“dal“sorgen˜te.Ž¦Come–;succede,‘%6le“installazioni“ELF‘,hanno“quasi“sempre“un“completo“insieme“di“librerie“a.out“nella“directoryŽ¡º/usr/i486-linuxaout/lib¹.‘‡-Lo–scš¸èhema“di“n˜umerazione“delle“librerie“a.out“dierisce“da“quello“delle“ELF,Ž¡evitando›ê°in•¸ètelligen“temen“te˜conitti˜c“he˜p•Gotrebb“ero˜creare˜confusione.‘NI‘ê•binari˜a.out˜do¸èvrebb“ero˜p“erci€ò˜essereŽ¡in–U grado“di“tro¸èv‘ÿqÐare“le“giuste“librerie“in“fase“di“esecuzione,“ma“ci€ò“p•Gotrebb“e–U non“accadere“sempre.ŽŽŽŒ‹k~ Û_2 ý ~?Ÿ„€ÕÁGŽÂ7.‘ñ8Risoluzione–Õdei“problemi’BxZ¹8ŽŽ ÕÁ ýV¯Notate–Êscš¸èhe“il“k˜ernel“necessita“di“a˜v˜ere“il“suppšGorto“p˜er“a.out,‘'Ço“direttamen¸ète“o“come“mo˜dulo“caricabile.Ž¤ ®Pš¸èotrebbGe–ß3essere“necessario“ricompilare“il“k˜ernel“pGer“abilitare“ci€ò.‘ ¸Inoltre,‘A¸alcune“distribuzioni“di“Lin˜uxŽ¡ricš¸èhiedono–˜²l'installazione“di“uno“spGeciale“pacc˜hetto“di“compatibilit€à,›©—come“ºxcompat“¹di“Debian,˜pGer“eseguireŽ¡applicazioni–U X“a.out.ŽŸ"–Å6.1Ž‘¾Un‘¸esempioŽŸMª¹Jerry–h¦Smith“ha“scritto“il“comoGdissimo“programma“½xr–ÿ}/olo“dex‘œÖ¹alcuni–h¦anni“fa.‘"­Esso“usa“le“librerie“Motif,‘—ñma“fortu-Ž¡natamenš¸ète–´,€è“dispGonibile“come“binario“link‘ÿqÐato“staticamen˜te“in“formato“a.out.‘;ÚSfortunatamen˜te,‘Ô]il“sorgen˜te“ne-Ž¡cessita–Mxdi“nš¸èumerosi“aggiustamen˜ti“pGer“essere“ricompilato“usando“le“librerie“½lesstif‘r¹.‘žAncor“pi€ù“sfortunatamen˜te,Ž¡il–U binario“a.out“su“di“un“sistema“ELF“v‘ÿqÐa“in“bGomš¸èba“con“il“seguen˜te“messaggio“d'errore.ŽŸ‘Çxrolodex:–¹Ncan't“load“library“'//lib/libX11.so.3'ŽŸ Š=‘No–¹Nsuch“libraryŽŸ:ع(T‘ÿ*¸raducendo:‘q€non–U €è“pGossibile“caricare“la“libreria“//lib/libX11.so.3;“non“c'€è“nessuna“libreria“con“quel“nome)Ž©ؼSi–•Ød€à“il“caso“c¸èhe“ci“sia“una“tale“libreria,›¦in“º/usr/i486-linuxaout/lib¹,˜ma“xroloGdex“€è“incapace“di“tro¸èv‘ÿqÐarlaŽ¡in–U fase“di“esecuzione.‘q€La“soluzione“semplice“€è“di“fornire“un“link“sim¸èbGolico“nella“directory“º/lib¹:Ž¦ºln–?¬-s“/usr/i486-linuxaout/lib/X11.so.3.1.0“libX11.so.3Ž¦¹Ne–¨viene“fuori“c¸èhe“€è“necessario“fornire“link“simili“pšGer“le“librerie“libXt.so.3“e“lib˜c.so.4.‘jMCi€ò“dev¸èe“essere“fattoŽ¡come–xroGot,‘KÍnaturalmenš¸ète.‘Á‡Notate“c˜he“do˜vrete“essere“assolutamen˜te“certi“di“non“so˜vrascriv˜ere“o“pro˜v˜oGcareŽ¡conitti–±Ódi“vš¸èersione“con“librerie“preesisten˜ti.‘;F‘ÿ*¸ortunatamen˜te,‘Ò|le“n˜uo˜v˜e“librerie“ELF‘±ªhanno“n˜umeri“di“v˜ersioneŽ¡pi€ù–U alti“delle“pi€ù“v•¸èecc“hie–U a.out,“pšGer“prev¸èenire“ed“imp˜edire“proprio“tali“problemi.Ž¦DopGo›U a•¸èv“er˜creato˜i˜tre˜link,˜½xr–ÿ}/olo“dex‘‰P¹funziona˜bGene.Ž¦Il–ï paccš¸èhetto“½xr–ÿ}/olo“dex‘#;¹era–ï originariamen˜te“pubblicato“su“½Sp–ÿ}/e“ctr“o–ï ºhttp://www.spectro.com/“¹,‘uma“sem˜bra“c˜heŽ¡sia–.«sparito“da“l€ì.‘d®A•¸èttualmen“te–.«pu€ò“essere“scaricato“da“½Sunsite“ºhttp://metalab.unc.edu/pub/Linux/apps/Ž¡reminder/xrolodex.tar.z–U ¹come“le“sorgen¸ète“[512k]“in“formato“½tar.Z‘sÒ¹.ŽŸ(0oÁ7Ž‘ÁRisoluzione–G\dei“problemiŽŸ¿:¹Se–À½xmkmf‘ß¹e/o“½make‘€Þ¹hanno“funzionato“senza“problemi,‘ÛkpGotete“passare“alla“8“(prossima“sezione).‘³ÌT‘ÿ*¸utta¸èvia,Ž¡nella–"övita“reale,‘Vkp•Go“cš¸èhe–"öcose“v‘ÿqÐanno“bGene“al“primo“ten˜tativ˜o.‘ۀȑ"Áin“questi“casi“c˜he“la“v˜ostra“in˜traprendenzaŽ¡viene–U messa“alla“pro¸èv‘ÿqÐa.ŽŸ"–Å7.1Ž‘¾Errori–¸in“fase“di“linkŽŸ{‰‘¸ŽŽŽ‘¹SuppGoniamo–bËc¸èhe“½make‘#¹fallisca“con“un:‘øVºLink›?¬error:– X-lX11:“No˜such˜file˜or˜directory‘b˹(NessunŽ¡‘le–zòo“directory“con“quel“nome),‘„gancš¸èhe“dopGo“c˜he“xmkmf“€è“stato“in˜v˜ošGcato.‘â÷Ci€ò“p˜otrebb˜e“signicare“c¸èheŽ¡‘il–úle“½Imake‘ºß¹non“€è“stato“preparato“correttamen•¸ète.‘aÏCon“trollate›úc“he˜nella˜prima˜parte˜del˜½Makele‘ºß¹ciŽ¡‘siano–U delle“righe“tipGo:ŽŸ“Ò‘/ÇLIB=‘8¯¨-L/usr/X11/libŽ¤ Š=‘/INCLUDE=‘%Êp-I/usr/X11/include/X11Ž¡‘/LIBS=‘3öZ-lX11–¹N-lc“-lmŽŸ·©‘¹Le–¾opzioni“º-L›¾j¹e“º-I˜¹dicono“al“compilatore“e“al“linkš¸èer“do˜v˜e“cercare“i“le“½libr‘ÿ}/ary‘ þ¹e“½include‘ÀO¹,‘Ü­rispGettiv‘ÿqÐamen˜te.Ž¤ ®‘In– questo“esempio,›²Òle“½libr‘ÿ}/erie–ئdi“X11‘û¹do¸èvrebbGero– essere“nella“directory“º/usr/X11/lib¹,˜e“i“½le‘ئincludeŽ¡‘di‘)ºX11‘<ã¹doš¸èvrebbGero–áóessere“nella“directory“º/usr/X11/include/X11¹.‘KSe“sulla“v˜ostra“macc˜hina“non“€è“cos€ì,Ž¡‘appGortate–U i“cam•¸èbiamen“ti–U necessari“al“½Makele‘o¹e“ripro¸èv‘ÿqÐate“il“½make‘ÀO¹.ŽŽŽŒ‹ |• Û_2 ý ~?Ÿ„€ÕÁGŽÂ7.‘ñ8Risoluzione–Õdei“problemi’BxZ¹9ŽŽ ÕÁ ýV¯‘¸ŽŽŽ‘¹Riferimenš¸èti–U non“deniti“alle“funzioni“della“libreria“matematica,“come“il“seguen˜te:Ž¤Š=‘YƒÀÇ/tmp/cca011551.o(.text+0x11):–¹Nundefined“reference“to“`cos'Ž©®‘¹La–6Ñsoluzione“€è“di“link‘ÿqÐargli“esplicitamen¸ète“la“ºlibreria‘?¬matematica¹,‘<áaggiungendo“un“Â-lm“¹al“ag“½LIB‘=J¹oŽŸ ®‘½LIBS‘‡‰¹nel–U ºMakefile“¹(vš¸èedere“esempio“preceden˜te).ŽŸؼ‘¸ŽŽŽ‘¹Ancora–U un'altra“cosa“da“proš¸èv‘ÿqÐare“se“½xmkmf‘s’¹fallisce“€è“lo“script“seguen˜te:Ž¡‘YƒÀÇmake–¹N-DUseInstalled“-I/usr/X386/lib/X11/configŽ¦‘¹Che–U €è“una“spGecie“di“½xmkmf‘s’¹ridotto“all'osso.ŽŸؼ‘¸ŽŽŽ‘¹In–U rarissimi“casi,“l'esecuzione“di“½ldc›ÿ}/ong‘7Ž¹come“½r˜o˜ot‘Gé¹p•Gotrebb“e–U essere“la“soluzione:Ž¡¦‘Â#‘Õldcong–U ¹aggiorna“i“link“sim¸èbGolici“alla“libreria“condivisa.‘q€½Questo›“°p–ÿ}/otr“ebb“e˜non˜esser“e˜ne“c“essario.Ž©ؼ‘¸ŽŽŽ‘¹Alcuni–NøºMakefile“¹usano“degli“alias“non“riconosciuti“pGer“le“librerie“presenš¸èti“nel“v˜ostro“sistema.Ž¤ ®‘Pš¸èer–†esempio,‘Ò il“binario“p•Gotrebb“e–†ric˜hiedere“ºlibX11.so.6¹,‘Ò ma“in“º/usr/X11R6/lib“¹non“c'€è“nes-Ž¡‘sun–|«le“o“link“con“quel“nome.› è"P¸èer€ò,‘Žc'€è“un“ºlibX11.so.6.1¹.˜La“soluzione“€è“di“fare“un“Âln‘O_-sŽ¡‘/usr/X11R6/lib/libX11.so.6.1‘ð8/usr/X11R6/lib/libX11.so.6¹,‘ˆÞcome–KRrošGot.‘TCi€ò“p˜otrebb˜e“do•¸èv“erŽ¡‘essere–U seguito“da“un“Âldcong¹.Ž¦‘¸ŽŽŽ‘¹A‘bˆvš¸èolte–bŒil“sorgen˜te“necessita“delle“v˜ecc˜hie“librerie“nella“v˜ersione“X11R5“pGer“essere“compilato.‘™ÃSe“a˜v˜eteŽ¡‘le–þUlibrerie“R5“in“/usr/X11R6/lib“(a•¸èv“ete›þUa“vuto˜la˜pGossibilit€à˜di˜installarle˜duran“te˜la˜prima˜installazioneŽ¡‘di–âîLinš¸èux),‘ùÅallora“do˜v˜ete“solo“assicurarvi“di“a˜v˜ere“i“link“di“cui“il“soft˜w˜are“ha“bisogno“pGer“la“compilazione.Ž¡‘Le–Yºlibrerie‘?¬R5“¹sono“c¸èhiamate“ºlibX11.so.3.1.0¹,–´ºlibXaw.so.3.1.0¹,“e–YºlibXt.so.3.1.0¹.‘[>Di“solito“viŽ¡‘servš¸èono–cœdei“link,‘g“½libX11.so.3.1.0‘Zð¹.‘œõF‘ÿ*¸orse–cœil“soft˜w˜are“a˜vr€à“bisogno“anc˜he“di“un“linkŽ¡‘del–ÄutipšGo“½libX11.so–ú-µ>“½libX11.so.3.1.0‘Zð¹.‘¿Naturalmen¸ète,‘àJp˜er–Äucreare“un“link“mancan¸ète,‘àJusate“il“comandoŽ¡‘Âln–Õ-s“libX11.so.3.1.0“libX11.so¹,‘U ½c–ÿ}/ome‘“°r“o“ot‘òɹ.Ž¦‘¸ŽŽŽ‘¹Alcuni–WÊpaccš¸èhetti“esigeranno“l'installazione“di“v˜ersioni“aggiornate“di“una“o“pi€ù“librerie.‘y~P˜er“esempio,‘XtleŽ¡‘vš¸èersioni–¨4.x“della“suite“½StarOc‘ÿ}/e‘A÷¹della“StarDivision“Gm˜bH‘serano“famose“pGer“ric˜hiedere“ºlibc“¹in“v˜ersioneŽ¡‘5.4.4–o}o“successiv‘ÿqÐa.‘À—Ancš¸èhe“il“pi€ù“recen˜te“½StarOc‘ÿ}/e‘/̹5.0“non“girer€à“nemmeno“dopGo“l'installazione“con“leŽ¡‘n•¸èuo“v“e–‚älibrerie“ºglibc‘?¬2.1¹.‘úËF‘ÿ*¸ortunatamenš¸ète,‘ŽTil“pi€ù“n˜uo˜v˜o“½StarOc‘ÿ}/e‘C3¹5.1“risolv˜e“tali“problemi.‘úËSe“a˜v˜eteŽ¡‘una–¸¥vš¸èersione“di“½StarOc‘ÿ}/e‘xô¹pi€ù“v˜ecc˜hia,‘×ñpGotreste“do˜v˜er“copiare,›×ñda“roGot,˜una“o“pi€ù“librerie“nelle“directoryŽ¡‘appropriate,›6Årim•¸èuo“v“ere–/.le“v•¸èecc“hie–/.librerie,˜pšGoi“ripristinare“i“link“sim¸èb˜olici“(conš¸ètrollate“l'ultima“v˜ersioneŽ¡‘dello–U ºStarOffice‘?¬miniHOWTO“¹16“((tradotto))“pGer“maggiori“informazioni“su“questo“argomen¸èto).Ž©®‘ÂAš®>ttenzione:‘GNUsate–ê¯molta“cautela“nel“fare“ci€ò,‘ðpQÂoic˜h€é“pQÂotreste“rendere“non“funzionan˜te“ilŽ¡‘vš®>ostro–Õsistema“se“com˜binate“dei“pasticci.Ž¦‘¹P•¸èotete›U tro“v‘ÿqÐare˜le˜librerie˜pi€ù˜aggiornate˜presso˜½Sunsite˜¹.ŽŸ#ÃÅ7.2Ž‘¾Altri‘¸problemiŽŸ#‘¸ŽŽŽ‘¹Uno–ŒUscript“½Perl‘”̹o“shell“installato“vi“d€à“un“ºNo–?¬such“file“or“directory–ŒU¹come“messaggio“d'errore.Ž¡‘In–Ášquesto“caso,‘¸con¸ètrollate“i“pšGermessi“del“le“p˜er“assicurarvi“cš¸èhe“il“le“sia“eseguibile“e“con˜trollateŽ¡‘l'inš¸ètestazione–‡Pdel“le“pGer“accertarvi“c˜he“la“shell“o“il“programma“in˜v˜ošGcato“dallo“script“sia“nel“p˜ostoŽ¡‘spšGecicato.‘q€P¸èer–U esempio,“lo“script“p˜otrebb˜e“iniziare“con:ŽŸŠ=‘/Ç#!/usr/local/bin/perlŽŽŽŒ‹ ŒW Û_2 ý ~?Ÿ„€ÕÁGŽÂ7.‘ñ8Risoluzione–Õdei“problemi’=xª¹10ŽŽ ÕÁ ýV¯‘Se–?£infatti“½Perl‘H¹€è“installato“nella“vš¸èostra“directory“º/usr/bin“¹in˜v˜ece“c˜he“nella“º/usr/local/bin¹,‘Cïallora“loŽ¤ ®‘script–Knon“funzioner€à.‘n&Ci“sono“due“mošGdi“p˜er“correggere“questo“problema.‘n&L'in¸ètestazione“del“le“scriptŽ¡‘pu€ò–vessere“camš¸èbiata“in“º#!/usr/bin/perl¹,‘~Wo“si“pu€ò“aggiungere“un“link“sim˜bGolico“alla“giusta“directory‘ÿ*¸,Ž¡‘Âln–Õ-s“/usr/bin/pšQÂerl“/usr/lo˜cal/bin/p˜erl¹.Ž©€”‘¸ŽŽŽ‘¹Alcuni–'programmi“X11“ricš¸èhiedono“le“librerie“Motif“pGer“la“compilazione.‘.ØLe“distribuzioni“Lin˜ux“standardŽ¡‘non–´¼hanno“le“librerie“Motif“installate,‘Ì£e“al“momenš¸èto“Motif“costa“100-200$“extra“(sebbGene“in“parecc˜hiŽ¡‘casi–kfunzioni“ancš¸èhe“la“v˜ersione“freew˜are“½L‘ÿ}/esstif“ºhttp://www.lesstif.org/“¹).‘³5Se“vi“serv˜e“Motif“pGer“laŽ¡‘compilazione–mdi“un“certo“pacc¸èhetto,›rýma“vi“mancano“le“librerie“Motif,˜pu€ò“essere“pGossibile“ottenere“deiŽ¡‘½binari–®linkati“static‘ÿ}/amente‘ÀO¹.›Ç\Il–q¿link‘ÿqÐaggio“statico“incorpGora“le“routine“di“libreria“nei“binari“stessi.˜Ci€ò“siŽ¡‘traduce–U in“le“binari“pi€ù“grandi,“ma“il“coGdice“girer€à“sui“sistemi“in“cui“mancano“le“librerie.ŽŸ»¿Ÿß–‘Quando–¾¹un“paccš¸èhetto“ric˜hiede,›Ù pGer“la“compilazione,˜delle“librerie“non“presenš¸èti“sul“v˜ostro“sistema,‘Ù ci€òŽ¡‘pro•¸èv“ošGc“her€à–tÜerrori“in“fase“di“link“(errori“tip˜o“ºundefined‘?¬reference“¹-“riferimen¸èto“non“denito).‘дLeŽ¡‘librerie›jòp•Gotrebb“ero˜essere˜del˜tip“o˜costoso˜(propriet€à˜di˜qualcuno)˜o˜dicili˜da˜tro¸èv‘ÿqÐare˜p“er˜qualc¸èheŽ¡‘altra–Œragione.‘ZIn“tal“caso,›™Ðottenere“un“binario“½linkato‘Æ>static‘ÿ}/amente‘Lb¹dall'autore“del“pacc¸èhetto,˜o“da“unŽ¡‘gruppGo–U utenš¸èti“Lin˜ux,“pu€ò“essere“il“mošGdo“pi€ù“facile“p˜er“eettuare“delle“riparazioni.Ž¦‘¸ŽŽŽ‘¹Eseguendo–‹{uno“script“½c–ÿ}/ongur“e‘Kʹ€è–‹{stato“creato“uno“strano“Makš¸èele,‘™uno“c˜he“sem˜bra“non“a˜v˜ere“n˜ulla“aŽ¡‘cš¸èhe–Ðfare“col“pacc˜hetto“c˜he“state“ten˜tando“di“compilare.‘âYCi€ò“signica“c˜he“€è“stato“eseguito“il“½c–ÿ}/ongur“eŽ¡‘¹sbagliato,‘¸Åuno–¤×troš¸èv‘ÿqÐato“da“qualc˜he“altra“parte“nel“path.‘`¥Lanciate“sempre“½c–ÿ}/ongur“e‘e&¹come‘¤×Â./congureŽ¡‘¹pGer–U evitare“questo“problema.Ž¦‘¸ŽŽŽ‘¹La–‰0maggior“parte“delle“distribuzioni“sono“passate“alle“librerie“ºlibc–?¬6“/“glibc“2–‰0¹dalla“pi€ù“v•¸èecc“hia‘‰0ºlibcŽ¡‘5¹.‘o^I‘N·binari–N¹precompilati“cš¸èhe“funziona˜v‘ÿqÐano“con“la“v˜ecc˜hia“libreria“p•Gotrebb“ero–N¹andare“in“bGom˜ba“se“a˜v˜eteŽ¡‘aggiornato–-ÿla“libreria.‘üLa“soluzione“€è“o“di“ricompilare“le“applicazioni“dal“sorgen¸ète“o“di“ottenere“deiŽ¡‘n•¸èuo“vi–Vñbinari“precompilati.‘vóSe“state“aggiornando“il“vš¸èostro“sistema“a“ºlibc‘?¬6“¹e“riscon˜trate“dei“problemi,Ž¡‘fate–U riferimen¸èto“al“½Glib‘ÿ}/c–“°2“HO¾˜WTO‘Eƹ16–U ((tradotto))“di“Eric“Green.ŽŸ»¿Ÿß–‘Notate–x¯cš¸èhe“ci“sono“delle“piccole“incompatibilit€à“fra“le“v˜ersioni“minori“di“ºglibc¹,‘¤Æcos€ì“un“binario“compilatoŽ¡‘con–U ºglibc›?¬2.1“¹p•Gotrebb“e–U non“funzionare“con“ºglibc˜2.0“¹e“vice“v¸èersa.Ž¦‘¸ŽŽŽ‘¹A‘³v¸èolte–³o€è“necessario“togliere“l'opzione“½-ansi‘¸8¹dai“ag“di“compilazione“nel“ºMakefile¹.‘ŒlCi€ò“abilita“leŽ¡‘caratteristic•¸èhe›n»supplemen“tari˜di˜gcc,–µ!quelle˜non-ANSI‘nrin˜particolare,“e˜pGermette˜la˜compilazione˜diŽ¡‘pacc•¸èhetti›U c“he˜ric“hiedono˜tali˜estensioni.‘q€(Grazie˜a˜Sebastien˜Blondeel˜pGer˜questa˜indicazione).Ž¦‘¸ŽŽŽ‘¹Alcuni–×æprogrammi“esigono“di“essere“½setuid‘÷„r–ÿ}/o“ot‘òɹ,‘8—p•Ger›×æp“oter˜essere˜eseguiti˜con˜½privile›ÿ}/gi–÷„di“r˜o˜ot‘òɹ.‘ùÑIlŽ¡‘comando–oæpGer“eettuare“ci€ò“€è“Âc®>hmoQÂd–Iu+s“nomele¹,‘¶˜½c–ÿ}/ome‘—Ör“o“ot‘b¯¹(osserv‘ÿqÐate–oæcš¸èhe“il“programma“dev˜eŽ¡‘gi€à–S†essere“di“propriet€à“di“rošGot).‘l³Questo“ha“l'eetto“di“imp˜ostare“il“bit“½setuid‘[ý¹nei“p˜ermessi“del“le.Ž¡‘Questo–Ùproblema“viene“fuori“quando“il“programma“accede“all'hardw¸èare“di“sistema,‘4‡come“un“moGdemŽ¡‘o–ý!un“lettore“CD‘üõRš¸èOM,“o“quando“le“librerie“SV˜GA‘üõv˜engono“c˜hiamate“dal“moGdo“console,‘'!come“in“unŽ¡‘particolare–IDnoto“paccš¸èhetto“di“em˜ulazione.‘mŒSe“un“programma“funziona“quando“eseguito“da“roGot,‘K£ma“d€àŽ¡‘messaggi–©di“errore“tipšGo“½ac–ÿ}/c“ess‘àèdenie“d‘±†¹(accesso–©negato)“ad“un“uten¸ète“normale,‘¾ sosp˜ettate“c¸èhe“la“causaŽ¡‘sia‘U questa.ŽŸi?‘ÂA‘þ¸øvv•®>ertimen“to:‘Vá¹Un–áprogramma“con“½setuid‘(X¹impšGostato“come“ro˜ot“pu€ò“p˜orre“un“risc¸èhio“di“sicurezza“p˜erŽ¡‘il–ß5sistema.‘J2Il“programma“gira“con“privilegi“di“rošGot“ed“ha“cos€ì“il“p˜otenziale“di“causare“danni“signicativi.Ž¡‘Aš¸èccertatevi–¶Ýdi“sapGere“cosa“fa“il“programma,‘ÏLguardando“il“sorgen˜te“se“pšGossibile,‘ÏLprima“di“imp˜ostare“ilŽ¡‘bit‘U ½setuid‘w¹.ŽŽŽŒ‹ œ© Û_2 ý ~?Ÿ„€ÕÁGŽÂ8.‘ñ8Conclusioni’¯1¹11ŽŽ ÕÁ ýV¯Å7.3Ž‘¾Rito_úccš hi–¸e“messa“a“pun˜toŽ©Mª¹P•¸èotreste›úRv“oler˜esaminare˜il˜ºMakefile˜¹pGer˜accertarvi˜c“he˜v“engano˜usate˜le˜migliori˜opzioni˜di˜compilazioneŽ¤ ®p•Gossibili›Pkp“er˜il˜v•¸èostro˜sistema.‘šP“er˜esempio,‘„impGostando˜il˜ag˜½-O2‘«[¹si˜sceglie˜il˜pi€ù˜alto˜liv“ello˜di˜ottimizzazioneŽ¡ed–ÉÌil“ag“½-fomit-fr–ÿ}/ame-p“ointer‘ÝI¹pro•¸èv“ošGca–ÉÌla“generazione“di“un“binario“pi€ù“piccolo“(sebb˜ene“il“debugging“sar€àŽ¡cos€ì‘disabilitato).‘{xÂPš®>er€ò–.non“gioQÂc˜herellate“con“tali“opzioni,‘Ï4a“meno“c˜he“non“sappiate“cosa“stateŽ¡facendo,–Õe“comš®>unque“non“prima“di“a˜v˜er“otten˜uto“un“binario“funzionan˜te.ŽŸ#ÃÅ7.4Ž‘¾Do• v“e›¸tro“v‘ÿ@ are˜maggiore˜aiutoŽ¦¹Nella–™ömia“espšGerienza,‘¿eforse“il“25%“delle“applicazioni“sup˜era“la“fase“di“compilazione“cos€ì“com'€è,‘¿esenza“problemi.Ž¡Un–Ï0altro“50%,›í´o“gi€ù“di“l€ì,˜pu€ò“essere“pGersuaso“a“farlo“con“uno“sforzo“v‘ÿqÐariabile“da“liev¸èe“ad“erculeo.‘ß°QuestoŽ¡signica–ÿ\cš¸èhe“ancora“un“n˜umero“signicativ˜o“di“pacc˜hetti“non“ce“la“faranno,‘ƒnon“impGorta“cosa“si“faccia.‘TêIn“talŽ¡caso,‘!Ti–`binari“Inš¸ètel“ºELF‘P¹e/o“ºa.out“¹di“questi“p•Gotrebb“ero–`essere“tro˜v‘ÿqÐati“presso“½Sunsite“¹o“presso“½TSX-11‘Xar‘ÿ}/chiveŽ¡¹.‘q€½R–ÿ}/e“d‘“°Hat–U ºhttp://redhat.com“¹eŽ©ؼ½Debian–TÖºhttp://www.debian.org“¹hanno“v‘ÿqÐasti“arcš¸èhivi“di“binari“preimpacc˜hettati“della“maggior“parte“dei“pi€ùŽ¡p•Gop“olari›¢Lsoft•¸èw“are˜pGer˜Lin“ux.‘5äF‘ÿ*¸orse˜l'autore˜del˜soft“w“are˜pu€ò˜fornire˜i˜binari˜compilati˜pGer˜il˜v“ostro˜particolareŽ¡tipGo–U di“macc¸èhina.Ž¦ºNotate–?¬che“se“ottenete“i“binari“precompilati,“dovrete“controllarne“la“compatibilit€à“conŽ¡il–?¬vostro“sistema:Ž©ؼ‘¸ŽŽŽ‘ºI–?¬binari“devono“girare“sul“vostro“hardware“(i.e.,“Intel“x86).Ž¤®‘¸ŽŽŽ‘ºI–?¬binari“devono“essere“compatibili“con“il“vostro“kernel“(i.e.,“a.out“o“ELF).Ž¡‘¸ŽŽŽ‘ºLe–?¬vostre“librerie“devono“essere“aggiornate.Ž¡‘¸ŽŽŽ‘ºIl–?¬vostro“sistema“deve“avere“le“appropriate“utilit€à“di“installazione“(rpm“o“deb)¹.Ž¦Se–ñŸtutto“il“resto“non“funziona,›X¿pGotete“tro¸èv‘ÿqÐare“aiuto“nei“newsgroup“appropriati,˜come“½c‘ÿ}/omp.os.linux.x“¹oŽ¤ ®½c‘ÿ}/omp.os.linux.development‘U ¹.Ž©ؼSe–U non“funziona“proprio“nienš¸ète,“almeno“a˜vrete“fatto“del“v˜ostro“meglio,“ed“a˜vrete“imparato“molto.ŽŸ(ÀœÁ8Ž‘ÁConclusioniŽŸ¿:¹Leggete–#wla“doGcumenš¸ètazione“del“pacc˜hetto“soft˜w˜are“pGer“stabilire“se“certe“v‘ÿqÐariabili“d'am˜bien˜te“hanno“bisog-Ž¡no–!Vdi“impGostazioni“(in“º.bashrc“¹o“º.cshrc¹)“e“se“i“le“º.Xdefaults“¹e“º.Xresources“¹hanno“bisogno“di“essereŽ¡pGersonalizzati.Ž¦P¸èotrebbšGe–WÆesserci“un“le“di“default“p˜er“l'applicazione,‘Xpdi“solito“c¸èhiamato“ºXprog.ad“¹nella“distribuzione“XprogŽ¡originale.‘ÐSe–„å€è“cos€ì,‘×editate“il“le“Xprog.ad“pGer“adattarlo“alla“vš¸èostra“macc˜hina,‘×pGoi“cam˜biategli“nome“(Âm®>v¹)Ž¡in–UßXprog“ed“installatelo“nella“directory“º/usr/lib/X11/app-defaults“½c–ÿ}/ome‘”_r“o“ot‘òɹ.‘s¼Un–Ußinsuccesso“nel“fare“ci€òŽ¡p•Gotrebb“e–U far“s€ì“cš¸èhe“il“soft˜w˜are“si“compGorti“stranamen˜te“o“addirittura“si“riuti“di“girare.Ž¦La–õgmaggior“parte“dei“paccš¸èhetti“soft˜w˜are“comprendono“una“o“pi€ù“pagine“di“man˜uale“preformattate.‘RT½ComeŽ¡r–ÿ}/o“ot‘òɹ,›Æ>copiate–¯žil“le“Xprog.man“nella“directory“º/usr/man¹,˜º/usr/local/man¹,˜o“º/usr/X11R6/man“¹appropriataŽ¡(ºman1–õ¸¹-“ºman9¹),‘Þe“camš¸èbiategli“nome“come“del“caso.‘SIP˜er“esempio,‘Þse“Xprog.man“nisce“in“/usr/man/man4,Ž¡doš¸èvrebbGe–&Ressere“rinominato“Xprog.4“(m˜v“Xprog.man“Xprog.4).‘åP˜er“con˜v˜enzione,‘Zži“comandi“uten˜te“v‘ÿqÐannoŽ¡in–’Uºman1¹,›¡£i“gioGc¸èhi“in“ºman6¹,˜ed“i“paccš¸èhetti“di“amministrazione“in“ºman8“¹(v˜edere“la“½do‘ÿ}/cumentazione–Ìdi“man‘Vª¹pGerŽ¡maggiori–U dettagli).‘q€Naturalmenš¸ète,“se“vi“v‘ÿqÐa,“pGotete“discostarvi“dalla“con˜v˜enzione,“sul“v˜ostro“sistema.ŽŽŽŒ‹ °; Û_2 ý ~?Ÿ„€ÕÁGŽÂ9.‘ñ8Primo‘Õesempio:‘ Xscrabble’4¼i¹12ŽŽ ÕÁ ýV¯Alcuni,›úp•Go“c•¸èhi,˜pacc“hetti–ã;non“installeranno“i“binari“nelle“appropriate“directory“di“sistema,˜cioG€è“essi“non“hannoŽ¤ ®l'opzione– ¹½instal‘‚Ðl‘©0¹nel“ºMakefile¹.‘5^In“tal“caso,‘ÄÍpGotete“installare“man•¸èualmen“te– ¹i“binari“copiandoli“nell'appropriataŽ¡directory–Ùdi“sistema,–º/usr/bin¹,“º/usr/local/bin–Ù¹o“º/usr/X11R6/bin¹,›½c–ÿ}/ome‘¼Õr“o“ot‘òɹ,˜naturalmen•¸ète.‘÷ªNotate‘Ùc“heŽ¡º/usr/local/bin–Ý–¹€è“la“directory“da“preferire“pGer“i“binari“c¸èhe“non“fanno“parte“della“distribuzione“di“base“diŽ¡Lin¸èux.Ž©ؼAlcune–6`o“tutte“le“suddette“prošGcedure“,nella“maggior“parte“dei“casi,‘<†do¸èvrebb˜ero“essere“eettuate“automatica-Ž¡men¸ète–Õpcon“un“Âmakš®>e‘h§install¹,‘õ„e“forse“un“Âmak˜e‘h§install.man“¹o“un“Âmak˜e‘h§install_man¹.‘òpSe“€è“cos€ì,‘õ„i“le“diŽ¡došGcumen¸ètazione–U ºREADME“¹o“ºINSTALL“¹lo“sp˜ecic¸èheranno.ŽŸ(‰ŽÁ9Ž‘ÁPrimo‘G\esempio:‘ ÐXscrabbleŽŸ¿:¹L'ºXscrabble–茹di“Matt“Chapman“a•¸èv“ev‘ÿqÐa–èŒl'aria“di“essere“un“programma“cš¸èhe“sarebbGe“stato“in˜teressan˜te“a˜v˜ere,Ž¡pGoicš¸èh€é–ílsi“d€à“il“caso“c˜he“io“sia“un“accanito“gioGcatore“di“ScrabbleºTM¹.“Lo“scaricai,–decompressi,“e–íllo“compilaiŽ¡seguendo–U la“proGcedura“nel“le“README:ŽŸµ‘0žˆÇxmkmfŽ¤ Š=‘0žˆmake‘¹NMakefilesŽ¡‘0žˆmake‘¹NincludesŽ¡‘0žˆmakeŽŸØì½Ovviamente–“°non“funzion€ò...ŽŸu!‘Çgcc–¹N-o“xscrab“-O2“-O“-L/usr/X11R6/libŽ¡‘init.o–¹Nxinit.o“misc.o“moves.o“cmove.o“main.o“xutils.o“mess.o“popup.oŽ¡‘widgets.o–¹Ndisplay.o“user.o“CircPerc.oŽ¡‘-lXaw–¹N-lXmu“-lXExExt“-lXext“-lX11“-lXt“-lSM“-lICE“-lXExExt“-lXext“-lX11Ž¡‘-lXpm–¹N-L../Xc“-lXcŽ¡¡‘BarGraf.o(.text+0xe7):–¹Nundefined“reference“to“`XtAddConverter'Ž¡‘BarGraf.o(.text+0x29a):–¹Nundefined“reference“to“`XSetClipMask'Ž¡‘BarGraf.o(.text+0x2ff):–¹Nundefined“reference“to“`XSetClipRectangles'Ž¡‘BarGraf.o(.text+0x375):–¹Nundefined“reference“to“`XDrawString'Ž¡‘BarGraf.o(.text+0x3e7):–¹Nundefined“reference“to“`XDrawLine'Ž¡‘etc.Ž¡‘etc.Ž¡‘etc...ŽŸ˜ø¹Indagai–0•su“ci€ò“nel“newsgroup“½c‘ÿ}/omp.os.linux.x“¹,›gre“qualcuno“gen•¸ètilmen“te–0•mi“indic€ò“c•¸èhe,˜apparen“temen“te,˜leŽ¤ ®librerie–U Xt,“Xaš¸èw,“Xm˜u,“e“X11“non“erano“state“tro˜v‘ÿqÐate“nella“fase“di“link.‘q€Hmmm...Ž¦C'erano––due“Makš¸èele“principali,‘¼He“quello“nella“directory“ºsrc“¹cattur€ò“la“mia“attenzione.‘1ÑUna“linea“nel“Mak˜eleŽ¡denita–1LOCAL_LIBS:“LOCAL_LIBS›1=“$(XA‘þã WLIB)˜$(XMULIB)˜$(XTOOLLIB)˜$(XLIB).“Qui“c'erano“iŽ¡riferimenš¸èti–U alle“librerie“non“tro˜v‘ÿqÐate“dal“link˜er.Ž¦Cercando–U il“successivš¸èo“riferimen˜to“a“LOCAL_LIBS,“vidi“alla“linea“495“di“quel“Mak˜ele:Ž¤µ‘5WÖÇ$(CCLINK)–¹N-o“$@“$(LDOPTIONS)“$(OBJS)“$(LOCAL_LIBS)“$(LDLIBS)Ž© Š=‘$(EXTRA_LOAD_FLAGS)ŽŸØì¹Ora,–U cos'erano“queste“LDLIBS?Ž¡‘5WÖÇLDLIBS–¹N=“$(LDPOSTLIB)“$(THREADS_LIBS)“$(SYS_LIBRARIES)Ž¦‘$(EXTRA_LIBRARIES)ŽŽŽŒ‹ À  Û_2 ý ~?Ÿ„€ÕÁGŽÂ10.‘ñ8Secondo‘Õesempio:‘ Xloadimage’øû¹13ŽŽ ÕÁ ýV¯Le–U SYS_LIBRARIES“erano:Ž©´å‘¹PÇSYS_LIBRARIES–¹N=“-lXpm“-L../Xc“-lXcŽŸؼ¹S€ì!‘q€Le–U librerie“mancan¸èti“erano“qui.ŽŸؼ€È‘hpGossibile–šcš¸èhe“il“link˜er“a˜v˜esse“bisogno“di“v˜edere“le“LDLIBS‘hprima“delle“LOCAL_LIBS...‘¾ïCos€ì,‘J¹la“primaŽ¤ ®cosa–]Cda“proš¸èv‘ÿqÐare“era“di“moGdicare“il“Mak˜ele“in˜v˜ertendo“le“$(LOCAL_LIBS)›]Ae“le“$(LDLIBS)˜alla“linea“495,Ž¡dunque–U ora“si“do¸èvrebbGe“leggere:Ž¦‘>ÊrÇ$(CCLINK)–¹N-o“$@“$(LDOPTIONS)“$(OBJS)“$(LDLIBS)“$(LOCAL_LIBS)ŽŸ Š=‘$(EXTRA_LOAD_FLAGS)‘zÑì^^^^^^^^^^^^^^^^^^^^^^^ŽŸؼ¹Proš¸èv‘ÿqÐai–ö³ad“eseguire“di“n˜uo˜v˜o“½make‘·¹con“i“suddetti“cam˜biamen˜ti“e,› –guarda“un“pGo',˜sta•¸èv“olta‘ö³funzion€ò.‘RXscrabbleŽ¡a•¸èv“ev‘ÿqÐa–\&ancora“bisogno“di“qualcš¸èhe“aggiustamen˜to“ed“una“messa“a“pun˜to,–]ço˜vviamen˜te,“come–\&cam˜biare“nome“alŽ¡dizionario–õ¾e“togliere“il“commenš¸èto“da“qualc˜he“statemen˜t“assert“in“uno“dei“le“sorgen˜ti,‘åma“da“allora“mi“haŽ¡fornito–U sv‘ÿqÐariate“ore“di“div•¸èertimen“to.Ž©ؼ[Notate–>†cš¸èhe“ora“€è“dispGonibile“una“n˜uo˜v‘ÿqÐa“v˜ersione“di“Xscrabble“in“formato“rpm,‘xße“questa“si“installa“senzaŽ¡problemi.]Ž¦P•¸èotete›åºcon“tattare˜½Matt‘¸Chapman˜ºmailto:matt@belgarath.demon.co.uk˜¹via˜e-mail,‘ áe˜scaricare˜½Xscr‘ÿ}/abbleŽ¡¹dalla–U sua“½home‘“°p‘ÿ}/age“ºhttp://www.belgarath.demon.co.uk/programs/index.html“¹.Ž©´å‘:$ÇScrabble–¹Ne“un“marchio“registrato“dalla“Milton“Bradley“Co.,“Inc.ŽŸ(ÀœÁ10Ž‘¬%Secondo‘G\esempio:‘ ÐXloadimageŽŸ¿:¹Questo–((esempio“pGone“un“problema“pi€ù“facile.‘bƒIl“programma“½xlo‘ÿ}/adimage‘èw¹sem•¸èbra“v‘ÿqÐa–((un'utile“aggiun¸èta“alla“miaŽ¡raccolta–@Ãdi“attrezzi“graci.‘4hHo“copiato“il“le“ºxloadi41.gz“¹direttamenš¸ète“dalla“directory“sorgen˜te“sul“CD,Ž¡allegato–[›all'eccellen¸ète“libro“16“(X‘[™User“T‘ÿ*¸ošGols),‘]:di“Mui“e“Quercia.‘„ñCome“c'era“da“asp˜ettarsi,‘]:½tar‘™¦xzvf‘z ¹estrae“iŽ¡le–U dall'arcš¸èhivio.‘q€Il“½make‘ÀO¹,“pGer€ò,“fornisce“un“an˜tipatico“errore“e“termina.Ž¦‘Çgcc–¹N-c“-O“-fstrength-reduce“-finline-functions“-fforce-memŽ¤ Š=‘-fforce-addr‘¹N-DSYSV‘ rœ-I/usr/X11R6/includeŽ¡‘-DSYSPATHFILE=\"/usr/lib/X11/Xloadimage\"‘¹Nmcidas.cŽ¡¡‘In–¹Nfile“included“from“/usr/include/stdlib.h:32,Ž¡‘iN0from‘¹Nimage.h:23,Ž¡‘iN0from‘¹Nxloadimage.h:15,Ž¡‘iN0from‘¹Nmcidas.c:7:Ž¡‘/usr/lib/gcc-lib/i486-linux/2.6.3/include/stddef.h:215:Ž¡‘conflicting–¹Ntypes“for“`wchar_t'Ž¡‘/usr/X11R6/include/X11/Xlib.h:74:–¹Nprevious“declaration“ofŽ¡‘`wchar_t'Ž¡‘make[1]:–¹N***“[mcidas.o]“Error“1Ž¡‘make[1]:–¹NLeaving“directoryŽ¡‘`/home/thegrendel/tst/xloadimage.4.1'Ž¡‘make:–¹N***“[default]“Error“2ŽŸؼ¹Il–U messaggio“d'errore“con¸ètiene“l'indizio“essenziale.ŽŸؼGuardando–U il“le“ºimage.h¹,“linea“23...ŽŽŽŒ‹Ëâ Û_2 ý ~?Ÿ„€ÕÁGŽÂ11.‘ñ8T–ÿ ºerzo‘Õesempio:‘ F“ortune’<Ó_¹14ŽŽ ÕÁ ýV¯‘:$Ç#include‘¹NŽŸؼ¹Aha,‘üBda–ÚÔqualcš¸èhe“parte“nel“sorgen˜te“pšGer“½xlo‘ÿ}/adimage‘ÀO¹,‘üB½wchar_t‘͹€è“stato“ridenito“in“mo˜do“divš¸èerso“da“quan˜toŽ¤ ®spGecicato–(nel“le“include“standard,‘¯*ºstdlib.h¹.‘I™Proš¸èviamo“prima“a“commen˜tare“la“linea“23“in“ºimage.h¹,‘¯*c˜heŽ¡forse–U l'½include‘“°std‘‚Ðlib.h‘ÄU¹,“dopGo“tutto,“non“€è“necessario.Ž©ؼA‘ì;questo–ìUpunš¸èto,‘Kla“fase“di“compilazione“proGcede“senza“nessun“errore“fatale.‘N’Il“pacc˜hetto“½xlo‘ÿ}/adimage‘¬¤¹funzionaŽ¡correttamen¸ète‘U ora.ŽŸ(ÀœÁ11Ž‘¬%T–þ®(erzo‘G\esempio:‘ ÐF“ortuneŽŸ¿:¹Questo–aesempio“ricš¸èhiede“qualc˜he“conoscenza“di“programmazione“in“C.“La“maggioranza“del“soft˜w˜areŽ¡UNIX/Lin¸èux–Ú4€è“scritta“in“C,“e“imparare“almeno“un“pšGo'“di“C‘ÙÏsarebb˜e“certamen¸ète“un“b˜ene“p˜er“c¸èhiunqueŽ¡sia–U seriamenš¸ète“in˜teressato“all'installazione“del“soft˜w˜are.Ž¦Il–ìmfamoso“programma“½fortune‘¬¼¹mostra“una“frase“umoristica,›^un“biscotto“della“fortuna,˜ad“ogni“aš¸èvvio“di“Lin˜ux.Ž¡Sfortunatamenš¸ète–@#(il“gioGco“di“parole“€è“in˜tenzionale),‘DVpro˜v‘ÿqÐare“a“costruir“fortuna“su“una“distribuzione“Red“HatŽ¡con–EAun“kš¸èernel“2.0.30“pro˜v˜oGca“degli“errori“fatali.‘l6(N.d.T:“in“inglese“build“fortune“signica“sia“far“fortuna“c˜heŽ¡compilare–U il“programma“fortune)Ž©´å‘Ç~/fortune#–¹Nmake“allŽ¤ Š=¡¡‘gcc–¹N-O2“-Wall“-fomit-frame-pointer“-pipe‘+ê-c“fortune.c“-oŽ¡‘fortune.oŽ¡‘fortune.c:–¹NIn“function“`add_dir':Ž¡‘fortune.c:551:–¹Nstructure“has“no“member“named“`d_namlen'Ž¡‘fortune.c:553:–¹Nstructure“has“no“member“named“`d_namlen'Ž¡‘make[1]:–¹N***“[fortune.o]“Error“1Ž¡‘make[1]:–¹NLeaving“directory“`/home/thegrendel/for/fortune/fortune'Ž¡‘make:–¹N***“[fortune-bin]“Error“2ŽŸؼ¹Guardando–U ºfortune.c¹,“le“linee“pGertinen¸èti“sono“queste.Ž¦‘'+ìÇif–¹N(dirent->d_namlen“==“0)Ž¡‘Q¯ªcontinue;Ž¡‘>Êrname–¹N=“copy(dirent->d_name,“dirent->d_namlen);Ž¤ؼ¹Ci–+servš¸èe“di“tro˜v‘ÿqÐare“la“struttura“ºdirent¹,‘`ma“essa“non“€è“dic˜hiarata“nel“le“½fortune.c‘¬¹,‘`e“nemmeno“un“ÂgrepŽŸ ®diren®>t–U ¹la“mostra“in“nessuno“dei“le“sorgen•¸èti.‘q€T‘ÿ*¸utta“via,–U all'inizio“di“½fortune.c‘¬¹,“c'€è“la“seguen¸ète“linea.Ž¦‘Ç#include‘¹NŽ¡¹Questo–ä˜sem¸èbra“essere“un“le“include“pšGer“la“libreria“di“sistema,–Hvp˜erci€ò,“il–ä˜p˜osto“pi€ù“logico“do•¸èv“e‘ä˜cercareŽ¤ ®½dir›ÿ}/ent.h‘c⹀薟in“½/usr/include‘ÀO¹.‘PÇEettiv‘ÿqÐamen¸ète“esiste“un“le“½dir˜ent.h‘câ¹in“½/usr/include‘ÀO¹,‘²(ma“quel“le“non“con¸ètieneŽ¡la–U dicš¸èhiarazione“della“struttura“ºdirent¹.‘q€C'€è,“pGer€ò,“un“riferimen˜to“ad“un“altro“le“½dir‘ÿ}/ent.h‘ÄU¹.Ž¦‘Ç#include‘¹NŽŸؼ¹Alla–U ne,“andando“in“½/usr/include/linux/dir‘ÿ}/ent.h‘ÄU¹,“troš¸èviamo“la“dic˜hiarazione“della“struttura“c˜he“ci“serv˜e.ŽŽŽŒ‹×G Û_2 ý ~?Ÿ„€ÕÁGŽÂ12.‘ñ8Quarto‘Õesempio:‘ Hearts’:Ö²¹15ŽŽ ÕÁ ýV¯‘Çstruct–¹Ndirent“{Ž¤ Š=‘>Êrlong‘8¯¨d_ino;Ž¡‘>Êr__kernel_off_t‘ rœd_off;Ž¡‘>Êrunsigned‘¹Nshort‘ rœd_reclen;Ž¡‘>Êrchar‘8¯¨d_name[256];–¹N/*“We“must“not“includeŽ¡‘limits.h!‘¹N*/Ž¡‘};ŽŸؼ¹Pš¸èoGco–!/ma“sicuro,‘T2la“dic˜hiarazione“della“struttura“non“con˜tiene“nessun“½d_namelen‘ÄU¹,‘T2ma“ci“sono“un“paio“diŽ¤ ®candidati–ÓÛcome“suo“equiv‘ÿqÐalenš¸ète.‘í±Il“pi€ù“probabile“di“essi“€è“½d_r–ÿ}/e“clen‘ÄU¹,‘óŠpGoic˜h€é–ÓÛquesto“mem˜bro“della“strutturaŽ¡probabilmen•¸ète›èGrappresen“ta˜la˜lunghezza˜di˜qualcosa˜ed˜€è˜uno˜short˜in“teger.‘ *õL'altra˜pGossibilit€à,‘M½d_ino‘¡Ž¹,Ž¡p•Gotrebb“e–?gessere“un“n¸èumero“di“inošGde,‘C¿a“giudicare“dal“suo“nome“e“tip˜o.‘jBA‘?aquanš¸èto“pare,‘C¿stiamo“probabilmen˜teŽ¡trattando–g½con“una“struttura“di“registrazione“delle“directory,‘lde“questi“elemenš¸èti“rappresen˜tano“gli“attributi“diŽ¡un–&’le,›Zïil“suo“nome,˜il“suo“inoGde,˜e“la“sua“lunghezza“(in“bloGccš¸èhi).‘å×Ci€ò“sem˜brerebbGe“con˜v‘ÿqÐalidare“la“nostraŽ¡scelta.Ž©ؼEditiamo–mil“le“ºfortune.c“¹e“camš¸èbiamo“i“due“riferimen˜ti“alle“linee“551“e“553“da“½d_namelen‘1o¹a“½d_r–ÿ}/e“clen‘ÄU¹.Ž¡Proš¸èviamo–m”di“n˜uo˜v˜o“un“½make‘ª0al‘‚Ðl‘w¹.–ºÝÂSuccesso.“¹La–m”compilazione“nisce“senza“errori.‘ºÝOra“pGossiamo“prenderci“iŽ¡nostri–U brividi“a“buon“mercato“da“fortune.ŽŸ(ÀœÁ12Ž‘¬%Quarto‘G\esempio:‘ ÐHeartsŽŸ¿:¹Ecco–±Ýil“v•¸èecc“hio›±Ýcan“uto˜gio•Gco˜Hearts,‘É scritto˜p“er˜i˜sistemi˜UNIX‘±Åda˜Bob˜Ank¸èeney˜negli˜anni˜'80,‘É rivisto˜nelŽ¡1992–Üöda“Mikš¸èe“Y‘ÿ*¸ang,‘ôþed“attualmen˜te“man˜ten˜uto“da“½Jonathan‘%#Badger“ºmailto:badger@phylo.life.uiuc.eduŽ¡¹.‘moIl–Hìsuo“predecessore“era“un“ancor“pi€ù“v•¸èecc“hio–Hìprogramma“Pš¸èascal“di“Don“Bac˜kus“della“Oregon“Soft˜w˜are,‘K]pGoiŽ¡aggiornato–rda“Je“Hemmerling.‘VœOriginariamenš¸ète“pGensato“come“clien˜t“pšGer“pi€ù“gio˜catori,‘•funziona“b˜ene“anc¸èheŽ¡pšGer– Êun“solo“gio˜catore“conš¸ètro“a˜vv˜ersari“gestiti“dal“computer.‘˜La“graca“€è“b•Gella,‘:µb“enc˜h€é– Êil“gioGco“manc˜hi“diŽ¡caratteristicš¸èhe–ÃÂpi€ù“sosticate“e“i“gioGcatori“computerizzati“non“siano“molto“forti.‘½eNonostan˜te“tutto,‘ßjsem˜braŽ¡essere–U il“solo“Hearts“decen¸ète“dispšGonibile“p˜er“maccš¸èhine“UNIX“e“Lin˜ux“ancora“oggi.Ž¦A‘Ã0causa–ÃMdella“sua“stirpGe“ed“et€à,‘ÞØquesto“paccš¸èhetto“€è“particolarmen˜te“dicile“da“compilare“su“di“un“sistemaŽ¡Lin•¸èux.›¯’Ric“hiede–¿&la“soluzione“di“una“lunga“e“sconcertan¸ète“serie“di“puzzle.˜€È‘¾Éun“esercizio“di“pazienza“eŽ¡determinazione.Ž¦½Prima–“°di“iniziar›ÿ}/e,“ac˜c˜ertatevi“di“aver˜e“le“libr˜erie“óqLË ecit1000Èmotif“½o“le“Èlesstif“½instal‘‚Ðlate.Ž¤ؼ‘¸ŽŽŽŽ¡ÂxmkmfŽ¦mak®>eŽŸ´å‘Çclient.c:–¹NIn“function“`read_card':Ž¤ Š=‘client.c:430:–¹N`_tty'“undeclared“(first“use“in“this“function)Ž¡‘client.c:430:–¹N(Each“undeclared“identifier“is“reported“only“onceŽ¡‘client.c:430:–¹Nfor“each“function“it“appears“in.)Ž¡‘client.c:–¹NIn“function“`scan':Ž¡‘client.c:685:–¹N`_tty'“undeclared“(first“use“in“this“function)Ž¡‘make:–¹N***“[client.o]“Error“1ŽŸؼ¹Questi–U sono“i“colpGev¸èoli“nel“le“ºclient.c¹:ŽŽŽŒ‹âð Û_2 ý ~?Ÿ„€ÕÁGŽÂ12.‘ñ8Quarto‘Õesempio:‘ Hearts’:Ö²¹16ŽŽ ÕÁ ýV¯‘Ç#ifndef‘¹NSYSVŽ¤ Š=‘>Êr(buf[2]–¹N!=“_tty.sg_erase)“&&“(buf[2]“!=“_tty.sg_kill))“{Ž¡‘¹P#elseŽ¡‘>Êr(buf[2]–¹N!=“CERASE)“&&“(buf[2]“!=“CKILL))“{Ž¡‘#endifŽ¤ؼ‘¸ŽŽŽŽ¡¹In–U ºclient.c¹,“aggiungiamoŽ©´å‘Ç#define‘¹NSYSVŽŸؼ¹alla–U linea“39.‘q€Ci€ò“bš¸èypasser€à“il“riferimen˜to“a“½_tty‘ân¹.ŽŸؼÂmak®>eŽŸ´å‘Çclient.c:41:–¹Nsys/termio.h:“No“such“file“or“directoryŽŸ Š=‘make:–¹N***“[client.o]“Error“1Ž¡‘¸ŽŽŽŽ¡¹Il–Wle“include“ºtermio.h“¹€è“nella“directory“º/usr/include“¹su“di“un“sistema“Lin•¸èux,‘oein“v“ece›Wc“he˜nellaŽŸ ®º/usr/include/sys¹,–U come“era“sulle“v•¸èecc“hie›U macc“hine˜UNIX.˜P“erci€ò,˜cam“biamo˜la˜linea˜41˜di˜ºclient.c˜¹daŽ¦‘Ç#include‘¹NŽ¤ؼ¹aŽ¦‘Ç#include‘¹NŽ¡Âmak®>eŽŸ´å‘Çgcc–¹N-o“hearts“-g‘WÔ-L/usr/X11R6/lib“client.o“hearts.o“select.o“connect.oŽ¤ Š=‘sockio.o–¹Nstart_dist.o‘ rœ-lcurses“-ltermlibŽ¡‘/usr/bin/ld:–¹Ncannot“open“-ltermlib:“No“such“file“or“directoryŽ¡‘collect2:–¹Nld“returned“1“exit“statusŽ¡‘make:–¹N***“[hearts]“Error“1Ž¤ؼ‘¸ŽŽŽŽ¡¹Le–U moGderne“distribuzioni“Linš¸èux“usano“il“database“½terminfo‘ö®¹e/o“½termc‘ÿ}/ap‘¡Ž¹,“piuttosto“c˜he“l'obsoleto“½termlib‘¡Ž¹.Ž¤ؼEditiamo–U il“ºMakefile¹.Ž¡Linea‘U 655:Ž¦‘ÇCURSES_LIBRARIES–¹N=“-lcurses“-ltermlibŽ¤ؼ¹cam¸èbiamola‘U in:Ž¦‘ÇCURSES_LIBRARIES–¹N=“-lcurses“-ltermcapŽ¡Âmak®>eŽŽŽŒ‹ïÌ Û_2 ý ~?Ÿ„€ÕÁGŽÂ12.‘ñ8Quarto‘Õesempio:‘ Hearts’:Ö²¹17ŽŽ ÕÁ ýV¯‘Çgcc–¹N-o“xmhearts“-g‘WÔ-L/usr/X11R6/lib“xmclient.o“hearts.o“select.oŽ¤ Š=‘connect.o–¹Nsockio.o“start_dist.o“gfx.o‘ rœ-lXm_s“-lXt“-lSM“-lICE“-lXext“-lX11Ž¡‘-lPWŽ¡‘/usr/bin/ld:–¹Ncannot“open“-lXm_s:“No“such“file“or“directoryŽ¡‘collect2:–¹Nld“returned“1“exit“statusŽ¤€Í‘¸ŽŽŽŽ¡¹La–U principale“libreria“½lesstif‘s’¹€è“ºlibXm¹,“piuttosto“c¸èhe“ºlibXm_s¹.‘q€Quindi,“editiamo“il“ºMakefile¹.ŽŸؼNella–U linea“653:Ž¤nŒ‘ÇXMLIB–¹N=“-lXm_s“$(XTOOLLIB)“$(XLIB)“-lPWŽ©’c¹cam¸èbia‘U in:Ž¡‘ÇXMLIB–¹N=“-lXm“$(XTOOLLIB)“$(XLIB)“-lPWŽ¦Âmak®>eŽŸ\ö‘Çgcc–¹N-o“xmhearts“-g‘WÔ-L/usr/X11R6/lib“xmclient.o“hearts.o“select.oŽ¤ Š=‘connect.o–¹Nsockio.o“start_dist.o“gfx.o‘ rœ-lXm“-lXt“-lSM“-lICE“-lXext“-lX11“-lPWŽ¡‘/usr/bin/ld:–¹Ncannot“open“-lPW:“No“such“file“or“directoryŽ¡‘collect2:–¹Nld“returned“1“exit“statusŽ¡‘make:–¹N***“[xmhearts]“Error“1Ž¤€Í‘¸ŽŽŽŽ¡¹Raduniamo–U i“soliti“sospGetti.Ž¤ؼNon–U c'€è“nessuna“libreria“ºPW¹.“Editiamo“il“ºMakefile¹.Ž¡Linea‘U 653:Ž¤nŒ‘ÇXMLIB–¹N=“-lXm“$(XTOOLLIB)“$(XLIB)“-lPWŽ¦¹cam¸èbia‘U in:Ž¡‘ÇXMLIB–¹N=“-lXm“$(XTOOLLIB)“$(XLIB)“-lPEX5Ž¦¹(La–U libreria“ºPEX5“¹€è“quella“pi€ù“simile“alla“ºPW¹.)Ž©ؼÂmak®>eŽŸ\ö‘Çrm–¹N-f“xmheartsŽ¤ Š=‘gcc–¹N-o“xmhearts“-g‘WÔ-L/usr/X11R6/lib“xmclient.o“hearts.o“select.oŽ¡‘connect.o–¹Nsockio.o“start_dist.o“gfx.o‘ rœ-lXm“-lXt“-lSM“-lICE“-lXext“-lX11“-lPEX5Ž¤€Í¹Il–U ºmake“¹nalmenš¸ète“funziona“(h˜urra!)Ž¡‘¸ŽŽŽŽ¡½Instal‘‚Ðlazione:Ž¦¹Come‘U roGot,ŽŽŽŒ‹õÙ Û_2 ý ~?Ÿ„€ÕÁGŽÂ12.‘ñ8Quarto‘Õesempio:‘ Hearts’:Ö²¹18ŽŽ ÕÁ ýV¯‘Ç[root@localhost–¹Nhearts]#“make“installŽ¤ Š=‘install–¹N-c“-s‘ rœhearts“/usr/X11R6/bin/heartsŽ¡‘install–¹N-c“-s‘ rœxmhearts“/usr/X11R6/bin/xmheartsŽ¡‘install–¹N-c“-s‘ rœxawhearts“/usr/X11R6/bin/xawheartsŽ¡‘install–¹Nin“.“doneŽ¤ó‚‘¸ŽŽŽŽ¡½Ese›ÿ}/cuzione–“°di“pr˜ova:Ž¤ؼÂrehashŽ¡¹(Stiamo–U eseguendo“la“shell“ºtcsh¹.)Ž¡ÂxmheartsŽ©Ï«‘Çlocalhost:~/%‘¹NxmheartsŽŸ Š=‘Can't–¹Ninvoke“distributor!Ž¤ó‚‘¸ŽŽŽŽ¡¹Dal–U le“ºREADME“¹nel“pacc¸èhetto“ºhearts¹:Ž¦‘0žˆÇPut–¹Nheartsd,“hearts_dist,“and“hearts.instr“in“the“HEARTSLIBŽŸ Š=‘0žˆdirectory–¹Ndefined“in“local.h“and“make“them“world-accessible.Ž¡¹(T‘ÿ*¸raducendo:‘põMettete›T Heartsd,–TBhearts_dist,“e˜hearts.instr˜nella˜directory˜HEAR‘ÿ*¸TSLIB˜denita˜in˜loGcal.h˜eŽŸ ®rendeteli–U accessibili“a“c¸èhiunque)ŽŸؼDal–U le“ºlocal.h¹:Ž¦‘Ç/*–¹Nwhere“the“distributor,“dealer“and“instructions“live“*/Ž¤ Š=¡‘#define–¹NHEARTSLIB“"/usr/local/lib/hearts"Ž©ó‚¹Questo–U €è“un“classico“caso:‘q€R‘ÿ*¸TFM“(leggete“il“fottuto“man¸èuale).Ž¤ؼCome‘U ½r–ÿ}/o“ot‘òɹ,Ž¡Âcd‘Õ/usr/loQÂcal/libŽ¡mkdir‘ÕheartsŽ¡cd‘Õ!$Ž¡¹Copiamo–U i“le“di“ºdistributor“¹in“questa“directory‘ÿ*¸.Ž¡Âcp–Õ/home/username/hearts/heartsd“.Ž¡cp–Õ/home/username/hearts/hearts_dist“.Ž¡cp–Õ/home/username/hearts/hearts.instr“.Ž¦‘¸ŽŽŽŽ¦½L–ÿ}/anciamo›“°un‘þú_'altr“a˜ese“cuzione˜di˜pr“ova.Ž¡ÂxmheartsŽ¡¹Qualc•¸èhe›U v“olta˜funziona,˜ma˜il˜pi€ù˜delle˜v“olte˜si˜pian“ta˜con˜un˜messaggio˜ºdealer‘?¬died!¹.ŽŽŽŒ‹üg Û_2 ý ~?Ÿ„€ÕÁGŽÂ13.‘ñ8Quin®>to‘Õesempio:‘ XmDipmon’#¹19ŽŽ ÕÁ ýV¯‘¸ŽŽŽŽ©ؼ¹Il–Jdistributor“e“il“dealer“esaminano“le“pšGorte“hardw•¸èare.‘PfDo“vremmo–Jp˜erci€ò“sosp˜ettare“c¸èhe“quei“programmiŽŸ ®abbiano–U bisogno“dei“privilegi“di“roGot.Ž¤ؼPro¸èviamo,–U come“½r–ÿ}/o“ot‘òɹ,Ž¡Âc®>hmošQÂd–Õu+s“/usr/lo˜cal/lib/heartsdŽ¡c®>hmošQÂd–Õu+s“/usr/lo˜cal/lib/hearts_distŽ¡¹(Osserviamo–U cš¸èhe,“come“discusso“preceden˜temen˜te,“i“binari“½suid‘]—¹pGossono“creare“dei“buc˜hi“di“sicurezza.)Ž¡ÂxmheartsŽ¡½A¾˜l‘‚Ðla–“°ne“funziona!Ž¡ÈHearts‘üº€è–?¬disponibile“da“ÈSunsite“º.ŽŸ(ÀœÁ13Ž‘¬%Quincto‘G\esempio:‘ ÐXmDipmonŽŸp»‘ÇBullwinkle:–¹NHey“Rocky,“guarda,“tiro“fuori“un“coniglio“dal“cappello.Ž¤ Š=‘Rocky:‘WÔMa–¹Nquel“trucco“non“funziona“mai.Ž¡‘Bullwinkle:–¹NQuesta“volta“si.Ž¡‘Q¯ªVoila!Ž¡‘Q¯ªBeh,–¹Nci“sono“andato“vicino.Ž¡‘Rocky:‘WÔEd–¹Nora“e“il“momento“di“un“altro“effetto“speciale.Ž¡‘Q¯ª---–¹N"Rocky“e“i“suoi“amici"Ž¦¹XmDipmon–Ê–€è“un'eleganš¸ète“applicazioncina“c˜he“mostra“un“bGottone“indican˜te“lo“stato“di“una“connessione“In-Ž¤ ®ternet.‘LèLampšGeggia–žCe“suona“quando“la“connessione“si“in¸èterromp˜e,‘ð‹come“tropp˜o“sp˜esso“accade“nelle“lineeŽ¡telefonicš¸èhe–¿di“campagna.‘W`Sfortunatamen˜te“XmDipmon“funziona“solo“con“½dip‘¡Ž¹,‘lil“c˜he“lo“rende“in˜utile“pGer“tuttiŽ¡quelli,–U la“maggioranza,“c¸èhe“usano“½chat‘Gé¹pGer“collegarsi.ŽŸؼCompilare–WÓXmDipmon“non“€è“un“problema.‘XmDipmon“si“link‘ÿqÐa“con“le“librerie“½Motif‘r¹,‘Š|ma“pu€ò“essere“compilato,Ž¡e–æfunziona“bšGene,‘ Oanc¸èhe“con“le“½L‘ÿ}/esstif‘r¹.‘$XLa“sda“€è“di“mo˜dicare“il“pacc¸èhetto“p˜er“farlo“funzionare“con“½chat‘òɹ.Ž¡Ci€ò–zäin“pratica“ricš¸èhiede“di“armeggiare“con“il“coGdice“sorgen˜te“ed“€è“quindi“necessario“a˜v˜ere“delle“conoscenze“diŽ¡programmazione.ŽŸ´å‘>ÊrÇ"Quando–¹Nxmdipmon“parte,“cerca“un“file“chiamato“/etc/dip.pidŽ¤ Š=‘CƒÀ(potete–¹Nfargli“cercare“un“altro“file“usando“l'opzione“-pidfileŽ¡‘CƒÀdalla–¹Nriga“di“comando).“Tale“file“contiente“il“PID“del“demoneŽ¡‘CƒÀdip–¹N(dip“stesso“si“pone“in“modo“demone,“dopo“che“ha“stabilitoŽ¡‘CƒÀuna‘¹Nconnessione)."Ž¡’…¦---–¹Ndal“file“README“di“XmDipmonŽ¦¹Usando–µ0l'opzione“½-pidle‘ÀO¹,›Õ-il“programma“pu€ò“essere“indotto,˜al“suo“a¸èvvio,˜a“cercare“un“altro“le,˜uno“c¸èhe“esistaŽ¤ ®solo–éÎdopGo“cš¸èhe“un“login“con“½chat‘Ü—¹€è“stato“eettuato“con“successo.‘MºIl“candidato“pi€ù“o˜vvio“€è“il“le“di“loGc˜k“del“mo-Ž¡dem.‘V~Pš¸èotremmo–quindi“pro˜v‘ÿqÐare“a“lanciare“il“programma“con“Âxmdipmon–wê-pidle“/v‘ÿ\|ar/loQÂc•®>k/LCK..tt“yS3Ž¡¹(assumendo–!cc¸èhe“il“mošGdem“sia“sulla“p˜orta“com“nš¸èumero“4,‘+¼tt˜yS3).‘`ACom˜unque“cos€ì“si“risolv˜e“solo“una“parte“delŽ¡problema.‘j¿Il–@Þprogramma“osserv‘ÿqÐa“con•¸ètin“uamen“te–@Þil“½demone‘ dip‘âl¹e“dobbiamo“in•¸èv“ece–@Þfare“in“moGdo“cš¸èhe“con˜trolliŽ¡un–U prošGcesso“c¸èhe“sia“asso˜ciato“a“½chat‘Gé¹o“a“½ppp‘¡Ž¹.ŽŸؼC'€è–kÆun“solo“le“sorgenš¸ète“e“fortunatamen˜te“€è“bGen“commen˜tato.‘µsScorrendo“il“le“ºxmdipmon.c“¹tro˜viamo“laŽ¡funzione›U ½getPr–ÿ}/o“cFile‘ÀO¹,˜la˜cui˜descrizione,˜all'inizio,˜ripGorta˜quan¸èto˜segue:ŽŽŽŒ‹á Û_2 ý ~?Ÿ„€ÕÁGŽÂ14.‘ñ8Do•®>v“e›Õtro“v‘ÿ\|are˜arc“hivi˜sorgen“te’æõ¹20ŽŽ ÕÁ ýV¯‘Ç/*****Ž¤ Š=‘*‘¹NName:‘PN.getProcFileŽ¡‘*–¹NReturn“Type:‘ rœBooleanŽ¡‘*–¹NDescription:‘ rœtries“to“open“the“/proc“entry“as“read“from“the“dip“pid“file.Ž¡‘Ž¡‘*****/Ž©áѹ(T‘ÿ*¸raducendo–U la“descrizione:‘q€proš¸èv‘ÿqÐa“ad“aprire“l'elemen˜to“di“/proGc“secondo“quan˜to“letto“dal“le“pid“di“dip)ŽŸؼSiamo–U sulla“pista“giusta.‘q€Guardando“nel“corpGo“della“funzione...ŽŸ½ú’Š_RÇ/*–¹Nwe“watch“the“status“of“the“real“dip“deamon“*/Ž¡’Š_Rsprintf(buf,–¹N"/proc/%i/status",“pid);Ž¡’Š_Rprocfile–¹N=“(String)XtMalloc(strlen(buf)*sizeof(char)+1);Ž¡’Š_Rstrcpy(procfile,‘¹Nbuf);Ž¡’Š_Rprocfile[strlen(buf)]–¹N=“'\0';Ž¦¹Il–U colpGev¸èole“€è“la“linea“2383:Ž©ï\’Š_RÇsprintf(buf,–¹N"/proc/%i/status",“pid);Ž¡’Ì–^^^^^^^^^^^^^^^^^^^^^ŽŸ3¹Questo–’Ìcon¸ètrolla“se“il“prošGcesso“demone“dip“€è“in“esecuzione.‘*ƒQuindi,‘¢6come“p˜ossiamo“cam¸èbiarlo“in“mo˜do“c¸èheŽŸ ®con¸ètrolli–U il“demone“pppGd?ŽŸؼGuardando–U sulla“pagina“di“man¸èuale“di“½ppp‘ÿ}/d‘w¹:Ž¦‘ÇFILESŽ¡‘0žˆ/var/run/pppn.pid–¹N(BSD“o“Linux),“/etc/ppp/pppn.pid“(altri)Ž¡‘Lö\Identificatore–¹Ndel“processo“(Process-ID)“di“pppd“sull'unitaŽ¡‘Lö\d'interfaccia–¹Nn“di“ppp.Ž¤3¹Cam¸èbiamo–U la“linea“2383“di“ºxmdipmon.c“¹in:Ž¦’Š_RÇsprintf(buf,–¹N"/var/run/ppp0.pid"“);Ž¡¹Ricompiliamo–:il“pacc¸èhetto“cos€ì“moGdicato.›ÀÍNessun“problema“con“la“compilazione.˜Ora“pro¸èviamolo“con“ilŽ¤ ®n•¸èuo“v“o›mXargomen“to˜della˜riga˜di˜comando.‘º(F‘ÿ*¸unziona˜c“he˜€è˜un˜incan“to.‘º(Il˜bGottoncino˜blu˜indica˜quando˜€èŽ¡stata–Ústabilita“una“connessione“ºppp“¹con“l'ISP‘Ëe“lampšGeggia“e“suona“quando“la“connessione“si“in¸èterromp˜e.‘^OraŽ¡abbiamo–U un“monitor“pGer“½chat‘Gé¹pienamenš¸ète“funzionan˜te.Ž©ؼXmDipmon–U pu€ò“essere“scaricato“da“½R¾˜ipley–“°Linux“T‘ÿ;Èo‘ÿ}/ols‘U ¹.ŽŸ(–Á14Ž‘¬%Do•cv“e›G\tro“v‘ÿÆare˜arc“hivi˜sorgen“teŽŸ¿:¹Ora–Kòc¸èhe“siete“ansiosi“di“usare“le“conoscenze“appšGena“acquisite,‘MÈp˜er“aggiungere“delle“utilit€à“ed“altre“c•¸èhicc“he‘KòalŽ¡vš¸èostro–U sistema,“pGotete“tro˜v‘ÿqÐarle“online“allaŽ¦½Linux–à-Applic‘ÿ}/ations“and“Utilities“Page‘¾‡ºhttp://www.redhat.com/linux-–€info/linux-“app-“list/linapps.Ž¡html–U ¹,“o“in“una“delle“raccolte“su“CD“Rš¸èOM,“a“prezzo“molto“ragionev˜ole,“diŽ¦½R–ÿ}/e“d‘“°Hat–U ºhttp://www.redhat.com/“¹,Ž¦½InfoMagic–U ºhttp://www.infomagic.com“¹,Ž¦½Linux–“°Systems“L‘ÿ}/abs–U ºhttp://www.lsl.com“¹,ŽŽŽŒ‹™ Û_2 ý ~?Ÿ„€ÕÁGŽÂ15.‘ñ8Conclusioni’yï¹21ŽŽ ÕÁ ýV¯½Che‘ÿ}/ap‘“°Bytes–U ºhttp://www.cheapbytes.com“¹,“e“altri.Ž¤ؼUn–U v‘ÿqÐasto“magazzino“di“coGdice“sorgen¸ète“€è“½c–ÿ}/omp›“°sour“c“es˜UNIX˜ar“chive‘U ¹.Ž¡Molto–´coGdice“sorgen¸ète“UNIX‘³Åviene“pubblicato“nel“newsgroup“½alt.sour–ÿ}/c“es–´¹.‘Ž}Se“state“cercando“particolariŽ¤ ®paccš¸èhetti–þ8di“coGdice“sorgen˜te,‘(~pGotete“c˜hiedere“sullo“spGecico“newsgroup“½alt.sour–ÿ}/c“es.wante“d–þ8¹.‘lÈUn“altro“buonŽ¡pGosto›Bÿdo•¸èv“e˜cercare˜€è˜il˜newsgroup˜½c–ÿ}/omp.os.linux.announc“e˜¹.‘;P•¸èer˜en“trare˜nella˜mailing˜list˜½Unix‘n†sour–ÿ}/c“es˜¹,Ž¡mandate–U alla“stessa“un“messaggio“½subscrib‘ÿ}/e‘ÀO¹.ŽŸؼGli–U arcš¸èhivi“del“newsgroup“½alt.sour–ÿ}/c“es–U ¹si“tro˜v‘ÿqÐano“presso“i“seguen˜ti“siti“ftp:ŽŸؼ‘¸ŽŽŽ‘½ftp.sterling.c–ÿ}/om/usenet/alt.sour“c“es/Ž¤®‘¸ŽŽŽ‘½wuar–ÿ}/chive.wustl.e“du/usenet/alt.sour“c“es/articlesŽ¡‘¸ŽŽŽ‘½sr–ÿ}/c.do“c.ic.ac.uk/usenet/alt.sour“c“es/articlesŽ©(ÀœÁ15Ž‘¬%ConclusioniŽŸ¿:¹Riassumendo,‘Â1la–y.pGersevš¸èeranza“fa“tutta“la“dierenza“(e“un'alta“soglia“alla“frustrazione“certamen˜te“aiuta).Ž¤ ®Come–‘Èin“tutti“gli“sforzi,‘ òimparare“dagli“errori“€è“criticamenš¸ète“impGortan˜te.‘'yOgni“passo“falso,‘ òogni“fallimen˜to,Ž¡conš¸ètribuisce–Ïalla“costruzione“della“conoscenza“c˜he“conduce“alla“padronanza“dell'Âarte–aRdella“compilazioneŽ¡del‘Õsoft•®>w“are¹.Ž¦Á16Ž‘¬%Riferimencti–G\e“ulteriori“lettureŽŸp»‘ÇBORLAND–¹NC++“TOOLS“AND“UTILITIES“GUIDE,“Borland“International,“1992,Ž¤ Š=‘pp.‘¹N9-42.Ž¡‘[Uno–¹Ndei“manuali“distribuiti“col“Borland“C++,“ver.“3.1.“Da“unaŽ¡‘abbastanza–¹Nbuona“introduzione“alla“sintassi“e“ai“concetti“di“make,Ž¡‘usando–¹Nl'implementazione“limitata“al“DOS“della“Borland.]Ž¡¡‘DuBois,–¹NPaul:“SOFTWARE“PORTABILITY“WITH“IMAKE,“O'Reilly“and“Associates,Ž¡‘1996,–¹NISBN“1-56592-226-3.Ž¡‘[E–¹Nritenuto“il“riferimento“definitivo“per“imake,“sebbene“non“loŽ¡‘avevo–¹Na“disposizione“durante“la“scrittura“di“questo“articolo.]Ž¡¡‘Frisch,–¹NAeleen:“ESSENTIAL“SYSTEM“ADMINISTRATION“(2nd“ed.),“O'Reilly“andŽ¡‘Associates,–¹N1995,“ISBN“1-56592-127-5.Ž¡‘[Questo,–¹Naltrimenti“ottimo,“manuale“per“amministratori“di“sistema“trattaŽ¡‘solo–¹Nin“modo“sommario“la“compilazione“del“software.]Ž¡¡‘Hekman,–¹NJessica:“LINUX“IN“A“NUTSHELL,“O'Reilly“and“Associates,“1997,“ISBNŽ¡‘1-56592-167-4.Ž¡‘[Un–¹Nbuon“riferimento“globale“ai“comandi“di“Linux.]Ž¡¡‘Lehey,–¹NGreg:“PORTING“UNIX“SOFTWARE,“O'Reilly“and“Associates,“1995,“ISBNŽ¡‘1-56592-126-7.Ž¡¡‘Mayer,–¹NHerbert“G.:“ADVANCED“C“PROGRAMMING“ON“THE“IBM“PC,“Windcrest“Books,Ž¡‘1989,–¹NISBN“0-8306-9363-7.Ž¡‘[Un–¹Nlibro“zeppo“di“idee“per“programmatori“C“medi“ed“esperti.“SuperbaŽ¡‘trattazione–¹Ndegli“algoritmi,“ricercatezza“di“linguaggio“e“ancheŽŽŽŒ‹´ Û_2 ý ~?Ÿ„€ÕÁGŽÂ16.‘ñ8Riferimen®>ti–Õe“ulteriori“letture’…¹22ŽŽ ÕÁ ýV¯‘Çdivertimento.–¹NSfortunatamente“non“viene“piu“stampato.]Ž¤ Š=¡‘Mui,–¹NLinda“and“Valerie“Quercia:“X“USER“TOOLS,“O'Reilly“and“Associates,Ž¡‘1994,–¹NISBN“1-56592-019-8,“pp.“734-760.Ž¡¡‘Oram,–¹NAndrew“and“Steve“Talbott:“MANAGING“PROJECTS“WITH“MAKE,“O'ReillyŽ¡‘and–¹NAssociates,“1991,“ISBN“0-937175-90-0.Ž¡¡‘Peek,–¹NJerry“and“Tim“O'Reilly“and“Mike“Loukides:“UNIX“POWER“TOOLS,Ž¡‘O'Reilly–¹Nand“Associates“/“Random“House,“1997,“ISBN“1-56592-260-3.Ž¡‘[Una–¹Nmeravigliosa“fonte“di“idee,“e“tonnellate“di“utilita“che“poteteŽ¡‘compilare–¹Ndal“codice“sorgente,“usando“i“metodi“discussi“in“questoŽ¡‘articolo.]Ž¡¡‘Stallman,–¹NRichard“M.“and“Roland“McGrath:“GNU“MAKE,“Free“SoftwareŽ¡‘Foundation,–¹N1995,“ISBN“1-882114-78-7.Ž¡‘[Da‘¹Nleggere]Ž¡¡‘Waite,–¹NMitchell,“Stephen“Prata,“and“Donald“Martin:“C“PRIMER“PLUS,“Waite“GroupŽ¡‘Press,–¹NISBN“0-672-22090-3,.Ž¡‘[Probabilmente–¹Nla“miglior“introduzione“alla“programmazione“in“C.“VastaŽ¡‘copertura–¹Nper“un“"primo“libro".“Sono“ora“disponibili“nuove“edizioni.]Ž¡¡‘Welsh,–¹NMatt“and“Lar“Kaufman:“RUNNING“LINUX,“O'Reilly“and“Associates,Ž¡‘1996,–¹NISBN“1-56592-151-8.Ž¡‘[Tuttora–¹Nil“miglior“riferimento“globale“per“Linux,“sebbene“manchiŽ¡‘di–¹Nprofondita“in“alcune“aree.]Ž¡¡¡‘Le–¹Npagine“di“manuale“di“dpkg,“gcc,“gzip,“imake,“ldconfig,“ldd,“make,“nm,Ž¡‘patch,–¹Nrpm,“shar,“strip,“tar,“termcap,“terminfo,“e“xmkmf.Ž¡¡¡‘Il–¹NBZIP2“HOWTO“(tradotto),“di“David“Fetter.Ž¡¡‘Il–¹NGlibc2“HOWTO“(tradotto),“di“Eric“GreenŽ¡¡‘Il–¹NLINUX“ELF“HOWTO“(tradotto),“di“Daniel“Barlow.Ž¡¡‘L'RPM–¹NHOWTO,“di“Donnie“Barnes.Ž¡¡‘Lo–¹NStarOffice“miniHOWTO,“di“Matthew“Borowski.ŽŸؼ¹[Questi›™™HO•¸èWTO‘™Edo“vrebbGero˜tro“v‘ÿqÐarsi˜nella˜directory˜º/usr/doc/HOWTO‘™E¹o˜nella˜º/usr/doc/HOWTO/mini˜¹sulŽ¤ ®v¸èostro–¯isistema.‘€[V‘ÿ*¸ersioni“aggiornate“sono“dispGonibili“in“formato“testo,‘ÅûHTML›¯Re“SGML˜nel“½sito‘æÀLDP˜ºhttp:Ž¡//metalab.unc.edu/LDP/HOWTO–U ¹,“e“di“solito“nei“siti“dei“rispGettivi“autori.]Ž¤ؼ__________________Ž¡ÂT‘ÿ ºraduzioni¹:‘„ Pš¸èer– ^ela“v˜ersione“in“italiano“degli“HO˜WTO‘ \Öcon“l'indicazione“(tradotto)“v˜edere:Ž¤ ®½www.pluto.linux.it/ildp/HO•¾˜WTO/HO“WTO-INDEX-3.html–Ô¹.‘UgPš¸èer“altra“doGcumen˜tazione“su“Lin˜ux“½in‘F"italiano‘¡Ž¹,Ž¡compresi›U ev•¸èen“tuali˜HO“WTO˜e/o˜mini-HO“WTO˜citati˜ma˜al˜momen“to˜non˜ancora˜tradotti,˜si˜v“eda˜ilŽŸؼ½sito‘“°ILDP–U ºhttp://www.pluto.linux.it/ildp/index.html“¹.ŽŽŽŒ‹%0 Û_2 ý ~?Ÿ„€ÕÁGŽÂ17.‘ñ8Crediti’’ ¹23ŽŽ ÕÁ ýV¯Á17Ž‘¬%CreditiŽŸ¿:¹L'autore–n:di“questo“HOš¸èWTO‘n3desidera“ringraziare“le“seguen˜ti“pšGersone“p˜er“gli“utili“suggerimen¸èti,‘t€le“correzioniŽŸ ®e‘U l'incoraggiamen¸èto.Ž©ؼ‘¸ŽŽŽ‘¹R.–U BroGc¸èk“LynnŽ¤®‘¸ŽŽŽ‘¹Mic¸èhael‘U JennerŽ¡‘¸ŽŽŽ‘¹F‘ÿ*¸abrizio‘U StefaniŽ¦Gloria–U v‘ÿqÐa“ancš¸èhe“a“quelle“bra˜v˜e“pGersone“c˜he“hanno“tradotto“questo“HO˜WTO“in“italiano“e“giappGonese.ŽŸؼE‘ cmmi10ù2kßßßßßß