nikolaのバージョンをv8.0.0にアップグレード

nikolaのバージョンをv8.0.0にアップグレード

nikola v8.0.0

2018/9/11にnikolaのメジャーバージョンが8.0にアップグレードされた。pip install -U "Nikola[extras]"を実行しアップグーレドを施したところ、各種設定を変更しなければならなかったためその作業ログを以下に記す。

各種設定変更のためにはUpgrading to Nikola v8を参照すると良い。 ここでは単純にpip install -U "Nikola[extras]"を実行してしまったが、実際にはHow to upgradeの手順を読んだ上でアップグレードを行ったほうが良いと思われる。

conf.pyの修正

nikola --versionをブログが存在するディレクトリで実行したところ下記の警告が出た。

[2018-09-16T03:11:45Z] WARNING: Nikola: The UNSLUGIFY_TITLES setting was renamed to FILE_METADATA_UNSLUGIFY_TITLES.
[2018-09-16T03:11:45Z] WARNING: Nikola: The sections feature has been removed and its functionality has been merged into categories.
[2018-09-16T03:11:45Z] WARNING: Nikola: For more information on how to migrate, please read: https://getnikola.com/blog/upgrading-to-nikola-v8.html#sections-were-replaced-by-categories
[2018-09-16T03:11:45Z] INFO: Nikola: Setting CATEGORY_DESTPATH_AS_DEFAULT = True
[2018-09-16T03:11:46Z] WARNING: Nikola: Cannot load theme "bootstrap3", using 'bootblog4' instead.
... 以後bootstrap3が存在しない旨を示すpythonのTracebackが表示される ...

これらのwarningを修正するために、下記に記した内容を実行した。

名称が変更された設定の変更

手元ではUNSLUGIFY_TITLESFILE_METADATA_UNSLUGIFY_TITLESに変更するのみで前述の最初のWARNINGは消えた。 どうやらUpgrading to Nikola v8を参照すると他項目についても変更されたものがある模様。以下に抜粋する。

  • 削除されたもの
    • FEED_PREVIEWIMAGE
    • SITEMAP_INCLUDE_FILELESS_DIRS
    • USE_OPEN_GRAPH
    • USE_BASE_TAG
  • 名称が変更されたもの
    • UNSLUGIFY_TITLES -> FILE_METADATA_UNSLUGIFY_TITLES
    • TAG_PAGES_TITLES -> TAG_TITLES
    • TAG_PAGES_DESCRIPTIONS -> TAG_DESCRIPTIONS
    • CATEGORY_PAGES_TITLES -> CATEGORY_TITLES
    • CATEGORY_PAGES_DESCRIPTIONS -> CATEGORY_DESCRIPTIONS
    • DISABLE_INDEXES_PLUGIN_INDEX_AND_ATOM_FEED -> DISABLE_INDEXES and DISABLE_MAIN_ATOM_FEED
    • DISABLE_INDEXES_PLUGIN_RSS_FEED -> DISABLE_MAIN_RSS_FEED

実際には他にも変更された項目が存在するため、調査した結果を末尾に示してある。

セクション(Sections)関連の設定の変更

v8からはセクション関連の機能が削除されカテゴリに統合されたため、関連設定を削除する必要がある。 Upgrading to Nikola v8には書かれていないが、そもそもPOSTS_SECTIONSの項目を消す必要がある。 これによって前述のログに存在したセクション関連の警告は消失する。

デフォルトテーマの変更

アップグレード前はデフォルトテーマのbootstrap3を使っていたが、v8ではデフォルトテーマがbootblog4に変更された。 Upgrading to Nikola v8によればnikola theme -i bootstrap3を実行しテーマをインストールすることによってbootstrap3は依然として使用できるようであるが、新デフォルトテーマのbootblog4ではfeatured postsの表示などができるなど機能が追加されているとのことである。

ここではbootblog4への変更を行った。前述のログでは最後の部分でpythonのTracebackが大量に表示されていたため、この修正も合わせて行った。以下に修正のために実施した内容を順に記す。

  • conf.pyTHEMEbootblog4に変更
  • nikola buildを実行
    • nikola --versionを実行したときと同様なbootstrap3が存在しないというExceptionが表示され、再構築を行うことができない
  • キャッシュが影響していることを疑いcacheディレクトリと__pycache__ディレクトリを削除
    • 状況は変化しない
  • nikola theme -i bootstrap3を実行
    • 依然としてbootstrap3が存在しないというExceptionが表示されるためbootstrap3を再度導入することもできない
  • Exceptionを吐いているsite-packages/nikola/utils.pyのソースを調査
    • エラーを吐いているget_asset_pathのメソッドにおいてthemesのディレクトリを走査していることが問題の模様
  • ブログルート直下のthemesディレクトリを他の場所に一時的に退避
    • Exceptionを吐くエラーが消失
  • nikola buildを実行
    • 無事にブログが再構築

したがって、theme関連のトラブルがなければconf.pyの修正のみで済む内容であったと思われる。

その他conf.pyの変化

折角なので新規にnikola initを実行して生成したブログのconf.pyとのdiffを取ってその他の変更を調べた。 コメントの変更や前述した変更については記載していない。また各項目の意味については全て把握していないため必要な場合は新規生成したconf.pyに付与されたコメントなどを読んだほうが良い。

  • from __future__ import unicode_literalsの削除
  • 対応言語の追加
    • ml, th, vi
  • テーマ依存設定
    • THEME_CONFIGが追加されており、bootblog4テーマはこの設定によりfeatured postの設定やsidebarの設定が行えるようである
  • DATE_FORMATの変更
    • 元はdatetime.datetime.strftimeで用いられる形式だったがCLDRで用いられるフォーマットに変更されたとのこと
  • LOCALE_FALLBAKLOCALE_DEFAULTの削除
  • セクション関連の項目の削除
    • WRITE_TAG_CLUD, POST_SECTIONS, POST_SECTIONS_ARE_INDEXED, SECTION_PATH, POSTS_SECTION_COLORS, POSTS_SECTION_DESCRIPTIONS, POSTS_SECTION_FROM_META, POSTS_SECTOIN_NAME, POSTS_SECTION_TITLE, POSTS_SECTION_TRANSLATIONS, POSTS_SECTION_TRANSLATIONS_ADD_DEFAULTS
  • カテゴリー関連の項目の追加
    • CATEGORY_DESTPATH_AS_DEFAULT, CATEGORY_DESTPATH_TRIM_PREFIX, CATEGORY_DESTPATH_FIRST_DIRECTORY_ONLY, CATEGORY_DESTPATH_NAMES, CATEGORY_PAGES_FOLLOW_DESTPATH
  • RSS関連の項目のの追加
    • RSS_EXTENSION
    • RSS_FILENAME_BASE
    • ATOM_PATH
    • ATOM_FILENAME_BASE
    • ATOM_EXTENSION
  • USE_BASE_TAGの削除
  • LESS, SASS関連設定の削除
    • LESS_COMPILER, LESS_OPTIONS, SASS_COMPILER, SASS_OPTIONS
  • PRESERVE_ICC_PROFILESの追加
  • ANNOTATIONSの削除
  • MARKDOWN_EXTENSION_CONFIGSの追加
  • METADATA_VALUE_MAPPINGの追加
  • NO_DOCUTILS_TITLE_TRANSFORMの削除
  • USE_TAG_METADATAおよびWARN_ABOUT_TAG_METADATAの追加

コメント

Comments powered by Disqus