Menghapus instalasi program di Linux

30

Saya telah menggunakan Windows dan Mac OS selama 5 tahun terakhir dan sekarang saya mempertimbangkan untuk menggunakan Linux setiap hari. Saya telah menginstal Ubuntu pada mesin virtual dan mencoba memahami bagaimana saya dapat menggunakan Linux untuk pekerjaan sehari-hari saya (sebagai programmer js / desainer web).

Maaf untuk pertanyaan pemula tetapi terlintas di benak saya bahwa kadang-kadang ketika saya menginstal sebuah program melalui make config& make installitu mengubah sistem saya dengan cara yang tidak dapat dikembalikan dengan mudah. Di windows ketika Anda menginstal sebuah program, Anda dapat menghapus instalannya dan mudah - mudahan jika dimainkan oleh buku tidak akan ada jejak program yang tersisa di sistem file atau registrasi, dll. Di Mac OS Anda cukup menghapus suatu App seperti file.

Tetapi di Linux ada apt-getdan kemudian ada make. Saya tidak begitu mengerti bagaimana saya bisa menjaga instalasi Linux saya tetap bersih dan rapi. Rasanya seperti pemasangan aplikasi baru dapat merusak sistem saya. Tapi kemudian Linux memiliki reputasi sangat kuat, jadi pasti ada sesuatu yang saya tidak mengerti tentang bagaimana instalasi aplikasi dan penghapusan instalasi mempengaruhi sistem. Adakah yang bisa menjelaskan hal ini?


Pembaruan: ketika menginstal aplikasi, file-nya dapat menyebar di mana saja (manajer paket menangani bagian dari masalah) tetapi ada hack keren di sekitar itu: gunakan Docker untuk menginstal aplikasi dan menyimpannya di kotak pasir mereka, khususnya jika Anda tidak akan gunakan mereka terlalu sering. Dimungkinkan juga untuk menjalankan aplikasi GUI seperti Firefox sepenuhnya di Docker "kotak pasir".

AlexStack
sumber
11
Sebagai pengguna sederhana Anda seharusnya menggunakan apt-getdaripada makemenginstal perangkat lunak. make installdigunakan ketika Anda perlu membangun versi terbaru (mungkin tidak stabil) dari perangkat lunak dari sumber, yang belum tersedia sebagai paket.
Dmitry Grigoryev
@DmitryGrigoryev Menggunakan aptlebih sederhana dan memberikan tui yang lebih baik daripada menggunakan apt-get.
Bakuriu
3
Ketika saya menggunakan OS X, saya sering menemukan menghapus *.appfile tidak cukup, karena instalasi aplikasi sering berserakan di tempat lain (misalnya direktori Library, dari memori). Juga, jika Anda secara manual membangun dari sumber dengan Ubuntu make install, gunakan checkinstallsebagai gantinya untuk memudahkan penghapusan.
Sparhawk
1
Jangan gunakan ./configure ; make ; make installjalan. Yang Anda butuhkan adalah mempelajari alat fpm yang luar biasa .
Pemburu Rusa
apa alat fpm?
AlexStack

Jawaban:

28

Instalasi baru jarang akan merusak sistem Anda (kecuali jika Anda melakukan hal-hal aneh seperti mencampur sumber dan biner).

Jika Anda menggunakan binari yang telah dikompilasi di Ubuntu maka Anda dapat menghapusnya dan tidak perlu khawatir merusak sistem Anda, karena biner harus mencantumkan apa yang diperlukan untuk dijalankan dan manajer paket Anda akan mencantumkan program apa yang bergantung pada program itu untuk Anda tinjau.

Saat Anda menggunakan sumber, Anda harus lebih berhati-hati agar Anda tidak menghapus sesuatu yang kritis (seperti glib). Tidak ada peringatan atau apa pun saat Anda menghapus instalan dari sumber. Ini berarti Anda benar-benar dapat merusak mesin Anda.

Jika Anda ingin menghapus instalasi menggunakan apt-getmaka Anda akan menggunakan apt-get remove packageseperti yang dinyatakan sebelumnya. Setiap program yang bergantung pada paket itu akan dihapus juga dan Anda akan memiliki kesempatan untuk memeriksanya.

Jika Anda ingin menghapus instalasi maka umumnya prosesnya adalah make uninstall. Tidak ada peringatan (seperti yang saya katakan di atas).

make configtidak akan mengubah sistem Anda, tetapi make installakan.

Sebagai pemula, saya sarankan menggunakan apt-getatau apa pun distro yang Anda gunakan untuk paket biner. Itu membuat hal-hal baik dan teratur dan kecuali Anda benar-benar ingin itu tidak akan merusak sistem Anda.

