Linux'ta programları kaldırma


30

Son 5 yıldır Windows ve Mac OS kullanıyorum ve şimdi Linux'u günlük olarak kullanmayı düşünüyorum. Ubuntu'yu sanal bir makineye kurdum ve Linux'u günlük işimde nasıl kullanabileceğimi anlamaya çalışıyorum (bir js programcısı / web tasarımcısı olarak).

Acemi bir soru için özür dilerim ama bana bazen bir program yüklediğimde ortaya çıkıyor make configve make installsistemimi kolayca geri alınamayacak şekilde değiştiriyor. Bir programı kurduğunuz pencerelerde, onu kaldırabilir ve kitapta oynarsa umarım dosya sisteminde veya kayıt programında hiçbir iz kalmaz. Mac OS'de bir dosya gibi bir Uygulamayı silmeniz yeterlidir.

Fakat Linux'ta var apt-getve sonra var make. Linux kurulumumu nasıl temiz ve düzenli tutabileceğimi pek anlamadım. Herhangi bir yeni uygulama kurulumu sistemimi bozabilir gibi geliyor. Ancak Linux'un çok güçlü olma ünü vardır, bu nedenle uygulama yükleme ve kaldırma işleminin sistemi nasıl etkilediği hakkında anlamadığım bir şey olmalı. Birisi buna biraz ışık tutabilir mi?


Güncelleme: Bir uygulamayı kurarken, dosyaları gerçekten herhangi bir yere yayılabilir (paket yöneticileri sorunun bir kısmını ele alır) ancak bununla ilgili güzel bir kesinlik vardır: uygulamaları yüklemek için Docker'ı kullanın ve özellikle kullanmayacaksanız bunları kendi sanal alanlarında tutun onları çok sık kullanın. Firefox gibi GUI uygulamalarını tamamen Docker "sanal alanında" çalıştırmak da mümkündür .


11
Basit bir kullanıcı olarak, yazılımı yüklemek apt-getyerine kullanmanız gerekiyor make. make installBir yazılımın en yeni (muhtemelen kararsız) sürümünü henüz bir paket olarak bulunmayan kaynaklardan oluşturmanız gerektiğinde kullanılır.
Dmitry Grigoryev

@DmitryGrigoryev Kullanımı aptdaha basittir ve kullanmaktan daha iyi bir tui sağlar apt-get.
Bakuriu

3
OS X'i kullandığımda *.app, uygulama kurulumları genellikle başka yerlerden (örn. Kütüphane dizini, bellekten) çöktüğü için dosyayı silmeyi sık sık buldum . Ayrıca, Ubuntu’daki kaynaktan manuel olarak oluşturuyorsanız, kolayca kaldırmak için make installkullanın checkinstall.
Sparhawk

1
./configure ; make ; make installYolu kullanma . İhtiyacınız olan tek şey, muhteşem fpm aracını öğrenmek .
Deer Hunter

fpm aracı nedir?
AlexStack

Yanıtlar:


28

Yeni bir kurulum nadiren sisteminizi kırır (karıştırma kaynağı ve ikili gibi garip şeyler yapmazsanız).

Önceden derlenmiş ikilileri Ubuntu'da kullanırsanız, bunları kaldırabilir ve sisteminizi bozma konusunda endişelenmenize gerek kalmaz, çünkü bir ikili çalıştırmanın neye ihtiyaç duyduğunu listelemelidir ve paket yöneticiniz bu programa bağlı olarak hangi programları gözden geçirmeniz gerektiğini listeleyecektir.

Kaynak kullandığınızda, daha dikkatli olmanız gerekir, böylece kritik bir şeyi (glib gibi) silmezsiniz. Kaynaktan kaldırdığınızda herhangi bir uyarı veya başka bir şey yoktur. Bu, makinenizi tamamen kırabileceğiniz anlamına gelir.

Kullanarak kaldırmak istiyorsanız, apt-getdaha apt-get remove packageönce belirtildiği gibi kullanacaksınız . Bu pakete bağlı olan tüm programlar da kaldırılır ve bunları inceleme şansınız olur.

Kaldırmak istiyorsanız, genellikle işlemdir make uninstall. Uyarı yok (yukarıda söylediğim gibi).

make configsisteminizi değiştirmeyecek, ancak make installyapacak.

Yeni başlayanlar olarak, apt-getikili paketler için ne tür bir dağıtım kullanacağınızı öneririm . Her şeyi güzel ve düzenli tutar ve gerçekten istemediğiniz sürece sisteminizi bozmaz.

Umarım, bu her şeyi temizler.


