Arch Linuxで正規表現に一致するインストールされているすべてのパッケージを正しく削除する方法は?

Arch Linuxで正規表現に一致するインストールされているすべてのパッケージを正しく削除する方法は?

次のコマンドを使用してTeX Live 2023をインストールしました。スクリプトArch Linuxリポジトリの代わりに。しかし、他のソフトウェアをインストールすると、一部のTeX Liveパッケージがとにかく私のデスクトップに移動して問題を引き起こしました。だからすべてのパッケージを削除してみましたtexlive

texliveシステムにインストールされているパッケージのリストです。

$ sudo pacman -Qs texlive*
local/texlive-basic 2023.66594-19 (texlive)
    TeX Live - Essential programs and files
local/texlive-bin 2023.66984-16
    TeX Live binaries
local/texlive-binextra 2023.66594-19 (texlive)
    TeX Live - TeX auxiliary programs
local/texlive-context 2023.66594-19 (texlive)
    TeX Live - ConTeXt and packages
local/texlive-fontsextra 2023.66594-19 (texlive)
    TeX Live - Additional fonts
local/texlive-fontsrecommended 2023.66594-19 (texlive)
    TeX Live - Recommended fonts
local/texlive-fontutils 2023.66594-19 (texlive)
    TeX Live - Graphics and font utilities
local/texlive-games 2023.66594-19 (texlive)
    TeX Live - Games typesetting
local/texlive-langcjk 2023.66594-19 (texlive-lang)
    TeX Live - Chinese/Japanese/Korean (base)
local/texlive-langenglish 2023.66594-19 (texlive-lang)
    TeX Live - US and UK English
local/texlive-langgreek 2023.66594-19 (texlive-lang)
    TeX Live - Greek
local/texlive-langjapanese 2023.66594-19 (texlive-lang)
    TeX Live - Japanese
local/texlive-langkorean 2023.66594-19 (texlive-lang)
    TeX Live - Korean
local/texlive-langother 2023.66594-19 (texlive-lang)
    TeX Live - Other languages
local/texlive-latex 2023.66594-19 (texlive)
    TeX Live - LaTeX fundamental packages
local/texlive-latexextra 2023.66594-19 (texlive)
    TeX Live - LaTeX additional packages
local/texlive-latexrecommended 2023.66594-19 (texlive)
    TeX Live - LaTeX recommended packages
local/texlive-luatex 2023.66594-19 (texlive)
    TeX Live - LuaTeX packages
local/texlive-mathscience 2023.66594-19 (texlive)
    TeX Live - Mathematics, natural sciences, computer science packages
local/texlive-metapost 2023.66594-19 (texlive)
    TeX Live - MetaPost and Metafont packages
local/texlive-music 2023.66594-19 (texlive)
    TeX Live - Music packages
local/texlive-pictures 2023.66594-19 (texlive)
    TeX Live - Graphics, pictures, diagrams
local/texlive-plaingeneric 2023.66594-19 (texlive)
    TeX Live - Plain (La)TeX packages
local/texlive-xetex 2023.66594-19 (texlive)
    TeX Live - XeTeX and packages

最初にデータを提供しようとしましたが、pacman -Sすべてのpacman -Rパッケージtexliveがインストールされていないため、進行しませんでした。

$ sudo pacman -R $(pacman -Ssq texlive*)
error: target not found: tectonic
error: target not found: texlive-bibtexextra
error: target not found: texlive-doc
error: target not found: texlive-formatsextra
error: target not found: texlive-humanities
error: target not found: texlive-langarabic
error: target not found: texlive-langchinese
error: target not found: texlive-langcyrillic
error: target not found: texlive-langczechslovak
error: target not found: texlive-langeuropean
error: target not found: texlive-langfrench
error: target not found: texlive-langgerman
error: target not found: texlive-langitalian
error: target not found: texlive-langpolish
error: target not found: texlive-langportuguese
error: target not found: texlive-langspanish
error: target not found: texlive-meta
error: target not found: texlive-pstricks
error: target not found: texlive-publishers

