Sambil berlari
./configure --prefix=/mingw
pada sistem MinGW / MSYS untuk perpustakaan yang sebelumnya saya jalankan
'./configure --prefix=/mingw && make && make install'
Saya menemukan pesan ini:
PERINGATAN: Versi SDK plugin Vamp sudah diinstal. Harapkan kekhawatiran dan kesedihan jika Anda menginstal versi baru tanpa menghapus yang lama terlebih dahulu. (Melanjutkan)
Ini membuat saya khawatir. Apa kebalikan dari 'make install', yaitu bagaimana perpustakaan dihapus instalannya di Linux? Akankah 'membersihkan' melakukan pekerjaan, atau apakah ada langkah lain yang terlibat?
sudo make uninstall
jika file konfigurasi instalasi masih tersedia tetapi tidak ada solusi lain yang jelas jika tidak, selain menghapus instalasi dengan utilitas manajemen paket sistem jika diinstal dengan "checkinstall "utilitas.make install
saya tidak perlumake uninstall
menghapusnya. Saya selalu menggunakanxargs rm < install_manifest.txt
Jawaban:
make clean
menghapus file antara atau output dari source / build tree Anda. Namun, itu hanya memengaruhi pohon source / build; itu tidak menyentuh sisa sistem file dan tidak akan menghapus perangkat lunak yang diinstal sebelumnya.Jika Anda beruntung, berlari
make uninstall
akan berhasil. Namun, penulis perpustakaan harus menyediakannya; beberapa penulis memberikanuninstall
target, yang lain tidak.Jika Anda tidak beruntung, Anda harus menghapusnya secara manual. Menjalankan
make -n install
dapat bermanfaat, karena akan menunjukkan langkah-langkah yang akan dilakukan perangkat lunak untuk menginstalnya sendiri tetapi tidak akan benar-benar melakukan apa pun. Anda kemudian dapat membalikkan langkah-langkah tersebut secara manual.sumber
Jika
sudo make uninstall
tidak tersedia:Dalam sistem berbasis Debian, alih-alih (atau setelah *) melakukan
make install
Anda dapat menjalankansudo checkinstall
untuk membuat.deb
file yang terinstal secara otomatis. Anda kemudian dapat menghapusnya menggunakan manajer paket sistem (misalnyaapt
/synaptic
/aptitude
/dpkg
). Checkinstall juga mendukung pembuatan jenis paket lain, misalnya RPM.Lihat juga http://community.linuxmint.com/tutorial/view/162 dan beberapa penggunaan dasar checkinstall dan paket debian checkinstall .
*: Jika Anda membaca ini setelah menginstal dengan
make install
Anda masih dapat mengikuti instruksi di atas dan melakukandpkg -r $PACKAGE_NAME_YOU_CHOSEN
sesudahnya.sumber
make install
sebelum menggunakannyacheckinstall
.checkinstall
untuk jawaban yang sangat bagus ini untuk bekerja.checkinstall
dan jika kompilasi baru dibuat dengan pengaturan yang sama seperti yang lama, menghapus paket yang diinstal dengancheckinstall
harus menghapus file yang diinstal sebelumnya.Jika Anda memiliki
manifest
file yang mencantumkan semua file yang diinstal denganmake install
Anda, Anda dapat menjalankan perintah ini dari jawaban lain:Jika sudah,
sudo make install
Anda perlu menambahkan sudo ke uninstall Anda:sumber
xargs echo rm | sh
,? Cukup jelas bahwa siapa pun yang menyarankan ini tidak terlalu berpengalaman atau berpengetahuan dalam menggunakan shell.install_manifest.txt
mengandung asterisk ...rm *
akan disalurkan ke shell.) Diturunkan, untuk alasan ini.install_manifest.txt
diharapkan bisa ada?Tergantung pada seberapa baik makefile / configure script / autofoo magic dari program yang dimaksud adalah hal berikut ini dapat menyelesaikan masalah Anda:
Masalahnya adalah Anda harus menjalankan ini pada pohon sumber dari versi yang telah Anda instal dan dengan konfigurasi yang sama persis dengan yang Anda gunakan untuk menginstal.
sumber
Cara menghapus instalasi setelah "make install"
Metode # 1 (hapus penginstalan)
Langkah 1: Anda hanya perlu mengikuti langkah ini jika Anda telah menghapus / mengubah direktori build dengan cara apa pun: Unduh dan buat / buat instal menggunakan prosedur yang sama persis seperti yang Anda lakukan sebelumnya.
Langkah 2: coba buat hapus instalan.
Jika ini berhasil Anda selesai. Jika Anda paranoid, Anda juga dapat mencoba langkah-langkah "Metode # 3" untuk memastikan
make uninstall
tidak ada file yang terlewatkan.Metode # 2 (checkinstall - hanya untuk sistem berbasis debian)
Tinjauan umum proses
Dalam sistem berbasis debian (misalnya Ubuntu) Anda dapat membuat
.deb
paket dengan sangat mudah menggunakan alat bernamacheckinstall
. Anda kemudian menginstal paket deb. (Ini akan membuat sistem debian Anda menyadari bahwa semua bagian dari paket Anda memang telah diinstal) dan akhirnya uninstall untuk membiarkan manajer paket Anda dengan benar membersihkan sistem Anda.Selangkah demi selangkah
Pada titik ini
checkinstall
akan muncul nama paket. Masukkan sesuatu yang sedikit deskriptif dan catat karena Anda akan menggunakannya sebentar lagi. Ini juga akan meminta beberapa data lagi yang dapat Anda abaikan. Jika mengeluh tentang versi yang tidak dapat diterima, cukup masukkan sesuatu yang masuk akal1.0
. Ketika selesai, Anda dapat menginstal dan akhirnya menghapus:Metode # 3 (install_manifest.txt)
Jika
install_manifest.txt
ada file dalam direktori sumber Anda, file tersebut harus berisi nama file dari setiap file yang dibuat oleh instalasi.Jadi pertama-tama periksa daftar file dan mod-waktunya:
Anda harus mendapatkan nol kesalahan dan waktu mod dari file yang terdaftar harus pada atau setelah waktu instalasi. Jika semuanya OK, Anda dapat menghapusnya sekaligus:
Pengguna Merlyn Morgan-Graham memiliki pemberitahuan serius mengenai metode ini yang harus Anda ingat (disalin di sini kata demi kata): "Hati-hati terhadap file yang mungkin juga diinstal oleh paket lain. Cukup menghapus file-file ini [...] bisa hancurkan paket-paket lainnya. " . Itulah alasan mengapa kami membuat
deleted-by-uninstall
dir dan memindahkan file ke sana alih-alih menghapusnya.99% dari posting ini ada di jawaban lain. Saya baru saja mengumpulkan segala sesuatu yang berguna dalam (mudah-mudahan) mudah untuk diikuti dan mencoba memberikan perhatian ekstra pada detail penting (seperti mengutip argumen xarg dan menyimpan cadangan file yang dihapus).
sumber
make clean
umumnya hanya membersihkan file yang dibangun dalam direktori yang berisi kode sumber itu sendiri, dan jarang menyentuh perangkat lunak yang diinstal.Makefiles umumnya tidak mengandung target untuk penghapusan instalasi - Anda biasanya harus melakukannya sendiri, dengan menghapus file dari direktori tempat mereka diinstal. Sebagai contoh, jika Anda membangun sebuah program dan diinstal (menggunakan
make install
) ke/usr/local
, Anda akan ingin melihat melalui/usr/local/bin
,/usr/local/libexec
,/usr/local/share/man
, dll, dan menghapus file yang tidak diinginkan. Terkadang Makefile menyertakanuninstall
target, tetapi tidak selalu.Tentu saja, biasanya pada sistem Linux Anda menginstal perangkat lunak menggunakan manajer paket , yang mampu menghapus instalasi perangkat lunak "secara otomatis".
sumber
Utilitas "stow" dirancang untuk mengatasi masalah ini: http://www.gnu.org/software/stow/
sumber
stow
untuk mengatasi masalah ini?Sayangnya tidak ada standar, ini adalah salah satu risiko memasang dari sumber. Beberapa Makefiles akan menyertakan "uninstall", jadi
dari direktori sumber dapat berfungsi. Kalau tidak, itu mungkin masalah membatalkan apa pun yang
make install
dilakukan secara manual .make clean
biasanya hanya membersihkan direktori sumber - menghapus file yang dihasilkan / dikompilasi dan sejenisnya, mungkin bukan apa yang Anda cari.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 menangani 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 sini
sumber
Make
dapat memberi tahu Anda apa yang ia ketahui dan apa yang akan dilakukannya. Misalkan Anda memiliki target "instal", yang mengeksekusi perintah seperti:Dalam aturan umum Anda, tambahkan:
Trik serupa dapat dilakukan secara umum
make clean
.sumber
Pembukaan
di bawah ini dapat berfungsi atau tidak, ini semua diberikan apa adanya, Anda dan hanya Anda yang bertanggung jawab jika terjadi kerusakan, kehilangan data, dan sebagainya. Tapi saya harap semuanya berjalan lancar!
Untuk membatalkan
make install
saya akan melakukan (dan saya lakukan) ini:Ide: periksa skrip apa pun yang diinstal dan batalkan ini dengan skrip bash sederhana.
--prefix=$PWD/install
. Untuk CMake, Anda bisa pergi ke dir build Anda, buka CMakeCache.txt, dan perbaiki nilai CMAKE_INSTALL_PREFIX.make install
lagi).make install
skrip itu menginstal ke dir kustom hanya konten yang sama yang ingin Anda hapus dari tempat lain (biasanya/usr/local
). Jadi, kita perlu skrip. 3.1. Script harus membandingkan dir kustom, dengan dir yang ingin Anda bersihkan. Saya menggunakan ini:anti-install.sh
3.2. Sekarang jalankan skrip ini (ini akan kering-lari)
Misalnya Anda tidak ingin membersihkan / usr / local, dan direktori instalasi khusus Anda adalah /user/me/llvm.build/install, maka itu akan menjadi
3.3. Periksa log dengan cermat, jika perintah baik untuk Anda, batalkan komentar
rm $RM_DIR/$fn
dan jalankan lagi. Tapi berhentilah! Apakah Anda benar-benar memeriksa dengan cermat? Bisa cek lagi?Sumber untuk instruksi: https://dyatkovskiy.com/2019/11/26/anti-make-install/
Semoga berhasil!
sumber