ã¯ããé¢éžããŸãã ã¯ããåäœããŸãã ã¯ããããã¯æ£åœåãããŸãã
èæ¯
ç§ã¯1ã€ã®å°ããªãã¬ãŒãã³ã°ã©ã€ãã©ãªã§åããŠããŸãã ããããããã¯.dllãŸãã¯.soãã¡ã€ã«ã§ã¯ãããŸããããæãäžè¬çãªã®ã¯æ£ãšããããã®æ¬ãçŽ3äžã®éšå±ã§ãã å³æžé€šã¯20幎åã§ããããŸããã ãã€ãŠã¯æ°ã©ãã¯ããå§ãŸããæ°ååã®æ¬ãããªãããããã¯ãã¹ãŠããç¥ãããŠããŸããã ããããå³æžé€šã¯çºå±ãå§ããæ¬ã¯ãŸããŸãå€ããªããŸããã å€ãéšå±ã«ã¯åœŒãã®ããã®å Žæããªãã移åãè¡ãããŸããã åœæãç§ãããã§åãå§ãããšããåºéã«ã¯çŽ15,000åã®æ¬ïŒããå
¬åŒã«ã¯ãã¹ãã¬ãŒãžãŠããããïŒãããããã¹ãŠã®æ£ã®ãã¹ãŠã®æ£ã®å
šé·ã¯1ããã«è¿ã¥ããŠããŸããã
ããã...ãããããã¯å³æžé€šã§ã¯ãããŸããã§ããã 巚倧ãªãã³ãã§ããïŒ
ãããŸããªæšèã«é¢ããæ¬ã¯ãç°ãªãæ£ã«é 眮ãããŸããã ãå ¬åŒã®ãã©ã€ãã©ãªç®¡çã·ã¹ãã ã¯äœ¿çšãããããã¹ãŠããã²ããŸãããã«è¡ãããŸããã ç§ã¯ãã®ãã³ããšãããŒã¿ããŒã¹ããç¶æ¿ããŸãããMSAccessãã¡ã€ã«ã§ã¯ããã¹ãŠããã¹ãŠèªãããã«èªãããã«è¡šãããŠããŸãïŒåãæåã§ãExcelããŒãã«ãŸãã¯åèªã®ãªã¹ãã®åœ¢ã§ååšããããšãã§ããŸã-ããŒã¿ããŒã¹ãã¯ãæ£èŠåãããŒãã«å ã®ããŒãã«éã®é¢ä¿ãªã©ã®æ©èœã§ãããå°ãªããšãããã§ã¯ãããŸããã§ããïŒã æ¬ãåããèªè ã¯åœŒã®å§ãšæ¬ã®ååãè£æã¡åœ¢åŒã§æžããªããã°ãªããŸããã§ããã
ãããŒã¹ãå ã®æžç±ã®æ€çŽ¢ã¯ãããŒãã«ãéããŠCtrl + FãæŒãããšã§å®è¡ãããŸããã
ããã³ããã§ã®å®éã®æ¬ã®æ€çŽ¢...ããããããäž»ãªä»äºã§ããã çŽæ¥æ€çŽ¢ãcho ...æ°ãæã®äœæ¥ã®åŸãç¹å®ã®æ¬ãã©ãã§æ¢ãã¹ããæ¢ã«èããŠããŸããããããã¯ããã»ã¹ãå°ãã ãå éããŸããã çµå±ããã®ç¡æå³ãªã¬ãã¹ã³ã¯ç§ãæ©ãŸããç§ã¯ããã¹ãŠãã®ãªã¡ã€ã¯ãå§ããŸããã
çŽ1幎åŸïŒã»ãšãã©ã®å Žåãæžç±ã®åšåº«ã«çŽæ¥è¡ããŸããïŒããã¹ãŠã®ãã¹ãã¬ãŒãžãŠããããã«çªå·ãä»ããããããŒã³ãŒããè£ åãããç¹å®ã®æ£ã«çµã³ä»ããããããã¡ããšããåºç€ãåŸãŸããã æžç±ã®çºè¡ã¯ãããŒã¿ããŒã¹å ã®æžç±ãæ€çŽ¢ããŠãã©ã®æ£ã«ãã£ããã確èªããæžç±çªå·ïŒããŒã³ãŒãããã¹ãã£ããŒã§ïŒãèªè ã®ä»®æ³ã«ãŒãã«å ¥åããã ãã«ãªããŸããã éä¿¡ã¯åã³ããŒã³ãŒãã®ã¹ãã£ã³ã§ããããã®åŸãæžç±ã¯ãªãŒããŒã®ã«ãŒãããèªåçã«åé€ãããããŒã¿ããŒã¹ã¯èŠªåã«ç¹å®ã®æ£ã«çœ®ãããšãç³ãåºãŸãã äžž1æ¥ããã£ãŠããã¬ãã¹ã³ã«æ°åãããããã«ãªããŸããã ãã£ãïŒ
次ã¯ïŒ ããŒã¿ããŒã¹ãæ£èŠåããŸããïŒ ã¯ããã§ããŸããã
ããïŒ ããŠãMS Accessããããã£ãšç¡æã®ããœãããŠã§ã¢ã«ãã©ãã°ããŠãã ããã OKãå®äºãmysqlã«ãã©ãã°ã¢ã³ãããããããŸãã å ã®ããŒã¿ããŒã¹ã¯åœ±é¿ãåããŸããã§ãã-ODBCãã©ã€ããŒãã€ã³ã¹ããŒã«ããå éšããŒãã«ãçŸåšã®å€éšããŒãã«ã«çœ®ãæããã ãã§ãã
èªè ãæ¬ãèŠã€ããã®ãæ¢ãããã®ã¯äœããããŸããïŒ ïŒãããŸã§ã¯èª°ãå¹²æžããŠããŸããã§ãã-ããããããã¯.mdbããŒã¿ããŒã¹ã®ã³ããŒãäœæããããããæ©å¯ããŒã¿ããªã¹ããé åžããããã®ã®ããã«åé€ãããããã¢ãŒã«ã€ãã®åœ¢ã§ãããæãã§ãã人ã«é åžããããšã«ãã£ãŠè¡ãããŸããã ...ïŒã æãã·ã³ãã«ãªæ€çŽ¢ãã©ãŒã ãåããæ§ãããªphpã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ã«å²ãåœãŠãããŸãããä»ã§ã¯ãæžç±ãæ€çŽ¢ããå¿ èŠãããããŸãã:)ã èªè ã¯èªåã§ããããèŠã€ããèŠã€ãã£ãæ£ãããããåãåºããŠãã³ãŒããã¹ãã£ã³ããŠæã«å ¥ããããã ãã«ç§ã«æã£ãŠè¡ããŸãã äœæ¥ããããã幞ããªç·ïŒ
è²»çšã¯ãããã§ããïŒ ããã§ã¯ãããŒã¹ããã©ãŒã ãæ€çŽ¢-å®å šãªLAMPSã¹ã¿ãã¯ïŒ= LAMP + S [phinx]ïŒããã¹ãŠãå€éšIPãåããããŒã ãã¹ã¯ãããäžã§å転ããŠããŸãã
ä¿¡é Œã§ããªãïŒ
ããŠãææŸããŸãã çµå±ã®ãšãããããã¯åœã®ååã®ãªã¢ã«ã¿ã€ã ååŒãµãŒãã¹ã®éè¡ãµã€ãã§ã¯ãããŸããã
ããããããŸããŸããã24æé幎äžç¡äŒã®ã³ã³ãã¥ãŒã¿ãŒã¯é»æ°ãæ¶è²»ããŸãã ãããŠãããã¯ãã€ãºãäœããŸã...ãããŠãããªããããã«ã€ããŠèãããªãã°ãããããå³æžé€šãµã€ãã®ã»ãã«ãããã絶ãããããä¿ã¡ç¶ããä»ã®çç±ããããŸã
ããã...ãããããã¯å³æžé€šã§ã¯ãããŸããã§ããã 巚倧ãªãã³ãã§ããïŒ
ãããŸããªæšèã«é¢ããæ¬ã¯ãç°ãªãæ£ã«é 眮ãããŸããã ãå ¬åŒã®ãã©ã€ãã©ãªç®¡çã·ã¹ãã ã¯äœ¿çšãããããã¹ãŠããã²ããŸãããã«è¡ãããŸããã ç§ã¯ãã®ãã³ããšãããŒã¿ããŒã¹ããç¶æ¿ããŸãããMSAccessãã¡ã€ã«ã§ã¯ããã¹ãŠããã¹ãŠèªãããã«èªãããã«è¡šãããŠããŸãïŒåãæåã§ãExcelããŒãã«ãŸãã¯åèªã®ãªã¹ãã®åœ¢ã§ååšããããšãã§ããŸã-ããŒã¿ããŒã¹ãã¯ãæ£èŠåãããŒãã«å ã®ããŒãã«éã®é¢ä¿ãªã©ã®æ©èœã§ãããå°ãªããšãããã§ã¯ãããŸããã§ããïŒã æ¬ãåããèªè ã¯åœŒã®å§ãšæ¬ã®ååãè£æã¡åœ¢åŒã§æžããªããã°ãªããŸããã§ããã
ãããŒã¹ãå ã®æžç±ã®æ€çŽ¢ã¯ãããŒãã«ãéããŠCtrl + FãæŒãããšã§å®è¡ãããŸããã
ããã³ããã§ã®å®éã®æ¬ã®æ€çŽ¢...ããããããäž»ãªä»äºã§ããã çŽæ¥æ€çŽ¢ãcho ...æ°ãæã®äœæ¥ã®åŸãç¹å®ã®æ¬ãã©ãã§æ¢ãã¹ããæ¢ã«èããŠããŸããããããã¯ããã»ã¹ãå°ãã ãå éããŸããã çµå±ããã®ç¡æå³ãªã¬ãã¹ã³ã¯ç§ãæ©ãŸããç§ã¯ããã¹ãŠãã®ãªã¡ã€ã¯ãå§ããŸããã
çŽ1幎åŸïŒã»ãšãã©ã®å Žåãæžç±ã®åšåº«ã«çŽæ¥è¡ããŸããïŒããã¹ãŠã®ãã¹ãã¬ãŒãžãŠããããã«çªå·ãä»ããããããŒã³ãŒããè£ åãããç¹å®ã®æ£ã«çµã³ä»ããããããã¡ããšããåºç€ãåŸãŸããã æžç±ã®çºè¡ã¯ãããŒã¿ããŒã¹å ã®æžç±ãæ€çŽ¢ããŠãã©ã®æ£ã«ãã£ããã確èªããæžç±çªå·ïŒããŒã³ãŒãããã¹ãã£ããŒã§ïŒãèªè ã®ä»®æ³ã«ãŒãã«å ¥åããã ãã«ãªããŸããã éä¿¡ã¯åã³ããŒã³ãŒãã®ã¹ãã£ã³ã§ããããã®åŸãæžç±ã¯ãªãŒããŒã®ã«ãŒãããèªåçã«åé€ãããããŒã¿ããŒã¹ã¯èŠªåã«ç¹å®ã®æ£ã«çœ®ãããšãç³ãåºãŸãã äžž1æ¥ããã£ãŠããã¬ãã¹ã³ã«æ°åãããããã«ãªããŸããã ãã£ãïŒ
次ã¯ïŒ ããŒã¿ããŒã¹ãæ£èŠåããŸããïŒ ã¯ããã§ããŸããã
ããïŒ ããŠãMS Accessããããã£ãšç¡æã®ããœãããŠã§ã¢ã«ãã©ãã°ããŠãã ããã OKãå®äºãmysqlã«ãã©ãã°ã¢ã³ãããããããŸãã å ã®ããŒã¿ããŒã¹ã¯åœ±é¿ãåããŸããã§ãã-ODBCãã©ã€ããŒãã€ã³ã¹ããŒã«ããå éšããŒãã«ãçŸåšã®å€éšããŒãã«ã«çœ®ãæããã ãã§ãã
èªè ãæ¬ãèŠã€ããã®ãæ¢ãããã®ã¯äœããããŸããïŒ ïŒãããŸã§ã¯èª°ãå¹²æžããŠããŸããã§ãã-ããããããã¯.mdbããŒã¿ããŒã¹ã®ã³ããŒãäœæããããããæ©å¯ããŒã¿ããªã¹ããé åžããããã®ã®ããã«åé€ãããããã¢ãŒã«ã€ãã®åœ¢ã§ãããæãã§ãã人ã«é åžããããšã«ãã£ãŠè¡ãããŸããã ...ïŒã æãã·ã³ãã«ãªæ€çŽ¢ãã©ãŒã ãåããæ§ãããªphpã¢ããªã±ãŒã·ã§ã³ãããŒã¿ããŒã¹ã«å²ãåœãŠãããŸãããä»ã§ã¯ãæžç±ãæ€çŽ¢ããå¿ èŠãããããŸãã:)ã èªè ã¯èªåã§ããããèŠã€ããèŠã€ãã£ãæ£ãããããåãåºããŠãã³ãŒããã¹ãã£ã³ããŠæã«å ¥ããããã ãã«ç§ã«æã£ãŠè¡ããŸãã äœæ¥ããããã幞ããªç·ïŒ
è²»çšã¯ãããã§ããïŒ ããã§ã¯ãããŒã¹ããã©ãŒã ãæ€çŽ¢-å®å šãªLAMPSã¹ã¿ãã¯ïŒ= LAMP + S [phinx]ïŒããã¹ãŠãå€éšIPãåããããŒã ãã¹ã¯ãããäžã§å転ããŠããŸãã
ä¿¡é Œã§ããªãïŒ
ããŠãææŸããŸãã çµå±ã®ãšãããããã¯åœã®ååã®ãªã¢ã«ã¿ã€ã ååŒãµãŒãã¹ã®éè¡ãµã€ãã§ã¯ãããŸããã
ããããããŸããŸããã24æé幎äžç¡äŒã®ã³ã³ãã¥ãŒã¿ãŒã¯é»æ°ãæ¶è²»ããŸãã ãããŠãããã¯ãã€ãºãäœããŸã...ãããŠãããªããããã«ã€ããŠèãããªãã°ãããããå³æžé€šãµã€ãã®ã»ãã«ãããã絶ãããããä¿ã¡ç¶ããä»ã®çç±ããããŸã
ã«ãŒã¿ãŒã䜿çšãããšã©ããªããŸããïŒ
å€ãã«ãŒã¿ãŒïŒDI-624ïŒã®å®æçãªãã³ã°ã«å®å šã«é£œã飜ãããŠãWRT-160NLã«å€æŽãããšããããŸããã ç§ã¯ã€ã³ã¿ãŒããããæããæ°æ©èœã®èª¬æãæ€çŽ¢ããŸãã...ãããŠç¿æ¥ãã¹ããã¯ãã¡ãŒã ãŠã§ã¢ãdd-wrtã«çœ®ãæããŸããã å€ä»ãã®hddã§ããshamanilãæŸãäžããæ§ãããªNASãã¡ã€ã«ã®ãŠã©ãã·ã¥ãè¡ããŸããã 圌ã¯ã€ã³ã¿ãŒãããäžã§å€§éšããããªãããŠã§ã¢ã«ã€ããŠèªã¿ããããè©ŠããŠã¿ãŸãã-ãããŠãåãå€éšhddã§ãã«ãŒã¿ãŒèªäœã®ããã«è¿œå ã®ãœãããŠã§ã¢ããã§ã«å·»ãäžããããŠããŸããã éä¿¡-ãé¡ã; lighttpd-ç°¡åïŒ phpïŒ åé¡ãããŸããïŒ ããŒã...å³æžé€šãµã€ãã¯é¢éžããŸããïŒ ã¯ããé¢éžããŸããã ãããŠããã圌ã®mysqlããŒã¹ãã«ãŒã¿ãŒã«çŽæ¥å ¥ãããïŒ ãããããã£ãïŒ ç¢ºãã«ãmysqlãã«ãã¯ããªãè€éã§ãã ããŒãã«ããã®ã¿MyISAM-ããããããã§ãåäœããŸãïŒ
æ€çŽ¢ã¯ã©ãã§ããïŒ
ããŠãããã¯åºãŠããŠããŸã-ã«ãŒã¿ãŒèªäœã¯çŸåšãã¬ã³ããããŠã³ããŒãããŠããŸãã ãã¡ã€ã«ã¯ãªãŒãã³ã°ãšãããæäŸãããµã€ãããã...足ããªãå¯äžã®ãã®ã¯ã¹ãã£ã³ã¯ã¹æ€çŽ¢ã§ãã ãã¹ã¯ãããäžã§ãŸã å転ããŠããŸãã ãããŠã圌ãã«ãŒã¿ãŒã«ä¹ã£ããã©ããªããŸããïŒ..
ã¯ã ãããå€æããããã«-ãããéå§ããããšããŠãããããã¯åäœããŸãã ããŸããããŸãïŒ
åŸã«ã«ãŒã¿ãŒãAsus RT-N16ã«å€æŽããçŸåšã¯NetGear WNDR-4300ã«å€æŽããŸããã ãã¡ãŒã ãŠã§ã¢ãdd-wrtããopenwrtã«å€æŽããŸããã ããããã¹ãã£ã³ã¯ã¹ã¯ãŸã çãç¶ããŠããŸãã
ã«ãŒã¿ãŒçšã«ãœãããŠã§ã¢ãçµã¿ç«ãŠãæ¹æ³ã¯ïŒ
ãã¡ãããã³ã³ãœãŒã«ãšã¹ã¯ãªãããåéããæ©èœãããã°ãããŸããŸãªæ¹æ³ã§ããã°ã©ã ãäœæã§ããŸãã ãããã®ããã€ãã¯éåžžã«é åºã§ãã ./configure && make && make installã䜿çšããŠãdebãŸãã¯rpmããŒã¹ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®ãœãŒã¹ããããã°ã©ã ãã€ã³ã¹ããŒã«ããæ¹æ³ã«ã€ããŠèª¬æããŸããã¢ã»ã³ãã«ããŠãèµ·åããããšãã§ããŸãã ãããã£ãŠãããææåãããæ¹æ³ã䜿çšãããŸãã ã«ãŒã¿ãŒçšã®2ã€ã®ãã«ã/å ¬éã·ã¹ãã ãæ±ã£ãŠããŸããã ãããã«ã€ããŠèª¬æããŸãã
ãªãããŠã§ã¢
ãµãŒãããŒãã£ã®ãã¡ãŒã ãŠã§ã¢çšã®ä»£æ¿ãœãããŠã§ã¢ã®ç¥èã¯ãããããå§ãŸããŸããã
èŠããã«ã optwareã¯/ optãã©ã³ãã«å®å šã«éäžããŠãããœãããŠã§ã¢ã§ãã ãããã£ãŠãååã ããšãã°ãoptwareã«ã€ã³ã¹ããŒã«ãããããŒã¢ã³ã¯/ opt / usr / sbinã®ã©ããã«ãããå ±æã©ã€ãã©ãªã¯/ opt / usr / libã«ãããããããæ§æã¯/ opt / etcã§åŸ æ©ããèµ·åã¹ã¯ãªããã¯/ opt / etcã«ã¹ããŒãããŸãã /init.dã ã¿ãŒã²ããã·ã¹ãã ã«4 MBã®ãã©ãã·ã¥ã¡ã¢ãªãããªãå Žåã誰ãããã¡ãŒã ãŠã§ã¢ã§è©°ãŸã£ãŠãã-ããã¯åé¡ã§ã¯ãããŸããïŒ å¥ã®å Žæããä»ã®æ¹æ³ã§ããŠã³ã/ãªããããå¿ èŠããããŸã-ãããŠç§ãã¡ã¯ãã§ã³ã¬ãŒãã®äžã«ããŸãïŒ ãªãããŠã§ã¢ãã€ã³ã¹ããŒã«ããŠäœæ¥ã§ããŸãïŒ ãã®ä»ã®å Žæã¯ãããšãã°ãå€éšãã©ãã·ã¥ãã©ã€ãïŒæ¢åã®usbããŒãã«æ¿å ¥ïŒã§ãã ãŸãã¯ãããã°ã©ã ã§å¶åŸ¡ã§ããç¶æ ïŒããšãã°ãé»æºãã¢ã¯ãã£ããã£ãåºåçšã®ã¹ããŒã¿ã¹LEDãå ¥åçšã®wpsããã³ãªã»ãããã¿ã³ãªã©ïŒãã«ãŒã¿ãŒå ã®ãã¹ãŠã®æ¥ç¹ã«ãèäžãã§ã¯ãã ä»ããããSDã«ãŒãã§ããå¥ã®MK-æå®ãããé£çµ¡å ãå¿ èŠãªé åºã§ãç¹æ» ããããSPIãã¹ã®åäœã瀺ããããã¿ã³ãæŒãããèªã¿åããŸããSDã«ãŒãã¯ãããç解ããŠããããããã®å 容ã«æåéãã LEDãšãã¿ã³ãéã㊠ãã¢ã¯ã»ã¹ã§ããŸãã ããŠããŸãã¯SMBãããã³ã«ã䜿çšããŠWindowsãå®è¡ããŠããã«ãŒã¿ãŒã«ããŠã³ããããå€éšãããã¯ãŒã¯FSã§ãããã§ãã 確ãã«ããã®å ŽåããµãŒãã¹ãå®å šã«ãµãŒãã¹ã§ããå°ããªã¹ã¿ã³ãã¢ãã³ã³ã³ãã¥ãŒã¿ãŒãšããŠã®ã«ãŒã¿ãŒã®æå³ã¯ãªããªããŸãã
Optwareã¯ãã€ãŠç¡æã®openwrtãã¡ãŒã ãŠã§ã¢ã®éçºã®äžéšã§ããããåŸã«ç¬ç«ãããããžã§ã¯ãã«åå²ãããŸãããããã¯ãOptwareãæ§ç¯ããããã±ãŒãžãå®å šã«ç¬ç«ããŠãããèªçµŠèªè¶³ããŠããããã§ãã äœæ¥ã«å¿ èŠãªæšæºã©ã€ãã©ãªïŒuclibcã®åœ¢åŒã®libcïŒãã¢ã»ã³ãã«ãããoptwareã«é 眮ãããŸãã ããã«ãããç¹å®ã®ããã€ã¹ã®ãã¡ãŒã ãŠã§ã¢ã®æ©èœãã»ãšãã©å¿é ããããšãªããå€ãã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããŸãã
ãã®ã¢ãããŒãã®æ¬ ç¹ã¯ã ãã¹ãŠãæ©èœãããšã¯éããªãããšã§ãã ããšãã°ããã®æ¹æ³ã§ã«ãŒãã«ã¢ãžã¥ãŒã«ããã«ãããŠæ¥ç¶ããããšã¯ã§ããŸããã ãŸããç¬èªã®æšæºã©ã€ãã©ãªã«ãã€ã³ãããããšã¯ãæ¢åã®æšæºãã¡ãŒã ãŠã§ã¢ã©ã€ãã©ãªãšãšãã«ã¡ã¢ãªã«ããŒãããããšãæå³ããŸããããã¯ãã«ãŒã¿ãŒã®RAMã®èŠä»¶ãå¢ããªãããšãæå³ããŸãã æåŸã«ãç¹å®ã®éã«ã€ããŠã¯ã·ã£ãŒãåãããŠããªãã¢ã»ã³ããªãååŸããŸãããããŠãããŒãµã«ã¢ãã¬ãŒãžã«ãŒã¿ãŒãã®ããã±ãŒãžã¯i386ã®ããã°ã©ã ã®ãããªãã®ã§ãïŒã¯ãŒã«ã³ã¢i7ã§åæã«å®è¡ããŸãïŒãç¹å®ã®ããã»ããµ/ãã©ãããã©ãŒã ã®å€ãã®æ©èœã¯ç¡èŠãããã¬ã¬ã·ãŒã«ããŒã«ããã¯ãããŸãã ããã§ããoptwareã¯å®å šã«æ©èœãããœãªã¥ãŒã·ã§ã³ã§ãã
Optwareã¯éåžžãLinuxããŒã¹ã®ãã¹ãäžã®ã¯ãã¹ã³ã³ãã€ã©ãŒã«ãã£ãŠæ§ç¯ãããŸãïŒããšãã°ãubuntu 12.04ã§ã³ã³ãã€ã«ããŸãïŒã ãããžã§ã¯ãã®svnãªããžããªã確èªãããšããœãŒã¹ãšREADMEãã¡ã€ã«ã®äž¡æ¹ãããã«è©³çŽ°ãªæ瀺ãšãšãã«åãåããŸãïŒèå³ã®ãã人ã¯èª°ã§ãã©ããïŒã
Openwrt
ããã¯å®å šã«ç¬ç«ãããã¡ãŒã ãŠã§ã¢ã§ãããå ã®åšåº«ãå®å šã«çœ®ãæããŸãã ddwrt + optwareã§ã¯äžååã§ããããšãæããã«ãªã£ããšããOpenWrtã«é£çµ¡ããå¿ èŠããããŸããã ãã¹ããŒãããŒã ãã«é¢ããKhabrovã®èšäºãèªãã§ãããŸããŸãªããŒã ãšã¬ã¯ããªãã¯ãåŸã ã«èªååããããšã«ããŸããã ç§ã¯z-waveãéžã³ãããã€ãã¹ã«ããè³Œå ¥ããz-wave.meã¯ã©ãŠãã«åå ããŸããã ãã ããããŒã ãªãŒãã¡ãŒã·ã§ã³ãã¯ã©ãŠãã«æ¥ç¶ããããã«ãã¹ã¯ãããããªã³ã«ããŠããã®ã¯ç¡é§ã§ãã ããã«ãç§ã®ã«ãŒã¿ãŒã«ã¯1ã€ã§ã¯ãªãã2ã€ã®USBããŒãå šäœããããŸããã ããã... ...ã¯é³ŽããŸããã§ããã å¿ èŠãªã«ãŒãã«ã¢ãžã¥ãŒã«ïŒcp21xxïŒããã¡ãŒã ãŠã§ã¢ã«ãããŸããã§ããã ãã®çš®ã®ãœãããŠã§ã¢ããªãããŠã§ã¢ã§æ§ç¯ããããšã¯ã§ããŸããã§ããã dd-wrtãã¡ãŒã ãŠã§ã¢å šäœãåæ§ç¯ããããšãå®å šã«éèŠãªã¿ã¹ã¯ã§ãïŒã²ã©ãã·ã¹ãã ã§ãïŒããŒã«ãã§ãŒã³ãèšå®ãããã¹ãŠã®äŸåé¢ä¿ãæºããããã«ããæåãããã®ã«ç§ã®å¿èã¯ååã§ã¯ãããŸããã§ããïŒïŒã ç§ã®ã«ãŒã¿ãŒïŒrt-n16ïŒã®Openwrtã¯æåã¯ãµããŒããããŠããŸããã§ãããããã®æç¹ã§ãåäœãããã¡ãŒã ãŠã§ã¢ãäœæã§ããããããæ¢ã«ãããŸããã ã ããç§ã¯dd-wrtã«å¥ããåãããããã«ç¡æã®ããã¡ãŒã ãŠã§ã¢ãæ¯æããŸããã
openwrtã®è¯ããšããã¯äœã§ããïŒ ã¯ãã ãã¹ãŠãæ§æãããŠãããšããäºå®ã«ãã£ãŠã ãªãããŠã§ã¢ã®äžå©ãªç¹ãèŠãŠãé ããè¿œãåºããŸãã éè€ããã©ã€ãã©ãªã¯ãããŸããïŒæ¢åã®ãã¡ãŒã ãŠã§ã¢ã®ãœãããŠã§ã¢ãçŽæ¥åéããŸãïŒã ã«ãŒãã«ã¢ãžã¥ãŒã«ã«åé¡ã¯ãããŸããïŒéåžžã®æ¬æ ŒçãªlinuxããšããŸããã¯ãªããã€ãã¹ã«ããå¿ èŠã§ããïŒ3Gã¢ãã ãåãä»ããŠã€ã³ã¿ãŒããããå©çšãããã§ããïŒããã¯ç°¡åã§ãïŒïŒã ãã®ãœãããŠã§ã¢ã¯ãæ¢åã®ãã©ãããã©ãŒã åãã«æé©åã§ããŸãïŒãŸããã³ã³ãã€ã©ãŒã¯ãã¢ã»ã³ãã«ãããšãã«ãã«ãŒã¿ãŒã®ãããã§ç¹ã«äœ¿çšå¯èœãªæ©èœã䜿çšããã¬ã¬ã·ãŒã«ããŒã«ããã¯ããŸããïŒã
æåŸã«ãopenwrtã¯å®éã«ã¯ãªãããŠã§ã¢ãšççŸããªããšèšã£ãŠãã䟡å€ããããŸãã ããæè»ã§å¿«é©ã§ãã ãã ãã/ optããŒãã£ã·ã§ã³ã以åã®ãã¡ãŒã ãŠã§ã¢ããä¿åãããŠããå Žåãããã§äœ¿çšå¯èœãªãœãããŠã§ã¢ã¯æ°ããopenwrtã§æ£åžžã«èµ·åããå¯èœæ§ãé«ãã§ãããã äœãçµã¿ç«ãŠçŽããŸããïŒ ïŒç¢ºãã«ãåé¢ãªãããŠã§ã¢ã®ãã¹ãŠã®æ¬ ç¹ã¯æ®ããŸãïŒã
Embedded Sphinx-ããªãã¯ããããäœãå¿ èŠã§ããïŒ
ã¹ãã£ã³ã¯ã¹ã®ã¹ã±ãŒã©ããªãã£ã¯å°è±¡çã§ãïŒ ãããžã§ã¯ãã®ãpowered byãããŒãžã§ææãæ€èšããã³è©äŸ¡ããã ãã§ååã§ãã æ°ååã®ããã¥ã¡ã³ãã®ã€ã³ããã¯ã¹ã 1æ¥ã«5å件ã®ãªã¯ãšã¹ããåŠçããããšã¯ãããªãæå¹ãªæ°åã§ãã ããããããã¯ãã¹ãŠãé«éããã»ããµãšå€§éã®RAMãåããæ·±å»ãªãã·ã³ãŸãã¯ã¯ã©ã¹ã¿ãŒã§ãããé«è² è·ã§ãã ä»ã®æ¹åã®ã¹ã±ãŒã©ããªãã£ã«ã€ããŠã¯ã©ãã§ããïŒ ã¡ã¢ãªäžè¶³ãããã»ããµãšãã£ã¹ã¯ããããŸãã§ããïŒ ããã¯ããã»ã©æªããªãããšãå€æããŸããã éx86ãã€ãã£ããã©ãããã©ãŒã ã§ã¯ãsphinxã¯Raspberry Piäžã§éåžžã«æ®éã«ãã«ãïŒããã³å éšãã¹ãã«åæ ŒïŒããŸãã ãã ãã詳现ãèæ ®ãããšã ä»ã®ã¢ãŒããã¯ãã£ã«å ããŠããMalinkaãã®ä»ã®ãã¹ãŠãéåžžã«åªããŠããŸãã æ倧256-512MBã®RAMïŒ ãããŠãã¹ãã£ã³ã¯ã¹ã«ã¯ãããå¿ èŠã§ãïŒ å®éã圌ã®ãæåã®ç§ "ãã®ã»ãšãã©ã¯ãå©çšå¯èœãªéã®äœ¿çšãæ倧éã«ããããšã§ãã 圌ã¯ã640Kbã§ãã¹ãŠã®äººã«ååããšããå²åŠã«åããããŠããããã§ã¯ãããŸãããããŸã£ããéã§ãã å¯èœãªéãããã¡ãã·ã§ããã«ãªãæ§æã«åŸã£ãŠããã®æ©èœãæ倧éã«æŽ»çšããããåªããŠããŸãã
ã¡ã¢ãªã¯å®ããªããŸãããïŒ ã€ã³ããã¯ã¹å šäœãæåŠããŠæŒã蟌ã¿ãŸãïŒ
å°è±¡çãªã¢ã¯ã»ã¹æéãåããæ°ãã掟æãªSSDã¯ãæ¬çªç°å¢ã§ãã¡ãã·ã§ããã«ã«ãªããŸãããïŒ ããŠããã¬ã€ããŠã¿ãŠãããããå éšã®æŠç¥ãšãã©ãŒããããããäžåºŠã·ã§ã€ã¯ããŠãã ããã
ããã«ãããã¯ãæ°ããæããããŒã»ã³ãããããããããã3ã€ã®ã®ã°ã©ã€ã³ãBASICã§èšè¿°ãããã¹ã¯ãªããã®ããã«ã§ãœãŒãããäœè£ãããããšããã¿ã€ãã®æµªè²»ã§ã¯ãããŸãããããŸã£ããéã§ãã çµéšè±å¯ãªïŒexïŒgamedevéçºè ã«ãã£ãŠå®è£ ããããã³ãããŒã¯ã«ãã£ãŠæ€èšŒãããåççãªæé©åã
ãããŠãããã±ãŒãã«ããå¥ã®ã±ãŒãã«ã«ãã€ãã転éããæ¹æ³ããããããªããå代ã®ãã¢ã³ããŒã³ã³ãã¥ãŒã¿ãŒããšå¹²æžããå Žæã¯ã©ãã«ããã®ã§ããããïŒ ãŸããå®éã«ã¯ããªãã§ããïŒ
ãã¡ãããã¯ãã¹ã³ã³ãã€ã«ãæ瀺ãããŠããŸãïŒäžéšã¯ããã€ãã£ãããŒã«ãã§ãŒã³ãã«ãŒã¿ãŒäžã§çŽæ¥ãã«ãããŠå®è¡ã§ããŸã-ããããç§ã¯ãã®ã¢ãããŒãã®æºåãã§ããŠããŸããïŒã ã¯ãã¹ã³ã³ãã€ã«ã¯ãªãŒãããŒã«ã®å€ãã®å éšãã¹ãïŒã¹ãã£ã³ã¯ã¹ã¯ãããã«ãã£ãŠæ§æãããŸãïŒããµã€ãã©ã€ã³ã«æ®ãããšãæå³ãããããéçã«æèŒãããŠãããã®ãããŒã«ãã§ãŒã³ã«äœããã®åœ¢ã§äŒããå¿ èŠããããŸãã
ãã®ãããã¹ãã£ã³ã¯ã¹ãå°ããªéçã§åããã«ã¯ããŸãã¿ãŒã²ãããã©ãããã©ãŒã ã®ããããã¥ã¢ãã«é¢é£ããããã€ãã®ãã€ã³ããèæ ®ããå¿ èŠããããŸãã
ã¡ã¢ãªèŠä»¶ãæé©åãã
RAMã«å¯Ÿããã¹ãã£ã³ã¯ã¹ã®é床ïŒãŸãã¯ãã¹ã±ãŒã«æ¯ãïŒãæºããæ¹æ³ã¯ïŒ ããã§ã¯ãã¹ãŠãéåžžã«ç°¡åã§ãã Sphinxã¯ããã®ãããªããªãœãŒã¹ãæ¶è²»ããŸããã 圌ã®ã倧é£ããã¯ãã€ã³ããã¯ã¹ã®ã¿ã¹ã¯ãšããªã¥ãŒã ã«çŽæ¥äŸåããŸãã ã»ãšãã©ã®å Žåãèšæ¶ã®äžã®å Žæãå ããã®ã¯åœŒã§ãã ãããã£ãŠãã€ã³ããã¯ã¹ãå°ããã»ã©ãå¿ èŠãªã¡ã¢ãªãå°ãªããªããŸãã
èŸæžïŒ.spiãã¡ã€ã«ïŒããã³å±æ§blobïŒ.spaã.spsã.spmãã¡ã€ã«ïŒãRAMã«ããŒããããŸãã ãããã®ãã¡ã€ã«ã®ãµã€ãºãèŠç©ãããšãå°æ¥ã®ã倧é£ããã®ããªãæ£ç¢ºãªäºæž¬ãè¡ãããšãã§ããŸãã
å®å šã«ã¿ã€ããªå Žåã¯ãå±æ§ãåé€ããŠããã£ã¹ã¯äžã®èŸæžãªãã·ã§ã³ãæå¹ã«ããããšãã§ããŸãã ãããããšããã¹ãŠãé ããŠæ²ãããªããŸãããå®å šã«ãã£ã¹ã¯äžã«ãããŸãã ãã ããäœãç¡å¹ã«ããããšã¯ã§ãããã¹ã¯ããããŒãã£ã·ã§ã³ãæ¥ç¶ããã ãã§ãã ããã¯ã¡ã¢ãªã«åãŸããŸã-ãé£ã³ãŸããã åãŸããªãå Žåã¯ãèªåçã«ã¹ã¯ããã«å ¥ããããã£ãããšæ²ããããšã«åäœããŸãïŒããšãããªãã·ã§ã³ã衚瀺ãããŸãã
ã€ã³ããã¯ã¹ã¿ã€ãïŒ
ç§ã¯ãã€ãã®ãã®ãåããŸããã ããŒã¯ãŒããã£ã¯ã·ã§ããªã䜿çšããŸãïŒcrcã®ã¿ãæ¢ã«å€ããªã£ãŠããŸãïŒã ããŒã¿èªäœããªã¢ã«ã¿ã€ã ã§å€æŽããå¿ èŠããªããšããçç±ã ãã§ãRTã¯å¿ èŠãããŸããã å®æçã«ã€ã³ããã¯ã¹ãåäœæããã ãã§ååã§ãïŒã¯ããå¿ èŠã«å¿ããŠrtãæ¥äžæããŸãïŒã ããã¯ãsearchdããŒã¢ã³ã ãã§ã¯äžååã§ãããã€ã³ãã¯ãµãŒãå¿ èŠã§ããããšãæå³ããŸãã
ããŒã¿ãœãŒã¹ãžã®ãªã³ã¯ïŒ
ä»ã«äœïŒ é©åãªããŒã¿ãœãŒã¹ïŒãã®å Žåã¯mysqlïŒã®ãµããŒããå¿ èŠã§ãã æè¿ãŸã§ããã®ãµããŒãã§ã¯ãã¹ãã£ã³ã¯ã¹èªäœã®ã¢ãŒããã¯ãã£ã«é¢é£ããç¹å®ã®ãã¬ãŒããããããŸãããã€ãŸãããã¡ã¬ãã€ããã®libsphinxãšããã€ã¬ã¯ãã€ã³ãã¯ãµãŒãsearchdãªã©ã®ããŒã«ãå®è£ ããå°ããªãœãŒã¹ã§æ§æãããŠããŸãã åæã«ãã€ã³ããã¯ã¹ãæäœããããã®ã»ãšãã©ãã¹ãŠã®æ©èœïŒããŒã¿ãœãŒã¹ããã®äœæãå«ãïŒã¯libsphinxã«ãããŸãã ãœãŒã¹ãµããŒãã®ãã¬ãŒããã¯ãmysqlãµããŒãã§ã¹ãã£ã³ã¯ã¹ãåéããåŸãå ±éã®ã¡ã¬ãªããä»ãããã¹ãŠã®ã¹ãã£ã³ã¯ã¹ãã€ããªãlibmysqlclientã«äŸåããããšã§ãã æ·±å»ãªãã·ã³ã§ã¯ããã¯åé¡ã§ã¯ãããŸããããã«ãŒã¿ãŒã§ã¯ããã®ããã«ããªã³ã¯ãããŠããã©ã€ãã©ãªã«äŸåããŠããŸãããäœæ¥ã«ã¯çµ¶å¯Ÿã«å¿ èŠãããŸãããç¡é§ã§ãã 2ã€ã®ãªãã·ã§ã³ããããŸãã2ã€ã®ã¢ã»ã³ããªãäœæããŸãã 1ã€ã¯mysqlããµããŒããã2ã€ç®ã¯ãŸã£ããã€ã³ããã¯ã¹ãäœæããŸããã æåããã€ã³ãã¯ãµãŒã2çªç®ãã-ãã®ä»ãã¹ãŠã 2çªç®ã®ãªãã·ã§ã³ã¯æè¿ç»å ŽããŸãã-å¿ èŠãªãã¹ãŠã®å€éšã©ã€ãã©ãªãæ瀺çã«ïŒdlopençµç±ã§ïŒããŒãããã ãã§ãã ãã®å ŽåãäžèŠãªäŸåé¢ä¿ãå¿ããããšãã§ããŸããã€ã³ãã¯ãµãŒã¯å¿ èŠãªãšãã«ã©ã€ãã©ãªãããŒãããŸãã searchdã¯åœŒå¥³ã«ãŸã£ãã觊ããŸããã
æªéãå§ããã«ã¯ïŒ
å€å žçãªæ¹æ³ã¯ãã¹ãã£ã³ã¯ã¹èªäœã«å®è£ ãããŠããŸãã ããã¯ããã«ãã©ãŒã¯ã§ã-æåã«ã¢ã¯ãã£ãã¿ãŒããã«ããããã¯ã解é€ãã次ã«æ°ããäœæ¥ã»ãã·ã§ã³ãäœæããŸã-ãããŠä»ã¯ããã¯ã°ã©ãŠã³ãã§åäœããã³ã³ãœãŒã«ã¯ãªããã¿ãŒããã«ã§Ctrl + CãæŒããŠãå¿çããŸããã pidãã¡ã€ã«ã«pidãæžã蟌ã¿ãŸã-ããã§ãæ¬æ Œçãªæªéã«ãªããŸããã ãã¹ãŠã¯å€§äžå€«ã®ããã§ããããã¹ãŠã®æªéã¯ãããã·ã¹ãã ã«å®è£ ããå¿ èŠããããŸãã ãªãŒãã³ãœãŒã¹ã·ã¹ãã ã§ã³ãŒããè€è£œããçç± è³¢ã人ã¯èããŠãèããŠããã£ãŠæ¥ãŸãã-ããŒã¢ã³ã«ãªãããã«ãå®éšãããã»ã¹ãå¿ èŠãšãããåã«ããã¯ã°ã©ãŠã³ãã§ãããç¶æããpidãã¡ã€ã«ãå ±éã®å Žæã«æ ŒçŽããåæã«ããŒã¢ã³ãåèµ·åãããçªç¬ããå®è£ ããŸãçªç¶ã®èœäžã®çµæã ã¡ãªã¿ã«ããã®ããã«äžæçã«ã¯ãã¹ã¿ãŒãã¢ãããéããŠã¹ãã£ã³ã¯ã¹ãèµ·åããéã«åé¡ãçºçããŸãã-2ã€ã®ããŸãã«ãã¹ããŒããªããã°ã©ã ã¯ãŸã åæã§ããŸããã§ããã ãã®çµæãupstartã®äžããã®æ£ãããªãã·ã§ã³ã¯ããªãã·ã§ã³ '--nodetach'ã§å®è¡ããå®è¡äžã®ããã»ã¹ïŒããã³ãã®ãã©ãŒã¯ã§ã¯ãªãïŒãç£èŠããããšã§ãã åæã«ãã¹ãã£ã³ã¯ã¹ã¯èªåèªèº«ãæªéãšã¯èŠãªããããã¹ãŠã®ããã¯ã°ã©ãŠã³ã管çã¯æ°èäŒæ¥ã«å§ããããŸãïŒã
ãã ããçµã¿èŸŒã¿ã®å ŽåãoptwareãopenwrtãåŸæ¥ã®rc.dã¹ã¯ãªããã䜿çšããéããupstartã«åé¡ã¯ãããŸããã ã€ãŸããç¹å¥ãªãã©ã°ã¯å¿ èŠãããŸããã ã¹ãã£ã³ã¯ã¹ã¯åœŒèªèº«ã®äººçãæ¯é ããŸãã
ãã°ãä¿åããå Žæã¯ïŒ
æåã«ãã¹ãã£ã³ã¯ã¹ã¯ããã¹ãŠã®ãªã¯ãšã¹ãã®åå¥ã®ãã°ãšåæ§ã«ãæªéã®å ±éã®ãã°ïŒfell-got-rotatedïŒãä¿æããŸãã ã«ãŒã¿ãŒã®ãã©ãã·ã¥ã¡ã¢ãªã«äœããæžã蟌ãããšã¯ããµã€ãºãå¶åŸ¡ããªããŠãèªæ®ºã®ããã«ãªãããšã¯æããã§ãã ãããã£ãŠãæ§æãã¡ã€ã«ã§ãsyslogãããã°ãšããŠæå®ããã¢ã»ã³ããªã®æ§ææã«--with-syslogãè¿œå ããããšãå¿ããªãã§ãã ããïŒãã ããæ¢å®ã§æ¢ã«æå¹ã«ãªã£ãŠããŸãïŒã ãã®çµæããã¹ãŠã®åºåãã·ã¹ãã ãã°ã«æžã蟌ãŸããŸããããã«ãããã«ãŒã¿ãŒèªäœã®ã·ã¹ãã ã¬ãã«ã§æ¢ã«æäœãè¡ãããŸãã ãããŠããã¡ãŒã ãŠã§ã¢ã®æ©èœã«å¿ããŠãããã€ãã®ãªãã·ã§ã³ããããŸãã äžéšã®ïŒéåžžã«å°ããªãã©ãã·ã¥ãåããå€ãDIR-300ãªã©ïŒã§ã¯ããã°ããŸã£ããä¿æããªãæ¹ãç°¡åã§ãã ãã®ä»ã®å ŽåãããŒã¹ã¯ã¡ã¢ãªå ã®ãªã³ã°ãããã¡ã«çŽæ¥æ ŒçŽãããlogreadã³ãã³ãã䜿çšããŠã³ã³ãœãŒã«ããèªã¿åãããšãã§ããŸãã 3ã€ç®ã¯ãudpãä»ããŠLANå ã®ãµãŒããŒã«ãªãã€ã¬ã¯ããããŸãã ãããããããã«ãã-ããã¯ãã¯ãã¹ãã£ã³ã¯ã¹ã®åé¡ã§ã¯ãããŸããïŒ
æ§æå¯èœããã³åéïŒ
ã«ãŒã¿ãŒäžã®ããŒã¢ã³ã®åäœã«é¢ãããã¹ãŠã®è³ªåã¯è§£æ±ºãããããã§ãã ä»ãæ§ç¯ã®æã§ãïŒ
ããŒããªãŒãããŒã«
Sphinxã¯autotoolsã䜿çšããŠæ§æãããŸãã ./configure-ã¢ã»ã³ããªã®åã«å®è¡ãããã¹ã¯ãªããã¯ãã¢ã»ã³ããªã·ã¹ãã ãæ£çŽã«ã¢ã€ãã³æããã䜿çšããŠããã³ã³ãã€ã©ããµããŒããããŠããæ©èœãã¢ãŒããã¯ãã£ããã€ããªãŒããŒïŒLSBãŸãã¯MSBïŒãèŠã€ããŸãã åé¡ã¯ããããã®ãã¹ãã®ã»ãšãã©ãã¹ãŠãã¿ãŒã²ããã«ãŒã¿ãŒã§ã¯ãªããããŒã«ãã§ãŒã³ãå®è¡ããã·ã¹ãã ã«åœ±é¿ããããšã§ãã ãããã£ãŠã1ã€ã®æ¹æ³ãããããŸãããæ§æã®ãæ£è§£ããä¿ãæ¹æ³ã§ãã ããã¯ç°å¢å€æ°ã䜿çšããŠè¡ãããŸãã ããšãã°ãã/ configureãqsorté¢æ°ã®å¯çšæ§ããã§ãã¯ããå Žåãã/ configureãå®è¡ããåã«ac_cv_func_qsortå€æ°ãå®çŸ©ããããšã«ãããå¿ èŠãªããã³ãããäžããããšãã§ããŸãã ããšãã°ãã¢ã»ã³ãã«ããåã«
export ac_cv_func_qsort=no
å®è¡ãããšãqsorté¢æ°ããªããšæ³å®ãããŸãã ãããã£ãŠããã®æ¹æ³ã§æ§æãããããã±ãŒãžã¯ãç¬èªã®å®è£ ã䜿çšããããã¢ã»ã³ããªäžã«ç ŽæããããšãããããŸãïŒããïŒïŒã
åã蟌ã¿ã¹ãã£ã³ã¯ã¹ã®ãæ瀺çãªãã³ãããäœæããããã«å¿ èŠãªãã®ã¯ã»ãšãã©ãããŸããã ããã«ãããŸã...
- sphinx_cv_unaligned_ram_access ïŒyes / noïŒ-ååã¯ããèªèº«ãè¡šããŠããŸãã èŠããã«ãã¹ãã£ã³ã¯ã¹ã€ã³ããã¯ã¹ã®å éšåœ¢åŒã¯å§çž®ããã1ãã€ãã§æŽåãããŸãã ãã®ãããªãã¡ã€ã«ïŒã¡ã¢ãªã«ããŒããããïŒããDWORDãçªç¶ååŸããå¿ èŠãããããããå¥æ°ã¢ãã¬ã¹ã«ããå Žå-äžéšã®ã¢ãŒããã¯ãã£ïŒããšãã°ãsparcïŒã§ã¯ãããã¯ã¯ã©ãã·ã¥ã«ã€ãªãããŸãïŒ ã¿ãŒã²ãããã©ãããã©ãŒã ã®ããŒã¿ã·ãŒããèªãããšã§ç¶æ³ãèªèã§ããŸãã ãŸãã¯ãç§åŠçãªçªã£èŸŒã¿ãã®æ¹æ³-å¯èœãªãã¹ãŠã®ïŒ2ã€ãŸã§ïŒïŒãªãã·ã§ã³ãåéããã¿ãŒã²ããã·ã¹ãã ã§å®è¡ããããšããŸãã ïŒæè¡çãªè©³çŽ°ïŒã¢ã©ã€ã¡ã³ããããŠããªãã¢ã¯ã»ã¹ãäžå¯èœãªå Žåãåžæãããã€ã³ã¿ãŒããDWORDãååŸãã代ããã«ãmemcpyåŒã³åºãã䜿çšããŠä»»æã®ã¢ãã¬ã¹ããåžæãã4ãã€ããã³ããŒããŸãïŒã å®éã«ã¯-ç§ã®ãããïŒelïŒã§æŽåããŠããªãäœåã
- sphinx_cv_interlocked ïŒyes / noïŒ-ãã¬ã¬ã·ãŒi386ãã§ã®ã¢ã»ã³ããªã³ã¹ãã®ã¿ã ããšãã°ãdd-wrtã®optwareã§ã¯ããnoããèšå®ããå¿ èŠããããŸããããããªããšãã¢ã»ã³ããªã倱æããŸãã ãã調æŽãããopenwrtã¢ã»ã³ããªã§ã¯ãåããã©ã°ããã§ãã¯ããªããŸãŸã«ããããšãã§ããŸãã ããã©ã«ãã®ãyesãã¯å®å šã«æ©èœããããŒãžã§ã³ãæäŸããŸãã ïŒæè¡çãªè©³çŽ°ïŒå éšã®ãã©ã°ã«å¿ããŠãã¢ãããã¯ããã¯ããªãŒæäœ__sync_fetch_and_addã䜿çšãããããå€æ°+ãã¥ãŒããã¯ã¹ããã®æ§é äœãåãäœæ¥ãè¡ããŸãããæ¢ã«ããã¯ãããŠããŸãïŒ
- ac_cv_c_bigendian ïŒyes / noïŒã¯æãé¢çœãå€æ°ã§ãã ã€ã³ããã¯ã¹ããå€éšã«ãã©ãã«ãå
¬éããªãå Žå-ãã®å€æ°ã¯ç¡èŠã§ããŸãã æªéãããããå
éšã«ã©ã®ããã«æ ŒçŽããã-é¢ä¿ãããŸãã äž»ãªããšã¯ããªã¯ãšã¹ãã«æ£ããå¿çããããšã§ãã ãŸãããããã¯ãŒã¯ãä»ããéä¿¡ã¯ãäºæ³ã©ãããhton / ntohåŒã³åºããªã©ãæäŸãããŠããããããšã³ãã£ã¢ã³ã®åœ±é¿ãåããŸããã ãã ããããšãã°ããã¹ã¯ãããã«ã€ã³ããã¯ã¹ãäœæãããSchaub workingãã«ãŒã¿ãŒã«ããããããããšãããšãããã«éããçŸããŸãã ã€ãŸããå¥ã®ãšã³ãã£ã¢ã³ã§ã€ã³ããã¯ã¹ãããŒãããããšã¯çŸåšäžå¯èœã§ãã ååãšããŠãåé¡ãä¿®æ£ããããšã¯ã§ããŸãããããŸãæå³ã¯ãããŸããïŒãã©ãããã©ãŒã éã§ã€ã³ããã¯ã¹ãããŒãããã倧å¢ã®ãŠãŒã¶ãŒããããªãéãïŒã ã€ã³ããã¯ã¹ã®éãã¯ã衚瀺çšã«.sphãã¡ã€ã«ãéãããšã§ç°¡åã«ç¢ºèªã§ããŸãïŒãã³ãã§çŽæ¥ãmcã®F3ïŒã ãªãã«ãšã³ãã£ã¢ã³ãã©ãããã©ãŒã ã§äœæãããã€ã³ããã¯ã¹ã®ã¿ã€ãã«ã«ã¯ãããžãã¯ã·ã°ããã£ãSPHXãã衚瀺ãããŸãã ããã°ãšã³ãã£ã¢ã³-ãXHPSãã
ã¿ãŒã²ããã®æ£ããå€ãèŠã€ããæ¹æ³ã¯ããã€ããããŸãã 第äžã«ããã§ã«èšåãããç§åŠçã¿ã€ã¯ãã å®è¡æãã§ãã¯ã¯ã¹ãã£ã³ã¯ã¹ã«çµã¿èŸŒãŸããŠãããå®éã®æ©èœãã³ã³ãã€ã«æã«æå®ãããæ©èœãšäžèŽããªãå Žåãæ£ããå€ãäžå¯§ã«åªããäŒããŸãã 次ã«ãfileã³ãã³ãã䜿çšããŠãçµã¿ç«ãŠãããbinarã®ç¹æ§ã確èªã§ããŸãïŒæé»çã«-ubuntuã®mcã®ãã¡ã€ã«ã§F3ãæŒãïŒã ããã§ãELF 32ãããMSBå®è¡å¯èœãã¡ã€ã«ããèŠãããšã§ãããã°ãšã³ãã£ã¢ã³ãæ±ã£ãŠããããšãããããŸããã ãŸãããELF 32ãããLSBå®è¡å¯èœãã¡ã€ã«ãã¯ãªãã«ãšã³ãã£ã¢ã³ã«ã€ããŠèª¬æããŠããŸãã ãã®å Žåãã©ãããŒã§ã-ãã¹ã¯ãããã§ã€ã³ããã¯ã¹ãäœæã§ããŸã:)ã æåŸã«ã3çªç®ã®æãç°¡åãªæ¹æ³ã¯ãã³ã³ãã€ã©ã®ååã調ã¹ãããšã§ãã ãmipsãã¯ããã°ãšã³ãã£ã¢ã³ããmipselãã¯ãªãã«ãšã³ãã£ã¢ã³ã§ãã aot lemmatizerïŒstemmer = lemmatize_aot_ruãlemmatize_aot_enãlemmatize_aot_deãŸãã¯ãã¹ãŠäžç·ã«æ§æã«å«ãŸããïŒã䜿çšããå Žåã¯ãæ£ãããšã³ãã£ã¢ãã¹ãéèŠã§ãã AotèŸæžBlobã¯ããªãã«ãšã³ãã£ã¢ã³ãåãããéåžžã®ãPCäžã§äœæãããããããæµãã¢ãŒããã¯ãã£äžã§å€æããå¿ èŠããããŸãïŒèµ·åæã«ãªã³ã¶ãã©ã€ã§è¡ãããŸããããã®ãšã³ãã£ã¢ãã¹ã¯èšå®äžã«æ£ããèšå®ããå¿ èŠããããŸãïŒã - ac_cv_func_realloc_0_nonnull = yes
- ac_cv_func_malloc_0_nonnull = yes-å®å šãæãããã«èšåããŸãã ãBzikããªãŒãããŒã«ã¯ã¹ãã£ã³ã¯ã¹ã§ã¯äœ¿çšãããŸããã ãããããããããªããã°ãã¢ã»ã³ããªã¯ãšã©ãŒãçæããçŽæ¥ã°ãŒã°ã«ããã®ãããªããã©ã°ããœãªã¥ãŒã·ã§ã³ã«ã€ãªãããŸãã
ã¯ãããšããã§-åè¿°ã®å€æ°ïŒåœåã¹ã¿ã€ã«ããæ£ããçãããä¿ãæ¹æ³ïŒã¯ããåãã®ãšãããã¹ãã£ã³ã¯ã¹ã®çŽç²ãªæ©èœã§ã¯ãªãããªãŒãããŒã«ã®ããããã£ã§ãã autotoolsã䜿çšããŠèšè¿°ãããä»ã®ãœãããŠã§ã¢ãèšå®ãããšãã«ãçãããããã³ãããããããšãã§ããã®ãšãŸã£ããåãæ¹æ³ã§ãã
ãªãããŠã§ã¢ã®ã¹ãã£ã³ã¯ã¹
ã¿ãŒã²ãããã©ãããã©ãŒã ïŒç§ã¯ddwrtçšã«ãã«ãããïŒã®ãã©ã«ããŒã§ãmakeãã©ã«ããŒã«ç§»åããtemplate.mkãsphinxsearch.mkã«ã³ããŒããŸãã 次ã«ããã¡ã€ã«èªäœã®æ瀺ã«åŸã£ãŠãçµæã®ã³ããŒãç·šéããŸãã å®éãããã¯ããœãããŠã§ã¢ããªãããŠã§ã¢ã«è¿œå ããããã«å¿ èŠãªïŒãããŠãã°ãã°ååãªïŒå¯äžã®ã¹ã¯ãªããã§ãã ã¡ã€ã³ã¢ã»ã³ããªãæ§æãããã®ã¹ã¯ãªããã®éèŠãªéšåã次ã«ç€ºããŸãã
(SPHINXSEARCH_BUILD_DIR)/.configured: sphinxsearch-source make/sphinxsearch.mk $(MAKE) libstdc++-stage $(MAKE) expat-stage $(MAKE) mysql5-stage rm -rf $(BUILD_DIR)/$(SPHINXSEARCH_DIR) $(@D) $(SPHINXSEARCH_UNZIP) $(DL_DIR)/$(SPHINXSEARCH_SOURCE) | tar -C $(BUILD_DIR) -xvf - $(LIBSTEMMER_UNZIP) $(DL_DIR)/$(LIBSTEMMER_SOURCE) | tar -C $(BUILD_DIR)/$(SPHINXSEARCH_DIR) -xvf - if test -n "$(SPHINXSEARCH_PATCHES)" ; \ then cat $(SPHINXSEARCH_PATCHES) | \ patch -d $(BUILD_DIR)/$(SPHINXSEARCH_DIR) -p0 ; \ fi if test "$(BUILD_DIR)/$(SPHINXSEARCH_DIR)" != "$(@D)" ; \ then mv $(BUILD_DIR)/$(SPHINXSEARCH_DIR) $(@D) ; \ fi (cd $(@D); \ export ac_cv_func_realloc_0_nonnull=yes; \ export ac_cv_func_malloc_0_nonnull=yes; \ export sphinx_cv_unaligned_ram_access=yes; \ export ac_cv_c_bigendian=no; \ export sphinx_cv_interlocked=no; \ $(TARGET_CONFIGURE_OPTS) \ CPPFLAGS="$(STAGING_CPPFLAGS) $(SPHINXSEARCH_CPPFLAGS)" \ LDFLAGS="$(STAGING_LDFLAGS) $(SPHINXSEARCH_LDFLAGS)" \ ./configure \ --build=$(GNU_HOST_NAME) \ --host=$(GNU_TARGET_NAME) \ --target=$(GNU_TARGET_NAME) \ --prefix=/opt \ --sysconfdir=/opt/etc/sphinxsearch \ --with-libstemmer \ --with-mysql=$(STAGING_PREFIX) \ --without-unixodbc \ --with-syslog \ --enable-dl \ ) touch $@
ã¢ã»ã³ããªã®æ®ãã®éšåã¯ç°¡åã§ãïŒã¡ã€ã¯ãã¹ããªãããããã±ãŒãžã³ã°ïŒã ã¹ãã£ã³ã¯ã¹ã®ãœãŒã¹ã«å ããŠãlibstemmerã®ãœãŒã¹ãå¿ èŠã§ãïŒã¢ã»ã³ããªäžã«ãµã€ãããçŽæ¥ãã«ãããŸãïŒã ãŸããã³ã³ãã€ã«ãããexpatãšmysqlãå¿ èŠã§ãïŒäŸåããŠããéãããããã¯äŸåé¢ä¿ãšããŠãã«ããããŸãïŒã ã¡ã€ã³ã®ã¡ã€ã¯ãã¡ã€ã«ïŒ./makeã«ãããŸãïŒã«å ããŠããã©ã«ããŒ./sources/sphinxsearchãoptwareãœãŒã¹ã®ãã©ã«ããŒæ§é ã§äœ¿çšãããŸãã ããã«ã¯ãããŒã¢ã³çšã®initã¹ã¯ãªãããå«ãŸããŠããŸããããã¯ããã±ãŒãžã«ããã±ãŒãžåãããã€ã³ã¹ããŒã«äžã¯/opt/etc/init.dã«æ ŒçŽãããŸãã ã¢ã»ã³ããªã¯ã«ãŒããã©ã«ããŒããå®è¡ãããç¹å®ã®ãµãã£ãã¯ã¹ãããã±ãŒãžåã«è¿œå ãããŸãã
- make sphinxsearch-ã¯ãã¹ããŒã«ãã§ãŒã³ã§ã¹ãã£ã³ã¯ã¹ãåéããŸãã ãããã°ã«åœ¹ç«ã¡ãŸãã
- make sphinxsearch-ipk -sphinxãåéããŠãã.ipkããã±ãŒãžãäœæããŸã
- make sphinxsearch-clean-ã¬ããŒãžãåé€ããŸãïŒã¢ã»ã³ããªåŸïŒã
æ¥å°ŸèŸ-ipkã䜿çšããã¢ã»ã³ããªã®çµæããããã«äœ¿çšã§ãããããã±ãŒãžsphinxsearch.ipkãååŸãããŸããããã¯ãipkgã䜿çšããŠoptwareã«ã€ã³ã¹ããŒã«ããŸãã ãã®åŸããã¹ãŠãéåžžéãã§ã-èšå®ãäœæããã€ã³ããã¯ã¹ãäœæããŸãïŒdd-wrtãããã©ã«ãã®LSBã§ããéãããã¹ã¯ãããã§ã€ã³ããã¯ã¹ãäœæã§ããŸãïŒ-ãããŠé¢éžããŸãã åºæ¥äžããïŒ å¿ èŠã«å¿ããŠãmysqlãžã®äŸåé¢ä¿ãåé€ã§ããŸãïŒå®å šãªæ§æã®SPHINXSEARCH_DEPENDSãã£ã¬ã¯ãã£ããåç §ïŒ-ããŒã¢ã³èªäœãèµ·åããããã«ãã®ã©ã€ãã©ãªãå¿ èŠã§ãªãéãïŒãããŠãåŽã§ã€ã³ããã¯ã¹ãäœæããå Žåãã«ãŒã¿ãŒã§ã¯ãŸã£ããå¿ èŠãããŸããïŒã äžèšã®ã¹ã¯ãªããã®ac_cv_ ...ããã³sphinx_cv_ ...å€æ°ããããã«ä¿®æ£ããå¿ èŠãããå ŽåããããŸãããããã¯dd-wrtã®ãªãããŠã§ã¢ãã«ãã«åºã¥ããŠããŸãïŒããã¯ããã»ã«ã¢ãŒããã¯ãã£ãã€ãŸããªãã«ãšã³ãã£ã¢ã³ã§ãããåæã«ãããæ©èœã®ã»ããã¯ã¬ã¬ã·ãŒã«çž®å°ãããŸãïŒ
Openwrtã®ã¹ãã£ã³ã¯ã¹
ã¿ãŒã²ããopenwrtãmipsäžã«ããå Žåãoptwrwareã¯ddwrtããèµ·åã§ããŸããïŒmipselããããŸãïŒã mipselã§ãããå Žåã¯ãoptwareããsphinxãå®è¡ã§ããŸããããã®å Žåãopenwrtã®å®å šãªãªãŒãã³æ§ã䜿çšããŠãã¿ãŒã²ããã·ã¹ãã å°çšã®ã¢ã»ã³ããªãäœæããæ¹ãã¯ããã«æ£åœåãããŸããããã«ãããåŸæ¥ã®å¶éããªããªããããæé©ãªã³ãŒããååŸãããŸããæšæºã©ã€ãã©ãªã®å¥ã®ããããã«ç°ãªããã€ã³ã¹ã¿ã³ã¹ãã¡ã¢ãªã«ããŒãããŸããã
Openwrtã¯ããã«ãã«makeã¹ã¯ãªããã䜿çšããŸãã圢åŒãšå Žæã®ã¿ãç°ãªããŸãã å¿ èŠãªãã¡ã€ã«ã¯ãã¢ã»ã³ããªç°å¢ã®ã«ãŒãããããã±ãŒãžããªãŒã®ã©ããã«äœæãããå¥ã®ãã©ã«ããŒã«é 眮ãããŸãã ããšãã°ãããã±ãŒãž/ãããã¯ãŒã¯/ãµãŒãã¹/ã¹ãã£ã³ã¯ã¹ãéžæããŸããã Makefileã¯ãæå®ããããã©ã«ããŒã«æäœéå¿ èŠã§ãããŸããå®çŸ©æžã¿ã®ååãæã€ä»ã®ãã¡ã€ã«ããã³ãã©ã«ããŒãååšããå ŽåããããŸãã Makefileã«å ããŠãConfig.inïŒã¡ã€ã³menuconfigã§ãµãã¡ãã¥ãŒãäœæããŸãïŒãããã³ãµã³ãã«ã®configããã³initã¹ã¯ãªããã眮ãããŠãããã¡ã€ã«/ãã©ã«ããŒã䜿çšããŸãïŒãšããã§ãoptwareãããã¯ããã«çãïŒã openwrtã®æ§æã®éèŠãªéšåã¯æ¬¡ã®ããã«ãªããŸãã
CONFIGURE_VARS += \ ac_cv_func_realloc_0_nonnull=yes \ ac_cv_func_malloc_0_nunnul=yes \ ac_cv_c_bigendian=yes \ sphinx_cv_unaligned_ram_access=yes CONFIGURE_ARGS += \ --prefix=/ \ --sysconfdir=/etc/sphinx \ $(if $(CONFIG_SPHINX_MYSQL_SUPPORT),--with-mysql,--without-mysql) \ $(if $(CONFIG_SPHINX_PGSQL_SUPPORT),--with-pgsql,--without-pgsql) \ $(if $(CONFIG_SPHINX_UNIXODBC_SUPPORT),--with-unixodbc,--without-unixodbc) \ $(if $(CONFIG_SPHINX_EXPAT_SUPPORT),--with-libexpat,--without-libexpat) \ $(if $(CONFIG_SPHINX_DYNAMIC_LOAD),--enable-dl,,) \ --with-syslog \ --with-libstemmer
èŠèŠçã«ããªãããŠã§ã¢ãããçããªã£ãŠããŸãïŒã¹ã¯ãªããå šäœãå€§å¹ ã«çããªã£ãŠããŸã-84è¡ã®ã¿ã§ããã®ã»ãšãã©ããã³ãã¬ãŒãã§ãïŒã ããã«ã¯ãã¡ãã¥ãŒããèšå®ãããå€æ°ãå«ãŸããŸãã ãã®ããŒãžã§ã³ã§ã¯ãå¿ èŠã«å¿ããŠac_cv_c_bigendianãä¿®æ£ããå¿ èŠãããå ŽåããããŸãïŒMIPSãã€ãŸãããã°ãšã³ãã£ã¢ã³ã§ããNetGear WNDR4300ã«ãŒã¿ãŒãæ§ç¯ããŸããïŒã ãã®ããŒãžã§ã³ã§ããã¢ã»ã³ããªäžã«libstemmerãåå¥ã«ããŒãããŸããã§ããã 代ããã«ãäºåã«èªåã§ããŠã³ããŒãããŠããœãŒã¹ãšãšãã«tarballã«ããã¯ããå¿ èŠããããŸãïŒãããŠãPKG_MD5SUMãåãåã£ãtarballãæã€ãã®ã«ä¿®æ£ããŸãïŒã
openwrtã§ã®ããã±ãŒãžã®ãã«ãã¯2段éã®ããã»ã¹ã§ãã ãŸããã«ãŒããã©ã«ããŒã§menuconfigãå®è¡ãããã¡ãŒã ãŠã§ã¢å šäœãæ§æããŸãã ããã§ããããã¯ãŒã¯/ WebãµãŒããŒ/ãããã·ã»ã¯ã·ã§ã³ã«ç§»åããå¿ èŠããããŸã-ãã§ã«ããã«ã¢ãžã¥ãŒã«ïŒMïŒãšããŠsphinxãéžæããŠãã ããã ããã§ãæ§æãµãã¡ãã¥ãŒã«ç§»åããå¿ èŠãªããŒã¿ãœãŒã¹ããµããŒãããã¢ã»ã³ããªãé 眮ã§ããŸãã 次ã«ãmenuconfigãçµäºããå€æŽãä¿åããŸããæåŸã«ããã¡ãŒã ãŠã§ã¢å šäœã®ã¢ã»ã³ããªãéå§ããŸãã
äœã
ãŸãã¯1ã€ã ãã®ã¹ãã£ã³ã¯ã¹ïŒåœç¶ãå¿ èŠã«å¿ããŠäŸåé¢ä¿ããïŒ
ããã±ãŒãžå/ãããã¯ãŒã¯/ãµãŒãã¹/ sphinx /ã³ã³ãã€ã«
åä¿¡ããããã±ãŒãžã¯ããã©ã«ããŒ./bin/ARCH/packagesïŒç§ã®å Žåã¯./bin/ar71xx/packagesïŒã«è¿œå ãããŸãã ããã±ãŒãžãæ€çŽ¢ããŠã«ãŒã¿ãŒã«ã³ããŒããïŒãããŠopkgãèšå®ããïŒããããŒã«ã«WebãµãŒããŒã§ã¢ã»ã³ããªãã©ã«ããŒãå ¬éããã«ãŒã¿ãŒã®/etc/opkg.confã«ãã¹ãæžã蟌ãã§ããopkg updateããããšã§ãããã±ãŒãžãçŽæ¥ã€ã³ã¹ããŒã«ã§ããŸãã opkg install sphinxã
ã«ãŒã¿ãŒã§ã€ã³ããã¯ã¹ãäœæããããã«ãmysqlã¯ã©ã€ã¢ã³ãã©ã€ãã©ãªãåå¥ã«ã€ã³ã¹ããŒã«ããå¿ èŠãããå ŽåããããŸãïŒå¿ èŠãªã©ã€ãã©ãªã®åçããŒãã䜿çšããæ§æã®å Žåãã€ã³ã¹ããŒã«ã«ãã£ãŠã¯èŠå®ããŸããã§ããïŒã ããã§ã-æåã§ã·ã³ããªãã¯ãªã³ã¯ãäœæããŸãïŒlibããããã©ã«ããŒã§ln -s libmysqlclient.so.16.0.0 libmysqlclient.soã³ãã³ãã䜿çšïŒã ãã以å€ã®å Žåã¯ããã¹ãŠããã®ãŸãŸäœ¿çšã§ããŸãã ç§ã®ã¢ããªã±ãŒã·ã§ã³ã¯sphinxqlãããã³ã«ã«åŸã£ãŠã¹ãã£ã³ã¯ã¹ã䜿çšããŸãïŒã€ãŸããåãlibmysqlclientã¯sphinxãmysqlã®ã€ã³ããã¯ã¹ãäœæããããã ãã§ãªããã¯ã©ã€ã¢ã³ããã¹ãã£ã³ã¯ã¹èªäœãšé£æºããããã«äœ¿çšãããŸãïŒã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ïŒãéåžžã«æ©èœçã§ãã
æåŸã«-æ§æãšã¹ã¯ãªããã
ãªãããŠã§ã¢ã®å ŽåïŒ
ã¢ã»ã³ããªã¹ã¯ãªãã
sphinxsearch.mkãã¡ã€ã«ã«é
眮ãããoptwareãã©ãããã©ãŒã ã®makeãã©ã«ããŒã«é
眮ãããŸã
########################################################### # # sphinxsearch # ########################################################### # You must replace "sphinxsearch" and "SPHINXSEARCH" with the lower case name and # upper case name of your new package. Some places below will say # "Do not change this" - that does not include this global change, # which must always be done to ensure we have unique names. # # SPHINXSEARCH_VERSION, SPHINXSEARCH_SITE and SPHINXSEARCH_SOURCE define # the upstream location of the source code for the package. # SPHINXSEARCH_DIR is the directory which is created when the source # archive is unpacked. # SPHINXSEARCH_UNZIP is the command used to unzip the source. # It is usually "zcat" (for .gz) or "bzcat" (for .bz2) # # You should change all these variables to suit your package. # Please make sure that you add a description, and that you # list all your packages' dependencies, seperated by commas. # # If you list yourself as MAINTAINER, please give a valid email # address, and indicate your irc nick if it cannot be easily deduced # from your name or email address. If you leave MAINTAINER set to # "NSLU2 Linux" other developers will feel free to edit. # http://sphinxsearch.com/files/sphinx-2.0.5-release.tar.gz #SPHINXSEARCH_SITE=http://sphinxsearch.com/files SPHINXSEARCH_SITE=http://192.168.1.5:65080/r/sphinxsearch SPHINXSEARCH_VERSION=2.2.2-4470 SPHINXSEARCH_SOURCE=sphinx-$(SPHINXSEARCH_VERSION).tar.gz SPHINXSEARCH_DIR=sphinx-$(SPHINXSEARCH_VERSION) SPHINXSEARCH_UNZIP=zcat SPHINXSEARCH_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com> SPHINXSEARCH_DESCRIPTION=Sphinx is free open-source SQL full-text search engine. SPHINXSEARCH_SECTION=misc SPHINXSEARCH_PRIORITY=optional SPHINXSEARCH_DEPENDS=libstdc++, expat, mysql5 SPHINXSEARCH_SUGGESTS= SPHINXSEARCH_CONFLICTS= LIBSTEMMER_SITE=http://snowball.tartarus.org/dist LIBSTEMMER_SOURCE=libstemmer_c.tgz LIBSTEMMER_UNZIP=zcat # # SPHINXSEARCH_IPK_VERSION should be incremented when the ipk changes. # SPHINXSEARCH_IPK_VERSION=2 # # SPHINXSEARCH_CONFFILES should be a list of user-editable files SPHINXSEARCH_CONFFILES=/opt/etc/sphinxsearch/sphinx.conf # # SPHINXSEARCH_PATCHES should list any patches, in the the order in # which they should be applied to the source code. # #SPHINXSEARCH_PATCHES=$(SPHINXSEARCH_SOURCE_DIR)/configure.patch SPHINXSEARCH_PATCHES= # # If the compilation of the package requires additional # compilation or linking flags, then list them here. # SPHINXSEARCH_CPPFLAGS= SPHINXSEARCH_LDFLAGS= # # SPHINXSEARCH_BUILD_DIR is the directory in which the build is done. # SPHINXSEARCH_SOURCE_DIR is the directory which holds all the # patches and ipkg control files. # SPHINXSEARCH_IPK_DIR is the directory in which the ipk is built. # SPHINXSEARCH_IPK is the name of the resulting ipk files. # # You should not change any of these variables. # SPHINXSEARCH_BUILD_DIR=$(BUILD_DIR)/sphinxsearch SPHINXSEARCH_SOURCE_DIR=$(SOURCE_DIR)/sphinxsearch SPHINXSEARCH_IPK_DIR=$(BUILD_DIR)/sphinxsearch-$(SPHINXSEARCH_VERSION)-ipk SPHINXSEARCH_IPK=$(BUILD_DIR)/sphinxsearch_$(SPHINXSEARCH_VERSION)-$(SPHINXSEARCH_IPK_VERSION)_$(TARGET_ARCH).ipk .PHONY: sphinxsearch-source sphinxsearch-unpack sphinxsearch sphinxsearch-stage sphinxsearch-ipk sphinxsearch-clean sphinxsearch-dirclean sphinxsearch-check # # This is the dependency on the source code. If the source is missing, # then it will be fetched from the site using wget. # $(DL_DIR)/$(SPHINXSEARCH_SOURCE): $(WGET) -P $(@D) $(SPHINXSEARCH_SITE)/$(@F) || \ $(WGET) -P $(@D) $(SOURCES_NLO_SITE)/$(@F) $(DL_DIR)/$(LIBSTEMMER_SOURCE): $(WGET) -P $(@D) $(LIBSTEMMER_SITE)/$(@F) || \ $(WGET) -P $(@D) $(SOURCES_NLO_SITE)/$(@F) # # The source code depends on it existing within the download directory. # This target will be called by the top level Makefile to download the # source code's archive (.tar.gz, .bz2, etc.) # sphinxsearch-source: $(DL_DIR)/$(SPHINXSEARCH_SOURCE) $(DL_DIR)/$(LIBSTEMMER_SOURCE) $(SPHINXSEARCH_PATCHES) # # This target unpacks the source code in the build directory. # If the source archive is not .tar.gz or .tar.bz2, then you will need # to change the commands here. Patches to the source code are also # applied in this target as required. # # This target also configures the build within the build directory. # Flags such as LDFLAGS and CPPFLAGS should be passed into configure # and NOT $(MAKE) below. Passing it to configure causes configure to # correctly BUILD the Makefile with the right paths, where passing it # to Make causes it to override the default search paths of the compiler. # # If the compilation of the package requires other packages to be staged # first, then do that first (eg "$(MAKE) <bar>-stage <baz>-stage"). # # If the package uses GNU libtool, you should invoke $(PATCH_LIBTOOL) as # shown below to make various patches to it. # $(SPHINXSEARCH_BUILD_DIR)/.configured: sphinxsearch-source make/sphinxsearch.mk $(MAKE) libstdc++-stage $(MAKE) expat-stage $(MAKE) mysql5-stage rm -rf $(BUILD_DIR)/$(SPHINXSEARCH_DIR) $(@D) $(SPHINXSEARCH_UNZIP) $(DL_DIR)/$(SPHINXSEARCH_SOURCE) | tar -C $(BUILD_DIR) -xvf - $(LIBSTEMMER_UNZIP) $(DL_DIR)/$(LIBSTEMMER_SOURCE) | tar -C $(BUILD_DIR)/$(SPHINXSEARCH_DIR) -xvf - if test -n "$(SPHINXSEARCH_PATCHES)" ; \ then cat $(SPHINXSEARCH_PATCHES) | \ patch -d $(BUILD_DIR)/$(SPHINXSEARCH_DIR) -p0 ; \ fi if test "$(BUILD_DIR)/$(SPHINXSEARCH_DIR)" != "$(@D)" ; \ then mv $(BUILD_DIR)/$(SPHINXSEARCH_DIR) $(@D) ; \ fi (cd $(@D); \ export ac_cv_func_realloc_0_nonnull=yes; \ export ac_cv_func_malloc_0_nonnull=yes; \ export sphinx_cv_unaligned_ram_access=yes; \ export sphinx_cv_interlocked=no; \ $(TARGET_CONFIGURE_OPTS) \ CPPFLAGS="$(STAGING_CPPFLAGS) $(SPHINXSEARCH_CPPFLAGS)" \ LDFLAGS="$(STAGING_LDFLAGS) $(SPHINXSEARCH_LDFLAGS)" \ ./configure \ --build=$(GNU_HOST_NAME) \ --host=$(GNU_TARGET_NAME) \ --target=$(GNU_TARGET_NAME) \ --prefix=/opt \ --sysconfdir=/opt/etc/sphinxsearch \ --with-libstemmer \ --with-mysql=$(STAGING_PREFIX) \ --without-unixodbc \ --with-syslog \ --enable-dl \ ) # $(PATCH_LIBTOOL) $(@D)/libtool touch $@ sphinxsearch-unpack: $(SPHINXSEARCH_BUILD_DIR)/.configured # # This builds the actual binary. # $(SPHINXSEARCH_BUILD_DIR)/.built: $(SPHINXSEARCH_BUILD_DIR)/.configured rm -f $@ $(MAKE) -C $(@D) touch $@ # # This is the build convenience target. # sphinxsearch: $(SPHINXSEARCH_BUILD_DIR)/.built # # If you are building a library, then you need to stage it too. # $(SPHINXSEARCH_BUILD_DIR)/.staged: $(SPHINXSEARCH_BUILD_DIR)/.built rm -f $@ $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install touch $@ sphinxsearch-stage: $(SPHINXSEARCH_BUILD_DIR)/.staged # # This rule creates a control file for ipkg. It is no longer # necessary to create a seperate control file under sources/sphinxsearch # $(SPHINXSEARCH_IPK_DIR)/CONTROL/control: @install -d $(@D) @rm -f $@ @echo "Package: sphinxsearch" >>$@ @echo "Architecture: $(TARGET_ARCH)" >>$@ @echo "Priority: $(SPHINXSEARCH_PRIORITY)" >>$@ @echo "Section: $(SPHINXSEARCH_SECTION)" >>$@ @echo "Version: $(SPHINXSEARCH_VERSION)-$(SPHINXSEARCH_IPK_VERSION)" >>$@ @echo "Maintainer: $(SPHINXSEARCH_MAINTAINER)" >>$@ @echo "Source: $(SPHINXSEARCH_SITE)/$(SPHINXSEARCH_SOURCE)" >>$@ @echo "Description: $(SPHINXSEARCH_DESCRIPTION)" >>$@ @echo "Depends: $(SPHINXSEARCH_DEPENDS)" >>$@ @echo "Suggests: $(SPHINXSEARCH_SUGGESTS)" >>$@ @echo "Conflicts: $(SPHINXSEARCH_CONFLICTS)" >>$@ # # This builds the IPK file. # # Binaries should be installed into $(SPHINXSEARCH_IPK_DIR)/opt/sbin or $(SPHINXSEARCH_IPK_DIR)/opt/bin # (use the location in a well-known Linux distro as a guide for choosing sbin or bin). # Libraries and include files should be installed into $(SPHINXSEARCH_IPK_DIR)/opt/{lib,include} # Configuration files should be installed in $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch/... # Documentation files should be installed in $(SPHINXSEARCH_IPK_DIR)/opt/doc/sphinxsearch/... # Daemon startup scripts should be installed in $(SPHINXSEARCH_IPK_DIR)/opt/etc/init.d/S??sphinxsearch # # You may need to patch your application to make it use these locations. # $(SPHINXSEARCH_IPK): $(SPHINXSEARCH_BUILD_DIR)/.built rm -rf $(SPHINXSEARCH_IPK_DIR) $(BUILD_DIR)/sphinxsearch_*_$(TARGET_ARCH).ipk $(MAKE) -C $(SPHINXSEARCH_BUILD_DIR) DESTDIR=$(SPHINXSEARCH_IPK_DIR) install-strip install -d $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch install -m 644 $(SPHINXSEARCH_BUILD_DIR)/sphinx-min.conf.dist $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch/sphinx.conf install -d $(SPHINXSEARCH_IPK_DIR)/opt/doc/sphinxsearch install -m 644 $(SPHINXSEARCH_BUILD_DIR)/doc/sphinx.txt $(SPHINXSEARCH_IPK_DIR)/opt/doc/sphinxsearch/sphinx.txt rm $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch/sphinx.conf.dist rm $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch/example.sql rm $(SPHINXSEARCH_IPK_DIR)/opt/etc/sphinxsearch/sphinx-min.conf.dist install -d $(SPHINXSEARCH_IPK_DIR)/opt/etc/init.d install -m 755 $(SPHINXSEARCH_SOURCE_DIR)/rc.sphinxsearch $(SPHINXSEARCH_IPK_DIR)/opt/etc/init.d/S90sphinxsearch ln -s S90sphinxsearch $(SPHINXSEARCH_IPK_DIR)/opt/etc/init.d/K70sphinxsearch # sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(SPHINXSEARCH_IPK_DIR)/opt/etc/init.d/SXXsphinxsearch $(MAKE) $(SPHINXSEARCH_IPK_DIR)/CONTROL/control # install -m 755 $(SPHINXSEARCH_SOURCE_DIR)/postinst $(SPHINXSEARCH_IPK_DIR)/CONTROL/postinst # sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(SPHINXSEARCH_IPK_DIR)/CONTROL/postinst # install -m 755 $(SPHINXSEARCH_SOURCE_DIR)/prerm $(SPHINXSEARCH_IPK_DIR)/CONTROL/prerm # sed -i -e '/^#!/aOPTWARE_TARGET=${OPTWARE_TARGET}' $(SPHINXSEARCH_IPK_DIR)/CONTROL/prerm # if test -n "$(UPD-ALT_PREFIX)"; then \ sed -i -e '/^[ ]*update-alternatives /s|update-alternatives|$(UPD-ALT_PREFIX)/bin/&|' \ $(SPHINXSEARCH_IPK_DIR)/CONTROL/postinst $(SPHINXSEARCH_IPK_DIR)/CONTROL/prerm; \ fi echo $(SPHINXSEARCH_CONFFILES) | sed -e 's/ /\n/g' > $(SPHINXSEARCH_IPK_DIR)/CONTROL/conffiles cd $(BUILD_DIR); $(IPKG_BUILD) $(SPHINXSEARCH_IPK_DIR) $(WHAT_TO_DO_WITH_IPK_DIR) $(SPHINXSEARCH_IPK_DIR) # # This is called from the top level makefile to create the IPK file. # sphinxsearch-ipk: $(SPHINXSEARCH_IPK) # # This is called from the top level makefile to clean all of the built files. # sphinxsearch-clean: rm -f $(SPHINXSEARCH_BUILD_DIR)/.built -$(MAKE) -C $(SPHINXSEARCH_BUILD_DIR) clean # # This is called from the top level makefile to clean all dynamically created # directories. # sphinxsearch-dirclean: rm -rf $(BUILD_DIR)/$(SPHINXSEARCH_DIR) $(SPHINXSEARCH_BUILD_DIR) $(SPHINXSEARCH_IPK_DIR) $(SPHINXSEARCH_IPK) # # # Some sanity check for the package. # sphinxsearch-check: $(SPHINXSEARCH_IPK) perl scripts/optware-check-package.pl --target=$(OPTWARE_TARGET) $^
åæåã¹ã¯ãªãã
rc.sphinxsearchãã¡ã€ã«ã«é
眮ãããoptwareãã©ãããã©ãŒã ã®sources / sphinxsearchãã©ã«ããŒã«é
眮ãããŸãïŒæåã«ãã©ã«ããŒãäœæããå¿
èŠããããŸãïŒã ã¢ã»ã³ããªæã«ãããã±ãŒãžã«ã³ããŒãããŸãã
#!/bin/sh NAME=sphinxsearch DAEMON=searchd # only used for virgin run DATA_PART=/mnt [ -d /mnt/C ] && DATA_PART=/mnt/C prefix="/opt" export PATH=${prefix}/bin:${prefix}/sbin:/bin:/usr/bin:/sbin:/usr/sbin:${PATH} DAEMON=${prefix}/bin/${DAEMON} SCRIPT="`basename $0`" test -x $DAEMON || exit 0 if [ -z "$1" ] ; then case `echo "$0" | sed 's:^.*/\(.*\):\1:g'` in S??*) rc="start" ;; K??*) rc="stop" ;; *) rc="usage" ;; esac else rc="$1" fi case "$rc" in start) if [ -n "`pidof $DAEMON`" ]; then echo "$NAME is already running" else echo "Starting SphinxSearch daemon: $NAME" export LD_LIBRARY_PATH=/opt/lib:$LD_LIBRARY_PATH pth=`pwd` $DAEMON cd "$pth" export LD_LIBRARY_PATH=$OLD_LIBRARY_PATH fi ;; stop) if [ -n "`pidof $DAEMON`" ]; then echo "Stopping SphinxSearch daemon: $NAME" pth=`pwd` n=1 while true; do $DAEMON --stop sleep 1 [ ! -n "`pidof $DAEMON`" ] && break sleep 5 [ $n -gt 3 ] && break let n+=1 done n=1 while true; do killall -9 $NAME 2>/dev/null sleep 1 [ ! -n "`pidof $DAEMON`" ] && break sleep 2 [ $n -gt 10 ] && break let n+=1 done if [ -n "`pidof $DAEMON`" ]; then echo "Termination of $NAME was not successful, it keeps running" sleep 1 fi cd "$pth" else echo "$NAME already stopped" fi ;; status) if [ -n "`pidof $DAEMON`" ]; then echo "$NAME is running" else echo "$NAME is not running" fi ;; restart) "$0" stop "$0" start ;; *) echo "Usage: $0 (start|stop|restart|usage)" ;; esac exit 0
openwrtã®å ŽåïŒ
ã¢ã»ã³ããªã¹ã¯ãªãã
Makefile package/network/services/sphinx ( ).
include $(TOPDIR)/rules.mk PKG_NAME:=sphinx PKG_VERSION:=2.2.2 PKG_REVISION:=4470 PKG_SUFFIX:=stemmer PKG_RELEASE:=2 #PKG_MD5SUM:=3119bbeafc9e32637339c6e95a3317ef PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REVISION)-$(PKG_SUFFIX).tar.gz PKG_MAINTAINER:=Aleksey Vinogradov <klirichek@sphinxsearch.com> PKG_SOURCE_URL:=http://192.168.1.5:65080/r/sphinxsearch PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REVISION)-$(PKG_SUFFIX) PKG_BUILD_PARALLEL:=1 PKG_DPNDS:= +SPHINX_MYSQL_SUPPORT:libmysqlclient +SPHINX_PGSQL_SUPPORT:libpq +SPHINX_UNIXODBC_SUPPORT:unixodbc +SPHINX_EXPAT_SUPPORT:libexpat ifeq ($(CONFIG_SPHINX_DYNAMIC_LOAD),y) PKG_BUILD_DEPENDS:= $(PKG_DEPENDS) endif include $(INCLUDE_DIR)/package.mk define Package/sphinx SECTION:=net CATEGORY:=Network SUBMENU:=Web Servers/Proxies TITLE:=sphinxsearch - fast FT search engine server DEPENDS:=+libstdcpp +librt +libpthread +zlib ifneq ($(CONFIG_SPHINX_DYNAMIC_LOAD),y) DEPENDS+= $(PKG_DPNDS) endif MENU:=1 endef define Package/sphinx/config source "$(SOURCE)/Config.in" endef define Package/sphinx/conffiles /etc/sphinx/sphinx.conf endef # :) define Package/sphinx/description This is placeholder for sphinxsearch description endef CONFIGURE_VARS += \ ac_cv_func_realloc_0_nonnull=yes \ ac_cv_func_malloc_0_nunnul=yes \ ac_cv_c_bigendian=yes \ sphinx_cv_unaligned_ram_access=yes CONFIGURE_ARGS += \ --prefix=/ \ --sysconfdir=/etc/sphinx \ $(if $(CONFIG_SPHINX_MYSQL_SUPPORT),--with-mysql,--without-mysql) \ $(if $(CONFIG_SPHINX_PGSQL_SUPPORT),--with-pgsql,--without-pgsql) \ $(if $(CONFIG_SPHINX_UNIXODBC_SUPPORT),--with-unixodbc,--without-unixodbc) \ $(if $(CONFIG_SPHINX_EXPAT_SUPPORT),--with-libexpat,--without-libexpat) \ $(if $(CONFIG_SPHINX_DYNAMIC_LOAD),--enable-dl,,) \ --with-syslog \ --with-libstemmer define Package/sphinx/install $(INSTALL_DIR) $(1)/etc/sphinx $(INSTALL_DATA) ./files/sphinx.conf $(1)/etc/sphinx/sphinx.conf $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/sphinx.init $(1)/etc/init.d/sphinx $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/searchd $(1)/usr/sbin/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/indexer $(1)/usr/sbin/ # - . # $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/indextool $(1)/usr/sbin/ # $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/spelldump $(1)/usr/sbin/ endef $(eval $(call BuildPackage,sphinx))
ã¡ãã¥ãŒæ§æ
Config.in Makefile package/network/services/sphinx
# sphinx config menu "Configuration" depends on PACKAGE_sphinx config SPHINX_DYNAMIC_LOAD bool "Load all client libs for accessing sources dynamically" default y help This will force the sphinx to load necessary db libs only when actually using db sources (otherwize they will be linked statically and will be dependencies for the sphinx package) config SPHINX_MYSQL_SUPPORT bool "Enable indexing of mysql databases" select PACKAGE_libmysqlclient default n help This will build the sphinx with supporting of mysql db indexing. It will allow to use source type=mysql, and also need libmysqlclient library in order to work. config SPHINX_PGSQL_SUPPORT bool "Enable indexing of posgresql databases" select PACKAGE_libpq default n help This will build the sphinx with supporting of posgresql db indexing. It will allow to use source type=pgsql, and also need libpq library in order to work. config SPHINX_UNIXODBC_SUPPORT bool "Enable indexing of odbc sources" select PACKAGE_unixodbc default n help This will build the sphinx with supporting of indexing odbc sources. It will allow to use source type=odbc, and also need unixodbc library in order to work. config SPHINX_EXPAT_SUPPORT bool "Enable indexing of xmlpipe sources" select PACKAGE_libexpat default n help This will build the sphinx with supporting of indexing xmlpipes. It will allow to use source type=xmlpipe2, and also need libexpat library in order to work. endmenu
åæåã¹ã¯ãªãã
sphinx.init package/network/services/sphinx/files ( )
#!/bin/sh /etc/rc.common # Copyright (C) 2010-2011 OpenWrt.org START=95 STOP=10 SERVICE_STOP_TIME=9 #PREFIX=/opt PREFIX="" error() { echo "${initscript}:" "$@" 1>&2 } start() { $PREFIX/usr/sbin/searchd } stop() { $PREFIX/usr/sbin/searchd --stop }
æ§æäŸ
sphinx.conf sphinx.init package/network/services/sphinx/files
; .
; .
# # Sphinx index for library (clean, simple, functional) # source ltslibrary_src { type = mysql sql_host = 127.0.0.1 sql_user = #wiped sql_pass = #wiped sql_db = my_lib sql_query_pre = SET NAMES utf8 sql_query = SELECT * FROM sphinx_main_index sql_joined_field = title FROM QUERY; SELECT * FROM all_titles_sphinx_un sql_attr_timestamp = entered sql_attr_uint = pages sql_attr_float = price sql_attr_float = thickness sql_attr_uint = crcyear sql_attr_string = year } index ltslib { source = ltslibrary_src path = /mnt/sphinx/index/ltsidx preopen = 1 morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, libstemmer_fr expand_keywords = 1 index_exact_words = 1 min_prefix_len = 2 min_word_len = 2 dict = keywords stopwords = /mnt/sphinx/stopwords-en.txt wordforms = /mnt/bigstore/library/sphinx/wordforms.txt } indexer { mem_limit = 32M } common { lemmatizer_base = /mnt/sphinx/aot } searchd { listen = localhost:9306:mysql41 log = syslog query_log = syslog read_timeout = 5 max_children = 30 pid_file = /mnt/sphinx/searchd.pid max_matches = 1000 seamless_rotate = 1 preopen_indexes = 0 unlink_old = 1 workers = threads # for RT to work binlog_path = subtree_docs_cache = 1M subtree_hits_cache = 1M }
ããŠãããã€ãã®æ¢è£œã®ã¢ã»ã³ããªãdd-wrtãããã»ã«ãã©ãããã©ãŒã ïŒLSBïŒã®ãªãã
ãŠã§ã¢çšsphinxsearch_2.2.2-4470-2_mipsel.ipk NetGear WNDR4300ãmipsãã©ãããã©ãŒã ïŒMSBïŒã®
openwrtã®äžã®sphinx_2.2.2-2_ar71xx.ipkã