だから何とかフィルタリングする必要がありますpacman -Q。限られた知識とパラメータ拡張で何度も試みた後にgrepパッケージ名を抽出しました。

$ for i in $(sudo pacman -Qs texlive* | grep -Eo '^local/[[:alpha:]]+-[[:alpha:]]+')
do
    echo ${i:6}
done
texlive-basic
texlive-bin
texlive-binextra
texlive-context
texlive-fontsextra
texlive-fontsrecommended
texlive-fontutils
texlive-games
texlive-langcjk
texlive-langenglish
texlive-langgreek
texlive-langjapanese
texlive-langkorean
texlive-langother
texlive-latex
texlive-latexextra
texlive-latexrecommended
texlive-luatex
texlive-mathscience
texlive-metapost
texlive-music
texlive-pictures
texlive-plaingeneric
texlive-xetex

その後、コードを交換してecho実行します。sudo pacman -R

$ for i in $(sudo pacman -Qs texlive* | grep -Eo '^local/[[:alpha:]]+-[[:alpha:]]+')
do
    sudo pacman -R ${i:6}
done
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-binextra
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-context
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-fontsextra
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-fontsrecommended
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-fontutils
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-langcjk
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-langenglish
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-langgreek
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-langother
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-latex
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-luatex
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-metapost
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-pictures
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-plaingeneric
:: removing texlive-basic breaks dependency 'texlive-basic' required by texlive-xetex
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: removing texlive-bin breaks dependency 'texlive-bin' required by dvisvgm
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-basic
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-binextra
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-context
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-fontsextra
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-fontsrecommended
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-fontutils
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-games
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langcjk
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langenglish
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langgreek
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langjapanese
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langkorean
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-langother
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-latex
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-latexextra
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-latexrecommended
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-luatex
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-mathscience
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-metapost
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-music
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-pictures
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-plaingeneric
:: removing texlive-bin breaks dependency 'texlive-bin' required by texlive-xetex
checking dependencies...
:: python-matplotlib optionally requires texlive-binextra: usetex dependencies

Packages (1) texlive-binextra-2023.66594-19

Total Removed Size:  112.67 MiB

