apt repository

自前で作ったdebian packageを自前のapt repositoryに突っ込む時の問題。

 

# apt update
取得:1 file:/home/debian packages/ InRelease [1,365 B]
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
パッケージはすべて最新です。
W: ディストリビューションが競合しています: file:/home/debian packages/ InRelease (packages/ を期待していたのに  を取得しました)
W: Skipping acquire of configured file 'Packages' as repository 'file:/home/debian packages/ InRelease' does not seem to provide it (sources.list entry misspelt?)

 

この競合の警告が消せなくて悩んでいたが、どうもPackagesを圧縮するのがいけないらしい。

PKGDIR := .
PACKAGE := $(PKGDIR)/Packages
RELEASE := $(PKGDIR)/Release
INRELEASE := $(PKGDIR)/InRelease
COMPRESS :=xz
PKGS := $(wildcard $(PKGDIR)/*.deb)
all: $(INRELEASE)
$(INRELEASE): $(RELEASE).gpg
        -rm $@
        gpg --clearsign -o $@ $(RELEASE)
$(PACKAGE): $(PKGS)
        apt-ftparchive packages $(PKGDIR) > $@
$(RELEASE): $(PACKAGE)
        apt-ftparchive release $(PKGDIR) > $@
$(RELEASE).gpg: $(RELEASE)
        -rm $@
        gpg -abs -o $@ $(RELEASE)
clean:
        rm -f $(PACKAGE) $(RELEASE) $(INRELEASE) $(PACKAGE).gpg $(PACKAGE).$(COMPRESS) $(RELEASE).$(COMPRESS) $(RELEASE).gpg
deb file:/home/debian/packages ./

 

圧縮やめたら警告なくなった

IPv6 アドレス固定

やっとsystemd-networkdでIPアドレス固定の方法がわかった。

RAでgatewayは欲しい。dhcpv6でパラメータは配りたいがアドレスの管理はしたくない。
ネットワークで自動アドレス設定は有効にしたいがサーバーは固定アドレスにしたい。

RAはm_flag=off o_flag=onでほぼできるのだが、サーバーのような固定アドレスが欲しい時はSLAACが邪魔になる。

/etc/systemd/network/eth0.network で、AcceptRA=falseを入れるとゲートウェイが入らないとかプレフィックスがわからない。
Address=2001:0db8::1/64 とか入れてもSLAACが働いてアドレスが2つになってしまう。

そこで、[Network]セクションに IPv6Token=::1 とか書くと、RAでプレフィックスもらって、ホスト部を::1にしてくれる。

Address=を消してもいいんだけど、書いておくとRA受け取る前にアドレス有効になるので、重複するが書いておくとよさげ。
まあ、プレフィックス変わると書き換えないといけないんだけどね……

[Network]
Address=240b:0db8::aaaa/64
IPv6Token=::aaaa

更に、ユニークローカル(いわゆるプライベートアドレス)とグローバルアドレスがあって、内部サーバーとかだとグローバルアドレスいらないとか、外部用だとプライベートいらないとかの場合、RAを無視する必要があったりして、その場合はIPv6AcceptRAセクションを使う。

[Network]
Address=fd00::aaaa/64
IPv6Token=::aaaa
[IPv6AcceptRA]
BlackList=240b:0db8::

プレフィックスにLength付けれないので、多分64ビット全部書かないといけない。

ちなみにSQL server on Ubuntu 16.04 だとsystemd 229で、IPv6AcceptRAに対応していない。