scoop update scoop install hugo-extended
Ongoing
According to
the
Repology Hugo badges,
the
latest packaged Hugo
is
.
2025-April-10 Hugo v0.146.0 released with a ⚠️️NEW Hugo templating system. Infinite Ink has not been updated to reflect the new templating system, but a lot of the old Hugo templates — at least for now — still work. For details, see gohugo.io/templates/new-templatesystem-overview.
2022-February-13 Published this evolving[1] article.
This article assumes…
you know how to use the command line
and you want to install the extended version of the Hugo static site generator.
ℹ | Extended Hugo is needed if…
Infinite Ink’s Hugo Tutorial and many Hugo themes require extended Hugo. |
The hugo executable is one[2]
file
and
can be put anywhere on your path.
To find out your path,
run one of the following commands
at a command-line prompt.
In a Unix-like shell, including Git Bash, run:
echo $PATH
In PowerShell, run either of the following:
$env:path
$env:path -split ";"
set path
💡 | If you use a package manager to install
hugo or hugo.exe, you will not need to deal with your path
because the package manager will take care of that. |
hugoYou can install extended Hugo with a package manager, with Eget, or manually.
‼ | If you are not a superuser, using a package manager is the way to go IMHO. |
Go to github.com/gohugoio/hugo/releases and download the newest:
hugo_version_checksums.txt, for example:
hugo_0.127.0_checksums.txt
hugo_extended_version_platform.extension, for example one of these:
hugo_extended_0.127.0_darwin-universal.tar.gz
hugo_extended_0.127.0_Linux-64bit.deb[4]
hugo_extended_0.127.0_Linux-64bit.tar.gz
hugo_extended_0.127.0_linux-amd64.deb
hugo_extended_0.127.0_linux-amd64.tar.gz
hugo_extended_0.127.0_linux-arm64.deb
hugo_extended_0.127.0_linux-arm64.tar.gz
hugo_extended_0.127.0_windows-amd64.zip
Then,
check the checksum of
the
hugo package
you
downloaded,
unpackage it,[4][5]
and put
the
hugo or hugo.exe
executable
somewhere on your path (discussed
in section 1
above).
💡 |
Note that
putting
a file in
|
Eget is a command-line tool written in Go that downloads prebuilt binaries[6] from GitHub. For details about installing Hugo with Eget, see Infinite Ink’s Eget: Easily Get & Install Some Apps (featuring installing the latest Hugo).
The guide at gohugo.io/installation/ describes how to use a lot of Linux, Mac, and Windows package managers.
On Windows I use this sequence of commands to install extended Hugo:
scoop update scoop install hugo-extended
And this sequence of commands to update extended Hugo:
scoop update scoop update hugo-extended
Details are in Infinite Ink’s Scoop: A Windows Package Manager (featuring Hugo, Figlet, and Ruby).
To find out what
version of Hugo
is currently installed by Scoop, see
github.com/ScoopInstaller/Main/blob/master/bucket/hugo-extended.json
or
this Repology badge:
To learn about Linux package management in general, see Infinite Ink’s Linux Package Management.
On Linux with a desktop environment, I use the Snap Store Desktop App because…
it has a graphical user interface,
it usually installs a recent version of Hugo, and
it’s easy to specify an extended
channel
because there is a
drop-down menu in the upper right
of the
app window
labeled Source that lets
you choose extended/stable or, if available, extended/edge.
Details about what Hugo version the Snap Store is currently installing are at snapcraft.io/hugo and in the following embedded card.
ℹ | Starting 2021-October-25, the Hugo team has the option to have the Snap Store install Hugo with classic (rather than strict) confinement. Details about this are in the discussion about Request for classic confinement for hugo snap on forum.snapcraft.io. To find out the current confinement level, see github.com/gohugoio/hugo/blob/master/snap/snapcraft.yaml. |
If you’ve installed Homebrew on Linux, the following command installs extended Hugo.
brew install hugo
Using a software package manager makes it easy to install, update, or uninstall extended Hugo.
People often post announcements about Hugo package updates in discourse.gohugo.io/c/announcements.
There are some useful scripts for installing or updating
hugo on
Unix-like
systems
in
discourse.gohugo.io’s
thread titled
Script
to install latest hugo release on macos and ubuntu.
If you are using a
Debian-based system,
you can download the appropriate
.deb
from
github.com/gohugoio/hugo/releases
and install it with, for example,
sudo dpkg --install ./hugo_extended_0.127.0_Linux-64bit.deb[4]
The extended and unextended
binaries
have the same name
(hugo on
Unix-like
systems and hugo.exe on Windows).
hugo with hugo version, hugo env, and hugo env -vAfter you install hugo,
check that it’s
on your path
and is an
extended version, by running
this
at a command-line prompt:
You should see something like this:
hugo v0.127.0-74e0f3bd63c51f3c7a0f07a7c779eec9e922957e+extended windows/amd64 BuildDate=2024-06-05T10:27:59Z VendorInfo=gohugoio
👆
To view more information about your hugo,
run:
Here is an example of the output of this command:
hugo v0.112.7-ea3c95a7b0f2140c248c1f40246a2e7acd2ada62+extended windows/amd64 BuildDate=2023-06-02T07:07:11Z VendorInfo=gohugoio GOOS="windows" GOARCH="amd64" GOVERSION="go1.20.1" github.com/sass/libsass="3.6.5" github.com/webmproject/libwebp="v1.2.4"
To view a lot more information about your hugo,
run either of these:
hugo env -v hugo env --verbose
Here is an example of the output of these equivalent commands:
WARN deprecated: --verbose was deprecated in Hugo v0.114.0 and will be removed in a future release. use --logLevel info hugo v0.122.0-b9a03bd59d5f71a529acb3e33f995e0ef332b3aa+extended windows/amd64 BuildDate=2024-01-26T15:54:24Z VendorInfo=gohugoio GOOS="windows" GOARCH="amd64" GOVERSION="go1.21.6" cloud.google.com/go/compute/metadata="v0.2.3" cloud.google.com/go/iam="v1.1.5" cloud.google.com/go/storage="v1.35.1" cloud.google.com/go="v0.110.10" github.com/Azure/azure-sdk-for-go/sdk/azcore="v1.7.0" github.com/Azure/azure-sdk-for-go/sdk/azidentity="v1.3.0" github.com/Azure/azure-sdk-for-go/sdk/internal="v1.3.0" github.com/Azure/azure-sdk-for-go/sdk/storage/azblob="v1.1.0" github.com/Azure/go-autorest/autorest/to="v0.4.0" github.com/AzureAD/microsoft-authentication-library-for-go="v1.0.0" github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69" github.com/PuerkitoBio/purell="v1.1.1" github.com/PuerkitoBio/urlesc="v0.0.0-20170810143723-de5bf2ad4578" github.com/alecthomas/chroma/v2="v2.12.0" github.com/armon/go-radix="v1.0.0" github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream="v1.4.11" github.com/aws/aws-sdk-go-v2/config="v1.18.32" github.com/aws/aws-sdk-go-v2/credentials="v1.13.31" github.com/aws/aws-sdk-go-v2/feature/ec2/imds="v1.13.7" github.com/aws/aws-sdk-go-v2/feature/s3/manager="v1.11.76" github.com/aws/aws-sdk-go-v2/internal/configsources="v1.1.37" github.com/aws/aws-sdk-go-v2/internal/endpoints/v2="v2.4.31" github.com/aws/aws-sdk-go-v2/internal/ini="v1.3.38" github.com/aws/aws-sdk-go-v2/internal/v4a="v1.1.0" github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding="v1.9.12" github.com/aws/aws-sdk-go-v2/service/internal/checksum="v1.1.32" github.com/aws/aws-sdk-go-v2/service/internal/presigned-url="v1.9.31" github.com/aws/aws-sdk-go-v2/service/internal/s3shared="v1.15.0" github.com/aws/aws-sdk-go-v2/service/s3="v1.38.1" github.com/aws/aws-sdk-go-v2/service/sso="v1.13.1" github.com/aws/aws-sdk-go-v2/service/ssooidc="v1.15.1" github.com/aws/aws-sdk-go-v2/service/sts="v1.21.1" github.com/aws/aws-sdk-go-v2="v1.20.0" github.com/aws/aws-sdk-go="v1.48.6" github.com/aws/smithy-go="v1.14.0" github.com/bep/clocks="v0.5.0" github.com/bep/debounce="v1.2.0" github.com/bep/gitmap="v1.1.2" github.com/bep/goat="v0.5.0" github.com/bep/godartsass/v2="v2.0.0" github.com/bep/godartsass="v1.2.0" github.com/bep/golibsass="v1.1.1" github.com/bep/gowebp="v0.3.0" github.com/bep/lazycache="v0.2.0" github.com/bep/logg="v0.4.0" github.com/bep/mclib="v1.20400.20402" github.com/bep/overlayfs="v0.6.0" github.com/bep/simplecobra="v0.4.0" github.com/bep/tmc="v0.5.1" github.com/clbanning/mxj/v2="v2.7.0" github.com/cli/safeexec="v1.0.1" github.com/cpuguy83/go-md2man/v2="v2.0.3" github.com/disintegration/gift="v1.2.1" github.com/dlclark/regexp2="v1.10.0" github.com/dustin/go-humanize="v1.0.1" github.com/evanw/esbuild="v0.19.12" github.com/fatih/color="v1.16.0" github.com/frankban/quicktest="v1.14.6" github.com/fsnotify/fsnotify="v1.7.0" github.com/getkin/kin-openapi="v0.122.0" github.com/ghodss/yaml="v1.0.0" github.com/go-openapi/jsonpointer="v0.19.6" github.com/go-openapi/swag="v0.22.4" github.com/gobuffalo/flect="v1.0.2" github.com/gobwas/glob="v0.2.3" github.com/gohugoio/go-i18n/v2="v2.1.3-0.20230805085216-e63c13218d0e" github.com/gohugoio/hugo-goldmark-extensions/passthrough="v0.1.0" github.com/gohugoio/locales="v0.14.0" github.com/gohugoio/localescompressed="v1.0.1" github.com/golang-jwt/jwt/v4="v4.5.0" github.com/golang/groupcache="v0.0.0-20210331224755-41bb18bfe9da" github.com/golang/protobuf="v1.5.3" github.com/google/go-cmp="v0.6.0" github.com/google/s2a-go="v0.1.7" github.com/google/uuid="v1.4.0" github.com/google/wire="v0.5.0" github.com/googleapis/enterprise-certificate-proxy="v0.3.2" github.com/googleapis/gax-go/v2="v2.12.0" github.com/gorilla/websocket="v1.5.1" github.com/hairyhenderson/go-codeowners="v0.4.0" github.com/hashicorp/golang-lru/v2="v2.0.1" github.com/inconshreveable/mousetrap="v1.1.0" github.com/invopop/yaml="v0.2.0" github.com/jdkato/prose="v1.2.1" github.com/jmespath/go-jmespath="v0.4.0" github.com/josharian/intern="v1.0.0" github.com/kr/pretty="v0.3.1" github.com/kr/text="v0.2.0" github.com/kylelemons/godebug="v1.1.0" github.com/kyokomi/emoji/v2="v2.2.12" github.com/mailru/easyjson="v0.7.7" github.com/marekm4/color-extractor="v1.2.1" github.com/mattn/go-colorable="v0.1.13" github.com/mattn/go-isatty="v0.0.20" github.com/mattn/go-runewidth="v0.0.9" github.com/mitchellh/hashstructure="v1.1.0" github.com/mitchellh/mapstructure="v1.5.0" github.com/mohae/deepcopy="v0.0.0-20170929034955-c48cc78d4826" github.com/muesli/smartcrop="v0.3.0" github.com/niklasfasching/go-org="v1.7.0" github.com/olekukonko/tablewriter="v0.0.5" github.com/pelletier/go-toml/v2="v2.1.1" github.com/perimeterx/marshmallow="v1.1.5" github.com/pkg/browser="v0.0.0-20210911075715-681adbf594b8" github.com/pkg/errors="v0.9.1" github.com/rogpeppe/go-internal="v1.12.0" github.com/russross/blackfriday/v2="v2.1.0" github.com/rwcarlsen/goexif="v0.0.0-20190401172101-9e8deecbddbd" github.com/sanity-io/litter="v1.5.5" github.com/sass/libsass="3.6.5" github.com/spf13/afero="v1.11.0" github.com/spf13/cast="v1.6.0" github.com/spf13/cobra="v1.8.0" github.com/spf13/fsync="v0.9.0" github.com/spf13/pflag="v1.0.5" github.com/tdewolff/minify/v2="v2.20.13" github.com/tdewolff/parse/v2="v2.7.8" github.com/webmproject/libwebp="v1.3.2" github.com/yuin/goldmark-emoji="v1.0.2" github.com/yuin/goldmark="v1.6.0" go.opencensus.io="v0.24.0" go.uber.org/atomic="v1.11.0" go.uber.org/automaxprocs="v1.5.3" gocloud.dev="v0.34.0" golang.org/x/crypto="v0.18.0" golang.org/x/exp="v0.0.0-20221031165847-c99f073a8326" golang.org/x/image="v0.14.0" golang.org/x/mod="v0.14.0" golang.org/x/net="v0.20.0" golang.org/x/oauth2="v0.15.0" golang.org/x/sync="v0.6.0" golang.org/x/sys="v0.16.0" golang.org/x/text="v0.14.0" golang.org/x/time="v0.5.0" golang.org/x/tools="v0.17.0" golang.org/x/xerrors="v0.0.0-20220907171357-04be3eba64a2" google.golang.org/api="v0.152.0" google.golang.org/genproto/googleapis/api="v0.0.0-20231106174013-bbf56f31fb17" google.golang.org/genproto/googleapis/rpc="v0.0.0-20231120223509-83a465c0220f" google.golang.org/genproto="v0.0.0-20231106174013-bbf56f31fb17" google.golang.org/grpc="v1.59.0" google.golang.org/protobuf="v1.31.0" gopkg.in/yaml.v2="v2.4.0" gopkg.in/yaml.v3="v3.0.1" software.sslmate.com/src/go-pkcs12="v0.2.0"
hugoTo
find out
which
directory the hugo executable
is in,
run
one of the following shell commands.
In a Unix-like shell, run:
which hugo
In PowerShell, run:
gcm hugo (or equivalently Get-Command hugo)
In cmd.exe or Git Bash, run:
where hugo
After you’ve installed extended Hugo, you might want to follow the steps in one or both of these Infinite Ink articles:
Repology.org “monitors a huge number of package repositories and other sources comparing package versions across them and gathering other information.” Some details about Hugo are on repology.org/project/hugo-sitegen/history and in this badge:
As you can see in the above Repology badge,
most
package managers
do not install
the newest version of Hugo.
This is
the main reason
I wrote this article.
go and git (or another VCS). If you use a non-built-in renderer, such as asciidoctor or pandoc, you need to install that renderer and edit Hugo’s security configuration.sudo dpkg --install ./hugo_extended_0.127.0_Linux-64bit.deb will work if you invoke it from the directory that the .deb is in. Since hugo has no dependencies, there should be no issues installing it with dpkg --install. (This is how I install hugo on WSL, which is also known as “Windows’ Subsystem for Linux” and “Bash on Ubuntu on Windows.”).gz or .zip extension will launch an unzip app. For example, some Linux distributions launch the ark archiving tool.@nm@mathstodon.xyz
or
#InfiniteInk
in it.