Hugoメモ
ubuntuを(ぶっ壊して)新しく入れなおす度にHugoのインストールのやり方が分からなくなるので残しておく。別PCで再クローンするときにも使えると思う。それと全然ブログ書かないせいでデプロイとかgit submoduleとか忘れちゃうから……。
Hugoのインストール
いつものsudo apt install hugoだと最新版を持ってこれない。
- Githubから最新のリリースを持ってくる。X_86なのでamd64を選ぶ.scssを使いたいならextentedがついているものにする。
1wget https://github.com/gohugoio/hugo/releases/download/v0.140.2/hugo_extended_0.140.2_linux-amd64.deb
- debもaptでインストールができる。./を付ける必要があることに注意。(./を付けないとパッケージ一覧から探してしまい、ローカルのdebファイルを見つけられない。)
1//これはだめ
2sudo apt install hugo_extended_0.137.1_linux-amd64.deb
3//これはいい
4sudo apt install ./hugo_extended_0.137.1_linux-amd64.deb
インストール中に表示されるテキストの最後に,
1N: Download is performed unsandboxed as root as file '/home/suedmond/hugo_extended_0.140.2_linux-amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
とあるが無視してよいらしい。
hugo version
で最新verがインストールされていることが確認できる。
サイト記事のリポジトリを復活させる
このサイトは記事の内容が乗っているBlogリポジトリ(Private)とGithub pagesでホスティングするnatsukodachi.github.ioリポジトリ(Global)の二つから構成されている。
Github Pagesとsubmoduleの連動のやり方は忘れてしまった……なんか面倒だった……ので既存のブログの編集環境を整えるやり方だけ書いておく。
Blogリポジトリをcloneしてくる。(これはPrivateリポジトリなのでコピペしてもはじかれます.)
1 git clone https://github.com/natsukodachi/blog.git
これだとsubmodule(githubpageとテーマ)が空っぽだから、これもcloneする。
1git submodule update --init --recursive
2Submodule 'docs' (https://github.com/natsukodachi/natsukodachi.github.io.git) registered for path 'docs'
3Submodule 'themes/hugo-bearblog' (https://github.com/janraasch/hugo-bearblog.git) registered for path 'themes/hugo-bearblog'
4Cloning into '/home/natsukodachi/works/blog/docs'...
5Cloning into '/home/natsukodachi/works/blog/themes/hugo-bearblog'...
6Submodule path 'docs': checked out 'c273210c34c95cff1cde2995b79fc7ac729fc1d8'
7Submodule path 'themes/hugo-bearblog': checked out '0b64d5ad103c716da5a79b48855f1489f6738ba7'
でこのサブモジュールは追加時の状態で、テーマの更新は反映されてないから、更新する。
1git submodule update --remote
2Submodule path 'themes/hugo-bearblog': checked out 'c541ece2bd1f5ce0786f6bb01ee99be6e25f23b5'
hugoは更新で結構変わるので、仕様に合わせてhugo.tomlをいじる。(C++なんて3年に1回しか変わらないのに……)
blogの中はこんな感じ。
1$ tree
2├── archetypes
3│ └── [default.md](http://default.md/)
4├── content
5│ ├── _index.md
6│ ├── [about.md](http://about.md/)
7│ ├── blog
8│ │ ├── _index.md
9│ │ └── [test.md](http://test.md/)
10│ └── works
11│ └── [wowork.md](http://wowork.md/)
12├── [deploy.sh](http://deploy.sh/)
13├── docs←サブモジュール1
14│ ├── about
15│ │ └── index.html
16│
17├── hugo.toml
18│ themes←サブモジュール2
19│ │
20└──
記事書いたらdocs内でコミット&プルして、そのあとルート(ブログ)でコミット&プルする。
docs内での操作をやってくれるのがdeploy.sh。
1#!/bin/sh
2
3# If a command fails then the deploy stops
4set -e
5
6printf "\033[0;32mDeploying updates to GitHub...\033[0m\n"
7
8# Build the project.
9hugo # if using a theme, replace with `hugo -t <YOURTHEME>`
10
11# Go To Public folder
12#cd public
13cd docs
14
15# Add changes to git.
16git add .
17
18# Commit changes.
19msg="rebuilding site $(date)"
20if [ -n "$*" ]; then
21 msg="$*"
22fi
23git commit -m "$msg"
24
25# Push source and build repos.
26git push origin main
エラー
一番よく見るのがサブモジュールのエラー。
1'hoge/hoge' already exists in the index
これが起きるのはcloneした時にサブモジュールのディレクトリが空っぽなのを見てgit add submoduleしようとするからだ。だってリポジトリにはもう追加されているのだから。前述したgit submodule update –init –recursiveをするか、clone時にgit clone –recursive (リポジトリ)をするのがいい。
そうではなく、git addしなおしたいならこうする。
- git submodule update –init
- これで無理なら.gitmoduleからこのサブモジュールを消す
- git submodule add (gitのパス) (追加するdir)
- これで無理ならgit rm -r –cached (追加したdir/dir)
- git submodule add (gitのパス) (追加するdir)
これで無理ならcloneしなおしたほうがいい。
notionのおかげでスマホで書いたメモをPCに張り付けて投稿できるかららくちん。