Ubuntu yükseltme işlemi nasıl çalışır?


12

İşletim sistemi hala çalışırken Ubuntu sorunsuz bir şekilde daha yeni bir dağıtım sürümüne nasıl yükselir? 10.10'dan 11.04'e yükseltme yapıyorum ve daha önce birkaç kez yükseltme yaptım ve update-manager -d'yi çalıştırmak, indirmek ve yüklemek, ardından yeniden başlatmak kadar basit.

Bu tam olarak nasıl çalışıyor? Yükseltme yöneticisi hala kullanımdayken işletim sistemini nasıl güncelleyebilir?


Tamam, sorumu ödül yorumuna eklemek iyi bir fikir değildi. Ben de düzenleyebilir gibi görünmüyor.
Oxwivi

Yanıtlar:


3

Deneyimlerime göre, paketler ve modüller çalışırken bellekte tutulduklarını ve sabit sürücüdeki kopyalarına çok fazla atıfta bulunmadıklarını varsayıyorum. Ubuntu'da bir program çalıştırırsanız ve ardından çalışırken ilgili paketleri kaldırırsanız bunu görebilirsiniz. Çalışmaya devam edecek, ancak kapatırsanız yeniden başlatamazsınız.

Aynı şey bir dağıtım yükseltmesi için de geçerli olur. Ubuntu'nun orijinal sürümüyle ilgili tüm paketler kaldırılsa ve yenileriyle değiştirilse bile hala çalışıyor, bu nedenle nihayet bir sistem yeniden başlatıldığında durdurulduklarında yeni paketler devreye giriyor.


Bu ayrıca, yükseltme ilerledikçe bazı menülere yeni özelliklerin eklendiğini neden fark ettiğimi de açıklıyor.
bbosak

16

Burada sürecin daha ayrıntılı bir açıklaması. Üzgünüm metin çok uzadı.

Deneyimlerim, Ubuntu'da kullanılan tüm paketleme ve yükseltme sisteminin başlangıçta icat edildiği Debian'dan kaynaklanıyor. Günlük Ubuntu güvenlik yükseltmeleri apt-get upgrade, normalde herhangi bir yazılımı kaldırmayan çalışmaya karşılık gelir . Büyük sürüm yükseltmeleri apt-get dist-upgrade, yazılım paketlerinin tamamen değiştirilebileceği bir süreye karşılık gelir .

Aslında çok düşük seviyeli bileşenler normalde bir sürüm yükseltme sırasında değiştirilmez. Yükseltmeden hemen sonra / boot dizininizde iki çekirdek ve initrd resmi bulmalısınız. Bunun nedeni, programların aksine çekirdek bileşenlerinin birbirinin yerine geçememesidir. Yükseltme sırasında yeni aygıt sürücülerinin yüklenmesi gerekiyorsa, bunların çalışan çekirdeğe uyumlu olması gerekir. Sistem yeni çekirdek ile önyükleme yaptıktan sonra eskisi kaldırılabilir. Bu bir şeyin manuel olarak yapılması gerektiğini en son kontrol ettiğimde, mevcut güncelleyicinin bunu nasıl işlediğini bilmiyorum. Bu BTW. ana neden, çekirdek görüntüsünün dosya adında sürüm numarasını neden taşımasıdır - böylece aynı anda farklı çekirdek sürümleri yüklü olabilir. Modül yolu için de aynı (/ lib / modules / ...)

Yazılım paketleri bağımlılık hirarchy en düşük paketleri ile başlayarak, tek tek yükseltilir. Bunlar normalde libc ve diğerleri gibi program kütüphaneleridir. Bununla birlikte, paketlerin güncellenme sırası sabit kodlanmaz, ancak paket bağımlılıkları çözüldükçe dinamik olarak hesaplanır. Çoğu durumda eski programlar yeni kütüphanelerle çalışabilir, bu nedenle ilk önce bu kütüphanelerin değiştirilmesi çok sorunlu değildir.

