Rethinking the Linux Distribution

O’Reilly – Rethinking the Linux Distribution by George Belotsky

Any one of Perl, Python, or Ruby (as well as a few others) could become the primary system administration tool, displacing the shell. In my experience, however, Python’s highly readable, compact and consistent syntax makes it the ideal choice for this sort of work.

Many well-known Linux distributions already use Python in their key tools. Red Hat‘s Anaconda installer, and Gentoo‘s Portage package manager are two examples. Ubuntu (the top distribution for the last 12 months, according to DistroWatch) “… prefers the community to contribute work in Python.”

The next logical step is to create a complete system administration environment using a high-level language. In large measure, this project is already underway. A relatively recent, highly rated (see review links on DistroWatch) distribution, Pardus, uses Python across many of its core tools. The Pardus team, recognizing that “High Thoughts Must Have High Language”, has even written a new init framework in Python. Here is how they explain their choice.

Among the high level languages, Python seemed to be the best choice, since we already use it in many places like package build scripts, package manager, control panel modules, and installer program YALI. Python has small and has clean source codes. Standard library is full of useful modules. Learning curve is easy, most of the developers in our team picked up the language in a few days without prior experience.

Reklamlar

Linux Altında Dosya Parçalamak

Mfyz 3 sene önce yazmış ancak daha gelişmişini yazayım dedim. Linux altında dosya parçalamak ve birleştirmek oldukça basit. Sadece elimizin biraz konsola değmesi gerekiyor. Kullanacağımız araç ise split ;)

Öncelikle şunu belirteyim, kullandığım sürüm 6.9, daha düşük bir sürümü kullanıyorsanız çalışmayabilir. Hani “neden çalıştıramadım?” diye comment girmeyesiniz diye söyledim :)

[~/tmp/split]> ls
Papa Roach – Between Angels And Insects.mp3

[~/tmp/split]> du -hs “Papa Roach – Between Angels And Insects.mp3”
3,7M Papa Roach – Between Angels And Insects.mp3

[~/tmp/split]> split -b 1m “Papa Roach – Between Angels And Insects.mp3” “Papa Roach – Between Angels And Insects.mp3.part_”

[~/tmp/split]> ls
Papa Roach – Between Angels And Insects.mp3
Papa Roach – Between Angels And Insects.mp3.part_aa
Papa Roach – Between Angels And Insects.mp3.part_ab
Papa Roach – Between Angels And Insects.mp3.part_ac
Papa Roach – Between Angels And Insects.mp3.part_ad

[~/tmp/split]> du -hs “Papa Roach – Between Angels And Insects.mp3.part_aa”
1,1M Papa Roach – Between Angels And Insects.mp3.part_aa

İşte bu kadar ;) Girilen parametreleri açıklayayım, daha fazlasını split –help ile öğrenebilirsiniz.

* Komutun genel kullanım şekli; split -b BYTE DOSYA ÇIKTI

* BYTE kısmına m (Megabyte) veya k (kilobyte) son ekini getirerek ne kadar büyüklükte bölmesini istediğimizi belirtebiliriz. Yukarıda dosyayı 1MB olarak bölmesini söyledim.

* DOSYA ise bölmek istediğimiz dosyadır.

* ÇIKTI kısmı da dosya bölündüğünde hangi ad ile çıktı alınmak isteniyorsa belirtilen parametredir. Bölme işleminin sonunda “aa, ab, ac … ba, bb, bc” gibi sonekler getirilir.

Dosyamızı böldük, peki nasıl birleştireceğiz? :) Bunun için cat kullanacağız. aa, ab, ac gibi sonekleri sırası ile okuyup bir dosyada birleştireceğiz.

$ cat foo_aa foo_ab foo_ac >> birleştir

gibi. Eğer 2 veya 3 tane bölünmüş dosyamız varsa yukarıdaki komutu rahatlıkla kullanabiliriz. Ancak 90MB büyüklüğündeki bir dosyayı 30 parçaya böldüğümüz zaman kullanılamayacaktır. Bu da ufak bir döngü ile halledebiliriz.

[~/tmp/split]> for i in *.part_*; do cat “$i” >> birlestir.mp3; done

[~/tmp/split]> du -hs birlestir.mp3
3,7M birlestir.mp3

Hepsi bu :)