kaynak derleme tarafından yüklü Python kaldırmak?


18

Ben derleyerek Ubuntu 14.04 üzerinde Python 2.7.9 yüklü kaynağını tarafından, .configre, make, ve make altinstall. make altinstallçünkü varsayılan Python 2.7.6'nın üzerine yazmak istemiyorum. Kendi yüklediğim 2.7.9 içinde /usr/local/bin/python2.7ve diğer dizinlerde birçok dosya altında /usr/local. Gönderen README kaynak yükleme paketinde:

Unix ve Mac sistemlerinde, aynı yükleme önekini (- yapılandırma komut dosyasına ön-argüman olarak) kullanarak Python'un birden çok sürümünü kurmayı düşünüyorsanız, birincil python çalıştırıcınızın farklı bir sürümün üzerine yazılmamasına dikkat etmelisiniz.

"Make altinstall" kullanılarak yüklenen tüm dosyalar ve dizinler ana ve küçük sürümleri içerir ve böylece yan yana yaşayabilir. "make install" ayrıca $ {prefix} /bin/pythonX.Y olan $ {prefix} / bin / python oluşturur.

Aynı öneki kullanarak birden çok sürüm yüklemeyi düşünüyorsanız, hangi sürümün (varsa) "birincil" sürümünüz olduğuna karar vermelisiniz. "Make install" kullanarak bu sürümü yükleyin. "Make altinstall" ı kullanarak diğer tüm sürümleri yükleyin.

Örneğin, Python 2.5, 2.6 ve 3.0'ı 2.6 birincil sürüm olacak şekilde yüklemek isterseniz, 2.6 derleme dizininizde "make install" ve diğerlerinde "altinstall" yapmalısınız.

Şimdi kendi yüklediğim 2.7.9 sürümünü kaldırmak istiyorum.

  1. Neyse ki hala kaynak kodum var, ama ne yazık ki, Makefile kaldırma bölümü yok

    $ sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
  2. Sonra başka bir yol denedim: önce kaynak ve derleme bir hata oluşturmak, deb yükleyin (umarım yüklü dosyaları üzerine yazarak make altinstall) ve sonra deb kaldırmak.

    Ben tarafından deb dosyası oluşturmak Ama checkinstallemin eğer ben için farklı yapmalıyım, nasıl ben make altinstalliçin gelen make install. Ne denedim:

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

    Ben deb yükleme yükleme işlemini çoğaltacak böylece nasıl bir deb oluşturabilirim acaba make altinstall?

  3. Veya python 2.7.9'u kaldırmanın yolu nedir?

Not: İlk linkte kaynak paketi de vardır setup.py, install-shüstelik README.


Python pek çok yere kurulmuyor. Dosyaları el ile kaldırırım.
Faheem Mitha

teşekkürler. o zamanlar o kadar çok yer değil mi?
Tüm

İkili paketlerden birine göz atın. Aslında aynı yerler, sanırım, /usr/localbunun yerine kullanılması dışında /usr. dpkg -L python2.7ve dpkg -L python2.7-minimal. Ve neye ihtiyacın var 2.7.9?
Faheem Mitha

Varsayılan olarak pip olduğunu duydum. Ama yükledikten sonra pip olduğunu görmüyorum.
Tüm

Pip yükleyebilirsiniz apt-get install python-pip.
Faheem Mitha

Yanıtlar:


20

Aşağıdaki komutlar make altinstall-ed python'unuzu kaldıracaktır :

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

Ayrıca yapmanız gerekebilir

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"Sistem python" yüklediğinizden farklı bir major.minor numarası varsa bana iyi hizmet etmesine rağmen , sadece mikro sayı (üçüncü konum) farklıysa o kadar iyi çalışmaz. Bu sayı kurulu olan ikili dosyadan hariç tutulur ve iki sürüm pythonX.Y ile sonuçlanır. Bu her zaman bir sorundu, ancak dağıtımlar 2.7.X tabanlı sistem yardımcı programlarıyla gönderilmeye başladıktan sonra, 2.7'nin Python2 serisinin sonuncusu olması gerektiği için bu sorun daha şiddetliydi.

IMO bu sorunu çözmek için en iyi yaklaşım bir haline gelmesini önlemek: python yapılandırmak için başka bir python tarafından kullanılmayan bir dizine yükleyin. Benim sistemime giriyorlar /opt/python/X.Y.Z.

Oraya kurulu Python'lardan herhangi birini kullanmak [virualenv][1]için yeni bir ortam oluşturmak için kullanırsınız :

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

veya kullanın [virtualenvwrapper][2]. Çalıştığım serinin en son sürümleri için bazı takma adlar var.

Birden toxçok sürüme karşı test etmek için kullanıyorsanız (yapmanız gerekir) aşağıdaki takma ad, çeşitli sürümü bulmasına yardımcı olacaktır:

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'

(bunlar şu anda en son sürümler, yeni bir python sürümünü indirme, oluşturma ve yükleme işlemi /opt/python/2.7sırasında en /opt/python/2.7.9sondan ve diğer küçük sayılar için bağlantıları koruyarak biraz farklı bir kurulum kullanıyorum)

Bu yüklemeler hiçbir zaman doğrudan kullanılmaz. Her zaman virtualenvsadece ortamlar için temel olarak kullanılırlar , bu yüzden normal PATH'ımda olmamaları umrumda değil.


2
/Usr/local/lib/python2.7 dosyasını silmeyin! Pip tarafından kurulan tüm global python modülleri /usr/local/lib/python2.7/dist-packages içinde yaşamaktadır. Tüm bu modüller bozulacak!
abhaga

2
@abhaga Sen ile yüklememelisiniz pipbir dış virtualenvüzerinde herhangi linux kurulumu
Anthon

Dosyaları ve dizinleri el ile kaldırarak paketleri de kaldırmamalıyız. :) Bunlar iyi uygulamalardır ve onları kırmamız gereken durumlar vardır. Ancak bu dizini kaldırmanın güvenli olmadığını bilmek önemlidir.
abhaga

Benim CentOS7, bazı farklı vardır: 1. şunlardır: /usr/local/include/python2.7, bin olmadan; 2. adam dosyası /usr/local/share/man/man1/python2.7.1; 3. Başka bir dosya: /usr/local/bin/python2.7-config
Bin S

7

@ Anthon rmlistesinden başlayarak ve daha yeni dosyaları aramak için @ bin-s tavsiyesini uygulayarak, Python-3.6.6'mı (kaynaklardan yüklenmiş olan make altinstall) tamamen silmek için bu bash betiği ile geldim :

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.

Dikkatle kullanın (örneğin -Iher öldürmeyi doğrulamak için rm cmd'de seçenek ekleyin ).


çok hoş. Şimdi python3.X python3 yazdığımda ve sekmeye bastığımda görünmüyor
Prometheus

1

Genellikle tüm dosyalar neredeyse bir dakika içinde yüklenir. Yüklü tüm dosyaları hemen hemen aynı anda kontrol etmek için "find" tuşunu, ardından bunları manuel olarak "rm" kullanabilirsiniz. Yardımcı ol.

find /usr/local/ -type f -newer <some latest old file>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.