ねこにコベイン

にゃーにゃーにゃー

Ubuntu Server 18.04にpkgsrcで新しめのffmpegとsambaをインストールするテスト

頭の体操

セルフビルドした方が面白いことができるffmpeg4。
最新のバージョンで更なる転送の高速化を図ったとかリリースのあったsamba4.12*1
セルフビルド手順を公式とか色々見てフムフム思って、メインマシンはそっちで導入してます。
でもやっぱり、何かの手順で自動更新される仕組みがあるととてもいいんじゃないかなあ、と思って、少し考えてみたんですが、そう言えばNetWalker触ってる時にビミョーにお世話になったpkgsrcだとうまくいくんでないかなと考えたんで、今回はそのテストをしてみます。

前提ですが

マシンスペック

SkyLakeかKabyLakeのCeleronのいちばん安いやつ。2コアで2.8GHzも出ればいいほう。メモリは8GBくらい。ストレージはSSD

isoイメージの種類

Ubuntu 18.04.4のサーバーイメージからインストールして、インストール時点ではSSH以外は導入してないです。
https://ftp.riken.jp/Linux/ubuntu-releases/18.04.4/ubuntu-18.04.4-live-server-amd64.iso
USBドライブが/dev/sdbの場合だと、

# dd bs=4M if=./ubuntu-18.04.4-live-server-amd64.iso of=/dev/sdb

的なおまじないでUSBメモリに書き込み。

ネット環境

IPアドレスは192.168.1.2、ゲートウェイはブロバンルータで192.168.1.1とかに設定。

ホスト・ドメインなど

ホスト名はzeit、ドメイン名はhoelderlin.traum、ユーザー名はtangerine。
タンジェリンドリームの2ndは、アルファケンタウリらしい…やべえアドレスと1枚ずれた。

IPv6はカット。

雑廉堂さんをいっぱい参照したので、多謝。
https://www.rough-and-cheap.jp/ubuntu/ubuntu18_04_howto_diseable_ipv6/

固定IP化。

下のページを思いっきりパクった。サーバーイメージからインストールするとNetworkManagerとかも入ってないので、とてもシンプルでよいと思う。
https://qiita.com/zen3/items/757f96cbe522a9ad397d

pkgsrcの準備

導入に必要だと思うパッケージ。

たぶんこれくらい。

root@zeit:/usr# apt install git curl build-essential

pkgsrcの取得

イマドキ風にgithubからpkgsrcを導入する。ググると古めのgithubも出てくるので注意する。

root@zeit:/usr# git clone https://github.com/NetBSD/pkgsrc.git
Cloning into 'pkgsrc'...
remote: Enumerating objects: 106, done.
remote: Counting objects: 100% (106/106), done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 3138610 (delta 31), reused 64 (delta 26), pack-reused 3138504
Receiving objects: 100% (3138610/3138610), 1.37 GiB | 10.72 MiB/s, done.
Resolving deltas: 100% (1896155/1896155), done.
Checking out files: 100% (101284/101284), done.

ブートストラップ

pkgsrcをビルドする環境のセットアップ

root@zeit:/usr# cd pkgsrc/bootstrap/
root@zeit:/usr/pkgsrc/bootstrap# SH=/bin/bash ./bootstrap

.....

===========================================================================
===> running: /bin/sh /usr/pkgsrc/bootstrap/work/bin/install-sh -d -o root -g root /usr/pkg/etc

===========================================================================

Please remember to add /usr/pkg/bin to your PATH environment variable
and /usr/pkg/man to your MANPATH environment variable, if necessary.

An example mk.conf file with the settings you provided to "bootstrap"
has been created for you. It can be found in:

      /usr/pkg/etc/mk.conf

You can find extensive documentation of the NetBSD Packages Collection
in /usr/pkgsrc/doc/pkgsrc.txt.

Hopefully everything is now complete.
Thank you for using pkgsrc!

===========================================================================

===> bootstrap started: Tue Apr  7 20:09:25 JST 2020
===> bootstrap ended:   Tue Apr  7 20:12:24 JST 2020

パスを通す。

tangerine@zeit:~$ echo "export PATH=/usr/pkg/bin/:/usr/pkg/sbin:$PATH" >> .bashrc
tangerine@zeit:~$ source ~/.bashrc

パスを通さないでbmakeをフルパスで使うとか何とかして、導入したパッケージに関してはffmpeg4のシンボリックリンクみたいにパス通ってるところに張って、ていうのをするようにすれば、導入した影響が最小限になる気もするけど、その辺は好みの問題なんじゃないかいな。
とはいえ、パッケージ導入中は通っていた方が絶対楽なんで、ダブルクォーテーションの中だけシェルで叩いて一時的に設定しておくのがいいかもしれんね。

ffmpeg4の導入まで(最初のパッケージ導入)

セキュリティを緩める(というか、ザルにする)

