前回 WSL の Ubuntu 18.04 をインストールしたので、改めてアプリケーションをインストールし直しました。
環境
- Windows 10 Pro 1803
- Ubuntu 18.04 LTS
- FFmpeg 4.0
- Hugo 0.41
- Node.js v8.11.2
FFmpeg
以前 FFmpeg をインストールしたときもそうだったのですが、今回も、 Download FFmpeg の Linux Static Builds をインストールすることにしました。
FAQ に従ってインストールしました。
Download the latest git build.
$ cd /home/john $ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-64bit-static.tar.xz $ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-64bit-static.tar.xz.md5
ビルドされた .tar.xz ファイル と .md5 ファイルをダウンロードしました。
$ curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 19.0M 100 19.0M 0 0 1096k 0 0:00:17 0:00:17 --:--:-- 1785k
$ curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz.md5
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 69 100 69 0 0 33 0 0:00:02 0:00:02 --:--:-- 33
ダウンロードできました。
With the build and the build's md5 hash downloaded you can check its integrity.
$ md5sum -c ffmpeg-git-64bit-static.tar.xz.md5 ffmpeg-git-64bit-static.tar.xz: OK
ファイルをチェックしました。
$ md5sum -c ffmpeg-release-64bit-static.tar.xz.md5
ffmpeg-release-64bit-static.tar.xz: OK
OK でした。
Unpack the build.
$ tar xvf ffmpeg-git-64bit-static.tar.xz
.tar.xz ファイルを展開しました。
$ tar xvf ffmpeg-release-64bit-static.tar.xz
ffmpeg-4.0-64bit-static/
ffmpeg-4.0-64bit-static/manpages/
ffmpeg-4.0-64bit-static/manpages/ffmpeg-protocols.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-scaler.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-formats.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-resampler.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-devices.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-protocols.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-all.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-utils.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-all.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-formats.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-devices.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-filters.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-codecs.pdf
ffmpeg-4.0-64bit-static/manpages/ffprobe.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-resampler.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-filters.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-bitstream-filters.txt
ffmpeg-4.0-64bit-static/manpages/ffmpeg-scaler.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-utils.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-bitstream-filters.pdf
ffmpeg-4.0-64bit-static/manpages/ffprobe.pdf
ffmpeg-4.0-64bit-static/manpages/ffmpeg-codecs.txt
ffmpeg-4.0-64bit-static/readme.txt
ffmpeg-4.0-64bit-static/ffprobe
ffmpeg-4.0-64bit-static/ffmpeg-10bit
ffmpeg-4.0-64bit-static/qt-faststart
ffmpeg-4.0-64bit-static/ffmpeg
ffmpeg-4.0-64bit-static/GPLv3.txt
展開できました。
Now I have the directory “ffmpeg-git-20180203-64bit-static”.
$ ls ffmpeg-git-20180203-64bit-static ffmpeg ffmpeg-10bit ffprobe GPLv3.txt manpages model qt-faststart readme.txt
展開したディレクトリーの中にこれらがあるみたいです。
$ ls ffmpeg-4.0-64bit-static/
GPLv3.txt ffmpeg ffmpeg-10bit ffprobe manpages qt-faststart readme.txt
ffmpeg-git-20180203-64bit-static と ffmpeg-release-64bit-static.tar.xz(20180526) を比較すると model がなくなっているようです。 model ってなんだろう?
Move the static binaries ffmpeg and ffprobe into the shell's path.
$ sudo mv ffmpeg-git-20180203-64bit-static/ffmpeg ffmpeg-git-20180203-64bit-static/ffprobe /usr/local/bin/ $ whereis ffmpeg ffmpeg: /usr/local/bin/ffmpeg $ whereis ffprobe ffprobe: /usr/local/bin/ffprobe
パスの通っているディレクトリーにファイルを移動します。 FAQ を見ると ffmpeg, ffprobe の 2 つのファイルだけ移動すればいいみたいです。 ffmpeg しか使ったことないですけれども。
環境変数の $PATH を確認してみました。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Users/user/AppData/Local/Microsoft/WindowsApps:/mnt/c/Program Files/Microsoft VS Code/bin:/snap/bin
うーん、 Ubuntu 16.04 LTS は ~/bin や ~/.local/bin にもパスが通っていたようでしたが、 Ubuntu 18.04 LTS は通っていないみたいでした。
なので /usr/local/bin にファイルを移動することにします。
$ sudo mv ffmpeg-4.0-64bit-static/ffmpeg ffmpeg-4.0-64bit-static/ffprobe /usr/local/bin/
[sudo] password for user:
$ ls /usr/local/bin/
ffmpeg ffprobe
$ whereis ffmpeg
ffmpeg: /usr/local/bin/ffmpeg
$ whereis ffprobe
ffprobe: /usr/local/bin/ffprobe
移動できたみたいです。
Now ffmpeg is globally installed and you're done!
$ ffmpeg ffmpeg version N-89948-ge3d946b3f4-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.4.0 (Debian 6.4.0-11) 20171206 (snipped output to save space)
これで ffmpeg コマンドが使えます。
$ ffmpeg
ffmpeg version 4.0-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
ffmpeg コマンドが使えました。
Uninstall.
$ sudo rm /usr/local/bin/ffmpeg /usr/local/bin/ffprobe
アンインストールする場合は sudo rm
でファイルを削除してあげればいいみたいです。
Hugo
Quick Install を参考にインストールしてみます。
Quick Install
Binary (Cross-platform)
Download the appropriate version for your platform from Hugo Releases. Once downloaded, the binary can be run from anywhere. You don’t need to install it into a global location. This works well for shared hosts and other systems where you don’t have a privileged account.
Ideally, you should install it somewhere in your PATH for easy use. /usr/local/bin is the most probable location.
以前と同じように Binary (Cross-platform) をインストールしようと思います。
Releases · gohugoio/hugo · GitHub から、最新のビルドされたバイナリーファイルをダウンロードすることができるみたいです。
ファイルをダウンロードしました。
$ curl -LO https://github.com/gohugoio/hugo/releases/download/v0.41/hugo_0.41_Linux-64bit.deb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 615 0 615 0 0 362 0 --:--:-- 0:00:01 --:--:-- 362
100 5933k 100 5933k 0 0 442k 0 0:00:13 0:00:13 --:--:-- 941k
$ curl -LO https://github.com/gohugoio/hugo/releases/download/v0.41/hugo_0.41_checksums.txt
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 613 0 613 0 0 421 0 --:--:-- 0:00:01 --:--:-- 421
100 1993 100 1993 0 0 832 0 0:00:02 0:00:02 --:--:-- 243k
GitHub ではリダイレクトされるので -L
オプションをつけてリダイレクト先のファイルをダウンロードしています。
ダウンロードできました。
ファイルをチェックしました。
$ shasum -c hugo_0.41_checksums.txt
…略…
hugo_0.41_Linux-64bit.deb: OK
…略…
OK みたいです。
-i|–install <.deb file name> … | -R|–recursive
…
dpkg --help
パッケージをインストールしました。
$ sudo dpkg -i hugo_0.41_Linux-64bit.deb
[sudo] password for user:
Selecting previously unselected package hugo.
(Reading database ... 28477 files and directories currently installed.)
Preparing to unpack hugo_0.41_Linux-64bit.deb ...
Unpacking hugo (0.41) ...
Setting up hugo (0.41) ...
インストールできました。
-L|–listfiles
… List files ‘owned’ by package(s).
dpkg --help
次のファイルがインストールされたみたいです。
$ dpkg -L hugo
/.
/usr
/usr/local
/usr/local/bin
/usr/local/bin/hugo
/usr/share
/usr/share/doc
/usr/share/doc/hugo
/usr/share/doc/hugo/changelog.gz
bin は /usr/local/bin なのに、 doc は /usr/share/doc なのですね。 /usr/local/share/doc じゃないんだ。
ちゃんとコマンドも実行できました。
$ hugo version
Hugo Static Site Generator v0.41 linux/amd64 BuildDate: 2018-05-25T16:57:20Z
-r|–remove
… | -a|–pending
dpkg --help
アンインストールする場合は次のコマンドを入力すればいいみたいです。
$ sudo dpkg -r hugo
dpkg -L hugo
で表示されたファイルが消えていればいいのかな。
Node.js
以前と同じように Download | Node.js の Linux Binaries (x86/x64) の 64-bit をダウンロードしました。
$ curl -O https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 10.8M 100 10.8M 0 0 2361k 0 0:00:04 0:00:04 --:--:-- 2361k
ダウンロードできました。
下の方に “Signed SHASUMS for release files” もあったのでダウンロードしました。
$ curl -O https://nodejs.org/dist/v8.11.2/SHASUMS256.txt.asc
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4240 0 4240 0 0 2815 0 --:--:-- 0:00:01 --:--:-- 2815
ダウンロードできました。
Current, LTS, and Nightly download directories all contain a SHASUMS256.txt file that lists the SHA checksums for each file available for download.
The SHASUMS256.txt can be downloaded using
curl
.$ curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt
To check that a downloaded file matches the checksum, run it through
sha256sum
with a command such as:$ grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c -
ファイルをチェックしました。
$ grep 'node-v8.11.2-linux-x64.tar.xz' SHASUMS256.txt.asc | sha256sum -c -
node-v8.11.2-linux-x64.tar.xz: OK
grep することでチェックしたいファイルだけチェックすることができるようでした。 OK みたいです。
- FUNCTION LETTERS
Main operation mode:
- -x, –extract, –get
extract files from an archive- OTHER OPTIONS
Operation modifiers:
- -f, –file ARCHIVE
use archive file or device ARCHIVE- -J, –xz
- -v, –verbose
verbosely list files processed
man tar
ファイルを展開しました。
$ tar -xJvf node-v8.11.2-linux-x64.tar.xz
…略…
node-v8.11.2-linux-x64/include/node/zlib.h
node-v8.11.2-linux-x64/include/node/uv-unix.h
node-v8.11.2-linux-x64/include/node/zconf.h
コンソールにたくさん出力されました。
最初、オプションを man tar
の順番に -xfJv
のように指定したら “tar: Jv: Cannot open: No such file or directory”, “tar: Error is not recoverable: exiting now” のようなエラーになりました。
-f
のオプションは引数をとるので後ろに連続してオプションをつなげてはいけないようでした。
初めて知りました。
展開されたファイルです。
$ ls -l node-v8.11.2-linux-x64
total 192
-rw-rw-r-- 1 user user 53894 May 16 04:14 CHANGELOG.md
-rw-rw-r-- 1 user user 59059 May 16 04:14 LICENSE
-rw-rw-r-- 1 user user 27429 May 16 04:14 README.md
drwxrwxr-x 1 user user 4096 May 16 04:14 bin
drwxrwxr-x 1 user user 4096 May 16 04:14 include
drwxrwxr-x 1 user user 4096 May 16 04:14 lib
drwxrwxr-x 1 user user 4096 May 16 04:14 share
bin, include, lib, share を /usr/local/ の中に移動してあげればいいみたいです。
最初に /usr/local/ の中を確認しておきました。
$ ls -l /usr/local/
total 0
drwxr-xr-x 1 root root 4096 Apr 26 14:10 bin
drwxr-xr-x 1 root root 4096 Apr 26 14:10 etc
drwxr-xr-x 1 root root 4096 Apr 26 14:10 games
drwxr-xr-x 1 root root 4096 Apr 26 14:10 include
drwxr-xr-x 1 root root 4096 Apr 26 14:10 lib
lrwxrwxrwx 1 root root 9 Apr 26 14:10 man -> share/man
drwxr-xr-x 1 root root 4096 Apr 26 14:10 sbin
drwxr-xr-x 1 root root 4096 Apr 26 14:10 share
drwxr-xr-x 1 root root 4096 Apr 26 14:10 src
$ ls -l /usr/local/bin/
total 175040
-rwxr-xr-x 1 user user 63012968 Apr 23 04:33 ffmpeg
-rwxr-xr-x 1 user user 62914664 Apr 23 04:33 ffprobe
-rwxr-xr-x 1 root root 17781952 May 26 01:57 hugo
$ ls -l /usr/local/include/
total 0
$ ls -l /usr/local/lib/
total 0
drwxrwsr-x 1 root staff 4096 Apr 26 14:10 python3.6
$ ls -l /usr/local/share/
total 0
drwxr-xr-x 1 root root 4096 Apr 26 14:10 ca-certificates
drwxr-xr-x 1 root root 4096 Apr 26 14:10 man
$ ls -l /usr/local/share/man/
total 0
コピーしました。
$ sudo cp -r node-v8.11.2-linux-x64/bin/ node-v8.11.2-linux-x64/include/ node-v8.11.2-linux-x64/lib/ node-v8.11.2-linux-x64/share/ /usr/local/
$
コピーできたみたいです。
/usr/local/ の中を確認しました。
$ ls -l /usr/local/
total 0
drwxr-xr-x 1 root root 4096 May 30 19:14 bin
drwxr-xr-x 1 root root 4096 Apr 26 14:10 etc
drwxr-xr-x 1 root root 4096 Apr 26 14:10 games
drwxr-xr-x 1 root root 4096 May 30 19:02 include
drwxr-xr-x 1 root root 4096 May 30 19:11 lib
lrwxrwxrwx 1 root root 9 Apr 26 14:10 man -> share/man
drwxr-xr-x 1 root root 4096 Apr 26 14:10 sbin
drwxr-xr-x 1 root root 4096 May 30 19:13 share
drwxr-xr-x 1 root root 4096 Apr 26 14:10 src
$ ls -l /usr/local/bin/
total 174340
-rwxr-xr-x 1 user user 63012968 Apr 23 04:33 ffmpeg
-rwxr-xr-x 1 user user 62914664 Apr 23 04:33 ffprobe
-rwxr-xr-x 1 root root 17781952 May 26 01:57 hugo
-rwxr-xr-x 1 root root 34799826 May 30 19:14 node
lrwxrwxrwx 1 root root 38 May 30 19:14 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxrwxrwx 1 root root 38 May 30 19:14 npx -> ../lib/node_modules/npm/bin/npx-cli.js
$ ls -l /usr/local/include/
total 0
drwxr-xr-x 1 root root 4096 May 30 19:02 node
$ ls -l /usr/local/lib/
total 0
drwxr-xr-x 1 root root 4096 May 30 19:11 node_modules
drwxrwsr-x 1 root staff 4096 Apr 26 14:10 python3.6
$ ls -l /usr/local/share/
total 0
drwxr-xr-x 1 root root 4096 Apr 26 14:10 ca-certificates
drwxr-xr-x 1 root root 4096 May 30 19:13 doc
drwxr-xr-x 1 root root 4096 May 30 19:13 man
drwxr-xr-x 1 root root 4096 May 30 19:13 systemtap
$ ls -l /usr/local/share/man/
total 0
drwxr-xr-x 1 root root 4096 May 30 19:13 man1
node コマンドを使ってみました。
$ node -p "'hello'.toUpperCase()"
HELLO
ちゃんと動かせました。
終わり
今回の FFmpeg や Node.js みたいに自分でファイルを配置するような場合、 mv
コマンドを使うのか、 cp
コマンドを使うのか、よくわからないです。
mv
コマンドはもとのファイルのオーナー、グループをそのままに移動してしまうので、 /usr/local のオーナーが root であっても、その下のファイルのオーナーが user になってしまうのが気になりました。
cp
コマンドはコピー先のディレクトリーのオーナー、グループを引き継ぐみたいで、ファイルのオーナーが root になっていたので個人的にはスッキリしています。