make installしたプログラム等をさくっと削除する方法まとめ。
- ソースコードからインストールしたアプリをアンインストールしたいときどうするか
- Autotools(./configure && make && sudo make install)
- CMake(mkdir build && cmake .. && make && sudo make install)
- QMake(Qt、qmake && make && sudo make install)
- Python(setuptools)、(sudo python setup.py install)
- Meson(mkdir build && meson . build && ninja && sudo ninja install)
- 最後に
ソースコードからインストールしたアプリをアンインストールしたいときどうするか
私は、よく個人的なこだわりでLinuxにアプリをインストールするときにソースコードからビルド、インストールします。←結構変わり者なんですが。
アンインストールするときにはビルドシステムによってコマンドが異なります。そのため、一言では言えません。 そういうこともあり、ビルドシステム(AutotoolsやCMake)ごとにアンインストール方法を以下のようにまとめました。
ビルドシステム名(インストールするために使ったコマンド) 方法、解説、アドバイス コマンド
Autotools(./configure && make && sudo make install)
これが一番簡単かな??Makefileのあるディレクトリで以下のコマンドを実行するだけです。
sudo make uninstall
CMake(mkdir build && cmake .. && make && sudo make install)
インストールしたファイルのリストがビルドディレクトリの中(今回の場合は、build)にinstall_manifest.txtに書き出されます。よって、
xargs sudo rm -rf < install_manifest.txt
この一発でアンインストール完了です。 rmコマンドの引数として、インストールしたファイルのリストを渡します。
QMake(Qt、qmake && make && sudo make install)
QMakeは、Qt専用のビルドシステムで、Qtのプロジェクトファイル(.pro)からMakefileを生成します。QMakeによって、アプリをインストールした場合、以下のコマンドでアンインストールできます。
sudo make uninstall
Autotoolsなどと同じようにやれば問題ありません。なお、環境によっては処理中に、「ディレクトリは空ではありません」などのメッセージが表示されますが、アンインストールはできていますので、完全無視でOKです。
Python(setuptools)、(sudo python setup.py install)
まず、インストール時に”--record install.log”オプションを書きます。なお、すでにオプション無しでインストールしてしまっている場合でも、もう一度recordオプションをつけて実行すれば問題ありません。
sudo python setup.py install --record install.log
これにより、インストールされたファイルのリストが、install.logに書き出されます。ですから、CMakeと同じ要領で、
xargs sudo rm -rf < install.log
を実行して、アンインストールします。
Meson(mkdir build && meson . build && ninja && sudo ninja install)
Mesonは最近良くGNOME系で目にするビルドシステムです。これは、AutotoolsとCMakeを合体させたようなシステムですね。 アンインストール方法は、ビルドディレクトリにて、
sudo ninja uninstall
最後に
また、新たなことが分かり次第、追記していきます。皆様のお役に立てることを願っております。
参考(ありがとうございました)
uninstallation - CMake support "make uninstall"? - Stack Overflow
Ubuntu18.04 LTSにQt5をインストールしよう!
目次
はじめに、Qtとは?
Qtとは、クロスプラットフォームのGUIフレームワークです。Linuxで書いたプログラムを、WindowsやMacでもビルドし直すだけで同じように動かしたいっ!そのような方におすすめです。
Ubuntu 20.04 LTSでのQt5のインストールについて
Ubuntu 20.04のリポジトリにも18.04 LTSと同じqt5-defaultパッケージなどが存在します。こちらと同じ手順でインストール可能です。また、Qt6がリリースされました。これからのUbuntuでは、Qt6が主流になっていくことと思われます。
Qt5をインストールしよう!
Qt5は、公式ウェブサイト(http://download.qt.io/)からもダウンロードが可能ですが、パスを通したり権限を変更したりと色々と面倒なところがあるため、素早くという目的で、今回はパッケージから導入したいと思います。 それでは、最初にアップデートから行います。
sudo apt update && sudo apt upgrade -y
終了したら以下のコマンドを実行してください。
sudo apt install qtbase5-dev qttools5-dev-tools qt5-default
見事、これで、Qtのベースライブラリのインストールが完了しました。パッケージのおかげで簡単ですね。
QtCreatorをインストールしよう!
これで、Qtはインストールされたわけですが、Qtのプロジェクトを作成するのはIDEなしでは少し大変なんです。 こういうときに役立つのが、QtCreator(Qtプログラミング用のIDE)です。QtCreatorもパッケージとして提供されているので、以下のコマンドでインストールできます。
sudo apt install qtcreator
動作確認をしよう!
お疲れ様でした。最後に、私が用意したHello World GUIで動作確認をしましょう。このコマンドを実行し、以下のようなウィンドウが表示されたら成功です!
リポジトリURL:https://github.com/enjoysoftware/helloworld-gui.git
git clone https://github.com/enjoysoftware/helloworld-gui.git cd helloworld-gui qmake make app/helloworld-gui
Ubuntu 18.04でdocker-composeがImportErrorが発生して動かなくなったら
docker-composeを実行するとImportError: No module named backports.ssl_match_hostname
sudo docker-compose up -d
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in
load_entry_point('docker-compose==1.17.1', 'console_scripts', 'docker-compose')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/dist-packages/compose/cli/main.py", line 17, in
from . import errors
File "/usr/lib/python2.7/dist-packages/compose/cli/errors.py", line 11, in
from docker.errors import APIError
File "/usr/lib/python2.7/dist-packages/docker/__init__.py", line 2, in
from .api import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/__init__.py", line 2, in
from .client import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/client.py", line 11, in
from .build import BuildApiMixin
File "/usr/lib/python2.7/dist-packages/docker/api/build.py", line 9, in
from .. import utils
File "/usr/lib/python2.7/dist-packages/docker/utils/__init__.py", line 2, in
from .build import tar, exclude_paths
File "/usr/lib/python2.7/dist-packages/docker/utils/build.py", line 5, in
from .utils import create_archive
File "/usr/lib/python2.7/dist-packages/docker/utils/utils.py", line 18, in
from .. import tls
File "/usr/lib/python2.7/dist-packages/docker/tls.py", line 5, in
from .transport import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/__init__.py", line 3, in
from .ssladapter import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 21, in
from backports.ssl_match_hostname import match_hostname
ImportError: No module named backports.ssl_match_hostname
pi@pi-M730SR:~/Desktop/wordpress-docker-compose$ docker-compose -v
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in
load_entry_point('docker-compose==1.17.1', 'console_scripts', 'docker-compose')()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 480, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in load
return self.resolve()
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2330, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python2.7/dist-packages/compose/cli/main.py", line 17, in
from . import errors
File "/usr/lib/python2.7/dist-packages/compose/cli/errors.py", line 11, in
from docker.errors import APIError
File "/usr/lib/python2.7/dist-packages/docker/__init__.py", line 2, in
from .api import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/__init__.py", line 2, in
from .client import APIClient
File "/usr/lib/python2.7/dist-packages/docker/api/client.py", line 11, in
from .build import BuildApiMixin
File "/usr/lib/python2.7/dist-packages/docker/api/build.py", line 9, in
from .. import utils
File "/usr/lib/python2.7/dist-packages/docker/utils/__init__.py", line 2, in
from .build import tar, exclude_paths
File "/usr/lib/python2.7/dist-packages/docker/utils/build.py", line 5, in
from .utils import create_archive
File "/usr/lib/python2.7/dist-packages/docker/utils/utils.py", line 18, in
from .. import tls
File "/usr/lib/python2.7/dist-packages/docker/tls.py", line 5, in
from .transport import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/__init__.py", line 3, in
from .ssladapter import SSLAdapter
File "/usr/lib/python2.7/dist-packages/docker/transport/ssladapter.py", line 21, in
from backports.ssl_match_hostname import match_hostname
ImportError: No module named backports.ssl_match_hostname
...は?
しかし、aptによるとbackports.ssl_match_hostnameはすでにインストールされていました。
解決策(詳細な原因は不明です)
sudo pycompile -p python-backports.ssl-match-hostnameこのコマンドを実行するとモジュールの不足しているファイルが作成されます。
これで最初のコマンドがを動かし、直ったことを確認します。
参考(ありがとうございました)
Qt リンギストを使った翻訳のサンプルを作りました
ソースコードはGitHubで入手可能です。
https://github.com/enjoysoftware/Qt-Translate-Sample