Monthly Archives: أبريل 2013

الحمل العكسي Backport للبرامج على أوبنتو

السلام عليكم،
هل سبق أن مررتَ بهذا المصطلح -backport- أثناء بحثك عن تحديث حزمة على توزيعة أوبنتو التي تستخدمها؟
بالنسبة لي الجواب هو نعم ومُحتمل جدا أنه كذلك بالنسبة لك. هذه التدوينة تهدف إلى شرح سبب وجود “الحمل العكسي” أو backport بالإضافة إلى كيفية تفعيله أو تعطيله.

ما هو الحمل العكسي Backport ؟

عند إطلاق إصدار ثابت من أوبنتو (فليكن مثلا 12.04) فإن التغييرات على الحزم الموجودة في المستودعات الرسمية تتوقف ماعدا التحديثات الأمنية أو بعض الترقيعات المهمة. في نفس الوقت فإن تطويرات جديدة تدخل على الحزم المذكورة استعداد لضمها للإصدار الثابت الموالي (أي 12.10 في مثالنا) ولكنها لا تتوفر للإصدار الثابت الحالي (12.04).

يتولى مشروع Ubuntu-Backports الذي هو مشروع رسمي من أوبنتو يُدار بشكل تطوعي بأخذ البرامج بعد تحديثها – استعدادا لإطلاق الإصدار الجديد أي 12.10 في مثالنا – وتحزيمها على شكل حزم deb. متوافقة مع الإصدارات الثابتة الحالية (12.04 وما قبلها). هذه الحزم المعدلة لتتوافق مع الإصدارات الثابتة الحالية تكون متوفرة – إن وُجدت – في مستودعات الحمل العكسي.
ملحوظة1: توَفُّر الحزم على فرع الحمل العكسي ليس مضمونا لكل البرامج. لا ننسى أن المشروع مدار من قبل متطوعين. على الرغم من ذلك فإن نسبة البرامج المحزمة في مستودعات الحمل العكسي تبقى مرتفعة، شخصيا لم يسبق أن بحثتُ عن حزمة ولم أجدها في هذه المستودعات.
ملحوظة2: البرامج المعاد تحزيمها والموجودة في هذه المستودعات تخضع لعدة اختبارات قبل إصدارها، على الرغم من ذلك فإن احتمال تسببها في عدم استقرار نظام التشغيل يبقى قائما، لذا يجب استخدامها بحذر.

قبل أن أختم هذه المقدمة النظرية أشير إلى سؤال قد يتبادر للذهن بعد قراءتها وهو لماذا لا يستمر تحديث الحزم على المستودعات الرسمية بدل إنشاء مستودعات الحمل العكسي؟
لا أزعم أن لدي الجواب الدقيق ولكن بنظري الأمر عائد إلى أن كانونيكال المطورة لأوبنتو تريد تركيز جهود مطوريها وعدم تشتيتها بين الكثير من الإصدارات المتوازية في نفس الوقت لذا تستعين بالمجتمع – المتطوعين – للقيام بهذه المهمة. والله أعلم.

الآن نأتي للجانب التطبيقي – إن صحت التسمية – من هذه التدوينة حيثُ نتعرف على كيفية استخدام مستودعات الحمل العكسي.

تفعيل واستخدام مستودعات الحمل العكسي

في الإصدار 11.10 والإصدارات الموالية له تأتي مستودعات الحمل العكسي مُفعلة بشكل افتراضي ولكن أداة apt-get لا تستعمل هذه المستودعات إلا إذا طُلب منها ذلك بشكل صريح ويكون ذلك بإضافة “version-backports/” إلى أمر التثبيت حيث “version” تُبدل باسم نسخة نظام أوبنتو لديك. انظر الجدول التالي

Version Backports
11.10 oneiric-backports/
12.04 precise-backports/
12.10 quantal-backports/
13.04 raring-backports/

مثال تثبيت برنامج Amarok باستخدام مستودعات الحمل العكسي على أوبنتو 12.04 (Precise Pangolin)

sudo apt-get install amarok/precise-backports

سنرى في آخر هذه التدوينة كيفية تفعيل خيار استخدام مستودعات الحمل العكسي بشكل تلقائي.

