🪟

WSL2のUbuntuにdebパッケージをインストールする

2025/01/31に公開

WSL2のUbuntuへdebパッケージをインストールする際、愚直にsudo apt install ./hoge.devしたら権限や依存関係周りでハマった上に、sudo gdebi hoge.devを使ったら今度はなんかWarning出て気持ち悪かったので、上手くいった手順の記録を残しておきます。

環境

  • Windows 11 Pro 24H2
  • WSL2 (Ubuntu 24.04.1 LTS)
  • gdebi 0.9.5.7+nmu7

手順

gdebiのインストール

gdebiは、debパッケージのローカルインストール時に依存関係を自動解決してくれるソフトウェアです。
まずは、gdebiをaptからインストールします。

sudo apt update
sudo apt install gdebi

gdebiの修正

自身の環境では、上記コマンドでインストールされたgdebiのバージョンは0.9.5.7+nmu7だったのですが、インストールされているPythonのバージョンによっては、gdebi実行時に以下のWarningが発生することがあるようです。

/usr/bin/gdebi:113: SyntaxWarning: invalid escape sequence '\S'
  c = findall("[[(](\S+)/\S+[])]", msg)[0].lower()

これは、Python 3.6の仕様変更によるもので、環境にインストールされているPythonが3.6以降の場合で発生します。ちなみに、筆者のWSL2上のUbuntuに初期インストールされていたPythonバージョンは3.12.3でした。
Pythonの文字列操作ではなく、正規表現のエスケープなのでWarningが発生していても動作はするはずですが、実行のたびにWarningが出てくるのもうれしくないので、直接gdebiのスクリプトを修正してしまいましょう。

gdebiは /usr/bin にあるように見えますが、ls-lしてみると実体は/usr/share/gdebiにあるようです。

cd /usr/share/gdebi

してから、llで権限を確認すると、-rwxr-xr-xになっているので、

sudo chmod 777 gdebi

しておきます。

その後、適当なエディタでこれを開き、該当の文字列の前に r を入力して、raw文字列として処理させます。

/usr/share/gdebi/gdebi
    try:
-        c = findall("[[(](\S+)/\S+[])]", msg)[0].lower()
+        c = findall(r"[[(](\S+)/\S+[])]", msg)[0].lower()
    except IndexError:
        c = "y"

最後に、

sudo chmod 755 gdebi

して、パーミッションをもとに戻しておきます。

これで、実行時にうるさいWarningが発生しなくなるはずです。

debパッケージのインストール

sudo gdebi hoge.deb

以上です

Discussion