Saya menggunakan kode sumber untuk membangun satu paket seperti di bawah ini:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib --with-package-name="Myplugin" --with-package-origin="http://www.ubuntu.org/" --enable-gtk-doc --disable-static
make
make install
Namun sayangnya, saya menemukan bahwa ini adalah versi terbaru, dan memiliki banyak bug, jadi saya harus menghapusnya / uninstall. Tetapi bagaimana saya bisa melakukannya? Saya mencoba make clean; make uninstall
tetapi saya masih melihatnya:
# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....
Bagaimana Anda menghapus ini sekarang?
sumber
checkinstall
- ini membuat seluruh masalah ini menguap.make install
dijalankan sebagai root (misalnya,sudo make install
), yang biasanya terjadi, itu virtual selalu diperlukan untuk menjalankansudo make uninstall
untuk menghapus perangkat lunak.make install
, Anda masih bisa menggunakancheckinstall
. Biasanyacheckinstall
akan menimpa semua yangmake install
dibuat. Setelah itu baru digunakandpkg -r <package.deb>
, dan semuanya harus dihapus.Saya tidak berpikir ini adalah bug, itu akan menjadi ide yang baik untuk membaca dan belajar menggunakan checkinstall ketika menginstal dari sumber.
Anda dapat menginstal checkinstall dari repositori, deskripsi singkat tentang paket;
CheckInstall melacak semua file yang dibuat atau dimodifikasi oleh skrip instalasi Anda ("make install" "make install_modules", "setup", dll), buat paket biner standar dan instal di sistem Anda agar Anda dapat menghapusnya dengan utilitas manajemen paket standar distribusi Anda.
Tautan di bawah ini mungkin bermanfaat untuk mendapatkan pemahaman yang lebih baik. http://en.wikipedia.org/wiki/CheckInstall
http://checkinstall.izto.org/
sumber
Ini bukan bug - kompilasi dari sumber adalah metode yang tidak didukung untuk menginstal perangkat lunak yang mem-bypass sistem manajemen paket (yang digunakan oleh Pusat Perangkat Lunak) sepenuhnya.
Tidak ada cara standar bahwa perangkat lunak yang dikompilasi dari sumber diinstal atau dihapus sehingga tidak ada cara Ubuntu tahu apa yang harus dilakukan. Perangkat lunak ini bahkan tidak terdaftar sebagai program yang diinstal.
Anda harus mengikuti instruksi distributor untuk pemasangan dan penghapusan perangkat lunak khusus tersebut. Anda juga dapat menghubungi pengembang untuk meminta mereka membuat paket Debian sehingga sistem manajemen paket dapat digunakan.
sumber
Ini bukan bug, itu yang terjadi ketika pengembang menggunakan distribusi melalui sumber dan bukan melalui metode pengemasan asli.
Anda bisa menjadikan file sumber Anda menjadi paket debian dengan menggunakan checkinstall atau dhbuild. Sejujurnya, menurut saya - pengguna baru harus menghindari menginstal dari sumber, dan pengembang harus menghindari distribusi berdasarkan sumber saja.
sumber
Saya tahu beberapa paket yang mendukung "make uninstall" tetapi banyak lagi yang mendukung make install DESTDIR = xxx "untuk instalasi bertahap.
Anda dapat menggunakan ini untuk membuat paket yang Anda instal alih-alih menginstal langsung dari sumbernya. Saya tidak beruntung dengan checkinstall tetapi fpm bekerja dengan sangat baik.
Ini juga dapat membantu Anda menghapus paket yang sebelumnya diinstal menggunakan make install . Anda cukup memaksa menginstal paket bawaan Anda di atas paket make instal dan kemudian mencopotnya.
Sebagai contoh, saya menggunakan ini baru-baru ini untuk berurusan dengan protobuf-3.3.0. Di RHEL7:
Lebih suka yum ke rpm jika Anda bisa.
Di Debian9:
Lebih suka apt ke dpkg di mana Anda bisa.
Saya juga memposting jawaban ini di stackoverflow
sumber
Kita perlu bernegosiasi fakta bahwa membuat uninstall akan tidak selalu bekerja, jadi di bawah lebih dari solusi proaktif.
Ini melibatkan penggunaan program paco yang tersedia di Pusat Perangkat Lunak Ubuntu. Setelah kita menginstal paco, kita dapat menggunakannya dalam mode log ketika kita "membuat instal" sebuah program. Paco bertindak seperti pembungkus untuk "make install" Anda dan membuat log di direktori / var / log / paco dengan daftar file yang disalin ke berbagai direktori. Selain itu, Anda dapat melihat file-file di ujung Paco Front.
Sebagai contoh ketika saya mengkompilasi php dari sumber saya melakukan hal berikut:
Parameter l membuat paco berjalan dalam mode log. Ini membuat file log di / var / log / paco bernama php5 (nama yang saya berikan dalam perintah). Itu berisi semua file yang disalin ke berbagai lokasi standar selama instalasi. Anda bisa menggunakan editor baris perintah atau paco gui untuk melihat file.
Di bawah ini adalah contoh mendapatkan daftar file menggunakan sed command line editor
(Ganti php5 dengan nama file Anda).
Setelah Anda mendapatkan daftar file, Anda tahu cara menghapusnya bukan? Memang, Anda bisa meneruskan hasil dari perintah di atas ke rm menggunakan backticks seperti yang ditunjukkan di bawah ini:
Pekerjaan selesai!
Catatan: Karena keterbatasan LD_PRELOAD, paco tidak dapat mengikuti jejak program suid. Lihat halaman manual.
sumber
Saya telah mengompilasi php-5.6.30 dari sumber tanpa mengonfigurasinya dengan openssl, jadi saya harus kembali dan menginstalnya dari awal. Menggunakan make uninstall tidak berfungsi karena Makefile untuk php tidak mendukungnya.
Namun, langkah ini berhasil bagi saya, - Saya mencantumkan semua file yang terkait dengan php dan menghapusnya secara manual, butuh sekitar 5 menit tanpa berkeringat. Anda juga dapat menggunakan langkah-langkah ini untuk menghapus instalan perangkat lunak yang dikompilasi.
Ganti php dengan perangkat lunak yang perlu Anda hapus
whereis php
Perintah di atas daftar direktori di mana binari diinstal ex: / usr / local / bin / php, / usr / bin / php .. hapus setiap file / direktori yang tercantum dalam output Anda.
sudo rm -f /usr/local/bin/php
Lakukan ini dengan semua file yang tercantum dalam output di atas dan Anda siap untuk menginstal versi yang lebih baru dari awal.
sumber