في حالة أردت تعطيل استخدام مستودعات الحمل العكسي يمكنك ذلك بالذهاب إلى مركز برامج أوبنتو (Ubuntu Software Center) ثم من قائمة تحرير (Edit) اختر مصادر البرامج (Software sources). في النافذة التي ستظهر اختر تبويب التحديثات Updtaes كما في الصورة

تبويب التحديثات في مصادر برامج أوبنتو

تبويب التحديثات في مصادر برامج أوبنتو

للتفعيل علِّم على خانة Unsupported updates كما في الصورة (أستخدم أوبنتو 12.04 لذا تظهر عبارة precise-backports بين قوسين أمام الجملة السابقة).

بهذه الإعدادات يمكنك تنزيل برامج متوفرة فقط على مستودعات الحمل العكسي دون الحاجة لتعديلات أخرى.

إذا كنتَ تفضل سطر الأوامر نفذ الأمر

sudo gedit /etc/apt/sources.list

ثم ابحث عن الأسطر التي توجد بها الكلمة المفتاحية backport، مثلا raring-backports لأوبنتو 13.04 و precise-backports لأوبنتو 12.04.

ملف sources.list

ملف sources.list

للتفعيل أزل علامة # الموجودة أمام الأسطر. إذا كنت تريد تعطيل الحمل العكسي أضف تلك العلامة إن لم تكن موجودة.

بعد حفظ الملف نفذ الأمرين التاليين لأخذ التغييرات بالاعتبار وإجراء التحديثات

sudo apt-get update
sudo apt-get upgrade

الآن إذا أردتَ استخدام مستودعات الحمل العكسي بشكل تلقائي ينبغي إجراء التغييرات التالية. في سطر الأوامر نفذ الأمر التالي

gksu gedit /etc/apt/preferences

بعد إدخال كلمة المرور استبدل محتوى الملف بالنص التالي (مع استبدال precise باسم إصدار أوبنتو الذي تستخدمه)


Package: *
Pin: release a=precise-backports
Pin-Priority: 500

احفظ الملف.

الآن عندما تنفذ الأمر

sudo apt-get install amarok

فإن التحديث سيكون من مستودعات الحمل العكسي ولن تُضطر لإضافة version-backports/ بعد الأمر كما رأينا أولا في هذه التدوينة.

شكرا على المتابعة  🙂

مواضيع مشابهة لهذه التدوينة

رابط مختصر للمشاركة مع أصدقائك عبر شبكات التواصل الاجتماعي http://wp.me/p1vJeS-ax

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

مصادر

https://help.ubuntu.com/community/UbuntuBackports
http://askubuntu.com/questions/25717/how-do-i-enable-the-backports-repository
http://doc.ubuntu-fr.org/depots
http://askubuntu.com/questions/125874/should-a-relatively-conservative-user-untick-unsupported-updates-precise-backp

Advertisements

استعمال الأمرين mount و umount على ليونكس

السلام عليكم،

لكي يكون ممكنا استعمالُ وحدة تخزين (قرص صلب، مفتاح يو أس بي، قرص سي دي.. إلخ) فإنه يجب أولا تهيئتها (فرمتتها بلغة المنتديات). هذا يعني أنه يجب أن تخضع لنظام ملفات معين يحدد الميزات الممكنة للمجلدات والملفات على وحدة التخزين هذه، مثلا الاسم، هرمية الملفات، الحجم الأقصى للملف أو المجلد، الأذون وأمور أخرى كثيرة. يأتي كل نظام ملفات بآلية تختلف كثيرا أو قليلا عن آلية بقية نظم الملفات وتحاول الاستجابة لمتطلبات محددة. تختلف نظم الملفات من نظام تشغيل لآخر كما تختلف في توافقها فيما بينها. كل نظام تشغيل يدعم نظم ملفات معروفة. على وندوز نجد أنظمة ملفات FAT16، FAT32، FAT و NTFS. على ماكنتوش نجد نظام HFS للملفات. بالنسبة لليونكس فإنه يتوفر على أنظمة ملفات عديدة نذكر منها Ext2 و Ext4 بالإضافة لدعمه لنظم ملفات وندوز التي ذكرت قبل قليل(إذا كانت لديك تجزئة بنظام ملفات ext4 وأخرى ب ntfs فإن ليونكس سيتعرف على التجزئتين بينما لن يتعرف وندوز إلا على تجزئة NTFS).