Semoga semuanya beres.

SailorCire
sumber
3
Untuk menghapus jejak Anda tentu saja akan menggunakan --purgeopsi denganapt-get
Hagen von Eitzen
16

Secara teori, make uninstallharus menghapus apa yang make installditambahkan dan sistem Anda tidak menumpuk cruft. Masalahnya, tentu saja, adalah bahwa tidak semua makefile dibuat sama.

Beberapa orang mungkin mengabaikan uninstallaturan tersebut, membiarkannya untuk mengetahui apa yang dilakukan oleh installaturan tersebut. Lebih buruk lagi, jika aturan instal menimpa pustaka tertaut, uninstallrutinitas bisu dapat memutus ketergantungan untuk beberapa program lain.

Solusi terbaik untuk pemasangan sumber adalah dengan menggunakan awalan yang berbeda dari paket yang diinstal oleh manajer pengemasan sistem. Apt menginstal file untuk /usr/menggunakan /usr/local/hierarki untuk instalasi sumber Anda. Itu membuatnya jauh lebih mudah untuk melacak file apa yang termasuk dalam paket dan pencopotan pemasangan yang tidak akan merusak sistem.

./configure --prefix=/usr/localberfungsi untuk banyak skrip konfigurasi. Jika tidak, Anda dapat mengedit Makefile secara manual. Atau cukup salin file secara manual.

Apt dan manajer pengemasan lainnya melacak file apa yang telah mereka instal dan dependensi terbaliknya sehingga fungsi pencopotannya aman untuk digunakan.

Wombat Aneh
sumber
15

Saya akan merekomendasikan Anda gunakan apt-get installuntuk menginstal paket apa pun di linux dan apt-get remove(nama paket) atau apt-get purge(nama paket) yang akan menghapus tidak hanya paket utama yang ingin Anda hapus tetapi semua paket atau dependensi terkait yang diinstal selama instalasi.

Sekarang, untuk menjaga sistem Anda lebih bersih, saya sarankan Anda menggunakan apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( posting ini menarik tentang itu) yang akan menghapus semua file yang diunduh saat instalasi tetapi tidak lagi diperlukan.

Perintah lain yang akan berguna jika Anda ingin menghapus semua dependensi yang diinstal di sistem Anda, tetapi mereka tidak dihapus ketika Anda uninstall adalah apt-get autoremove.

Jika Anda menginstal paket melalui make dan make install, Anda akan bertanggung jawab untuk mencopotnya sendiri (mungkin ada file README yang disertakan dalam paket yang diunduh yang memberi tahu Anda cara melakukannya) serta mencoba menghapus semua dependensi yang terkait dengannya. . Itu sebabnya selalu disarankan untuk menginstal paket di Linux yang ditawarkan oleh manajer paket distro, jika Anda melakukannya dengan cara ini, Anda dapat memastikan paket Anda telah cukup teruji untuk bekerja dengan distro (rasa Linux) yang Anda gunakan dan sangat tidak mungkin merusak sistem Anda. Juga, Anda dapat memastikan paket Anda akan diperbarui ketika dibutuhkan sedangkan jika Anda menginstalnya sendiri Anda bertanggung jawab untuk melakukan semua ini.

Saya harap ini membantu :)

VaTo
sumber
11

Cara normal untuk mengelola aplikasi yang terinstal di Linux adalah dengan manajer paket. Pilihan manajer paket adalah salah satu hal utama yang membedakan distribusi. Ubuntu, seperti Debian (yang menjadi basisnya ), menggunakan dpkg dan APT ; sebagian besar waktu, Anda hanya perlu berinteraksi dengan salah satu antarmuka ke APT, seperti apt-get(baris perintah), aptitude (baris perintah atau mode teks) atau Synaptic (GUI).

Manajer paket melacak file mana yang termasuk dalam program yang diinstal. Seperti pada Windows, program dapat mengeksekusi kode arbitrer sebagai bagian dari prosedur instalasi atau penghapusan instalan mereka, tetapi biasanya berperilaku baik dan tidak akan merusak program lain. Lebih jauh lagi, kode instalasi (un) ditulis oleh pengelola paket, bukan oleh penulis hulu (untuk paket-paket dalam distribusi utama). Tidak seperti Windows, ada antarmuka terpadu untuk instalasi, peningkatan dan penghapusan instalasi: manajer paket. Anda tidak perlu mencari uninstaller (jika ada), Anda cukup klik ikon "uninstall" di manajer paket grafis, atau jalankan apt-get remove PACKAGENAME.

