Başsız sunucu olarak çalışırken X Server ve Desktop Manager nasıl kaldırılır?


88

Ahududu Pi'mi, içine girebileceğim başsız bir sunucu olarak kullanıyorum . X Sunucusuna, LXDE'ye vb. İhtiyacım yok.

Raspbian "wheezy" yi çalıştırıyorum. Buradaraspi-config açıklandığı şekilde kullanarak "Masaüstünde açılışta başlat" özelliğini zaten devre dışı bıraktım . Ancak kullanmadığım tüm masaüstü bilgisayarları için çok sayıda paket güncellemesi almaya devam ediyorum (bekleyen güncellemeleri e-posta yoluyla bana bildirmek için apticron kullanıyorum), bu yüzden bu gereksiz güncellemeleri önlemek için tüm gereksiz paketleri tamamen istiyorum .apt-get remove

Hangi paketleri çıkarmalıyım?

Şimdiye kadar, aşağıdakilerle geldim:

sudo apt-get remove desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

Yukarıdaki listeyi, "Otomatik kurulum" olmayan Kurulu Paketler -> x11 -> ana bölümündeki tüm paketlere göre inceleyerek yaptım.

Nedense bunu çalıştırdığımda apt-getbana şunu söylüyor:

The following extra packages will be installed:
  libutempter0 xbitmaps xterm

kaldırma işlemi için biraz garip görünüyor .

Daha kolay bir yolu var mı? Tüm bu grafiksel öğelere sahip olan ve tüm bağımlılıklarını alarak kaldırılabilen bir "süper" paket var mı? Anladığım kadarıyla, bu mümkün gözükmüyor çünkü bunlar otomatik olarak kurulmamış, yani hepsini izlemem ve açıkça kaldırmam gerekiyor.

Yanıtlar:


85

TL; DR veya "Sadece pi'mi yaktım"

sudo apt-get remove --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --purge

( apt-get autoremove --purgeHiçbir öksüz kalana kadar tekrar et )

Daha fazla açıklama

Bir foo paketi başka bir libfoo paketine bağlıysa ve libfoo paketini kaldırırsanız , bağımlı ( foo ) da kaldırılır. Foo Çünkü bir bağlıdır belirterek çizgi libfoo , libfoo çıkarıldı eğer foo bırakmak dökümü yapılır. Tersi doğru değildir: çıkarmadan foo gelmez silmek libfoo otomatik. Başka bir paket xfoo olabilir ayrıca yüklü olup olmadığını apt izler rağmen (sadece kaldırmaz yüzden apt, libfoo bağlı sadece yükleme bir yan etkisi olarak foo ve eğer siz isteyince başkaları hala güvenmediği sürece, otomatik olarak kaldırmayı teklif edin)

Meta paketler , fofoya bağlı foo ile aynı şekilde diğer paketlere de bağlıdır , bu yüzden bir meta paketi kaldırdığınızda, genellikle çok az şey kaldırılır. Örneğin, iki meta-paketler olabilir bağlıdır xterm (LXSession ve xfsession belki) üzerinde, ancak bir ya da her iki kaldırma olmaz xterm olmayan LXSession veya xfsession olmadan kırık olduğundan xterm kaldırın. Meta paketler genellikle bağımlılık ağacının tepesinde , altta değil ve birkaç şey doğrudan meta paketlere bağlı olma eğilimindedir. Meta-paketler öncelikli olarak bir seferde mantıklı bir paket seti kurmak için uygun bir yol sunar, ancak bunlar araç kaldırma değildir.

Bu nedenle, X11'e bağlı her şeyi puanlamak istiyorsanız, tüm x11 uygulamalarının sonuçta bağlı olması gereken temel libx11 kitaplık kümesini hedeflemeniz gerekir :

sudo apt-get remove --dry-run --auto-remove --purge 'libx11-.*'
sudo apt-get autoremove --dry-run --purge

Bu, nihayetinde libx11 -. * 'E bağlı olan herşeyi kaldıracak (simüle edecek) ve doğrudan X11'in kendisine bağlı olmasa bile, bir X11 programının bağımlılığı olarak kurulan paketleri de kaldıracaktır (CUPS ve Ghostscript tipik olarak yüklenmiştir). masaüstü ortamı kurmanın yan etkisi olarak). İkinci komut, hiçbiri kalana kadar sonraki yetimleri kaldıracak. Bu adımı daha sonra yapmak ya da hiç yapmak istemiyorsanız "--auto-remove" i kaldırın ya da GUI'yi temizledikten sonra paketleri manuel olarak geri ekleyin.

