Use of uninitialized value $raw in pattern match (m//) at /usr/share/perl5/PVE/JSONSchema.pm line 1153, line 751.
ตั้งแต่ Proxmox 4 (ใน pvetest) kernel อัพเป็นรุ่น 4.1.3 ก็จะเจอ error นี้จาก Cron ส่งมาทุกคืน
Cron <root@server> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) /etc/cron.daily/pve: Use of uninitialized value $raw in pattern match (m//) at /usr/share/perl5/PVE/JSONSchema.pm line 1153, line 751.
วิธี reproduce คือลองรัน /etc/cron.daily/pve
ดูจะเจอ Warning เหมือนในอีเมลเลย
จะแก้ให้ redirect null แบบคลีนก็ไม่ง่ายนัก เพราะมันเป็นสคริปต์สำเร็จอยู่ใน /etc/cron.daily ไม่ได้เป็นคำสั่งแบบที่อยู่ใน crontab ที่จะเติม >> /dev/null ต่อท้ายเองได้ ก็เลยต้องลงเอยที่การ patch script มันชั่วคราวไปก่อน
แก้ usr/share/perl5/PVE/JSONSchema.pm
แถวๆ บรรทัด 1153
จากเดิม
while ($raw =~ /^\s*(.+?)\s*$/gm) { my $line = $1; next if $line =~ /^#/; if ($line =~ m/^(\S+?):\s*(.*)$/) { my $key = $1; my $value = $2; if ($schema->{properties}->{$key} && $schema->{properties}->{$key}->{type} eq 'boolean') { $value = 1 if $value =~ m/^(1|on|yes|true)$/i; $value = 0 if $value =~ m/^(0|off|no|false)$/i; } $cfg->{$key} = $value; } else { warn "ignore config line: $line\n" } }
เติม if ครอบก้อนข้างบนเข้าไปเลย
if (defined($raw)) { ## rtsp patch ## while ($raw =~ /^\s*(.+?)\s*$/gm) { ................... } } ## rtsp patch ##
ลองรัน /etc/cron.daily/pve
ดู ถ้าไม่มี Warning อะไรพ่นออกมาก็โอเคแล้วครับ
ป.ล. เหมือนต้นน้ำจะแก้ Warning นี้แล้ว แต่ขี้เกียจรอ แก้เองก่อนละ