Burada, sistemin manuel olarak kurulan paketler (yani doğrudan kendiniz kurduğunuz paketler, yani krom) ve otomatik olarak kurulan paketler arasında ayrım yaptığını ve yalnızca manuel olarak kurulan paketlerin bağımlılıklarını (ve bu bağımlılıkların bağımlılıklarını yerine getirmek için kurulduğunu) anlamalısınız. ).

Manuel olarak yüklenen her program için güncelleyici sadece daha yeni bir sürüm arar. Genellikle bu programlar sadece veri içermeyen "ubuntu-desktop" gibi meta paketlerdir ve sadece bağımlılıklar içerir. Doğrudan güncellenen (manuel olarak talep edilen) programlar tarafından istendiği için, bağımlı kitaplıkların yeni sürümleri içeri alınacaktır. Güncelleyici her zaman bağımlı bir paketin en yeni kullanılabilir sürümünü yüklemeye çalışacaktır (herhangi bir yükseltme sırasında sadece yükseltmeleri değil).

Yeni kütüphane sürümleriyle çalışamayan programlar, kütüphane yükseltildikten sonraki süre boyunca ve programın kendisi yükseltilmeden önce başlatılamaz. Ancak bu programların kütüphane yükseltmesinden önce çalışması gerekiyorsa, çalışmaya devam ederler, çünkü eski kütüphane sürümü kullanımda olduğu sürece bellekte kalır. Yükseltilmeden önce başlatılan programlar için de aynı şey geçerlidir. Bunlar, sonlandırılıp yeniden başlatılıncaya kadar yeni özellikler sağlamaz.

Güncellemeden sonra bazı kütüphaneler (veya genel olarak bağımlılıklar) yetim kalır. Bunlar, eski program sürümleri tarafından istenen ancak artık yeni sürümler için gerekli olmayan kütüphanelerdir. Bu paketler otomatik olarak yüklendi olarak işaretlendiğinden ve manuel olarak yüklenen hiçbir prgram artık bunlarla ilgili olmadığından, bu paketler kolayca yerleştirilip çıkarılabilir. Bunu güncelleme işleminin son adımı olarak da görebilirsiniz (güncelleyici "eski paketleri kaldırma" veya benzeri bir şey).

Daha önce yüklenmediği yerlerde, bunlar otomatik olarak yüklendi olarak işaretlenen ve gelecekte gereksinim ortadan kalktığında kaldırılabilen yeni bağımlılıklar olan bazı paketler yüklenecektir.

Bu mekanizma, tüm kullanıcı programlarının değiştirilmesine bile izin verir. Örneğin Gnome2'den Unity'ye geçiş gibi. Her ikisi de ilk etapta yeni sürümlerin talep edildiği birkaç paketten biri olan ubuntu-desktop'un otomatik bağımlılıkları olduğundan.

Programlar normalde OS çekirdeğinin belirli bir sürümüne bağlı değildir, bu nedenle normalde çalışan çekirdeğe göre iyi çalışır.

Tüm bunların dışında , Ubuntu güncelleyicisinin bu teorinin kırıldığı durumları atlatmak için karışıma bazı özel düzeltmeler ve geçici çözümler attığından şüpheleniyorum .

Güncelleme sırasında görebileceğiniz gibi, sistemin sadece sınırlı bir parça için kullanılabilir olduğu çok iyi koşullar vardır. Güncelleme sırasında bir şeyler ters giderse , büyük olasılıkla bozuk bir sisteme bırakılırsınız. Çoğu zaman kolayca onarılamayan bir tane bile, çünkü yükseltme programı da etkilenebilir. Unutmayın, bağımlılıkları bozuk olan programlar çalışmaya devam edebilir, ancak bağımlılıklar bozulduğu sürece yeniden başlatılamaz, bu durum güncelleyici için de geçerlidir.

apt-markHangi paketlerin manuel olarak yüklendiğini ve hangilerinin otomatik olarak yüklendiğini bulmak için komut satırı programını kullanabilirsiniz. Bu işaretleri aynı programı kullanarak da değiştirebilirsiniz. Bu güncelleme işlemini doğrudan etkileyecektir.