- Kaldırmak istemediğiniz paketleri kaldırmayacağını kontrol ettikten sonra işlemi gerçekten gerçekleştirmek için --dry-run seçeneğini kaldırın.)

Yan etkileri temizlemeyi ve temizlemeyi ve gerektiğinde geri eklemeyi tercih ederim. Ayrıca, devam ettim ve bunu kendi pi'mde test ettim ve çok spartan ama işlevsel bir sunucuya yeniden başladım. :)

Kaldırmak neden bir şey yükler ?

Yukarıdaki strateji belirtilen sorunu çözmektedir, ancak bir çıkarma işleminin neden paketlerin kurulmasına neden olduğunun merakı halen mevcuttur .

Her paket yöneticisinin merkezinde bir tür tatmin edici bir çözücü var . Bir paket yöneticisine, bazı paketleri yüklemesini, bazı paketlerini kaldırmasını veya bazı paketleri yükseltmesini söylediğinizde, gerçekten yapmanız gereken, mevcut bir paket kümesi verilen bir sonraki istenen yazılım kurulum durumunu çözmektir. Bu çözüm , ek paketler (bağımlılıklar) kurulmasını, mevcut paketlerin kaldırılmasını (çakışmalar, molalar), belirli paketleri düşürme / yükseltme (uyumluluk düzeyi) veya bunların bir kombinasyonunu içerebilir. Bu nedenle, çözücünün diğer paketlerin kaldırılması için bazı paketlerin yüklenmesi gerektiğini belirlemesi biraz zamanlayıcı bir durum olsa da, mükemmel mantıklı. Bu , paket yöneticilerinin çözdüğü kötü bağımlılık yönetimi sorunudur.

Somut bir örnek: Önceden yüklenmiş bir Java uygulaması kümesi göz önüne alındığında, tümü şu anda openjdk-7-jre olan java uyumlu bir çalışma zamanına bağlıdır . Daha sonra bir beyan yeni bir Java aracı kurulumu için çözmek için paket yöneticisini sormak çatışma ile OpenJDK-7-jre ama işleri ile oracle-7-jre (her iki paketler jenerik sağlamak bir java-7-çalışma zamanını ). Çözücü bir önerecek çıkarılmasını ait OpenJDK-7-jre ve yüklemek ait oracle-java-7-jreMevcut paketleri kırmazken yeni paketin kurulmasını istediğiniz durumun çözümü olarak.

Bu ise , belirli bir durumda, xterm paketidir içerir adlı bir sanal bağımlılık X-terminal emülatörü ( xterm , lxterminal ve aterm tüm sağlayan bir X-terminal emülatörü bu kaldırma olasıdır, böylece) lxterminal (bir parçası olarak ) LXDE'nin çıkarılması, çözücü yüklü bir varolan paketi (bulunan kodlanır gerekli olası örneği olarak) bir tür x-terminal emülatörü gerektirir (bu yüzden çözücü xterm yüklemeyi tercih libutempter0 ve xbitmaps, aksi halde kırılan bağımlılığı gidermek için kurulacak diğer paketleri açıklamak). Paket veritabanını görmeden, bunun en olası senaryo olduğunu varsayırdım.

Şu anda bağlı olan paketleri keşfetmek için xterm'den (veya alternatif bir) kullanmak apt-cache rdepends (kullanarak komutu --installed yüklü paketlere sınırlamak için anahtarı için):

$ apt-cache --installed rdepends xterm
xterm
Reverse Depends:
    |xorg
     clusterssh
    |xinit
    |tk8.5
    |tk8.4
    |transcode

'|' Dönüşüm karakteriyle başlayan bağımlılıklar paketin xterm veya sağladığı bir şeye bağlı olduğu anlamına gelir (bu durumda bir şey x-terminal emülatörüdür ). Clusterssh paketi bağlıdır xterm'den açıkça ve bir alternatif izin vermez. Bu, xterm'in gerekli olmasına neden olan paketlerin kısa listesidir.

Peki ya deborphan?

İzleme yetim işlevselliği dahil oldu 2010 yılında 'autoremove' işlevselliği (Debian hata yoluyla apt-get 582.791 deborphan render) çoğunlukla gereksiz ve esasen eskimiş. Deborphan ve bunun gibi diğer çözümlerden farklı olarak apt-get, hangi paketlerin açıkça yüklendiğini ve hangi paketlerin yan etki veya açıkça yüklenen bir paketin bağımlılığı olarak yüklendiğini doğrudan izler . Bir yönetici foo yükler, örneğin, libfoo bir şekilde yüklü yan etki ve apt-olsun autoremove olacak foo çıkartırken autoremove (veya --auto-kaldırmak) belirtilirse, aslında, libfoo çıkarın.

