原先只是要更新 Ghost 卻發現升級 Nodejs 到 10 版以上需要踩這麼多雷,在此紀錄一些關鍵破關的技巧
正常來說升級很簡單,只要兩行指令

// Add the NodeSource APT repository for Node 10:
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash
// Install nodejs
$ apt-get install -y nodejs

No module named 'apt_pkg'

Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 27, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

如果執行 add-apt-repository 或其他指令,遇到這個 error 主要是因為所用到的 python3 沒有 apt_pkg 這個 library 的鏈結,只需將其建立起來即可

// ln -s {source} {dest}
ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/apt_pkg.so

此處請注意 apt_pkg.cpython-35m-x86_64-linux-gnu.so 可能會有所不同,請自行查找 /usr/lib/python3/dist-packages/ 下最新版本替換即可

403 Forbidden

若在運行 apt-get update 或是安裝某一套件遇到類似以下錯誤訊息

Err:9 http://ppa.launchpad.net/jonathonf/python-3.6/ubuntu xenial/main amd64 Packages
  403  Forbidden [IP: 2001:67c:1560:8008::15 80]

代表可能是某個單位將其 PPA 移除了公開權限,以此例來說是jonathonf 移除了其權限,所以我們只要將其從 PPA repository 中移出,那些在其底下的套件,像是 python 3.6 就會自行找尋其他公開的 PPA 進行安裝

add-apt-repository -r ppa:jonathonf/python-3.6 // -r remove

同理,若遇到其他錯誤可取其相對位置即可,舉例來說 http://ppa.launchpad.net/unit_name/package_name/ 403 Forbidden,就會需要移除 ppa:unit_name/package_name

以上,希望能幫助到你少走冤妄路。