3
İçin izsiz sen elbette kullanacaktır kaldırma --purgeile seçeneğiapt-get
Hagen von Eitzen

16

Teorik olarak, make uninstallne kaldırmalımake install eklenmiş ve sisteminiz zorlanmayacaktır. Tabii ki sorun, bütün dosya dosyalarının eşit yaratılmamasıdır.

Bazıları, uninstallkuralın ne yaptığını çözmeniz için size bırakarak kuralı atlayabilir install. Daha kötüsü, eğer yükleme kuralı bağlantılı bir kütüphanenin üzerine yazarsa, aptaluninstall rutin başka bir programın bağımlılıklarını kırabilir.

Kaynak yüklemeleri için en iyi çözüm, sistemin paketleme yöneticisi tarafından yüklenen paketlerden farklı bir önek kullanmaktır. Apt, dosyaları yükler ve /usr/böylece /usr/local/kaynak yüklemeniz için hiyerarşiyi kullanır . Bu, hangi dosyaların ve paketlerin hangi dosyaların ait olduğu sistemi bozmayacağını takip etmeyi çok daha kolaylaştırır.

./configure --prefix=/usr/localbirçok yapılandırma komut dosyası için çalışır. Değilse, Makefile'ı elle düzenleyebilirsiniz. Veya sadece dosyaları el ile kopyalayın.

Apt ve diğer paketleme yöneticileri, hangi dosyaları yüklediklerini ve ters bağımlılıklarını takip eder, böylece kaldırma işlevleri kullanmak güvenlidir.


15

apt-get installLinux ve apt-get remove(paket adı) veya apt-get purge(paket adı) herhangi bir paketi, yalnızca kaldırmak istediğiniz ana paketi değil, yükleme sırasında yüklenen tüm ilişkili paketleri veya bağımlılıkları kaldıracak şekilde kullanmanızı öneririm .

Şimdi, sisteminizi daha temiz tutmak için apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-differ#144224 ( Bu gönderi ilginçtir), yükleme sırasında indirilen ancak daha fazla ihtiyaç duyulmayan tüm dosyaları kaldırır.

Sisteminizde yüklü olan tüm bağımlılıkları kaldırmak istiyorsanız, ancak kaldırdığınızda kaldırılmamışsa, yararlı olacak başka bir komut apt-get autoremove.

Bir paketi make ve make install ile kurarsanız, kendiniz kaldırmadan (belki de indirilmiş pakette bulunan ve size nasıl yapılacağını söyleyen bir README dosyası vardır) ve bununla ilişkili tüm bağımlılıkları kaldırmaya çalışmak sizin sorumluluğunuzda olacaktır. . Bu yüzden her zaman Linux'ta dağıtım paketinin yöneticisi tarafından sunulan paketleri yüklemeniz önerilir, bu şekilde yaparsanız, paketinizin kullandığınız dağıtım (Linux'un lezzeti) ile çalışacak kadar test edilmiş olduğundan emin olabilirsiniz. ve sisteminizi kırmak çok olası değildir. Ayrıca, paketinizin gerektiğinde güncelleneceğinden emin olabilirsiniz, oysa kendiniz kurarsanız tüm bunları yapmak sizin sorumluluğunuzdadır.

Umarım bu yardımcı olur :)


11

Yüklü uygulamaları Linux altında yönetmenin normal yolu bir paket yöneticisiyle çalışmaktır. Paket yöneticilerinin seçimi, dağıtımları farklılaştıran temel şeylerden biridir. Ubian, Debian (dayandığı) gibi dpkg ve APT kullanır ; çoğu zaman, yalnızca apt-get(komut satırı), yetenek (komut satırı veya metin modu) veya Synaptic (GUI) gibi APT arayüzlerinden biriyle etkileşime geçmeniz gerekir .

Bir paket yöneticisi hangi dosyaların yüklü programa ait olduğunu takip eder. Windows'ta olduğu gibi, programlar yükleme veya kaldırma işlemlerinin bir parçası olarak rasgele kod yürütebilir, ancak genellikle iyi davranır ve diğer programları bozmaz. Ayrıca, (un) kurulum kodu, kaynak yazar tarafından değil (ana dağıtımdaki paketler için) paket sorumlusu tarafından yazılır. Windows'un aksine, paket yöneticisi: kurulum, yükseltme ve kaldırma işlemlerinde birleşik bir arayüz vardır. Kaldırıcıyı aramanıza gerek yoktur (varsa), grafiksel paket yöneticisindeki “kaldır” simgesini tıklamanız veya çalıştırmanız yeterlidir apt-get remove PACKAGENAME.

