Author Topic: Unknown modifier 't' on freebsd os make and bmake pkg  (Read 10561 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Unknown modifier 't' on freebsd os make and bmake pkg
« 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
#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

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: Unknown modifier 't' on freebsd os make and bmake pkg
« Reply #1 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.

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: Unknown modifier 't' on freebsd os make and bmake pkg
« Reply #2 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
#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