:: Do you want to remove these packages? [Y/n] y
:: Processing package changes...
(1/1) removing texlive-binextra                                 [##################################] 100%
:: Running post-transaction hooks...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating TeXLive filename database...
(3/3) Updating TeXLive format files...
Can't locate mktexlsr.pl in @INC (@INC entries checked: //tlpkg //texmf-dist/scripts/texlive /usr/lib/perl5/5.38/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/5.38/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/5.38/core_perl /usr/share/perl5/core_perl) at /usr/bin/fmtutil line 23.
BEGIN failed--compilation aborted at /usr/bin/fmtutil line 25.
error: command failed to execute correctly
checking dependencies...

Packages (1) texlive-context-2023.66594-19

Total Removed Size:  52.81 MiB

:: Do you want to remove these packages? [Y/n] y   
:: Processing package changes...
(1/1) removing texlive-context                                  [##################################] 100%
:: Running post-transaction hooks...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating TeXLive filename database...
(3/3) Updating TeXLive font maps...
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
updmap [ERROR]: The following map file(s) couldn't be found:
updmap [ERROR]:     dvips35.map (in builtin)
updmap [ERROR]:     pdftex35.map (in builtin)
updmap [ERROR]:     ps2pk35.map (in builtin)
updmap [ERROR]: Did you run mktexlsr?

    You can disable non-existent map entries using the option
      --syncwithtrees.

error: command failed to execute correctly
checking dependencies...

Packages (1) texlive-fontsextra-2023.66594-19

Total Removed Size:  1433.62 MiB

:: Do you want to remove these packages? [Y/n] y
:: Processing package changes...
(1/1) removing texlive-fontsextra                               [##################################] 100%
:: Running post-transaction hooks...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Updating TeXLive filename database...
(3/3) Updating TeXLive font maps...
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2158.
Use of uninitialized value $fn in concatenation (.) or string at /usr/bin/updmap line 2159.
updmap: open() failed: No such file or directory at /usr/bin/updmap line 2159.
updmap [ERROR]: The following map file(s) couldn't be found:
updmap [ERROR]:     dvips35.map (in builtin)
updmap [ERROR]:     pdftex35.map (in builtin)
updmap [ERROR]:     ps2pk35.map (in builtin)
updmap [ERROR]: Did you run mktexlsr?
...

削除するパッケージが互いに依存しているため、上記のコマンドを複数回実行する必要がありました。数回実行した後、texliveパッケージは完全に消えました。

$ sudo pacman -Qs texlive*

この場合はうまくいきますが、クエリに正規表現を使用し、再びgrepクエリに別の正規表現を使用するため、信頼できません。texliveパッケージ名に数字が含まれている場合、この方法は機能しません。単一の正規表現に一致するすべてのパッケージを消去し、pacman可能な場合にのみ使用するよりきれいな方法はありますか?各パッケージについて「はい」と答えずに削除できますか?

答え1

-Qこのオプションを使用すると、パッケージ名のみが一覧表示されますq。したがって、インストールされているパッケージのリストを提供する必要があります(私のシステムの出力はユーザーのシステムと異なる場合があります)。

$ pacman -Qsq 'texlive*'
texlive-basic
texlive-bin
texlive-fontsextra
texlive-langgreek
texlive-latex
texlive-latexextra
texlive-latexrecommended
texlive-pictures

ところで、'texlive*'引用符で囲まれた方法を確認してください。引用されていない内容は*シェルによって拡張されるため、これは重要です。今後呼び出されるため、pacman現在のディレクトリに一致するファイルまたはディレクトリがある場合は、引用符が付けられていない場合はそのファイルまたはディレクトリが渡されます。texlive*pacman

リストがあるので、削除するアイテムに依存するすべての依存関係とパッケージも削除する必要があります。そのため、次の削除オプションが必要ですman pacman

削除オプション(-Rに適用)

-c、--カスケード

すべてのターゲットパッケージと1つ以上のターゲットパッケージに依存するすべてのパッケージを削除します。これは再帰的であり、必要な可能性のある多くのパッケージを削除する可能性があるため、慎重に使用する必要があります。

-s、--再帰

(A) 他のパッケージに必要なく (B) ユーザーが明示的にインストールしていない場合は、すべての依存関係を含む指定された各ターゲットを削除します。これはbackward --sync操作と同様に再帰的で、孤児なしでクリーンなシステムを維持するのに役立ちます。条件(B)を省略するには、このオプションを2回渡します。

したがって、関連するすべてのパッケージを削除するには、次のようにします。

sudo pacman -Rcs $(pacman -Qsq 'texlive*')

私のシステムでは、次のようになります。

$ sudo pacman -Rcs $(pacman -Qsq 'texlive*')
checking dependencies...
:: evince optionally requires texlive-bin: DVI support
:: python-matplotlib optionally requires texlive-latexrecommended: usetex usage with pdflatex
:: python-sphinx optionally requires texlive-latexextra: for generation of PDF documentation
:: r optionally requires texlive-bin: latex sty files
:: xournalpp optionally requires texlive-latexextra: LaTeX package

Packages (15) dvisvgm-3.1.1-1  ffcall-2.4-2  fontawesome.sty-4.6.3.2-1  libsigsegv-2.14-2  otf-font-awesome-6.4.2-1
              t1lib-5.1.2-8  zziplib-0.13.72-2  texlive-basic-2023.66594-19  texlive-bin-2023.66984-16
              texlive-fontsextra-2023.66594-19  texlive-langgreek-2023.66594-19  texlive-latex-2023.66594-19
              texlive-latexextra-2023.66594-19  texlive-latexrecommended-2023.66594-19  texlive-pictures-2023.66594-19

Total Removed Size:  1786.02 MiB

関連情報