コンパイルされたソースからインストールされたPythonを削除しますか?

コンパイルされたソースからインストールされたPythonを削除しますか?

コンパイルし、Ubuntu 14.04にPython 2.7.9をインストールしました。その起源、、、、および。.configre​これは基本的なPython 2.7.6を上書きしたくないからです。私がインストールした2.7.9とは異なるディレクトリの他の多くのファイルは。makemake altinstallmake altinstall/usr/local/bin/python2.7/usr/local閲覧ファイルソースコードインストールパッケージから:

UnixとMacシステムで同じインストールプレフィックス(設定スクリプトの--prefix引数)を使用して複数のバージョンのPythonをインストールする場合は、異なるバージョンのインストールでデフォルトのPython実行可能ファイルを上書きしないように注意する必要があります。

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

同じプレフィックスを使用して複数のバージョンをインストールする場合は、どのバージョン(存在する場合)が「マスター」バージョンであるかを判断する必要があります。このバージョンをインストールするには、「make install」を使用してください。他のすべてのバージョンをインストールするには、「make altinstall」を使用してください。

たとえば、2.6がメジャーバージョンのPython 2.5、2.6、および3.0をインストールするには、2.6ビルドディレクトリで「make install」を実行し、別のディレクトリで「make altinstall」を実行します。

今すぐインストールした2.7.9を削除したいと思います。

  1. 幸いなことに、まだソースコードは残っていますが、残念ながら ファイルの生成除去部分なし

    $ sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
    
  2. それから別のアプローチを試しました。まず、ソースからdebを作成してコンパイルし、debをインストールしてから(インストールファイルを上書きしてくださいmake altinstall)、debを削除します。

    しかし、checkinstallmake 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.py注: を除く最初のリンクのソースコードパッケージですinstall-shREADME

答え1

次のコマンドは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/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」がインストールしたプライマリ番号とセカンダリ番号と異なる場合は効果がありましたが、make altinstallマイクロ番号(3番目の場所)だけが異なる場合は正しく動作しません。この番号はインストールされたバイナリから除外され、2つのバージョンのpythonX.Yになります。これは常に問題となっていますが、2.7がPython2シリーズの最後のバージョンと見なされたため、ディストリビューションは2.7.Xベースのシステムユーティリティのリリースを開始し、さらに深刻になりました。

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(現在は最新バージョンです。新しいPythonバージョンをダウンロード、ビルド、インストールする際には、最新バージョンと他の/opt/python/2.7.9マイナーバージョンのリンクを維持して少し異なる設定を使用します)

これらのインストールは直接使用されません。それらは常に環境の基礎としてのみ使用されるため、virtualenv通常のパスにない場合でも構いません。

答え2

@Anthonのリストから始めて、@bin-s提案を適用して最新のファイルを検索し、Python-3.6.6(すでにsourceからインストールされている)を完全にクリーンrmアップするために、次のbashスクリプトを考えました。make altinstall

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

rm -rf \
    $HOME/.local/lib/Python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/python${pyver}-config \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${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
rm -rI ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

注意して使用してください(たとえば、すべてのキルを確認するために-Iコマンドにオプションを追加してくださいrm)。

答え3

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

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

答え4

私は最終的に次のことをしました。

  1. 次のように、カスタムプレフィックスを使用して削除するPythonを再構築してインストールします$HOME/opt/Python-3.8.0tar 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

関連情報