Kaynaktan bir paket oluşturursam, nasıl tamamen kaldırabilir veya kaldırabilirim?


137

Aşağıdaki gibi bir paket oluşturmak için kaynak kodu kullandım:

./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

Ancak ne yazık ki, en son sürüm olduğunu ve çok fazla hata bulunduğunu keşfettim, bu yüzden onu kaldırmalı / kaldırmalıyım. Ama nasıl yapabilirim? Denedim make clean; make uninstallama hala var görüyorum:

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

Bunu şimdi nasıl kaldırıyorsunuz?

Yanıtlar:


177

Genellikle sadece kullanabilirsiniz:

make uninstall

veya

sudo make uninstall

uygulama kök olarak yüklendiyse.

Ancak bu, yalnızca paketin geliştiricisi iyi bir kaldırma kuralı oluşturmayı başardığında işe yarar.

Yazılımı çalıştırarak yüklemek için kullanılan adımlara da bakmayı deneyebilirsiniz:

make -n install

Ve sonra bu adımları manuel olarak tersine çevirmeyi deneyin.

Gelecekte, bu tür sorunlardan kaçınmak için mümkün olduğunca checkinstallyerine kullanmaya çalışın make install(hem derlenmiş hem de paketlenmiş bir sürümü aynı anda saklamak istemediğiniz sürece AFAIK her zaman). Favori paket yöneticinizi kullanarak kaldırabileceğiniz bir deb dosyası oluşturacak ve yükleyecektir.

make cleangenellikle bina dizinlerini temizler, paketi kaldırmaz. Yalnızca değiştirilen dosyaların değil her şeyin derlendiğinden emin olmak istediğinizde kullanılır.


Bunu ben de yaptım. Ama yine de, pkg-config ve ls /usr/lib/myplugin/libXYZ.so
YumYumYum

36
Kullanmak için +1 checkinstall- bu tüm sorunu buharlaştırır.
Oli

6
@Google: Eğer make lift çalışmıyorsa, make install ne yaptığını izlemeniz ve manuel olarak geri almanız gerekir.
Javier Rivera

4
Akılda tutulması gereken bir başka şey ise , genellikle böyle olan bir make installkök (örneğin sudo make install) çalıştırılmış olması durumunda, sudo make uninstallyazılımı kaldırmak için her zaman sanal olarak çalışmak gerekir.
Eliah Kagan,

5
Zaten koştuysanız make install, yine de kullanabilirsiniz checkinstall. Normalde oluşturulan checkinstallher şeyin üzerine yazacaktır make install. Bundan sonra sadece kullanım dpkg -r <package.deb>ve her şey kaldırılmalıdır.
kullanıcı502144

28

Bunun bir hata olduğunu düşünmüyorum, kaynaktan kurulum yaparken checkinstall'ı okumak ve okumak hakkında iyi bir fikir olur.

checkinstall'ı paketlerden kısa bir açıklama olan depolardan yükleyebilirsiniz;

CheckInstall, kurulum komut dosyanız tarafından oluşturulan veya değiştirilen tüm dosyaları izler ("make install" "make install_modules", "setup", vb.), Standart bir ikili paket oluşturur ve onu sisteminize yükleyebilmenizi sağlar. dağıtımınızın standart paket yönetim yardımcı programları.

Aşağıdaki bu bağlantılar daha iyi bir anlayışa yardımcı olabilir. http://en.wikipedia.org/wiki/CheckInstall

http://checkinstall.izto.org/


16

Bu bir hata değildir - kaynaktan derleme, paket yönetim sistemini (Yazılım Merkezi tarafından kullanılan) tamamen atlayan bir yazılım yüklemek için desteklenmeyen bir yöntemdir.

Kaynaktan derlenen yazılımın kurulmasının veya kaldırılmasının standart bir yolu yoktur, böylece Ubuntu ne yapacağını bilemez. Yazılım yüklü bir program olarak bile listelenmemiş.

Dağıtıcının bu tür özel yazılımların kurulumu ve kaldırılması ile ilgili talimatlarını takip etmelisiniz. Paket yönetim sisteminin kullanılabilmesi için bir Debian paketi oluşturmalarını istemek için geliştiriciyle de iletişim kurabilirsiniz.


3

Bu bir hata değil, geliştiricilerin yerel paketleme yöntemleriyle değil kaynak yoluyla dağıtıma başvurdukları durum budur.

Kaynak dosyalarınızı checkinstall veya dhbuild kullanarak debian paketleri haline getirebilirsiniz. Açıkçası, bence - yeni kullanıcılar kaynaktan kurmaktan kaçınmalı ve geliştiriciler yalnızca kaynak tarafından dağıtmaktan kaçınmalıdır.


