There was an update to system and it now uses groups.yml instead of groups.conf, might be related to your issue.
If you had customized the original source file you might have a merge error?
The code you quoted doesn't even include "const s_pcg_permission_name". From the error message I'd say you have the same const in the array appear twice.
Look for this code:
static const struct s_pcg_permission_name {
const char *name;
enum e_pc_permission permission;
} pc_g_permission_name[PC_PERM_MAX] = {
{ "can_trade", PC_PERM_TRADE },
{ "can_party", PC_PERM_PARTY },
{ "all_skill", PC_PERM_ALL_SKILL },
{ "all_equipment", PC_PERM_USE_ALL_EQUIPMENT },
{ "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL },
{ "join_chat", PC_PERM_JOIN_ALL_CHAT },
{ "kick_chat", PC_PERM_NO_CHAT_KICK },
{ "hide_session", PC_PERM_HIDE_SESSION },
{ "who_display_aid", PC_PERM_WHO_DISPLAY_AID },
{ "hack_info", PC_PERM_RECEIVE_HACK_INFO },
{ "any_warp", PC_PERM_WARP_ANYWHERE },
{ "view_hpmeter", PC_PERM_VIEW_HPMETER },
{ "view_equipment", PC_PERM_VIEW_EQUIPMENT },
{ "use_check", PC_PERM_USE_CHECK },
{ "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE },
{ "all_commands", PC_PERM_USE_ALL_COMMANDS },
{ "receive_requests", PC_PERM_RECEIVE_REQUESTS },
{ "show_bossmobs", PC_PERM_SHOW_BOSS },
{ "disable_pvm", PC_PERM_DISABLE_PVM },
{ "disable_pvp", PC_PERM_DISABLE_PVP },
{ "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD },
{ "channel_admin", PC_PERM_CHANNEL_ADMIN },
{ "can_trade_bounded", PC_PERM_TRADE_BOUNDED },
{ "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL },
{ "command_enable",PC_PERM_ENABLE_COMMAND },
{ "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE },
{ "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT },
{ "attendance",PC_PERM_ATTENDANCE },
};