“Egzotik” yazılıma ihtiyacınız varsa, bir arşivi açarak veya kaynaktan derleyerek manuel olarak kurmanız gerekebilir. Linux dünyasında yürütülebilir bir program biçiminde gelen yükleyiciler nadirdir. Koşu make installbirkaç dizinleri (üzerinde her programın yayılma eğiliminde /usr/local/bin, /usr/local/man, /usr/local/libvb.) İşleri düzenli tutmak için, istifleme gibi “fakir bir adamın paket yöneticisi” kullanmanızı öneririm . Stow ile her paket kendi dizinine kurulur ve stowyardımcı program sembolik bağlar oluşturmaya özen gösterir, böylece paket tarafından yüklenen komutlar komut arama yolunda vb. Daha fazla bilgi için bkz . Programları takip etme .


bu "egzotik yazılım" herkes tarafından yazılabilir mi? Bu "egzotik yazılım" nasıl dağıtımda resmi olarak kullanılabilir hale gelir? Kaynak kodunu satır satır gözden geçiren var mı? Örneğin Ubuntu, bir yazılımı APT-GET komutuna dahil etmeye ve başka birini yoksaymaya nasıl karar verir?
AlexStack

1
@AlexStack Çoğu dağıtım gönüllüler tarafından yapılır. Ubuntu, birkaç kişiye para ödeyen Canonical tarafından desteklenmektedir, ancak yine de paket bakımının büyük kısmı gönüllüler tarafından yapılmaktadır. Bu yüzden en doğru cevap, bir gönüllünün dahil etmeye karar verdiği herhangi bir yazılımı Ubuntu'nun içerdiğidir. Daha doğrusu, Ubuntu'daki çoğu yazılım Debian'dan geliyor, bu nedenle bir Debian Geliştiricisi paketin üzerinde çalışmaya değdiğine karar vermek zorunda kaldı ve yazılımın politikaya uyması gerekiyordu (kabul edilebilir lisans, çok ciddi değil).
Gilles 'SO- kötülük'

@AlexStack, Ubuntu depolarında (yani varsayılan kurulum apt-getveya benzeri) mevcut olsa bile, belirli bir yazılım parçasını satır başında gözden geçirme garantisi yoktur . Ancak depolara yalnızca oldukça popüler programlar koymuşlar, temelde yapmaları gerekeni yaptıklarından emin olmak için yeterli kullanıcıya sahip olanlar.
David Z


8

Mümkünse, paket yöneticinizi (apt-get, yetenek, synaptic veya aptdcon, yazılım merkezi, mintinstall, ..) kullanmaya çalışmalısınız. Yüklemek için make görevini kullanmak çok ham, bir uninstallmeslektaşı olduğu garanti edilmez ve sistemin geri kalanıyla iyi oynamanın garantisi yoktur (Bu, make'in yapım sistemine bağlı bir komut dosyasıdır - ve gözden geçirilmiş bir paketin aksine, görevleri içerebilir. herhangi bir çalıştırılabilir kod, kötü amaçlı yazılım olabilir).

İhtiyacınız olan yazılımın paketlenmiş bir sürümünü bulamazsanız, yararlı bulabilirsiniz checkinstall( checkinstall make install).


3

Uzman değilim ve yazılımın kaynağından yüklenmesi hakkında çok fazla bilgim yok, ancak kullanarak apt-get, yüklenen yazılımı kaldırabilirsiniz apt-get remove package-name. Tüm yapılandırma dosyalarını da kaldırmak için, kullanın apt-get purge package-name. Linux kurulumunuzu düzenli tutmanın en güvenli yolu, yalnızca resmi depolardaki paketleri kullanmaktır. Resmi depolarda olmayan bir paket gerektiğinde, bir PPA'da sık sık (Ubuntu kullandığınızdan beri) bulunabilir .


apt-getkullanan OP'nin yararı yok configurevemake install
roaima

3

Diğer cevapların söylediği gibi, günümüzde yazılımınızın büyük çoğunluğunu distro'nun tercih ettiği paket yöneticisini kullanarak kurmanız normaldir. Bu, Windows'a döndüğünüzde muhtemelen onu özleyeceğiniz kadar kullanışlıdır! Bir anlamda, çeşitli "pazarlar" ve "mağazalar" ticari işletim sistemleri için de bu yönde ilerlemektedir.

Bunu söyledikten sonra Linux hakkında öğrenmeye ilk başladığımda, yazılımın yüklenme şeklinden şaşırdığımı hatırlıyorum. Windows'ta tüm dosyalar tek bir dizine c:\Programsgirerken, geleneksel "unix yolu" onları "standart konumlarda" dağıtmaktır (ayrıntılar standartlaştırılmış değildir, [daha fazla bilgi için LSB'ye bakınız]] [1] ), /usr/local/binyürütülebilir dosyalar için olduğu gibi ,/usr/local/doc için, dokümantasyon için vb.

