Proxmox 4 PERL error

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 นี้แล้ว แต่ขี้เกียจรอ แก้เองก่อนละ

Comments

comments

Leave a Reply

Your email address will not be published. Required fields are marked *