TL;DR
2022년 1월부터 gef의 python require version이 3.6으로 올라감
근데 16.04의 기본 python version은 3.5임
3.6 이상으로 올리거나, 구버전 gef을 설치해야함
나는 구버전 gef을 설치하는 방법을 택했지만, 임시방편임
ubuntu 16.04 환경에서 바이너리 파일의 heap을 편하게 보고 싶어서, gef을 설치하려 했다.
그런데, 최신 버전의 gef을 설치하니, 다음과 같은 에러가 발생했다..

File "/root/gef/gef.py", line 103 latest_gef_data = http_get(f"https://raw.githubusercontent.com/hugsy/gef/{ver}/scripts/gef.sh") ^ SyntaxError: invalid syntax
알고보니 gef의 2022년 1월의 커밋에서 gef.py가 f-string을 사용하도록 패치되었고, f-string은 3.6부터 지원하는데, ubuntu 16.04의 기본 python version은 3.5였던 것이었다.. (패치 내역은 아래에서 확인할 수 있다, f-string 말고 다른 3.6에서만 가능한 기능이 추가되었을 수도 있는데, 이건 확인해보지 않았다. 어쨌든 요구 버전이 최소 3.6으로 올라갔다)
https://github.com/hugsy/gef/releases/tag/2022.01
Release 2022.01 - Irritating Cookie · hugsy/gef
Changelog: 2022.01 - Irritating Cookie Highlights of Irritating Cookie Important update: starting this release, GEF now requires GDB 8+ compiled with a Python 3.6+. If you cannot meet this requirem...
github.com
따라서 16.04에서 gef을 쓰려면 python version을 올리거나, 구버전 gef을 설치해야 한다..
나는 그냥 구버전 gef을 설치하는 방법이 더 빠를 것 같아서, 후자를 선택했다. (구버전이긴 해도 패치된지 5달 밖에 안되서 기능에 별 차이는 없을 거라 생각해서 후자를 택했지만, 나중에는 결국 다른 방법을 찾아야 할 것 같긴 하다..)
https://github.com/hugsy/gef/releases/tag/2021.10
Release 2021.10 - Royal Kill · hugsy/gef
Changelog: 2021.10 - Royal Kill Highlights of Royal Kill 93 commits, 5 Issues & 25 PRs closed Massive background re-work by @theguy147 , which includes (but not limited): Better and more CI tests...
github.com
2021년 10월에 Release된 버전을 설치해줄 것이다. 위 링크에 들어가서 스크롤을 내리면, zip 파일을 찾을 수 있는데, wget으로 다운받아서 unzip해주고, .gdbinit에 python 파일의 경로를 써줬다.
wget https://github.com/hugsy/gef/archive/refs/tags/2021.10.zip
unzip 2021.10.zip
nano .gdbinit
source ~/gef-2021.10/gef.py //.gdbinit 파일 안에 써주었다.

잘된다. 굿