Bir anlamda, Windows çalıştırılabilir dosyalarınızın nerede olduğunu "bilmiyor". Onların "altında bir yerde c:\Program Files" olduklarını biliyor , ama fazla değil. Tüm bu dizinleri bulmak için onları taramak, engelleyici bir şekilde pahalı. Dolayısıyla çalıştırılabilir dosyaya olan bağlantı açıkça bilinen bir yere (başlangıç ​​menüsü) yerleştirilir ve başlatmak için kullanacağınız şey budur.

Unix / Linux'ta, kabuğunuz ve bu konudaki diğer birçok program, bilinen bir konum kümesinde çalıştırılabilirleri veya diğer kaynakları otomatik olarak arayacaktır. Bu nedenle, dosyalarınızı yalnızca uygun dizinlerine kopyalayarak, kullanıcıların onları bilmesi için herhangi bir yere "kayıt yaptırmak zorunda kalmadan" otomatik olarak "göreceksiniz".

Her iki mekanizmanın da avantajları ve dezavantajları vardır, ancak Unix yaklaşımının tipik olarak daha esnek olduğunu göreceksiniz.

Lütfen, resmi tanımladığım kadar net olmayan bir çok istisna ve ayrıntı olduğunu unutmayın, ancak bu tür bir girişimin, yenilerin en azından arkasındaki temel mantığı anlamaları için faydalı olabileceğini düşünüyorum.


teşekkürler @ unclezeif. "Her yere dağılmış dosyalar" ile olan bu sorun beni gerçekten rahatsız ediyor çünkü anlamadım. Unix yaklaşımının genelde daha esnek olduğunu söylediniz. Lütfen detaylandırabilir misiniz?
AlexStack

Örneğin, belgeler tek bir yerde, simgeler tek bir yerde vb. Bazı durumlarda gerçekten güzel! Daha esnek olarak, tüm yolu temel alan bir şey yapabileceğinizi kastediyorum: ortam değişkenlerinin değiştirildiği yeni bir kabuk üretmek, böylece çalıştırılabilirleri yalnızca belirli bir dizinde görmek, böylece seçiminizi sınırlamak (veya genişletmek). Her şey çok basit, çünkü çok fazla kişiselleştirme elde etmek için sadece dosya ve ortam değişkenlerini kullanıyorsunuz.
UncleZeiv

Başka bir örnek: Prensip olarak, ana dizininize bir program yükleyebilirsiniz, örneğin / home / foo / bin ve sadece paylaşılan sisteme dokunmadan yol ortamlarınıza / home / foo / bin ekleyebilirsiniz.
--Zeiv Amca

3

Bence en iyi tavsiye bu forumda . Seçenekleriniz şunlardır: (2 ve 3, etki bakımından aslında aşağı yukarı aynıdır):

  1. Bir paket yöneticisi ve bir depo kullanın. Bu, güncellemeler, resmi yayınlar, imzalı sürümler vb. Alırsınız.
  2. Bir depodan bir paket kullanamıyorsanız veya kullanmıyorsanız, yazılım için bir paket oluşturun ve bunu paket yöneticinizi kullanarak yükleyin. Bunu Debian tabanlı sistemlerde yapmak için ayrıntılı talimatlar yukarıdaki bağlantıdadır. İlk başta korkutucu görünüyor, ama gerçekten çok basit, ve özellikle Debian söz konusu olduğunda, sizin için tüm zor işleri yapmak için birçok komut dosyası var.
  3. Bu yöntemi işe alamıyorsanız, checkinstallbaşkalarının tavsiye ettiği şekilde kullanın . Yüklemesi yapmak için çok basit bir drop-in yerine:

    $ ./configure
    $ make
    $ sudo checkinstall
    

    Bu, yazılımı normal olarak oluşturmalı ve daha sonra make installne yaptığını izleyen ve tam olarak bu şeyleri yapacak bir paket oluşturan sınırlı bir ortamda çalışmalıdır. Sonra bu paketi paket yöneticinize yükler. Çıkarma işlemi, tıpkı (2) 'deki gibi başka bir paketi kaldırmak gibidir.

  4. Bir paket yöneticisini kullanamıyorsanız veya kullanmıyorsanız, öyleyse kullanın make install, sanırım. Ve yazılım koruyucusunun kaldırma yordamını sürdürmesini umuyorum.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.