Deborphan tarafından ele alınan yaklaşım birtakım tahminler topluluğudur. Örneğin, bağımlı olmayan yüklü bir kütüphanenin yetim olması gerektiği tahmininde bulunuluyor : libfoo yüklü, ancak ne foo ne de xfoo değilse , deborphan bunun bir yetim olması gerektiğine karar verebilir. Buradaki başarısızlık modlarından biri, kitaplıkların sağladıkları araçlar için özel olarak kurulabilecekleri (libxml2-utils içine yeniden paketlenmeden önce xmllint için libxml2) veya geliştirme amaçları için kullanılabilir durumda olmasıdır. Bu tür paketler yetim değildir . Ek olarak, deborphan kütüphanelere odaklanır, bu nedenle izleri yerleştiren kütüphane dışı yetimleri kaçırır (eski paketler ve artık paketler) .


2
Brilliant benim için çalıştı teşekkürler. Ayrıca bir muninnedenden ötürü de ortadan kalktı, ancak daha sonra kolayca geri koyabiliyorum.
Gün

4
Yakala! 'libx11-.*'Kabuğun taşmasını önlemek için alıntı yapmak zorunda kaldım .

1
@Maxx, harika cevap, ancak tüm senaryolarınızda, apt-get removeistediğini install xtermve diğer ikisini çalıştırdığında nasıl olduğunu açıklamamışsınız . Ben de bunu yaşadım ve çözemedim.
Madivad

2
Temiz, genleşmemiş raspbian yüklemek apt-get, yükseltme dist-yükseltmeden sonra: rootfs ... 94% /. Apt-get remove sonrası --auto-remove --purge libx11 -. *: rootfs ... 51% /Mükemmel cevap, çok teşekkürler!
Daniel F,

2
Ve apt-get autoremove sonra: rootfs ... 41% /...
Daniel F

27
sudo apt-get install deborphan
sudo apt-get autoremove --purge libx11-.* lxde-.* raspberrypi-artwork xkb-data omxplayer penguinspuzzle sgml-base xml-core alsa-.* cifs-.* samba-.* fonts-.* desktop-* gnome-.*
sudo apt-get autoremove --purge $(deborphan)
sudo apt-get autoremove --purge
sudo apt-get autoclean

İlk satır deborphan, artık paketleri ortadan kaldıracak şekilde kurulur .

İkinci satır, X11 sistemi LXDE, Samba (Windows Dosya Paylaşımı), yazı tipleri, Gnome ve Raspberry Pi'nin masaüstü ortamı ile ilgili diğer öğelerin çekirdek paketlerini kaldırır.

Üçüncü satır, deborphan tarafından tespit edilen artık paketleri ortadan kaldırır.

Dördüncü satır, gereksiz paketleri siler.

Beşinci satır paket önbelleğini temizler.


3
Ahududu Pi Yığın Borsasına Hoşgeldiniz! Bu soruyu teknik olarak cevaplayabilirken, bunun nasıl çalıştığı ve tam olarak ne yaptığı hakkında bazı açıklamalar içermesi tercih edilir.
RPiAwesomeness 11:14

1
Bu komutları yepyeni Raspbian kurulumunda çalıştırıyorum 4GB'lık bir SD kartındaki gigabayttan az bir miktardan 2,5GB'lık ücretsiz bir uygulamaya geçtim. Bana göre en azından bu doğru cevap.
soymak

2
Kabul edilen cevap çok ayrıntılı ancak OP'nin sorununu çözecek bir liste sunmuyor. Bu cevap barebone olabilir, ancak aslında OP'nin (ve benim) gerçekte ihtiyaç duyduğu şeyi yerine getiriyor
portforwardpodcast

Neden samba kaldırmalı? Bu bir GUI uygulaması değil. Ağ için gerekli olabilir.
Dogweather

9

1 /. Yaptığım tüm masaüstlerini kaldırmak için (git bir fincan kahve yap. Biraz yürüyüşe çık)
apt-get remove --auto-remove --purge libx11-.*

2 /. Sonra artık dosyalardan kurtulmak için benborphan kurdum.
sudo apt-get install deborphan

Neyin yetim kalmış olduğunu görmek istiyorsan, bunu yap ...
deborphan -sz

3 /. Sonra kalan tüm dosyaları sildim ...
sudo apt-get remove --purge $(deborphan)

