WSL2のUbuntuにdebパッケージをインストールする
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文字列として処理させます。
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