Ubuntu ServerのNoe4jの管理について

2024/02/24に公開

Neo4jの管理する

前書き

インストールしたものの動いて喜んでいてパッケージの管理の仕方とか分からなくなっていた。以前は勝手に更新されていたNeo4jのバージョンが上がらず5.8で止まっちゃっていた。

PPAにパッケージを追加する

公式はapt-keyを使っているがこのやり方は古いらしい.

wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.com stable 5' | sudo tee -a /etc/apt/sources.list.d/neo4j.list

以下のようにするのが今風とのこと。

curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key |sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list > /dev/null

Dockerとかもこんな風にする感じであった。

でバージョンが上がらなくなった原因は以下のような設定になっていたのだと思う。

/etc/apt/sources.list.d/neo4j.list
deb https://debian.neo4j.com stable 5.8

いつ書き換えたのが不明だが、なんか余計なことをしたんだと思う。5系でaptで自動的に更新をかけたい場合は以下のようになっているはず。

/etc/apt/sources.list.d/neo4j.list
deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5

単にlatestと指定することもできるようです。

/etc/apt/sources.list.d/neo4j.list
deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable latest

というのもあるが、Javaのバージョンが一致するかはとか良く分からない。その辺は6が出てから考えよう。

バージョンを指定してインストールする

apt list -a neo4j

でインストール可能なバージョンを調べる。

sudo apt install neo4j=1:5.17.0

でバージョンを=以下に指定する。

Neo4j 5.17.0にしたら動かなくなった

sudo apt-get install neo4j=1:5.8.0
Configuration file '/etc/neo4j/neo4j.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** neo4j.conf (Y/I/N/O/D/Z) [default=N] ? N

Configuration file '/etc/neo4j/neo4j.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** neo4j.conf (Y/I/N/O/D/Z) [default=N] ? n

としてたからかな?

躓いたこと

/etc/apt/trusted.gpg.dを消しちゃった

/etc/apt/trusted.gpg.d/を誤って消してしまった。

その後

sudo apt update

すると警告を受けたり、エラーが発生した。

sudo apt-get install --reinstall ubuntu-keyring

で大方の警告は消えたが、自分でインストールしたNeo4jだけが引っ掛かったままになった. 以下のようにして追加する。

wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add -
echo 'deb https://debian.neo4j.com stable latest' | sudo tee -a /etc/apt/sources.list.d/neo4j.list

この場合以下のエラーがでます。

W: https://debian.neo4j.com/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

って何なんだよって話です。Ubuntu: apt update を行った時の警告を消すを参考にして以下のようにgpgキーを出力する。

sudo apt-key export D37F5F19 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/neo4j.gpg

これでエラーが消える。

複数回のパッケージの設定

Neo4jはオフィシャルリポジトリからパッケージが提供されていないので, PPA(Personal Package Archive)を追加します。

curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key |sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com  stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list

のように追加します. /etc/apt/sources.list.d/neo4j.listと書いてあり、ここにリポジトリを追加します。

これをいっぱいやっちゃって重複すると

Target Packages (5/binary-all/Packages) is configured multiple times in

というような警告をいっぱい喰らいます。中身を見ると確かにリポジトリが重複して定義されています。

/etc/apt.sources.list.d.neo4j.list
deb https://debian.neo4j.com stable 5
deb https://debian.neo4j.com stable 5.8
deb https://debian.neo4j.com stable 5
deb https://debian.neo4j.com stable 5.8

消してから再度追加でも良いですが、apt-add-repositoryというコマンドがあるのでそれを利用します。

sudo apt-add-repository --remove 'deb https://debian.neo4j.com stable 5'
sudo apt-add-repository --remove 'deb https://debian.neo4j.com stable 5.8'

なお

curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key |sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com  stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list

で追加した場合は以下のようになります。

deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5

Reference

Discussion