Pertanyaan Jika saya membuat paket dari sumber, bagaimana cara menghapus atau menghapus sepenuhnya?


Saya menggunakan kode sumber untuk membuat 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

Tapi sayangnya, saya menemukan bahwa ini versi terbaru, dan memiliki banyak bug, jadi saya perlu menghapusnya / uninstall. Tapi bagaimana saya bisa melakukannya? Saya mencoba make clean; make uninstall tetapi saya masih melihatnya ada:

# pkg-config --list-all | grep Myplugin
myplugin-....
$ ls /usr/lib/myplugin/libXYZ.so
exist....

Bagaimana Anda menghapus ini sekarang?


120
2017-12-12 11:42


asal




Jawaban:


Biasanya Anda bisa menggunakan:

make uninstall

atau

sudo make uninstall

jika aplikasi diinstal sebagai root.

Tetapi ini hanya akan berfungsi jika pengembang paket tersebut telah mengurus pembuatan aturan penghapusan yang baik.

Anda juga dapat mencoba untuk melihat langkah-langkah yang digunakan untuk menginstal perangkat lunak dengan menjalankan:

make -n install

Dan kemudian cobalah untuk membalikkan langkah-langkah tersebut secara manual.

Di masa depan untuk menghindari masalah semacam itu coba gunakan checkinstall dari pada make install sedapat mungkin (AFAIK selalu kecuali Anda ingin menyimpan kedua versi terkompilasi dan dikemas pada saat yang sama). Ini akan membuat dan menginstal file deb yang kemudian dapat Anda uninstall menggunakan manajer paket favorit Anda.

make clean biasanya membersihkan direktori bangunan, tidak menghapus paketnya. Ini digunakan ketika Anda ingin memastikan bahwa semuanya dikompilasi, bukan hanya file yang diubah.


150
2017-12-12 11:49



Saya juga melakukan itu. Tapi tetap ada, seperti yang ditunjukkan pkg-config dan ls /usr/lib/myplugin/libXYZ.so - YumYumYum
+1 untuk digunakan checkinstall - Itu membuat seluruh masalah ini menguap. - Oli♦
@Google: Jika bongkar pasang tidak berfungsi, Anda harus melacak apa yang dilakukan pemasangan dan membatalkannya secara manual. - Javier Rivera
Hal lain yang perlu diingat adalah bahwa jika make install dijalankan sebagai root (misalnya, sudo make install), yang biasanya terjadi, itu virtual yang selalu diperlukan untuk dijalankan sudo make uninstall untuk menghapus perangkat lunak. - Eliah Kagan
Jika Anda sudah berlari make install, Anda masih bisa menggunakannya checkinstall. Biasanya checkinstall akan menimpa semua itu make install dibuat. Setelah itu gunakan saja dpkg -r <package.deb>, dan semuanya harus dihapus. - user502144


Saya tidak berpikir ini adalah bug, itu akan menjadi ide yang baik untuk membaca tentang 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 a paket biner standar dan menginstalnya dalam Anda sistem memberi Anda kemampuan untuk menghapusnya dengan Anda utilitas manajemen paket standar distribusi.

Tautan di bawah ini mungkin bermanfaat untuk mendapatkan pemahaman yang lebih baik. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


26
2018-01-20 22:36





Ini bukan bug - kompilasi dari sumber adalah metode yang tidak didukung untuk menginstal perangkat lunak yang melewati 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 dapat mengetahui 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 kustom tersebut. Anda juga dapat menghubungi pengembang untuk meminta mereka membuat paket Debian agar sistem manajemen paket dapat digunakan.


15
2018-01-20 22:38





Ini bukan bug, itulah yang terjadi ketika pengembang menggunakan distribusi melalui sumber dan tidak melalui metode pengemasan asli.

Anda bisa mendapatkan file sumber Anda untuk menjadi paket debian dengan menggunakan checkinstall atau dhbuild. Jujur, menurut saya - pengguna baru harus menghindari instalasi dari sumber, dan pengembang harus menghindari distribusi hanya dengan sumber.


3
2018-01-20 22:36



Saya tahu tapi kadang tidak dapat dihindari ... Dalam hal ini hanya permainan kecil yang tidak benar-benar diperlukan, tetapi kadang-kadang saya harus menginstal MATLAB alat komputasi yang digunakan di universitas saya dan harus menginstalnya oleh sumber karena mereka tidak memiliki file deb untuk ubuntu ... Tapi saya pasti akan melalui metode checkinstall dan dhbuild ... terima kasih - nik90


Kita perlu menegosiasikan fakta itu lakukan uninstall akan tidak selalu berfungsi, jadi di bawah lebih merupakan solusi proaktif.

 Ini melibatkan penggunaan program paco yang tersedia di Pusat Perangkat Lunak Ubuntu. Setelah kami menginstal paco, kita bisa menggunakan mode log ketika kita "membuat" sebuah program. Paco bertindak seperti pembungkus untuk "make install" dan membuat log di direktori / var / log / paco dengan daftar file yang disalin ke berbagai direktori. Selain itu, Anda bisa melihat file-file di bagian Paco Front.

 Sebagai contoh ketika saya mengkompilasi php dari sumber, saya melakukan hal berikut:

paco -lp php5 "make install"

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 editor baris perintah
(Ganti php5 dengan nama file Anda).

cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'

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:

sudo rm `cat /var/log/paco/php5 | sed -n 's/|\(.*\)//;/^#\(.*\)/d;p'`

Pekerjaan selesai!

Catatan: Karena keterbatasan LD_PRELOAD, paco tidak dapat mengikuti jejak program suid. Lihat halaman manual.


0
2018-03-09 12:56





Saya telah mengumpulkan php-5.6.30 dari sumber tanpa mengonfigurasinya dengan openssl, jadi saya harus kembali dan menginstalnya dari awal. Menggunakan make uninstall tidak bekerja sebagai Makefile untuk php tidak mendukungnya.

Namun, langkah ini berhasil untuk saya, - Saya mencantumkan semua file yang terkait dengan php dan menghapusnya secara manual, saya butuh sekitar 5 menit tanpa berkeringat. Anda juga dapat menggunakan langkah-langkah ini untuk menghapus instalasi perangkat lunak Anda yang dikompilasi.

Menggantikan php dengan perangkat lunak yang Anda perlu uninstall

whereis php

Perintah di atas mencantumkan direktori tempat 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.


0
2018-04-03 19:25