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


18

私はコンパイルすることにより、Ubuntuの14.04でPython 2.7.9をインストールし、そのソースによって、.configremake、とmake altinstallmake altinstallデフォルトのPython 2.7.6を上書きしたくないためです。私が自己インストールした2.7.9はに/usr/local/bin/python2.7あり、他の多くのファイルはの下にある他のディレクトリにあり/usr/localます。ソースインストールパッケージのREADMEから:

UnixおよびMacシステムでは、同じインストールプレフィックス(configureスクリプトのプレフィックス引数)を使用して複数のバージョンの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をアンインストールします。

    しかし、debファイルを作成するとき、for checkinstallとforで異なる方法を実行するかどうか、またどのように実行するかはわかりません。私が試したのは: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をインストールするとインストールプロセスが複製されるように、debを作成するにはどうすればよいmake altinstallでしょうか。

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

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


Pythonはそれほど多くの場所にインストールされません。ファイルを手動で削除するだけです。
ファヒムミタ

おかげで、それらの多くの場所は何ですか?
ティム

バイナリパッケージの1つを見てください。それはの/usr/local代わりに使用されることを除いて、本質的に同じ場所だと思います/usrdpkg -L python2.7およびdpkg -L python2.7-minimal。そして、何のために必要2.7.9ですか?
ファヒムミタ

デフォルトでピップを持っていると聞きました。しかし、インストール後、pipが見つかりません。
ティム

pipをインストールできapt-get install python-pipます。
ファヒムミタ

回答:


20

次のコマンドは、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

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

IMOこの問題を解決する最善の方法は、それが1つにならないようにすることです。他の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'

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

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


2
/usr/local/lib/python2.7を削除しないでください!pipによってインストールされたすべてのグローバルPythonモジュールは、/ usr / local / lib / python2.7 / dist-packagesにあります。それらのモジュールはすべて壊れます!
-abhaga

2
あなたがしてインストールしないでください@abhaga pipの外virtualenv任意の Linuxのインストール
Anthonの

また、ファイルとディレクトリを手動で削除してパッケージをアンインストールしないでください。:)これらは良い習慣であり、それらを破る必要がある場合が常にあります。ただし、そのディレクトリを削除するのは安全ではないことを知っておくことが重要です。
-abhaga

私のCentOS7には、いくつかの異なる点があります。2. manファイルは/usr/local/share/man/man1/python2.7.1です。3.別のファイル:/usr/local/bin/python2.7-config
Bin S

7

@Anthonのrmリストから始めて、@ bin-sのアドバイスを適用して新しいファイルを検索すると、Python-3.6.6(ソースからインストールされていたmake altinstall)を完全に消去するためにこのbashスクリプトを思い付きました。

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.

注意して使用してください(例:-Irm cmdでオプションを追加して、各キルを確認します)。


非常に素晴らしい。python3と入力してTabキーを押すと、python3.Xが表示されない
プロメテウス

1

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

find /usr/local/ -type f -newer <some latest old file>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.