Biliyorum ama bazen kaçınılmazdır ... Bu durumda sadece gerçekten gerekli olmayan küçük bir oyundu ama bir zamanlar MATLAB’i üniversitemde kullanılan bir hesaplama aracı ve kullanmak zorunda kaldıklarından beri kullanmak zorunda kaldım Ubuntu için bir deb dosyası yok ... Ama kesinlikle checkinstall ve dhbuild yöntemlerinden geçeceğim ... teşekkürler
nik90

1

"Make uninstall" özelliğini destekleyen birkaç paket biliyorum ama aşamalı kurulumlar için make make DESTDIR = xxx "yi destekleyin.

Bunu doğrudan kaynaktan yüklemek yerine yüklediğiniz bir paketi oluşturmak için kullanabilirsiniz. Checkinstall ile hiç şansım oldu ama fpm çok iyi çalışıyor.

Bu, daha önce make install kullanılarak yüklenmiş bir paketi kaldırmanıza da yardımcı olabilir . Yaptığınız paketi kurulu olanın üzerine kurmaya zorlamanız ve kaldırmanız yeterlidir.

Örneğin, son zamanlarda protobuf-3.3.0 ile başa çıkmak için kullandım. RHEL7’de:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
 --vendor "You Not RedHat" \
 --license "Google?" \
 --description "protocol buffers" \
 --rpm-dist el7 \
 -m you@youraddress.com \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 --rpm-autoreqprov \
 usr

 sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
 sudo rpm -e protobuf-3.3.0      

Mümkünse, rpm için yum tercih edin.

Debian9'da:

make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 usr/local/bin \
 usr/local/lib \
 usr/local/include

 sudo apt install -f *.deb
 sudo apt-get remove protobuf

Mümkünse dpkg'a apt'yi tercih edin.

Bu cevabı stackoverflow'ta da gönderdim


0

Biz gerçeği pazarlık gerekiyor kaldırma yapmak istiyorum değil bu yüzden aşağıda proaktif çözümün daha olduğunu her zaman işe.

Bu, Ubuntu Yazılım Merkezinde mevcut olan paco programının kullanılmasını içerir. Paco'yu kurduktan sonra, bir program "install" yaptığımızda log modunu kullanabiliriz. Paco, "make install" için bir sarmalayıcı görevi görür ve / var / log / paco dizininde çeşitli dizinlere kopyalanan dosyaların listesiyle bir günlük oluşturur. Üstelik Paco Front'un sonundaki dosyaları görebilirsin.

Örneğin kaynaktan php derlediğimde aşağıdakileri yaptım:

paco -lp php5 "make install"

L parametresi paco'yu log modunda çalıştırır. Bu, / var / log / paco içinde php5 (komutta verdiğim isim) adında bir log dosyası oluşturdu. Yükleme sırasında çeşitli standart konumlara kopyalanan tüm dosyaları içerir. Dosyaları görüntülemek için bir komut satırı editörü veya paco gui kullanabilirsiniz.

Aşağıda sed komut satırı düzenleyicisini kullanarak dosya listesini alma örneği verilmiştir
(php5'i dosya adınızla değiştirin).

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

Dosyaların listesini aldıktan sonra, nasıl sileceğinizi biliyorsunuz, değil mi? Aslında, yukarıdaki komutun sonuçlarını, aşağıda gösterildiği gibi geri dönüş çubuklarını kullanarak rm olarak iletebilirsiniz :

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

İş bitmiş!

Not: LD_PRELOAD sınırlamaları nedeniyle, paco intihar programlarının izini takip edemez. Man sayfasına bakınız.


0

Ben derlenmiş olan php-5.6.30 Openssl ile yapılandırmadan kaynağından, yani kaldırma yapmak dönüp scratch.Using bu uygulamayı yüklemek zorunda vermedi php bunu desteklemediği için Makefile olarak çalışıyorum.

Ancak, bu adım benim için çalıştı, - Ben php ile ilgili tüm dosyaları listeledi ve onları el ile kaldırıldı, bir ter kırmadan yaklaşık 5 dakika sürdü. Derlenmiş yazılımınızı kaldırmak için benzer şekilde bu adımları kullanabilirsiniz.

Değiştir php kaldırmak için gereken yazılım ile

whereis php

Yukarıdaki komut, ikililerin yüklü olduğu dizinleri listeler: örn. / Usr / local / bin / php, / usr / bin / php .. çıktınızda listelenen her dosyayı / dizini kaldırın.

sudo rm -f /usr/local/bin/php

Bunu, yukarıdaki çıktıda listelenen tüm dosyalar ile yapın ve daha yeni bir sürümü sıfırdan yüklemek için hazırsınız.

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.