لكي يتمكن ليونكس من الوصول إلى نظام ملفات – وبالتالي وحدة التخزين المهيئة حسبه – فإنه يجب تركيبه (بالانجليزية Mounting). التركيب يعني ببساطة إتاحة إمكانية الوصول لنظام الملفات انطلاقا من نقطة معينة في شجرة ملفات ليونكس. عند تركيب نظام ملفات فليس مهما ماهية المُركب هل هو تجزئة من القرص الصلب أم قرص مدمج أم غيره (لا تنسَ أن كل شيء في ليونكس ملف، المجلد ملف، قرص سي دي ملف.. كل شيء). كل ما تحتاجه لتركيب وحدة تخزين هو اسم الوحدة والمجلد الذي تود تركيبها عليه. القدرة على تركيب وحدة التخزين في أي نقطة من نظام الملفات أمر في غاية الأهمية، افرض مثلا أن لديك موقعا تحفظ ملفاته داخل المجلد /usr/local/site وأن المساحة التخزينية لم تعد كافية. في هذه الحالة يمكنك إضافة قرص جديد بمساحة أكبر وتركيبه في النقطة /usr/local ونقل ملفات الموقع إليه دون تغيير مسار الوصول إلى الملف أو حذف أي من محتوياته.

للتعامل مع تركيب الملفات يتوفر ليونكس على الأمرين mount و umonut.

سرد لائحة نظم الملفات الموجودة

للحصول على قائمة بكافة نظم الملفات المركبة على شجرة ملفات ليونكس ننفذ ببساطة الأمر mount. ستظهر قائمة مكونة من عدة أسطر، كل سطر من الشكل

device on directory type FS (options)

حيث device اسم وحدة التخزين، directory المجلد الذي رُكب فيه نظام الملفات، و FS نظام الملفات.
للحصول على نفس اللائحة ولكن بترتيب شجري يمكن استخدام أداة findmnt (متوفرة بشكل افتراضي على أوبنتو وردهات ابتداء من الإصدار 6.1 وربما الإصدارات الأخيرة من فيدورا ) عبر الأمر findmnt.

أمر findmnt

سرد لائحة بوحدات التخزين عير الامر findmnt

من الخيارات التي يوفرها الأمر mount الخيار t- الذي يمكن من سرد نوع معين من نظم الملفات. يستخدم هذا الخيار بالطريقة التالية (قد تحتاج لصلاحيات root)

mount -t type

حيث type نوع نظام الملفات. الأمر التالي يعطي لائحة بوحدات التخزين المركبة التي تستخدم نظام ملفات ext2

mount -t ext2

نفس الخيار يتوفر لدى أداة findmnt ويستخدم بنفس الطريقة.

تركيب نظام ملفات Mounting

 في أغلب الحالات يتعرف الأمرmount على نظام الملفات تلقائيا، ولكن في حالات أخرى يتوجب تعيين نوع نظام الملفات يدويا عبر الخيار t-. لتركيب نظام ملفات في نقطة معينة نستخدم الأمر mount بالشكل التالي

mount [option…] device directory

حيث option الخيار و device مسار وحدة التخزين (مثلا /dev/sda3) أو معرف  universally unique identifier (UUID) أما directory فهو المجلد المراد تركيب نظام الملفات عليه.
في ليونكس توجد ملفات خاصة تسمى “Device Files” تشكل واجهة بين النظام وعتاد التخزين. مسارات هذه الملفات معروفة بالنسبة لكل نوع من أجهزة التخزين. مثلا /dev/sdXY هو واجهة الأقراص الصلبة من نوع SATA (أغلبية الأقراص الحديثة) حيث X يمثل الترتيب الذي وُصلت به هذه الأقراص على اللوحة الأم (a للقرص الأول، b للقرص الثاني ..) و Y رقم التجزئة Partition على القرص الصلب. مثلا /dev/sda1 هي التجزئة الثانية من القرص الصلب الأول. بالنسبة للتجزئة الأولى فإنها تحمل الرقم 0 أي أن المسار إليها هو  /dev/sda0.