mk.confにハレンチな設定をする。ついでにffmpeg4ビルド用の設定。(.endifの手前3行を足している。)
pkgsrcをいじり始めて最初にコケるのが「そのパッケージNISCが脆弱性を公開してるよ(つまり危ないからこのPCに導入するのやめとくね。)と言って導入が途中で止まるパターン。Debianではそんなこと聞かれた覚えはないので、親切なのか、脆弱性への対応スピードが遅いため致し方ないのか…いずれにせよ、導入が止まるのはどうにも困るんでハレンチに「そんなの無視!」のオプションを指定しておく。
次にこけるのが「そのパッケージのライセンスはXXXなんですが…(導入していいか聞いてないのでやめとくね。)【中略】「そんなの全通し!」のオプションを指定しておく。

root@zeit:~# nano /usr/pkg/etc/mk.conf
root@zeit:~# cat  /usr/pkg/etc/mk.conf
# Example /usr/pkg/etc/mk.conf file produced by bootstrap-pkgsrc
# Tue Apr  7 20:21:27 JST 2020

.ifdef BSD_PKG_MK       # begin pkgsrc settings

ABI=                    64

PKG_DBDIR=              /usr/pkg/pkgdb
LOCALBASE=              /usr/pkg
VARBASE=                /var
PKG_TOOLS_BIN=          /usr/pkg/sbin
PKGINFODIR=             info
PKGMANDIR=              man

TOOLS_PLATFORM.awk?=            /usr/pkg/bin/nawk
TOOLS_PLATFORM.sh?=             /bin/bash

ALLOW_VULNERABLE_PACKAGES=yes  ( 脆弱性ガン無視 )
_ACCEPTABLE=            yes  ( ライセンス仏恥義理 )
PKG_OPTIONS.ffmpeg4+=   fdk-aac rtmp x265  ( fdk-aacとx265は野良ビルド界の定番。rtmpは趣味。opensslはデフォでオン。 )

.endif                  # end pkgsrc settings

パッケージ導入

それでは、(試しに?)ffmpeg4をインストールする。
最初に足りないツールをバンバン導入するため、野良ビルドに比べて1~2時間くらい余計にかかるが、まあそんなもん。

root@zeit:/usr/pkgsrc/multimedia/ffmpeg4/bmake show-options

( 上記mk.confで追加できるオプション等が表示される。gnutlsを付けるとなんかエラーが出たような。 )
Any of the following general options may be selected:
        ass      Enable subtitle renderer for the ASS/SSA format
        av1      AOmedia Video 1 video codec support
        bluray   Enable libbluray support.
        doc      Include the documentation.
        fdk-aac
        fontconfig       Enable FONTCONFIG (fonts/fontconfig) support.
        freetype         Enable freetype support.
        lame     Use the lame encoder to create MP3 files.
        libvpx   Enable libvpx support.
        opencore-amr     Enable OpenCORE Adaptive Multi-Rate speech codecs.
        opus     Enable opus support.
        pulseaudio       Enable support for the PulseAudio sound server.
        rpi      Enable Raspberry Pi support.
        rtmp     Enable rtmp:// support using rtmpdump.
        tesseract
        theora   Use the theora codecs.
        vaapi    Enable support for VAAPI.
        vdpau    Enable support for VDPAU.
        vorbis   Enable Ogg Vorbis support.
        x11      Enable X11 support.
        x264     Enable x264 support.
        x265     Enable x265 support.
        xvid     Enable usage of XVid codecs.
At most one of the following ssl options may be selected:
        gnutls   Enable GNU TLS support.
        openssl  Enable OpenSSL support.

These options are enabled by default:
        ass av1 bluray fontconfig freetype lame libvpx
        openssl theora vaapi vdpau vorbis x11 x264
        xvid

These options are currently enabled:
        ass av1 bluray fdk-aac fontconfig freetype
        lame libvpx openssl rtmp theora vaapi vdpau
        vorbis x11 x264 x265 xvid

You can select which build options to use by setting PKG_DEFAULT_OPTIONS
or PKG_OPTIONS.ffmpeg4.

( ビルド&インストール。ジャスト2時間かかった。マジかよ… )
root@zeit:/usr/pkgsrc/multimedia/ffmpeg4/bmake install

.....

/usr/bin/install -c -o root -g root -m 644 /usr/pkgsrc/multimedia/ffmpeg4/work/ffmpeg-4.2.2/doc/*.txt  /usr/pkgsrc/multimedia/ffmpeg4/work/.destdir/usr/pkg/share/doc/ffmpeg4
=> Automatic manual page handling
=> Generating post-install file lists
=> Checking file-check results for ffmpeg4-4.2.2nb4
=> Creating binary package /usr/pkgsrc/multimedia/ffmpeg4/work/.packages/ffmpeg4-4.2.2nb4.tgz
===> Building binary package for ffmpeg4-4.2.2nb4
=> Creating binary package /usr/pkgsrc/packages/All/ffmpeg4-4.2.2nb4.tgz
WARNING: ffmpeg4-4.2.2nb4 may not be put on a CD-ROM:
WARNING: This software may require the payment of patent royalties
WARNING: ffmpeg4-4.2.2nb4 may not be made available through FTP:
WARNING: This software may require the payment of patent royalties
===> Installing binary package of ffmpeg4-4.2.2nb4

aptでの導入時と同じ場所にシンボリックリンクを貼る(一応)

root@zeit:/usr/bin# ln -s /usr/pkg/bin/ffmpeg4 /usr/bin/ffmpeg

次はsambaドメインコントローラの設定まで、は、いっぺんに無理でした。