23 Haziran 2011 Perşembe

Çok Dağıtım, Tek Kullanıcı

Yeni bir yazı ile karşınızdayız. Sanki 10 kişiyiz :D Yok sadece ben varım. Neyse bu yazının içeriği bir problem için ürettiğim çözümü içeriyor olacak. Teknik bilgi kısmına girme ihtimalim var. O yüzden sıkılınca bırakın. Hatta ilginizi çekmiyorsa boşa okumakla uğraşmayın :D

Problemden bahsetmeden önce bir giriş yapayım. Elif'te(bilgisayarımın adı) 2 ayrı linux dağıtımı kullanıyorum. Birisi Pardus 2011.1 diğeri Ubuntu 11.04. Bu iki dağıtım için de aynı sabit diski ev dizini olarak bağlıyorum. Ev dizinlerini ortak yaptığım için kullanıcı adlarının farklı olması gerekiyor ki kullanıcıların evlerindeki ayarlar birbirine girmesin.

İşte problem burada başlıyor. Ben internet ortamında "osmank3" kullanıcı adıyla bilindiğim gibi bilgisayarımda da bu kullanıcı adını kullanmak taraftarıyım. Dağıtımlardan birisi bu ismi kullandığında diğerine başka bir isim vermem gerekiyor ayarlar karışmasın diye. İşte ben takıntılı birisi olduğum için bu durumdan rahatsız
oluyorum. Kullanıcı adları aynı olsun, iki kullanıcı da aynı dizini kullansın istiyorken ayarların da karışmamasını istemek birazcık garip olsa gerek.

Bir önceki yazımda geçen 2 haftanın sonunda kendime yapacak bir iş bulamadım. Boş boş gezinmektense oturup bir betik yazayım da vakit geçsin dedim. Dün akşama doğru yazmaya başladım betiği. Arasıra ara versem de gece 3 gibi betiğin bir halta benzemediğini fark edip sabaha bıraktım. Sabah -aslında öğlen- kalkınca yazdım betiği.

Betik ne iş yapıyor? Betik kullanıcının ev dizinindeki adı nokta ile başlayan ayar dosyalarını dağıtım adına göre bir dizine taşıyor, kullanıcının ev dizininden taşınan dosyalara kısayol oluşturuyor. Bilgisayar her açılışında bu bağlantıları kuruyor, her kapanışta da yeni dosya eklenmişse onu taşıyıp bağlantıları kesiyor.

Betiğin ne iş yaptığından bahsettik. Şimdi biraz da kullanımından bahsedeyim. Aslında kullanımı çok basit. Betiğin adını
linker.py koymuştumdeğiştirdim prephome.py. Bağlantı kurmak için linker.py prephome.py start bağlantı kesmek için de linker.py prephome.py stop komutlarını vermek yeterli. Komutlardan da anlaşılacağı üzere sistem başlangıcına start olanı sistem kapanışına stop olanı eklemeniz betiği kullanabilmek için yeterli.

Betik içinde bir karaliste mevcut. Bu listeye eklenen dosya veya dizinler bu işlemlerde es geçilir. Bunun sebebini şöyle açıklayayım. Mesela Pardus'ta .pulse isimli dizin bağlantı olursa nedenini bilmesem de gelişmiş ses ayarları yapılamıyor, clementine sapıtabiliyor. O yüzden .pulse'yi kara listeye aldım. Benzer şekilde .gvfs dosyası da ubuntuda hata çıkartıyordu. O da karalistede. Bunlar benim test edip görebildiklerim. Betiği deneyip bana başka dosya ve dizin adı iletirseniz onları da eklerim.

Sistem başlangıcına nasıl ekleyeceğiz sorusunu duyar gibi oldum cevaplayayım. Öncelikle betiği indirip /bin veya /usr/bin dizini altına koyup çalıştırılabilir hale getirin (sudo chmod +x /usr/bin/
linker.pyprephome.py). Pardus ve birçok dağıtımda /etc/conf.d/local.start ve /etc/conf.d/local.stop dosyaları mevcut. Betiği kullanmak için gerekli komutları bu iki dosyaya eklemeniz yeterli. Ubuntuda bu dosyaları bulamadım ama araştırmalarım sonucu bunlar gibi çalışan bir şey buldum. O şeyi bu bağlantıdan edinip ilgili eklemeleri yapabilirsiniz.

