はじめに
この手法はあくまでもワークアラウンドです。パッケージの依存関係を意図的に汚染している点にご注意ください。
2000年から稼働を開始したFolding@homeという名前の分散コンピューティングプロジェクトがあります。
このプロジェクトは、ある特定のタンパク質がどのような立体構造に折りたたまれるか1、という課題を解決するために全世界の余剰計算資源を使って分子動力学シミュレーションを走らせるものです。
このプロジェクトの一部には、昨今世間を悪い意味で賑わせている新型コロナウィルス(SARS-CoV-2)に対する取り組みも含まれており、2020年4月初頭においても急激に参加者が増えている現状です2。
一方で、Linux環境用のFolding@homeクライアントは、サポート終了したPython2系の依存関係を含んでおり、Ubuntu 16.04 LTS/18.04 LTS以外のUbuntu環境3において、GUI用のパッケージ(FAHControl)が上手くインストールできない問題が発生しています。
クライアントのコアパッケージ部分であるFAHClientのみをインストールし、ホームネットワークのWindows等からリモートアクセスする形態が一番安全な策ではあるのですが、諸般の事情によりそのような回避策が使えない、もしくはどうしてもローカル上でGUIを表示したい場合もあるでしょう。
したがって今回、debパッケージングにおけるフェイクパッケージという手法を用いてこの問題を回避します。
TL; DR
$ cd ./SOMEWHERE/TO/WORK/DIRECTORY
# apt install equivs
$ equivs-control python-gnome2
$ vi python-gnome2 # L9 -> "Package: python-gnome2", L10 -> "Version: 2.28.1", L18 comment-out
$ equivs-build python-gnome2
# apt install ./python-gnome2*.deb
# apt install ./YOUR/DOWNLOAD/DIR/fahcontrol*.deb
問題と解決
予めfahclient*.deb
, fahcontrol*.deb
, fahviewer*.deb
はダウンロードしておく。
# apt update && apt upgrade -y # いつもの
# apt install ./fahclient*.deb # これは成功する
# # apt install ./fahcontrol*.deb # これが失敗する、失敗すると面倒なので実行しない
依存関係の解決に失敗するのはpython-gnome2
という名前のパッケージがUbuntuのサポートから外されてしまっているため。
実はこいつがなくても(見た目上)FAHControlは動作する。
したがって、パッケージマネージャに**python-gnome2
がインストールされている**と思い込ませるだけで問題ない。
この作業に役立つのがequivs
パッケージ。
# apt install equivs
$ equivs-control python-gnome2 # カレントディレクトリにpython-gnome2ファイルが生成される
$ vi python-gnome2 # 編集(後述)
$ equivs-build python-gnome2 # カレントディレクトリにフェイクパッケージpython-gnome2*.debが生成される
# apt install ./python-gnome2*.deb
# apt install ./fahcontrol*.deb ./fahviewer*.deb # work well!
python-gnome2の要編集ポイントは以下の通り。
- L9:
Package: <package name; defaults to equivs-dummy>
->Package: python-gnome2
- L10: コメントアウト ->
Version: 2.28.1
- 念の為16.04/18.04に準拠したバージョン4にしておく
- L11: コメントアウト ->
Maintainer: Your Name <yourname@example.com>
- ここは趣味、どっちでも
- L18: コメントアウト ->
Architecture: all
- L27-:
Description: A fake package to make FAHControl Install
- ってことが後から見て分かればいいので文面はご自由に
あとがき
Debianあんまりわからないので間違いあったら指摘してください。
参考
Debian 管理者ハンドブック - 15.2. 最初のパッケージのビルド
StackExchange - How to install folding at home (Folding@home FAHControl) on Ubuntu 19.10