Jika Anda memerlukan perangkat lunak "eksotis", Anda mungkin perlu menginstalnya secara manual, baik dengan membongkar arsip atau dengan kompilasi dari sumber. Pemasang yang datang dalam bentuk program yang dapat dieksekusi jarang ditemukan di dunia Linux. Menjalankan make installcenderung menyebar setiap program selama beberapa direktori ( /usr/local/bin, /usr/local/man, /usr/local/lib, dll). Untuk menjaga hal-hal diurutkan, saya sarankan menggunakan "manajer paket orang miskin", seperti stow . Dengan stow, setiap paket diinstal di direktori masing-masing, dan stowutilitas menangani pembuatan tautan simbolik sehingga perintah yang diinstal oleh paket berada di jalur pencarian perintah dan seterusnya. Lihat Melacak program untuk lebih jelasnya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
"perangkat lunak eksotis" ini dapat ditulis oleh siapa saja, bukan? Bagaimana "perangkat lunak eksotis" ini tersedia secara resmi di distro? Apakah ada yang meninjau kode sumber mereka baris demi baris? Bagaimana Ubuntu misalnya memutuskan untuk memasukkan perangkat lunak dalam perintah APT-GET dan mengabaikan yang lain?
AlexStack
1
@AlexStack Sebagian besar distribusi dilakukan oleh sukarelawan. Ubuntu disponsori oleh Canonical, yang membayar beberapa orang, tetapi sebagian besar pemeliharaan paket dilakukan oleh sukarelawan. Jadi jawaban yang paling akurat adalah Ubuntu menyertakan perangkat lunak apa pun yang diputuskan oleh relawan untuk disertakan. Lebih tepatnya, sebagian besar perangkat lunak di Ubuntu berasal dari Debian, sehingga Pengembang Debian harus memutuskan paket itu layak untuk dikerjakan, dan perangkat lunak tersebut harus sesuai dengan kebijakan (lisensi yang dapat diterima, tidak terlalu buggy).
Gilles 'SANGAT berhenti menjadi jahat'
@AlexStack tidak ada jaminan bahwa siapa pun telah meninjau bagian tertentu dari perangkat lunak baris demi baris, bahkan jika perangkat lunak itu tersedia di repositori Ubuntu (yaitu melalui instalasi default apt-getatau sejenisnya). Tetapi mereka hanya menempatkan program yang cukup populer di repositori, yang memiliki cukup pengguna untuk yakin bahwa mereka pada dasarnya melakukan apa yang seharusnya mereka lakukan.
David Z
8

Anda harus mencoba menggunakan manajer paket Anda (apt-get, aptitude, synaptic, atau aptdcon, pusat perangkat lunak, mintinstall, ..) jika memungkinkan. Menggunakan tugas make untuk menginstal sangat mentah, tidak dijamin memiliki uninstallrekanan dan tidak dijamin bermain dengan baik dengan seluruh sistem (Ini hanya skrip yang diikat ke dalam sistem build make - dan tidak seperti paket yang ditinjau, make task dapat berisi kode yang dapat dieksekusi, berpotensi malware).

Jika Anda tidak menemukan versi paket perangkat lunak yang Anda butuhkan, Anda mungkin menemukan checkinstall( checkinstall make install) bermanfaat.

PSkocik
sumber
3

Saya bukan ahli, dan tidak tahu banyak tentang menginstal perangkat lunak dari sumber, tetapi menggunakan apt-get, Anda dapat menghapus perangkat lunak yang diinstal dengan apt-get remove package-name. Untuk menghapus semua file konfigurasi juga, gunakan apt-get purge package-name. Cara teraman untuk menjaga agar instalasi Linux Anda tetap rapi adalah dengan hanya menggunakan paket-paket di repositori resmi. Ketika suatu paket dibutuhkan yang tidak ada dalam repositori resmi, itu seringkali dapat ditemukan (karena Anda menggunakan Ubuntu) dalam PPA .

Gabe
sumber
apt-gettidak ada gunanya bagi OP yang telah menggunakan configuredanmake install
roaima
3

Seperti jawaban yang lain katakan, saat ini sudah umum untuk menginstal sebagian besar perangkat lunak Anda menggunakan manajer paket pilihan distro Anda. Ini sangat nyaman sehingga Anda mungkin akan melewatkannya saat kembali ke Windows! Dalam arti tertentu, berbagai "pasar" dan "toko" menuju ke arah itu juga untuk OS komersial.

