
WordPress의 새로운 버전이 나와서 업데이트를 시도했는데, 아무런 응답이 없더니 다시 업데이트 메뉴로 들어갔을 때 이 상태였다. 혹시나 하는 마음에 5분 정도를 기다렸다가 다시 들어가 봤을 때도 마찬가지 였다.
WordPress는 중복된 버전 업데이트 시도를 막기 위해서 lock을 걸고 업데이트가 끝나면 이것을 해제 하는데 어떤 이유에서 인지 중간에 발생한 오류로 lock이 풀리지 않는 모양이다.
WordPress Update Lock
Update를 위해 Wrodpress가 설정하는 lock은 wordpress database의 wp_options table에 있다. 업데이트가 진행중이라는 메세지가 오랫동안 없어지지 않는 상태라면 wp_config.php에 적어둔 DB access 정보를 참조해서 해당 테이블에 접근해 core_updater.lock이 설정되어 있는지 확인해 보자.
mysql -u litcoder -p --database wordpress
SELECT * FROM wp_options WHERE option_name = 'core_updater.lock';

이 query에서 결과가 출력된다면 현재 lock이 걸려 있는 상태이다. 참고로 여기에서 option_value의 값은 lock이 설정된 unix time을 의미한다.
Lock 제거
반드시 현재 진행되고 있는 업데이트가 없고 이것이 비 정상적인 상황이라는 확신이 있을 때만 다음의 명령어로 lock을 삭제해 주자.
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';

그리고 나서 재시도 해보면 해당 오류가 없어진 것을 볼 수 있을 것이다.
결론
시대가 시대인 만큼 wp-config.php를 읽어서 자동으로 lock을 해제해 주는 script를 “딸깍”으로 만들어 gist에 올려 두었다. 필요한 경우가 있다면 다음의 명령어를 터미널에 복붙하면 된다. 참고로 실행에 sudo 권한이 필요한 이유는 wp_config.php에 접근하기 위해서이다.
curl -sSL https://gist.githubusercontent.com/litcoder/\ 27e0f3538762bfd3b0fcfdeea01d2867/raw/\ d7bb16761d4449408bb1c8dbee55931fccec20e7\ /wp-unlock-update.sh | sudo bash