Çok önemli bir şeyden bahsetmem gerekiyor. Masaüstü oturumunuz açıkken bu betiği çalıştırmamanız kendi açınızdan çok iyi olacaktır. Sistem başlangıcı ve kapanışına koymanızı tavsiye etmemin sebebi yapılan işlemler sırasında veri kaybı olmaması için bu ayar dosyalarının kesinlikle kullanılyor olması gerekiyor.

Yazının sonuna gelirken betiğin bağlantısını vermeyi unuttuğumu fark ettim.

Buradan betiği indirebilir ve inceleyebilirsiniz.

Ha birde bu işi yapacak uygulama belki daha önceden
yazılmıştır. Ama ben sıkıntıdan araştırmadım ve kendim yazayım dedim. Varsa böyle bir uygulama belki ondan da faydalanabilirim.

Düzenleme: betik adı linker.py -> prephome.py şeklinde değiştirildi.

6 yorum:

  1. Pitoncu oldun çıktın başımıza habire yazıyorsun bişiler, Gerçi ben pardus kullanmayı bırakalı bayağı oldu. Ne kullanıyorum Windows xp tabi ya ubuntu yok mu ki olmaz mı sadece grubu XP yi başlatmam dışında oda pek bir işe yaramıyor makinemde her neyse, Madem sıkılmaktasın, kullanıcıların daha işine yarar projeleri yatır masaya mümkünse sekiz dilim olsun ben kola alıp geliyorum...

    YanıtlaSil
    Yanıtlar
    1. ben kola içmiyom ayran getir :D Şaka bir yana insan kendi yaşadığı problem üzerinde daha çok düşündüğünden daha çok ayrıntısını fark ediyor. O yüzden kendi problemlerimle ilgili kodluyorum. Ha biri gelir bana problem şu, hadi çözelim derse yok ben uğraşamam demem...

      Sil
  2. Linux ortamında kullanıcı adınız ve ev dizininizin adı aynı olması gibi bir zorunluluk yok. /etc/passwd dosyasını düzenleyerek ev dizininizi istediğiniz gibi değiştirebilirsiniz
    Ayrıntılı bilgi için şu yazıyı inceleyebilirsiniz: http://nixtechnica.blogspot.com/2007/04/how-to-change-your-home-directory-in.html

    YanıtlaSil
    Yanıtlar
    1. Sanırım derdimi anlatamamışım. Böyle bir zorunluluğun olmadığını biliyorum. Ama ben kurulu bütün dağıtımların aynı kullanıcı adı ve aynı ev dizinini kullanmasını istiyorum. Bu yüzden ayar dosyalarını ayrı ayrı tutacak bir betik yazdım.
      Diğer dosyalar (resim müzik belge vs) için "yahu hangi dağıtımda düzenlemiştim" diye aranmamak için :D Hani hepsi bir yerde olsun ayarlar da benim açtığım dağıtıma göre bağlansın. Şimdi anlatabildim mi?

      Sil
  3. Bence de Mustafa Simav'in onerisi en guzel cozum. Her dagitimda ayni kullanici adi ama farkli ev klasorlerini kullanacaksin. Sadece ortak kullanilan klasorleri sembolik link ile ev klasorlerine baglayacaksin.

    YanıtlaSil
    Yanıtlar
    1. Öyle bir şey yapmak istemeyişimin sebebi sembolik bağlantıların simgelerinin farklı olarak görünmesinden rahatsız olmam. Gizli dosyalar sembolik bağlantı olduğunda gizlenebildiği için gözüme batmıyor ama normal dosyalarda gözüme batabiliyor.

      Aslında tüm bu uğraşımın sebebi benim birazcık(!) takıntılı olmam. Böyle basit detaylara bile çok takabiliyorum. :D

      Sil