بالعودة للأمر mount فإن هذه المسارات تُمرر للأمر ليعمل عليها. مثلا نريد أن تكون محتويات التجزئة الثانية من قرص التخزين الأول متاحة على المجلد /home/zeine77/test. نبدأ بإنشاء المجلد

mkdir /home/zeine77/test

ثم ننفذ الأمر

mount -t ext2 /dev/sda1 /home/zeine77/test

إذا فتحت مدير الملفات – نوتيليس مثلا – فستلاحظ ظهور ملف باسم test ضمن اللائحة على اليسار وأمامه علامة التركيب وبإمكانك فتحه لرؤية محتوياته

تركيب وحدة تخزين

تركيب وحدة تخزين

عند استخدام الأمر mount بدون ذكر جميع المعلومات اللازمة (اسم وحدة التخزين، مجلد التركيب أو نوعية نظام الملفات) فإنه يقرأ محتويات ملف الإعداد /etc/fstab لمعرفة ما إذا كان نظام الملفات – أو المجلد – المُمرر للأمر موجودا في الملف إذ أن هذا الأخير يحوي لائحة بنظم الملفات والمجلدات التي ينبغي تركيبها فيها ونوعية نظام الملفات. إذا كان نظام الملفات موجودا فإنه سيركبه في المجلد المحدد. (لاحظتُ أن التجزئة التي تحوي ملفات نظام التشغيل هي فقط ما يظهر بشكل افتراضي على أوبنتو في الملف /etc/fstab ).
يمكن أيضا تخصيص عملية التركيب بتنفيذ الأمر

mount -o options device directory

حيث options خيارات لتخصيص التركيب توضع جنبا لجنب مفصولة بفاصلة “,”(ينبغي عدم ترك مسافات بين الخيارات، فقط فاصلة). الخيارات المتاحة عديدة أهمها

  • noexec منع تنفيذ ملفات binary على نظام الملفات المركب (execution)
  • nouser منع المستخدمين العاديين (كل المستخدمين عدى root) من تركيب وفصل (unmounting) نظام الملفات
  • remount إعادة تركيب نظام الملفات في حالة كونه مركبا
  • ro نظام الملفات متاح فقط للقراءة
  • rw نظام الملفات متاح فقط للقراءة والكتابة
  • user السماح للمستخدمين العاديين بتركيب وفصل نظام الملفات

مثال للاستخدام (على فرض وجود مجلد باسم cdrom في المجلد media/)

mount -o ro,nouser ubuntu-12.04.2-desktop-amd64.iso /media/cdrom

فصل نظام ملفات Unmounting

لفصل نظام ملفات سبق تركيبُه نستخدم الأمر umount (وليس unmount كما قد تحزر) وذلك بإحدى الطريقتين (قد تحتاج لصلاحيات root)

umount directory
umount device

حيث directory مسار الملف الذي رُكب فيه نظام الملفات و device اسم وحدة التخزين.
مثال

umount /media/cdrom

ملحوظة: يجب أن يكون نظام الملفات غير مُستخدَم وإلا ستظهر رسالة خطأ. على سبيل المثال لن يكون بإمكانك فصل نظام الملفات إذا كنت تحرر مستندا من وحدة التخزين المُراد فصلها ببرنامج ليبرأوفيس.

أهم أنواع نظم الملفات

النوع – Type الوصف
ext2 نظام ملفات ext2 يعمل على منصات جنو/ليونكس ويونكس
ext3 إصدار موال من نظام ملفات ext2
ext4 أحدث إصدار من نظام الملفات ext
iso9660 نظام ملفات مستخدم أساسا للأقراص المدمجة (سي دي)
jfs نظام ملفات من إنشاء شركة IBM
nfs مُوجه للوصول وتشارك الملفات عبر الشبكة
nfs4 إصدار حديث من النظام السابق
ntfs يُستخدم في أنظمة تشغيل وندوز، أغلب أنطمة ليونكس تدعم هذا النظام
udf نظام ملفات مُستخدم في وحدات التخزين البصرية، دي في دي مثلا
vfat مُستخدم أساسا على أنظمة وندوز وبعض أجهزة التخزين مثل الأقراص المرنة وأجهزة فلاش

