apt で proposed な package のインストールに苦しんだので備忘録

# 先にまとめ

`noble-proposed` repository を追加したうえで `-t noble-proposed` オプションをつけて apt install すればいい。


# 前提条件

Ubuntu Server 24.04.1 (LTS) を minimal install した状態。

```
# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04.1 LTS
Release:	24.04
Codename:	noble
```


# 背景

（2024/10/15 時点の情報）
Ceph の Squid (19.2.0) stable がリリースされたらしいが、Ubuntu 24.04 でインストールするとどうしても dev 版がインストールされて困っていた。

[package を見てみると、19.2.0.0-0ubuntu0.24.04.1 は proposed だった。](https://launchpad.net/ubuntu/+source/ceph)
が、ただ proposed を追加してもだめだったので、だめだったメモを添えつつ備忘録として解決策を記載。


# propose を追加するだけではだめ

proposed にあるなら追加すればええんちゃう？と、`/etc/apt/sources.list.d/ubuntu.sources` に追記してみたがだめだった。

```bash:元ファイルとの差分
# diff ubuntu.sources ubuntu.sources.bk
3,4c3
< #Suites: noble noble-updates noble-backports
< Suites: noble noble-updates noble-backports noble-proposed
---
> Suites: noble noble-updates noble-backports
```

```bash:内容
# cat ubuntu.sources
Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
#Suites: noble noble-updates noble-backports
Suites: noble noble-updates noble-backports noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
```

このまま apt install しても updates に入ってるやつが優先されてしまう。


# proposed だけにしても（当然）だめ

なら proposed だけにすればええんちゃう？（よくない）と、proposed だけにしてみたら依存パッケージが入らなくなり、だめだった。

```bash:proposed だけ
# cat ubuntu.sources
Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
#Suites: noble noble-updates noble-backports
#Suites: noble noble-updates noble-backports noble-proposed
Suites: noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
```

```bash:apt install ceph-common の結果
The following packages have unmet dependencies:
 ceph-common : Depends: python3-ceph-argparse (= 19.2.0-0ubuntu0.24.04.1) but 19.2.0-1jammy is to be installed
               Depends: python3-ceph-common (= 19.2.0-0ubuntu0.24.04.1) but 19.2.0-1jammy is to be installed
               Depends: python3-cephfs (= 19.2.0-0ubuntu0.24.04.1) but it is not going to be installed
               Depends: libboost-url1.83.0 (>= 1.83.0) but it is not installable
E: Unable to correct problems, you have held broken packages.
```


# `-t` オプションで noble-proposed を指定したらいけた

参考 https://kwatanabe.hatenablog.jp/entry/2020/11/28/095428

proposed を追加した状態に戻して apt update 後、`-t noble-proposed` をつけてインストールしたら proposed な package がインストールされた。

```bash:repository
# cat ubuntu.sources
Types: deb
URIs: http://jp.archive.ubuntu.com/ubuntu/
#Suites: noble noble-updates noble-backports
Suites: noble noble-updates noble-backports noble-proposed
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
```

```bash:install command
apt install cephadm ceph-common -t noble-proposed
```

```bash:install 後の list
# apt list --installed | grep ceph

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

ceph-common/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 amd64 [installed]
cephadm/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 amd64 [installed]
libcephfs2/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 amd64 [installed,automatic]
python3-ceph-argparse/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 amd64 [installed,automatic]
python3-ceph-common/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 all [installed,automatic]
python3-cephfs/noble-proposed,now 19.2.0-0ubuntu0.24.04.1 amd64 [installed,automatic]
```

ちゃんと noble-proposed からインストールされている。

```bash:ceph version
# ceph --version
ceph version 19.2.0 (16063ff2022298c9300e49a547a16ffda59baf13) squid (stable)
```

ceph version も `(dev)` ではなく `(stable)` になっている。


# 2024/10/16 追記（ceph 系の検索でたどり着いた人向けの補足）

`19.2.0-0ubuntu0.24.04.1` の cephadm にバグがあるんだか ceph の 19.2.0 stable にバグがあるんだか不明だが、bootstrap を実行するとちゃんと stable がインストールされるが、まともに動かない。

```
# ceph -s
  cluster:
    id:     544b6b46-8b6d-11ef-be90-bc2411bb8db5
    health: HEALTH_WARN
            failed to probe daemons or devices
            OSD count 0 < osd_pool_default_size 3
```

```
[WRN] CEPHADM_REFRESH_FAILED: failed to probe daemons or devices
    host HOGE `cephadm gather-facts` failed: cephadm exited with an error code: 1, stderr: Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/__main__.py", line 5579, in <module>
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/__main__.py", line 5567, in main
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/__main__.py", line 4639, in command_gather_facts
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/cephadmlib/host_facts.py", line 835, in dump
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/cephadmlib/host_facts.py", line 743, in kernel_security
  File "/var/lib/ceph/544b6b46-8b6d-11ef-be90-bc2411bb8db5/cephadm.a58127a8eed242cae13849ddbebcb9931d7a5410f406f2d264e3b1ed31d9605e/cephadmlib/host_facts.py", line 722, in _fetch_apparmor
ValueError: too many values to unpack (expected 2)
```

調べたら解決方法があるのかも知れないが、proposed な package で出たエラーをあまり頑張ってなんとかする気にもなれないので今回に関しては dev 版であろうと main package の cephadm を使うことにする。

## 2024/10/22 さらに追記

2024/10/17 にこのバージョンの ceph が updates にリリースされていたのだが、バグもそのまま残っていた。
調べたところ、[AppArmor の profile にスペースが含まれる場合があり、そのせいで cephadm が正常に動かなくなる](https://bugs.launchpad.net/apparmor/+bug/2062941)らしい。
[修正は既にマージされてるらしく](https://github.com/ceph/ceph/pull/58542)、この修正を含んだバージョンが proposed になったらこの記事がまた役に立つかも知れない。

# 感想

意外と情報が出てこない、というか Desktop 版のインストール方法ばかり出てくるのと、そもそも優先度があるということを知らなくて（全部のリポジトリ書いておけば最新がインストールされると信じ切ってた）随分右往左往してしまったが、これで今後 proposed な package をインストールしたくなっても困らなくなったのは良い収穫だった。