web-dev-qa-db-ja.com

アンインストールPythonソースをコンパイルしてインストールしますか?

Python 2.7.9をUbuntu 14.04にコンパイルしてインストールしました そのソース.configremake、およびmake altinstallをコンパイルして。make altinstallは、デフォルトのPython 2.7.6を上書きしたくないためです。自分でインストールした2.7.9は/usr/local/bin/python2.7にあり、他の多くのファイルは/usr/localの下のディレクトリ。ソースインストールパッケージの [〜#〜] readme [〜#〜] から:

UnixおよびMacシステムで、同じインストールプレフィックス(configureスクリプトの--prefix引数)を使用してPythonの複数のバージョンをインストールする場合は、プライマリpython実行可能ファイルは、別のバージョンのインストールによって上書きされません。

「make altinstall」を使用してインストールされたすべてのファイルとディレクトリには、メジャーバージョンとマイナーバージョンが含まれているため、共存できます。 「make install」は、$ {prefix} /bin/pythonX.Yを参照する$ {prefix}/bin/pythonも作成します。

同じプレフィックスを使用して複数のバージョンをインストールする場合は、どのバージョン(ある場合)を「プライマリ」バージョンにするかを決定する必要があります。 「make install」を使用してそのバージョンをインストールします。 「make altinstall」を使用して他のすべてのバージョンをインストールします。

たとえば、Python 2.5、2.6、3.0を2.6がプライマリバージョンとしてインストールする場合、2.6ビルドディレクトリで「make install」を実行し、その他のディレクトリで「make altinstall」を実行します。 。

次に、自分でインストールした2.7.9をアンインストールします。

  1. 幸いにも私はまだソースコードを持っていますが、残念ながら Makefile にはアンインストールセクションがありません

    $ Sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
    
  2. それから私は別の方法を試しました:最初にソースとコンパイルからdebを作成し、debをインストールし(うまくいけばmake altinstallからインストールされたファイルを上書きして)、次にdebをアンインストールします。

    しかし、checkinstallでdebファイルを作成するとき、make altinstallmake installを異なる方法でどのように実行する必要があるのか​​わかりません。私が試したのは:

    $ checkinstall altinstall
    
    ...
    
    Installing with altinstall...
    
    ========================= Installation results ===========================
    /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
    
    ...
    

    Debをインストールしてmake altinstallのインストールプロセスを複製できるように、debを作成するにはどうすればよいですか。

  3. または、私のpython 2.7.9をアンインストールする方法は何ですか?

注:最初のリンクのソースパッケージには、READMEの他にsetup.pyinstall-shもあります。

20
Tim

次のコマンドは、make altinstall- ed pythonを削除します。

rm -f /usr/local/bin/python2.7
rm -f /usr/local/bin/pip2.7
rm -f /usr/local/bin/pydoc
rm -rf /usr/local/bin/include/python2.7
rm -f /usr/local/lib/libpython2.7.a
rm -rf /usr/local/lib/python2.7

あなたもする必要があるかもしれません

rm -f /usr/local/share/man/python2.7.1
rm -rf /usr/local/lib/pkgconfig
rm -f /usr/local/bin/idle
rm -f /usr/local/bin/easy_install-2.7

「システムpython」がインストールしたものと異なるmajor.minor番号を持っている場合、make altinstallはうまく機能しましたが、マイクロ番号(3番目の位置)のみが異なる場合、うまく機能しません。その数はインストールされたバイナリから除外され、2つのバージョンのpythonX.Yになります。これは常に問題でしたが、2.7.Xに基づくシステムユーティリティで配布が出荷されると、2.7がPython2シリーズの最後になるはずなので、この問題はさらに深刻になります。

IMOこの問題を解決する最善のアプローチは、この問題が発生しないようにすることです。他のpythonが使用していないディレクトリにインストールするようにpythonを構成します。私のシステムでは/opt/python/X.Y.Zの下にあります。

そこにインストールされているPythonのいずれかを使用するには、[virualenv][1]を使用して新しい環境を作成します。

virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate

または[virtualenvwrapper][2]を使用します。使用しているシリーズの最新バージョンのエイリアスがいくつかあります。

複数のバージョンをテストするためにtoxを使用している場合(する必要があります)、次のエイリアスは、さまざまなバージョンを見つけるのに役立ちます。

alias tox='PATH=/opt/python/2.7.9/bin:/opt/python/2.6.9/bin:/opt/python/3.4.3/bin:/opt/python/3.3.6/bin:/opt/python/3.5-dev/bin:$PATH tox'

(これらは現在最新バージョンです。/opt/python/2.7から最新の/opt/python/2.7.9へのリンクを維持することで、わずかに異なる設定を使用しています。他のマイナー番号についても、ダウンロード、ビルド、インストールのプロセス内で新しいpythonバージョン)

これらのインストールが直接使用されることはありません。これらは常にvirtualenv環境の基礎としてのみ使用されるため、通常のPATHにないことは気にしません。

21
Anthon

@Anthonのrmリストから始めて、@ bin-sアドバイスを適用して新しいファイルを検索し、このbashスクリプトを思いついて、Python-3.6.6( make altinstall)のソース:

prefix='/usr/local/'
pyver='3.6'

rm -rf \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/include/python${pyver} \
    ${prefix}lib/libpython${pyver}.a \
    ${prefix}lib/python${pyver} \
    ${prefix}lib/pkgconfig/python-${pyver}.pc \
    ${prefix}lib/libpython${pyver}m.a \
    ${prefix}bin/python${pyver}m \
    ${prefix}bin/2to3-${pyver} \
    ${prefix}bin/python${pyver}m-config \
    ${prefix}bin/idle${pyver} \
    ${prefix}bin/pydoc${pyver} \
    ${prefix}bin/pyvenv-${pyver} \
    ${prefix}share/man/man1/python${pyver}.1 \
    ${prefix}include/python${pyver}m
    ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

注意して使用してください(たとえば、rmコマンドで-Iオプションを追加して、各強制終了を確認します)。

10
ankostis

通常、すべてのファイルはほぼ1分でインストールされます。 「検索」を使用して、インストールされているすべてのファイルをほぼ同時にチェックしてから、手動で「rm」することができます。お役に立てれば幸いです。

find /usr/local/ -type f -newer <some latest old file>
1
Bin S

私は次のようにしてしまいました:

  1. 再構築してインストールPythonカスタムプレフィックスを使用してアンインストールする場合は、_$HOME/opt/Python-3.8.0_としましょう:_tar tJf Python-3.8.0.tar.xz && cd Python-3.8.0 && ./configure --prefix $HOME/opt/Python-3.8.0 && make && make install_
  2. cd $HOME/opt/Python-3.8.0 && find * -type f | Perl -pe's(^)(/usr/)' | Sudo xargs rm
  3. _rm -rf ~/opt/Python-3.8.0_
1