مصادر

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/chap-Using_the_mount_Command.html

http://www.bleepingcomputer.com/tutorials/introduction-to-mounting-filesystems-in-linux/

http://www.bleepingcomputer.com/tutorials/introduction-to-mounting-filesystems-in-linux/

http://wiki.arabeyes.org/Technical_Dictionary

تثبيت وإعداد قاعدة بيانات PostGreSQL وربطها بخادم Apache على أوبنتو

السلام عليكم،
سأشرح من خلال هذه التدوينة طريقة تهيئة بيئة تطوير PHP تعتمد على قاعدة بينات postgresql (بدلا من قاعدة بيانات MySQL كما جرت العادة لدى الكثيرين). أما عن أسباب اختيار posgresql فعديدة أهمها دعمها المتقدم  لمعايير SQL بالإضافة إلى أنها متوفرة تحت رخصة BSD (اضغط هنا للاطلاع على مقال يعرض تفاصيل أكثر عن postgresql).
الخطوات بسيطة وستكون كالتالي.

ملحوظة: جمعتُ الأوامر الواردة في هذه التدوينة في ملف نصي هنا حتى يمكن نسخها ثم لصقها دون مشاكل. النسخ من المتصفح قد يغير بعض الرموز. الأفضل النسخ من الملف النصي.

تثبيت  قاعدة بيانات postgresql

نفذ الأمر التالي (يجب أن تكون لديك صلاحيات root) لتثبيت آخر إصدر من قاعدة البيانات، 9.1.8 أثناء كتابة هذه السطور،

sudo apt-get install postgresql

ثم نثبت pgadmin3 وهي واجهة رسومية لإدارة خادم postgresql عبر الأمر

sudo apt-get install pgadmin3

    واجهة pgAdmin III لإدارة قواعد بيانات PostGreSQL

واجهة pgAdmin III لإدارة قواعد بيانات PostGreSQL

نثبت خادم أباتش وحزم PHP5

للتذكير Apache هو خادم وب حر ومفتوح المصدر تستخدمه الكثير من المواقع ويقدم العديد من الميزات. إذا كنت تريد تجربة تطوير صفحات بي أتش بي فسيكون ضروريا لك تثبيت خادم وب يُفسر سكربتات PHP ويحولها إلى صفحات HTML يرسلها لمتصفح المستخدم لعرضها.
الأمر التالي يثبت واجهة phpPgAdmin لإدارة قاعدة البيانات عن طريق واجهة وب (مماثل لعمل phpmyadmin مع قاعدة بيانات MySQL). ليس هذا فقط، بل إنه يُثبت أيضا خادم أباتش وآخر إصدارات PHP.

sudo apt-get install phppgadmin

بهذا نكون أنهينا المرحلة الأولى وهي تثبيت الأدوات. نكمل مع الإعدادات.

ما سنقوم به الآن هو إعداد خادم postgresQL حتى يمكننا الدخول إليه من الخادم المحلي (localhost). انتبه لمسار الملف إذ أنه يحوي مجلدا باسم رقم الإصدار، 9.1 في حالتي

gksudo gedit /etc/postgresql/9.1/main/postgresql.conf

بعد فتح الملف أضف السطر التالي في آخره

listen_addresses = 'localhost'

احفظ الملف ثم أغلقه. نفذ الأمر التالي بعد حفظ التغييرات في الملف المفتوح وإغلاقه

gksudo gedit /etc/postgresql/9.1/main/pg_hba.conf

إذا كان يوجد سطر “local all all ident sameuser” أبدله بالسطر التالي (إن لم يكن السطر المذكور موجودا أضف السطر التالي في نهاية الملف)

local   all         all                               md5
احفظ الملف ثم أغلقه.

إعداد phpPgAdmin

واجهة phpPgAdmin

واجهة phpPgAdmin

في الخطوة السابقة ثبتنا واجهة phpPgAdmin. الآن سنقوم بإعدادها للعمل مع خادم أباتش، لذا نفذ الأمر لفتح ملف إعداد الخادم.

