Saya menginstal Python 2.7.9 di Ubuntu 14.04 dengan mengkompilasi sumbernya, dengan .configre
, make
, dan make altinstall
. make altinstall
karena saya tidak ingin menimpa Python 2.7.6 default. Python 2.7.9 yang saya instal sendiri ada di /usr/local/bin/python2.7
dan banyak file lain di direktori lain di bawah /usr/local
. Dari README dalam paket instalasi sumber:
Pada sistem Unix dan Mac jika Anda berniat untuk menginstal beberapa versi Python menggunakan awalan instalasi yang sama (argumen --awalan pada skrip configure script) Anda harus berhati-hati agar python utama Anda utama Anda tidak tertimpa oleh instalasi versi lain dari Python. yang berbeda.
Semua file dan direktori yang diinstall menggunakan "make altinstall" berisi berisi versi mayor dan minor dan dengan demikian dapat hidup berdampingan. "make install" juga membuat ${prefix}/bin/python yang mengacu pada ${prefix}/bin/pythonX.Y.
Jika Anda berniat untuk menginstal beberapa versi menggunakan prefix yang sama, Anda Anda harus memutuskan versi mana (jika ada) yang merupakan versi "primary" Anda. Instal versi tersebut menggunakan "make install". Instal semua versi lain menggunakan "make altinstall".
Sebagai contoh, jika Anda ingin menginstal Python 2.5, 2.6 dan 3.0 dengan 2.6 sebagai versi utama, Anda akan mengeksekusi "make install" di direktori build 2.6 Anda direktori build 2.6 Anda dan "make altinstall" di direktori lainnya.
Sekarang saya ingin menghapus instalasi 2.7.9 yang saya pasang sendiri.
Untungnya saya masih memiliki kode sumbernya, tapi sayangnya, kode sumber Makefile tidak memiliki bagian uninstall
$ sudo make uninstall
make: *** Tidak ada aturan untuk membuat target `uninstall'. Berhenti.
Kemudian saya mencoba cara lain: pertama-tama buat deb dari sumber dan
kompilasi, instal deb (semoga menimpa file-file yang terinstal dari
file yang terinstal dari make altinstall
), dan kemudian uninstall deb.
Tetapi ketika saya membuat file deb dengan checkinstall
, saya tidak yakin apakah
dan bagaimana saya harus melakukan hal yang berbeda untuk make altinstall
dengan make install
. Apa yang saya coba adalah:
$ checkinstall altinstall
...
Menginstal dengan altinstall...
========================= Hasil instalasi ===========================
/var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
...
Saya ingin tahu bagaimana saya bisa membuat deb sehingga menginstal deb akan
menduplikasi proses instalasi make altinstall
?
Atau bagaimana cara uninstall python 2.7.9 saya?
Catatan: paket sumber di link pertama juga memiliki setup.py
, install-sh
selain README
.
Perintah-perintah berikut ini akan menghapus python make altinstall
-ed Anda:
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
Anda mungkin juga harus melakukan
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
Meskipun make altinstall
telah melayani saya dengan baik jika "system python &" memiliki nomor mayor.minor yang berbeda dari yang Anda instal, itu tidak bekerja dengan baik jika hanya nomor mikro (posisi ketiga) yang berbeda. Nomor itu dikeluarkan dari biner yang diinstal, dan Anda berakhir dengan dua versi pythonX.Y. Ini selalu menjadi masalah, tetapi begitu distribusi mulai mengirimkan utilitas sistem berdasarkan 2.7.X, masalah ini menjadi lebih parah karena 2.7 seharusnya menjadi yang terakhir dari seri Python2.
IMO pendekatan terbaik untuk mengatasi masalah ini adalah dengan mencegahnya menjadi masalah: konfigurasikan python untuk menginstal di direktori yang tidak digunakan oleh python lain. Di sistem saya, mereka berada di bawah /opt/python/X.Y.Z
.
Untuk menggunakan salah satu Python yang terinstal di sana, Anda menggunakan [virualenv][1]
untuk membuat environment baru:
virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate
atau gunakan [virtualenvwrapper][2]
. Saya memiliki beberapa alias untuk versi terbaru dalam seri yang saya kerjakan.
Jika Anda menggunakan tox
untuk pengujian terhadap beberapa versi (Anda harus melakukannya) alias berikut ini akan membantunya menemukan berbagai versi:
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'
(saat ini adalah versi terbaru, saya menggunakan pengaturan yang sedikit berbeda dengan mempertahankan tautan dari /opt/python/2.7
ke /opt/python/2.7.9
terbaru, dan untuk nomor minor lainnya juga, dalam proses untuk mengunduh, membangun, dan menginstal versi python baru)
Instalasi ini tidak pernah digunakan secara langsung. Mereka selalu digunakan sebagai dasar untuk lingkungan virtualenv
saja, oleh karena itu saya tidak peduli bahwa mereka tidak ada di PATH normal saya.
Dimulai dari daftar rm
@Anthon'dan menerapkan saran @bin-s untuk mencari file-file yang lebih baru, saya membuat bash-script ini untuk menghapus Python-3.6.6 saya sepenuhnya (yang telah diinstal dari sumber dengan 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.
Gunakan dengan hati-hati (misalnya tambahkan opsi -I
di rm cmd untuk memverifikasi setiap kill).
Biasanya semua file terinstal dalam waktu hampir satu menit. Anda dapat menggunakan "find" untuk memeriksa semua file yang terinstal dalam waktu yang hampir bersamaan, lalu "rm" mereka secara manual. Semoga bermanfaat.
find /usr/local/ -type f -newer <some latest old File>