Karena itu, saya ingat bahwa ketika saya pertama kali mulai belajar tentang Linux saya bingung dengan cara perangkat lunak biasanya diinstal. Sementara pada Windows semua file masuk dalam satu direktori di bawah c:\Programs, "cara unix" tradisional adalah untuk menyebarkannya di "lokasi standar" (detailnya tidak terlalu standar, [lihat LSB untuk informasi lebih lanjut] [1] ), seperti /usr/local/binuntuk executable, /usr/local/docuntuk dokumentasi dan sebagainya.

Dalam arti tertentu, Windows "tidak tahu" di mana executable Anda berada. Ia tahu bahwa mereka "di suatu tempat di bawah c:\Program Files", tetapi tidak lebih. Memindai semua direktori tersebut untuk menemukannya, atau dulu mahal, mahal. Jadi tautan ke executable akan ditempatkan secara eksplisit di lokasi yang diketahui (menu mulai), dan itulah yang akan Anda gunakan untuk memulainya.

Di Unix / Linux, shell Anda, dan sebagian besar program lain dalam hal ini, secara otomatis akan mencari executable atau sumber daya lain di set lokasi yang diketahui. Jadi itu sebabnya, dengan hanya menyalin file Anda di direktori yang sesuai, Anda akan secara otomatis "melihatnya", tanpa harus "mendaftar" di mana saja agar pengguna tahu tentang mereka.

Kedua mekanisme memiliki pro dan kontra, tetapi Anda akan menemukan bahwa pendekatan Unix biasanya lebih fleksibel.

Harap diingat bahwa ada banyak pengecualian dan detail yang membuat gambarnya tidak sejelas yang saya jelaskan, tapi saya pikir pengantar seperti ini dapat berguna bagi pemula untuk setidaknya memahami logika dasar di baliknya.

UncleZeiv
sumber
terima kasih @unclezeif. Masalah dengan "file yang tersebar di seluruh tempat" benar-benar menggangguku karena saya tidak memahaminya. Anda mengatakan pendekatan Unix biasanya lebih fleksibel. Bisakah Anda menjelaskan lebih lanjut?
AlexStack
Misalnya, dokumentasinya ada di satu tempat, semua ikon ada di satu tempat, dll. Yang dalam beberapa kasus sangat bagus! Maksud saya lebih fleksibel, karena semua jalur berbasis, Anda dapat melakukan hal-hal seperti: menelurkan shell baru di mana variabel lingkungan diubah sehingga Anda hanya melihat executable di direktori tertentu, sehingga membatasi (atau memperluas) pilihan Anda. Semuanya sangat "sederhana" karena Anda hanya menggunakan variabel file dan lingkungan untuk mencapai tingkat penyesuaian yang besar.
UncleZeiv
Contoh lain adalah: pada prinsipnya Anda dapat menginstal program di direktori home Anda, mis. / Home / foo / bin, dan cukup tambahkan / home / foo / bin ke lingkungan path Anda, tanpa menyentuh sistem bersama.
UncleZeiv
3

Saya pikir saran terbaik hanya di posting forum ini . Berikut adalah opsi Anda (2 dan 3 kurang lebih sama dalam hal efek, sebenarnya):

  1. Gunakan manajer paket dan repositori. Itu berarti Anda mendapatkan pembaruan, Anda mendapatkan rilis resmi, rilis yang ditandatangani, dll. Dll.
  2. Jika Anda tidak bisa atau tidak akan menggunakan paket dari repositori, buat paket untuk perangkat lunak dan instal yang menggunakan manajer paket Anda. Instruksi terperinci untuk melakukan ini pada sistem berbasis Debian ada di pos yang tertaut di atas. Awalnya tampak menakutkan, tetapi sebenarnya sangat sederhana, dan terutama dalam kasus Debian ada banyak skrip di luar sana untuk melakukan semua kerja keras untuk Anda.
  3. Jika Anda tidak bisa menggunakan metode itu, gunakan checkinstallseperti yang direkomendasikan orang lain. Ini pengganti drop-in yang sangat sederhana untuk melakukan instalasi:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Ini harus membangun perangkat lunak seperti biasa, dan kemudian berjalan make installdalam lingkungan terbatas yang melacak apa yang dilakukannya dan membangun sebuah paket yang akan melakukan hal-hal itu. Kemudian menginstal paket itu dengan manajer paket Anda. Menghapus kemudian sama seperti menghapus paket lain, seperti pada (2).

  4. Jika Anda tidak dapat atau tidak akan menggunakan manajer paket, well, maka gunakan make install, saya kira. Dan berharap pengelola perangkat lunak memelihara rutinitas penghapusan instalasi.
Esme
sumber