gksudo gedit /etc/apache2/apache2.conf

اذهب لآخر الملف وأضف ما يلي في سطر جديد

Include /etc/phppgadmin/apache.conf

لقد أنهينا الإعدادت، أعد تشغيل Apache و PostGreSQL عبر الأمرين التاليين لأخذ الإعدادت بالاعتبار.(انتبه للأمر الثاني إذ أنه قد يحوي رقم إصدار PostGreSQL، اكتب المسار /etc/init.d/postgresql ثم استخدم زر Tab على يسار لوحة المفاتيح لتشغيل الإكمال التلقائي )

sudo /etc/init.d/apache2 restart
sudo /etc/init.d/postgresql restart

للدخول إلى الصفحة الرئيسية لخادم أباتش العنوان هو http://localhost  ولواجهة phpPgAdmin العنوان هو http://localhost/phppgadmin .

المجلد الذي يجب وضع السكربتات فيه ليُفسرها خادم أباتش هو var/www/ حيث يوجد بشكل افتراضي ملف index.html يعرض عند الدخول لعنوان أباتش. يمكنك تغييره. شخصيا أقوم بوضع صفحة تحوي سكريبت PHP يعرض محتويات المجلد حتى يمكنني الوصول إلى مختلف المشاريع بسهولة.
إذا رغبتَ في فعل نفس الشيء إليك السكربت (احفظه باسم index.php وغير اسم الملف index.html إلى indexA.html على سبيل المثال).

<?php
$dirname = getcwd();
$dir = opendir($dirname);
while($file = readdir($dir)) {
if($file != ‘.’ && $file != ‘..’ && !is_dir($dirname.$file)) {
echo ‘- <a href=”‘.$file.'”>’.$file.'</a>’.'<br /><br />’;
}
}
closedir($dir);
?>

خطوات أخرى ليست ضرورية ولكنها مفيدة وأنصح بتنفيذها.

تغيير كلمة مرور المستخدم root ل PostGreSQL.

المستخدم root الذي أتحدث عنه هنا هو المستخدم الأعلى SuperUser لخادم PostGreSQL وليس مستخدم النظام. المستخدم الجذر ل PostGreSQL هو postgres ويأتي بشكل افتراضي دون كلمة مرور. الأمر  التالي يحدد كلمة مرور لهذا المستخدم. (حيث password هي كلمة المرور. ضع كلمة المرور التي تختارها مكانها دون حذف الظفرين ‘ ‘)

sudo -u postgres psql template1
ALTER USER postgres with encrypted password ‘password’;
\q

إنشاء مستخدم جديد في PostGreSQL

لإنشاء مستخدم جديد باسم username ننفذ الأمر (اختر اسم مستخدم مناسبا لك). بعد تنفيذ الأمر سيُطلب منك إدخال كلمة مرور ثم تأكيدها بعدها سيسألك إن كنت تريد إعطاء صلاحيات “المستخدم الأعلى” SuperUser للمستخدم الجديد، أدخل y لإعطاء تلك الصلاحيات أو n لإنشاء مستخدم عادي.

sudo -u postgres createuser -d -R -P username

كما يمكنك إنشاء قاعدة بيانات جديدة وجعل المستخدم الجدية مالكا لها عبر الأمر (حيث database_name اسم قاعدة البيانات و username اسم المستخدم الذي أنشأته بالأمر السابق).

sudo -u postgres createdb -O username database_name

الجدير بالذكر هنا أنه بالإمكان القيام بهذه الأمور – إنشاء مستخدمين، إنشاء قواعد بيانات وأمور أخرى – بطرق عدة. إحداها سطر الأوامر كما رأينا أو الواجهة الرسومية pgadmin  أو واجهة وب phpPgAdmin. أنتَ وما تختار 🙂

أترككم على أمل أن تكون هذه التدوينة أفادتكم.

مصادر

http://bdhacker.wordpress.com/2011/05/06/postgresql-phppgadmin-php5-ubuntu/

مُتعلقات

تهيئة بيئة تطوير PHP وتثبيت ووردبرس WordPress