Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music

All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => Os kernel การปรับแต่ง เพิ่มเติม ลงโปรแกรม บน OS และ ControlPanel Directadmin,Cloud server => Topic started by: golfreeze on ตุลาคม 07, 2014, 02:39:06 pm

Title: Unknown modifier 't' on freebsd os make and bmake pkg
Post by: golfreeze on ตุลาคม 07, 2014, 02:39:06 pm
วันนี้เจอปัญหาเวลาจะ ลง package "pkg" ใน FreeBSD 9 , 32 bit (i386) แล้วเจอปัญหาเกี่ยวกับคำสั่ง make ไม่สามารถใช้งานได้ เกิด error ตามข้างล่างครับ

golf# pkgdb -F
Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

Unknown modifier 't'

"/usr/ports/Mk/bsd.sites.mk", line 957: Malformed conditional (!empty(_PERL_CPAN_ID) && ${_PERL_CPAN_FLAG:tl} == "cpan")
Unknown modifier 't'

"Mk/bsd.port.mk", line 2929: Unclosed conditional/for loop
"Mk/bsd.port.mk", line 2929: Unexpected end of file in for loop.

"Mk/bsd.port.mk", line 6706: Unclosed conditional/for loop
"Mk/bsd.port.mk", line 6706: Unexpected end of file in for loop.

1 open conditional:
         at line 1179 (evaluated to true)
make: fatal errors encountered -- cannot continue
can't convert nil into String
golf#

ทำการแก้ปัญหาโดยใช้งานตัว bmake แทน make โดย

#pkg_add -r http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.0-release/devel/bmake-20111111.tbz (http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/i386/packages-9.0-release/devel/bmake-20111111.tbz)
#cp /usr/bin/make /usr/bin/make.old
#rm /usr/bin/make
#ln -sv /usr/local/bin/bmake /usr/bin/make

แล้วทำการลง pkg เพื่อจะไว้ใช้ในการ install package อื่นๆ ต่อไปครับผม
#cd /usr/ports/ports-mgmt/pkg
#make -m /usr/share/mk UPGRADEPKG=1 install clean

ทำการ convert package จาก port style มาเป็นรูปแบบของ Pkg ครับผม
#pkg2ng
Title: Re: Unknown modifier 't' on freebsd os make and bmake pkg
Post by: golfreeze on ตุลาคม 09, 2014, 03:30:17 pm
After that run convert package by
#pkg2ng

#pkg upgrade
It have many package upgraded.
After finished upgraded I try to restart my application such as syslog-ng, postfix then got error like below.

#/usr/local/etc/rc.d/syslog-ng restart
/usr/local/lib/libsyslog-ng-3.5.6.so: Undefined symbol "_ThreadRuneLocale"/usr/local/etc/rc.d/syslog-ng: WARNING: failed to start syslog_ng
#/usr/local/etc/rc.d/postfix restart
/usr/local/sbin/postfix: Undefined symbol "_ThreadRuneLocale"/usr/local/sbin/postfix: Undefined symbol "_ThreadRuneLocale"



And apps could not start.

Then try to upgrade kernel from 9.0 to 9.1 as recommend from FreeBSD users.
After reboot with 9.1 kernel, still got same error about Undefined symbol "_ThreadRuneLocale"

then suspect about binary file have corrupted,
try to update binary file by
# freebsd-update fetch install

could fixed this problem.
Title: Re: Unknown modifier 't' on freebsd os make and bmake pkg
Post by: golfreeze on กุมภาพันธ์ 26, 2015, 12:53:19 pm
หรือถ้าท่านใดใช้ freebsd version ที่เป็น 8.2 หรือเก่ากว่านี้ ผมแนะนำให้ อัฟเกรด bmake ที่เป็นตัวปี 2013 ดูนะครับผม แต่ดูด้วยว่าใช้งานเป็น 32 bit หรือ 64 bit นะครับผม

#fetch http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/amd64/packages-8.4-release/devel/bmake-20130303.tbz (http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/ports/amd64/packages-8.4-release/devel/bmake-20130303.tbz)
#tar xjf bmake-20130303.tbz

#cp /usr/bin/make /usr/bin/make.ori
#cd bin
#cp bmake /usr/local/bin/bmake
#ln -sv /usr/local/bin/bmake  /usr/bin/make

แล้วทำการลง pkg เพื่อจะไว้ใช้ในการ install package อื่นๆ ต่อไปครับผม
#cd /usr/ports/ports-mgmt/pkg
#make -m /usr/share/mk UPGRADEPKG=1 install clean