Sonunda, artık kullanılmayan gereksiz paketleri kaldırmak için ...
sudo apt-get autoremove

Sonuç: Başsız ve ıslık sesi olarak


2
apt-get remove --dry-runkesinlikle hiçbir şey yapmaz , ancak ekranda mesajları yazdırır.
lenik

7

Var buraya bir göz ama yaklaşık kısmına aşağı kaydırın tasksel.

tasksel --list-tasksPi ssh ile wifi ssh çalıştırmak bana (yaklaşık 30 saniye sonra) verir:

u desktop   Debian desktop environment
u web-server    Web server
u print-server  Print server
u database-server   SQL database
u dns-server    DNS Server
u file-server   File server
u mail-server   Mail server
u ssh-server    SSH server
u laptop    Laptop

Öyleyse, tasksel remove desktopistediğini yapmalısın [yorumları gör] . Man sayfası biraz kısa ve gizemlidir, çünkü görevler çoğunlukla Debian'lılara yöneliktir. Bu işe yararsa bize bildirin;)


Teşekkürler, hiç bir zaman taskselUbuntu deneyimim olsa da hiç duymamıştım . Maalesef bunu denedim, remove desktopkomutu çalıştırmak biraz zaman aldı ancak tüm bu "grafiksel" paketler hala orada aptitude.
Gün

Her ikisine de sahip değildim, ancak bazı temel X bileşenlerinin kaldırılmasının sadece apt olduğunu fark ettiğimde biraz bağımlılık duydum, düşündüm ki tüm bağımlılık yığınını çekmedi. Taskel için daha iyi bir sayfa buldum ve aslında ncurses uygulamasını başlattım (seçeneksiz tasksel). Şimdi kesinlikle 'u' meta paketlerinin kurulu olmadığı anlamına gelir ve 'masaüstünü' kurarsanız, sadece lxde sürümünden daha fazlasını elde edersiniz wiki.debian.org/tasksel Yani zar yok. apt-cache search metapackageAslında "xorg" meta paketinin de yüklenmediğini fark ettim . Ahududu suçlu sanırım.
goldilocks

2
Birisini çıkmaz bir noktadan kurtarmak için ya da birisinin daha iyi ışık tutabilmesi için bu cevabı açık bırakacağım.
goldilocks

5

Alternatif olarak, bu Raspbian minimal görüntüsünü deneyebilirsiniz: http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/


2
Soruyu hiç cevaplamıyor. Soru, X olmadan nasıl yeni bir işletim sistemi kuracağınız değil, X'in nasıl kaldırılacağıydı. Bu, en iyi yorum olarak bırakılmış, kendi sorunuzu sormayı ya da yorum yapmak için gerekli temsilci için yararlı bir cevap sağlamayı deneyebilirdi. Güzel bağlantı hiçbiri az değil.
Impulss

3

Görevsel bilgilere dayanarak, diğer tüm GUI ile ilgili paketlere referans veren bir meta-paket görev-masaüstü olduğunu bulmak mümkündür. Bu yüzden sadece

sudo apt-get remove task-desktop

Bu, diğer birçok paketi (GUI / Masaüstü ile ilgili) kaldıracaktır.

Arka plan: Paketin adı task-desktopaşağıdaki görev komutlarını çalıştırarak bulunabilir:

tasksel --list-tasks
tasksel --task-packages desktop

0

Başka bir seçenek de, birkaç paketi yüklemek veya kaldırmaktan daha fazlasını yapacaksanız, her zaman tercih etmeniz gereken bir yetenek kullanmaktır.

Yazarak kök olarak yetenek başlatın sudo aptitude. Standart yetenek görünümünde en son liste girişi, Tasksgörevler tarafından listelenen çeşitli seçenekleri seçebileceğiniz giriş listesidir . İle öğeler arasında gezinme j, kve enter. _Vurgulanan öğeye (alt çizgi) girerek temizlenecek öğeyi işaretleyin. Bu sadece eylemleri hazırlar. İşlemleri gerçekleştirmek için tuşuna basın g.

Debian kılavuzundaki yetenek hakkında bilgi edinin .


0

Bu kodu yazın:

sudo apt-get purge desktop-base lightdm lxappearance lxde-common lxde-icon-theme lxinput lxpanel lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal obconf openbox raspberrypi-artwork xarchiver xinit xserver-xorg xserver-xorg-video-fbdev

1
Öyleyse, netleştirmek için, OP'nin komut satırı ile sizinki arasındaki tek fark, purgeen ziyade kullanımı removemı?
Greenonline
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.