Daha karmaşık bir yazılım kurulumunda Güncelleyici bazen bir bağımlılığı manuel olarak çözmenizi ister. Başka bir el ile yüklenen program aynı kitaplığın eski sürümüne bağlıdır ve yeni ile çalışamaz. Daha sonra, bu programlardan birini bırakmak veya her ikisini de yükseltmekten kaçınmak için seçiminizi yapmanız gerekecektir. Bağımlılıklar genellikle karmaşık olduğu için bu çok hızlı bir şekilde dağınık hale gelebilir ("bağımlılık cehennemi" terimini duymuş olabilirsiniz).

Şimdi belirli sorulara:

  1. Düşük düzeyli altyapı değiştirildiğinde (çekirdek, sürücüler, kütüphaneler vb. Gibi kullanıcının doğrudan etkileşimde bulunmadığı düşük düzey), kullanımdan kaldırılan ikili dosyalara ne olur?
    • Tamam ... ben bunu zaten ele aldım
  2. Tamamen kullanımdan kaldırılmış bir uygulamaya ne olur? Örneğin, Unity 2D (veya paketi yeni repoda olmayan herhangi bir yazılım terk edildi / bakım yok).
    • Uygulama bir kez manuel olarak yüklendiyse, sistemde kalır ve genellikle tarif ettiğim bağımlılık cehennemine neden olur.
  3. ubuntu-desktop, varsayılan Ubuntu uygulamalarını bağımlılık olarak çeken bir meta pakettir. Firefox'u kaldırıp Chrome'u yüklediysem Firefox, yükseltmelerin bir parçası olarak hala çekilecek mi?
    • Yeni Sürümün standart tarayıcısı olduğu sürece, evet. Chromium da yükseltilecek. Ubuntu-desktop'u kaldırmadan Firefox'u kaldırabileceğinizden emin değilim. Sıkı bağımlılıkların yanı sıra, paket sisteminin bir yazılımın normalde bir bağımlılık gibi kurulacağı, ancak kendi bağımlılıkları dışında hiçbir şeyi etkilemeden kaldırılabileceği öneriler kavramını da bildiğini unutmayın.
  4. Dahası, tek bir uygulama paket-x'e bağlıysa ve artık yeni sürümde yapmıyorsa ne olur; yetim kalmasına rağmen package-x paketlerin geri kalanıyla birlikte yükseltilecek mi?
    • Hayır!

Başka sorularınız olup olmadığını sormanız yeterli.


Bağımlılık cehennemi ile ilgili daha fazla dokümana bağlanabilir misiniz (DLL cehennemi hatırlatıyor)? Minimum Ubuntu yüklemeleri kullanıyorum ve yükseltmenin benim için nasıl çalışacağını bulmak istiyorum.
Oxwivi

Bence internette bulabileceğiniz tek şey bağımlılık cehennemidir. Sizin gibi uygun sayfalarınızı okuyun man apt-get. Genellikle apt-get -t intrepid install foo/jaunty bar/oneiricvb. Gibi komut belirleme komutu sözdizimini kullanmanın yararlı olduğunu düşünüyorum , sadece örnekler. Aslında bu, bazen sürümleri karıştırdığınız Debian ile daha mantıklı, Ubuntu altında bu daha az geleneksel. İlginç konular aynı zamanda paketleri sabitlemek ve beklemeye almak olabilir.
Paul Hänsch

3
Stack Exchange ağında gördüğüm en uzun kod dışı yanıt için ödül kazanırsınız.
Patrick

3

Dosya sistemi düzeyinde, Windows'tan farklı olarak, bir Unix sisteminde açık olan dosyaları silebilirsiniz. Silme işlemi yalnızca dosyanın adını kaldırır, içindekileri değil, dosyayı hala açık olan tüm programlar dosyayı kapatana kadar erişebilir ve ancak o zaman veriler serbest bırakılır.

Bu nedenle yükseltme işlemi eski dosyaları kaldırır, yenileriyle değiştirir ve belirli sistem hizmetleri için yeni sürümün çalışması için onları yeniden başlatır.

Tüm bilgisayarı yeniden başlatmadan yeniden başlatılamayan bir veya iki bileşen vardır, bu nedenle bunları yükselttikten sonra, yeni sürümü kullanmanız için yeniden başlatmanız istenir.


