Python 2.7.9をUbuntu 14.04にコンパイルしてインストールしました そのソース 、.configre
、make
、および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をアンインストールします。
幸いにも私はまだソースコードを持っていますが、残念ながら Makefile にはアンインストールセクションがありません
$ Sudo make uninstall
make: *** No rule to make target `uninstall'. Stop.
それから私は別の方法を試しました:最初にソースとコンパイルからdebを作成し、debをインストールし(うまくいけばmake altinstall
からインストールされたファイルを上書きして)、次にdebをアンインストールします。
しかし、checkinstall
でdebファイルを作成するとき、make altinstall
とmake 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を作成するにはどうすればよいですか。
または、私のpython 2.7.9をアンインストールする方法は何ですか?
注:最初のリンクのソースパッケージには、README
の他にsetup.py
、install-sh
もあります。
次のコマンドは、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にないことは気にしません。
@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
オプションを追加して、各強制終了を確認します)。
通常、すべてのファイルはほぼ1分でインストールされます。 「検索」を使用して、インストールされているすべてのファイルをほぼ同時にチェックしてから、手動で「rm」することができます。お役に立てれば幸いです。
find /usr/local/ -type f -newer <some latest old file>
私は次のようにしてしまいました:
$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
_cd $HOME/opt/Python-3.8.0 && find * -type f | Perl -pe's(^)(/usr/)' | Sudo xargs rm
rm -rf ~/opt/Python-3.8.0
_