2

Linux hala kullanımdayken kendini nasıl güncelleyebilir?

Temel olarak Linux (ve onunla birlikte, çoğu dağıtım) bu şekilde tasarlanmıştır. Çalışan bir sistemde bir paketi yükseltebilmek çoğu Linux tabanlı dağıtım için bir hedeftir.

Linux ile, o dosya şu anda bir uygulama tarafından açılsa veya dosya şu anda çalışmakta olan yürütülebilir veya paylaşılan bir kod kitaplığı olsa bile, paket yöneticisi işleminin diskteki bir dosyaya yazmasını engelleyecek hiçbir şey yoktur . Çok düşük bir seviyede, tek bir yazma / okuma işlemi sırasında bir dosyaya erişimi koruyan kilitler vardır, ancak bunlar asla milisaniyeden daha uzun bir süre ve aynı dosyaya yazmaya çalışan herhangi bir uygulama için tutulacak şekilde tasarlanmamıştır. o milisaniyeyi bekleyecek.

Yürütülebilir bir dosyayı çalışırken değiştirebilir ve çalışan işlem için hiçbir şey yapmaz, çünkü işlem artık diskteki dosyaya ihtiyaç duymaz - tüm kodu zaten belleğe yüklenmiştir.

Bu nedenle Linux'ta, bir uygulamayı çalışırken yükseltebilseniz bile, yükselttiğiniz uygulama yeniden başlatılıncaya kadar yükseltme aslında etkili olmaz. Sistem hizmeti gibi bir arka plan işleminin yükseltilmesi durumunda, söz konusu hizmetin yeniden başlatılması gerekir. Çekirdeği yükseltmeniz durumunda, bu yeniden başlatma anlamına gelir.

Çalışırken bir programın dosyalarını değiştirmeyecek bazı programları bozmayacak mısınız?

Linux dağıtımındaki bazı paketler, paket güncellenirken paket yöneticisine belirli sistem hizmetlerini durdurmasını bildiren ve güncelleme tamamlandıktan sonra bu hizmetleri yeniden başlatan talimatlar içerir. Bu, örneğin belirli bir hizmetin yapılandırma dosyalarının güncelleştirildiği ve hizmetin çalışan sürümünün yapılandırma dosyalarının daha yeni sürümüyle başa çıkamayabileceği durumları önler.

Genel olarak, normal kullanıcı uygulamaları, kendisini oluşturduğu dosyalar ve kullanıcıların ana dizinleri gibi konumlardaki yerler haricinde, çalıştırmak için yapılandırma dosyası gerektirmez. Bu nedenle, güncelleme sırasında bunlara paket yöneticisi dokunulmaz.


Tüm bu ayrıntıların zaten farkındayım, lütfen ödülümle birlikte verdiğim yorumu okuyun. Ubuntu'nun tam olarak nasıl olduğunu, yani aptyükseltme işlemi sırasında belirli paketleri ve bağımlılıkları nasıl işlediğini bilmek istiyorum .
Oxwivi

-2

Bu başka bir özelliğe benzer. Umarım bu temel süreci anlamaya yardımcı olur.

İşletim sistemi önyüklendiğinde "root değiştirme" yeteneğinden bahsediyorum.

İşletim sistemi önyüklenirken, kök dosya sistemi (read: "/") başlangıçta yalnızca RAM'de kullanılabilir. Bu önyükleme işlemi çalışırken, RAM'den sabit diskteki / dosya sistemine geçer.


1
Hayır, sistem yükseltmesi sırasında chroot mekanizması kullanılmaz. Yükseltme, canlı dosya sisteminde gerçekleştirilir. Program menülerinin yeniden oluşturulduğunu ve program simgelerinin değiştirildikçe değiştiğini bile izleyebilirsiniz. Ancak, yeni oluşturulan bir disk parçasındaki yeni bir sistem kök kök ortamına "ayrıştığında", kroot mekanizması orijinal bir sistem kurulumunda kullanılır.
Paul Hänsch
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.