إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

كل ما تود معرفتة حول مدير البرامج Rpm من تثبيت واستعلام ونحوه

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • كل ما تود معرفتة حول مدير البرامج Rpm من تثبيت واستعلام ونحوه

    السلام عليكم ورحمة الله وبركاته

    بداية أعتذر عن مروري القليل على المنتدى والسبب هو التحضير لإختبار RHCE بعد ثلاث أسابيع تقريباً ( من الآن بدأ القلق وقلة النوم ) دعواتكم بالتوفيق .

    هذا الموضوع ماهو إلا ملخص سريع لبعض ما تعرضنا له في منهج RedHat Academy مع المهندس المتألق سامر حداد .

    وكنت قد كتبته مسبقاً وسأضعه بإذن الله على دفعتين لتعم الفائدة ، وستكون على النحو الآتي :

    1 - تثبيت وإزالة البرامج .
    2 - الاستعلام والتحقق من الحزم وبعض أدوات rpm .

    شكر خاص للإستاذ عبد العزيز على مواضيعه المميزة والرائعة والتي أفادتني كثيراً وأقول له " سنتقابل بإذن الله في موعد تقديم الإختبار فحظاً طيباً "

    بسم الله نبدأ .


    ==========================


    الدرس الأول : تثبيت وإزالة البرامج :

    rpm هو نظام إدارة حزم قامت شركة Red Hat بإنشاءة ويستخدم الآن من قبل بعض التوزيعات مثل ماندريفا و سوزي ، والغرض منه هو تسهيل إدارة الحزم من برامج ومكتبات . فمع rpm يمكنك تثبيت وترقية وإزالة الحزم بكل سهوله كما يمكنك معرفة معلومات عن كل حزمه وما تعتمد عليه من حزم أخرى ، والسبب في ذلك هو وجود قاعدة بيانات تحتوي على كل هذه البيانات التي يحتاجها مدير النظام والمستخدم على حد سواء . يوجد طريقة اخرى لتثبيت البرامج من الشيفرة المصدرية ولكننا لن نتطرق له هنا .

    عندما نتحدث عن rpm فإننا نشير الى ثلاث امور هي :

    1 – قاعدة بيانات rpm .
    2 – ملفات rpm .
    3 – أمر rpm لإدارة الحزم .

    وسنتطرق لها بمزيد من التفصيل .

    أولاً : قاعدة بيانات rpm .

    عند تثبيت Red Hat Enterprise أو أي توزيعة اخرى تعتمد على نظام rpm لإدارة الحزم يتم انشاء قاعدة بيانات ووضعها في المسار التالي :
    كود:
    /var/lib/rpm/
    [root@l4e-laptop /]# ls -l /var/lib/rpm/
    total 52352
    -rw-r--r--  1 rpm  rpm   5455872 Feb 22 18:45 Basenames
    -rw-r--r--  1 rpm  rpm     12288 Feb  7 02:14 Conflictname
    -rw-r--r--  1 root root    16384 Feb 22 18:44 __db.001
    -rw-r--r--  1 root root  1318912 Feb 22 18:44 __db.002
    -rw-r--r--  1 root root   450560 Feb 22 18:44 __db.003
    -rw-r--r--  1 rpm  rpm   2342912 Feb 22 18:45 Dirnames
    -rw-r--r--  1 rpm  rpm  10244096 Feb 22 18:46 Filemd5s
    -rw-r--r--  1 rpm  rpm     24576 Feb 22 18:45 Group
    -rw-r--r--  1 rpm  rpm     20480 Feb 22 18:45 Installtid
    -rw-r--r--  1 rpm  rpm     45056 Feb 22 18:45 Name
    -rw-r--r--  1 rpm  rpm  36622336 Feb 22 18:45 Packages
    -rw-r--r--  1 rpm  rpm    327680 Feb 22 18:45 Providename
    -rw-r--r--  1 rpm  rpm     98304 Feb 22 18:45 Provideversion
    -rw-r--r--  1 rpm  rpm     12288 Feb  6 17:50 Pubkeys
    -rw-r--r--  1 rpm  rpm    389120 Feb 22 18:45 Requirename
    -rw-r--r--  1 rpm  rpm    188416 Feb 22 18:45 Requireversion
    -rw-r--r--  1 rpm  rpm     86016 Feb 22 18:45 Sha1header
    -rw-r--r--  1 rpm  rpm     45056 Feb 22 18:45 Sigmd5
    -rw-r--r--  1 rpm  rpm     12288 Feb 22 18:44 Triggername
    [root@l4e-laptop /]#

    هذا الدليل يحتوي على قواعد بيانات بجميع الحزم المثبته وأسماءها وجميع البيانات المتعلقة بها وﻻ وينبغي التعديل عليها بأي حال من الأحوال ، لأن إدارتها تتم عن طريق الأمر rpm “ سنتطرق له بعد قليل " .

    ثانياً : ملفات rpm :

    ملفات rpm ببساطة هي ارشيف يحتوي على ملفات الحزمة المراد تثبيتها ، إنها قريبة نوعاً ما من ملفات tar ولكنها تحتوي على معلومات أكثر تفصيلاً فمثلاً الـ header الخاص بأي حزمة rpm يحتوي على معلومات مثل اسم الحزمة وحجمها ووصفها وإصدارها والحزم التي تعتمد عليها . وكل حزمة يتم تنسيقها على النحو التالي :
    كود:
    name-version-release.architecture.rpm
    amanda-2.4.4pl-0.3E.i386.rpm

    يمكننا تجزئة الملف السابق وشرح أجزاءة كالتالي :

    package-name = amanda
    اسم الحزمة وهو الذي نستخدمه عند الاستعلام عن حزمة معينة أو محاولة إزالتها من النظام .
    version number = 2.4.4pl
    اصدارة الحزمة . وهذا الرقم هو الذي أطلقه عليه المبرمج المسؤول عن هذه الحزمة .
    release number = 0.3E
    هذا هو رقم التحسين الذي قامت به Red Hat على هذه الحزمة . فعندما تقوم ريد هات ببعض التغييرات على الحزمة كالترقيعات الأمنية أو تعديل مسار الملفات بما يتوافق مع توزيعة ريد هات فإن هذا الرقم يتغير .
    architecture = i386
    هذا هو نوع المعالج الذي تم بناء الحزمة له . هناك أنواع اخرى فمثلاً i386,i486,i586,i686 كلها تعمل على معالجات بانتيوم 32bit فحزم i386 تعمل على الأجهزة القديمة والحديثة على حد سواء أما i686 فقد ﻻتعمل على الأجهزة القديمة وهكذا .

    ثالثاً : أمر rpm لإدارة الحزم .

    يستخدم الأمر rpm لإدارة الحزم مثل التثبيت والترقية والإزالة والإستعلام والفحص وخلافه . ويتأتي الأمر rpm مع عدة خيارات :
    rpm -i packagename.rpm بتثبيت حزمة ما .
    rpm -U packagename.rpm لترقية حزمة ما .
    rpm -e packagenam لإزالة حزمة ما .

    لاحظ أننا هنا لم نكتب اسم الملف بالكامل ، فقط اسم حزمة كما ورد في المثال السابق ، وكتابة اسم الملف بالكامل " منتهياً بالإمتداد rpm “ لن يقوم بإزالة الحزمة وسوف تحصل على رساله مفادها أن الحزمة المذكورة غير مثبته أساساً ، فتنبه لذلك .

    rpm -q packagename للإستعلام عن حزمة ما ، ﻻحظ كتابة اسم الحزمة وليس الملف .
    rpm -V packagename للتحقق من حزمة معينة وما هي التغيرات التي طرأت عليها ، مره اخرى ﻻحظ كتابة اسم الحزمة وليس الأملف كما أن الحرف V كبير وليس v . وسنتطرق لاحقاً لهذا الأمر .

    بعض الخيارات التي تأتي مع الأمر rpm -i .

    هناك بعض الخيارات التي تأتي مع الأمر rpm -i منها :

    rpm -ih وذلك لعرض علامات # أثناء التثبيت .
    rpm -iv لعرض معلومات أكثر تفصيلاً أثناء التثبيت .
    rpm -i –nodeps لتجاهل الحزم التي تعتمد عليها الحزمة الحالية .
    rpm -i –replace-files لإستبدال ملفات الحزمة القديمة والكتابة عليها .
    rpm -i –force لتثبيت الحزمة حتى وإن كانت مثبته مسبقاً ، في حال أخبرك النظام بأن هذه الحزمة مثبته بالفعل .
    rpm -i –test لإختبار التثبيت وهل ستكون هناك مشاكل من الإعتمادية وغيرها .
    rpm -i –noscripts تخبر rpm بأن ﻻيقوم بتشغيل السكريبتات الموجودة مع الحزمة ، سنتطرق لها ﻻحقاً .

    يفضل دوماً استخدام الأمر rpm -ihv packagename.rpm عن التثبيت لأنه يعطي معلومات مفصلة وبشكل مرتب .

    إزالة الحزم باستخدام الأمر rpm -e .

    يستخدم الأمر rpm -e لأزالة حزمة معينة من النظام ويمكن معه استخدام الخيارات التالية :

    rpm -e –nodeps لإزالة الحزمة حتى في حال اعتماد حزم اخرى عليها .
    rpm -e –test كما سبق مع أمر التثبيت ، فهو ليس عمليه فعليه ولكن اختبار هل ستسير الأمور على مايرام أم ستواجه مشاكل .

    عند إزالة حزمة معينة وكانت هناك حزمه اخرى تعتمد عليها ستظهر رساله تبين ذلك ، عنئذ قم بإزالة الحزم الأخرى أولاً ثم قم بإزالة الحزمة التي تريد .

    تثبيت الحزم من الانترنت :

    يمكنك rpm من تثبيت الحزم من مواقع http .

    كود:
    rpm -ihv [url]http://www.example.prg/rpms/packagename.rpm[/url]
    ويمكنك كذلك التثبيت عن طريق ftp . وهنا يمكنك استخدام * لتثبيت محتويات الدليل بالكامل :
    كود:
    rpm -ihv [url]ftp://www.example.org/pub/rpms/*[/url]

    تحديث الحزم بالإستخدام rpm -U .

    يمكنك تحديث حزمة قديمة باخرى أحدث منها عن طريق الأمر rpm -U ويمكنك استخدام الخيارات h و v كما في الأمر rpm -i .

    تحديث الحزمة وملفات التهيئة السابقة :

    من المعلوم أن اللينكس يعتمد على تعديل الملفات مباشرة ، فمثلاً الأباتشي له ملف أعداد بإسم http.conf والـ ftp له ملف تهيئة هو الآخر وهكذا مع باقي البرامج . ماذا سيحدث عندما تقوم بترقية الأباتشي مثلاً ؟ هل ستفقد جميع الإعدادات التي قمت بها ؟

    هناك ثلاث حالات :
    1 – أن يكون الملف الإعداد كما هو " أي لم يطرأ عليه أي تغيير " في هذه الحاله سيقوم rpm بإزالة ملف الإعداد القديم ويحل مكانه الملف الجديد .
    2 – أن يكون ملف الإعداد القديم قد تم تعديله ولكنه ﻻيختلف عن ملف الإعداد الجديد ، في هذه الحاله سيقوم rpm بإبقاء الملف القديم كما هو ويضيف الى الملف الجديد الإمتداد rpmnew .
    3 – أن يكون ملف الإعداد القديم قد تم تعديله ويوجد فرق بينه وبين ملف الإعداد الجديد / في هذه الحاله سيقوم rpm بتغير اسم الملف القديم ويضيف له الإمتداد rpmsave ثم يجعل الملف الجديد هو الإفتراضي . وهنا سيقوم مدير النظام بعمل التعديلات يدوياً .
    RHCE


    Before you asking


    for q in $(ls /usr/bin/)
    do man $q
    done

  • #2
    شكر خاص للإستاذ عبد العزيز على مواضيعه المميزة والرائعة والتي أفادتني كثيراً وأقول له " سنتقابل بإذن الله في موعد تقديم الإختبار فحظاً طيباً "
    اقسم بالله اني فرحت يابو فيصل لما قرأت هذا السطر ، وان شاء الله نخرج بأرقام الشهادات باذن الله تعالى

    مقال رائع يصنف ضمن الدروس التي ستنزل في المجلة

    تعليق


    • #3
      الف شكر , المقال رائع جداً
      تحياتي
      قل وداعاً للشاشات الزرقاء مع جنو لينكس

      تعليق


      • #4
        بارك الله فيك .. موضوع ممتاز .. ^_^
        GCS

        تعليق


        • #5
          السلام عليكم
          بارك الله فيك اخي الكريم عبدالله.
          و ان شاء الله موفق في الامتحان.

          تعليق


          • #6
            مشكور اخي على الشرح الجميل وموفق بالامتحان وان شاء الله انك تاخذ الشهاده
            KISS Protocol - Keep It Simple, Stupid

            تعليق


            • #7
              يعطيك الف عافيه على الشرح الرائع

              تعليق


              • #8
                جزاكم الله خير على دعاكم وويسركم اموركم

                والآن مع الجزء الثاني والأخير ،،، بسم الله نبدأ .

                =========================


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

                عندما تود الاستعلام عن حزمة ما فلابد لك من الاجابة عن هذه الأسئلة . ماهي الحزمة التي تود الاستعلام عنها ؟ وماهي المعلومات التي تريدها أن تظهر في نتيجة هذا الاستعلام ؟.

                الأمر rpm -q يستخدم الخيارات التالية :

                rpm -qa وهو يعرض لك قائمة بكل الحزمة المثبته في توزيعتك .
                كود:
                [root@l4e-laptop /]# rpm -qa
                basesystem-8.0-4
                chkconfig-1.3.13.3-2
                iputils-20020927-18.EL4.2
                libsepol-1.1.1-2
                bash-3.0-19.2
                perl-5.8.5-24.RHEL4
                sysfsutils-1.2.0-1
                ed-0.2-36
                krb5-libs-1.3.4-27
                rpm-libs-4.3.3-13_nonptl
                tar-1.14-8.RHEL4
                SysVinit-2.85-34.3
                libuser-0.52.5-1.el4.1
                prelink-0.3.3-0.EL4
                dump-0.4b39-3.EL4.2
                ..................

                rpm -q packagename للإستعلام عن حزمة معينة " اسمها واسصدارها " فمثلاً الأمر التالي rpm -q bash يعطي النتيجة bash-3.0-19.2 .

                إذا أردت معلومات أكثر تفصيلاً اضف الخيار i فمثلاً rpm -qi bash سيعرض لك معلومات أكثر تفصيلاً مثل الاسم والإصدار وتاريخ التثبيت والحجم والتوقيع الرقمي وتاريخ بناءه والرخصة والتي يخضع لها ووصف مختصر لهذه الحزمة .
                كود:
                [root@l4e-laptop /]# rpm -qi bash
                Name        : bash                         Relocations: /usr 
                Version     : 3.0                               Vendor: Red Hat, Inc.
                Release     : 19.2                          Build Date: Tue 07 Dec 2004 01:47:36 AM AST
                Install Date: Mon 05 Feb 2007 11:12:54 PM AST      Build Host: porky.build.redhat.com
                Group       : System Environment/Shells     Source RPM: bash-3.0-19.2.src.rpm
                Size        : 5113068                          License: GPL
                Signature   : DSA/SHA1, Wed 05 Jan 2005 11:46:34 PM AST, Key ID 219180cddb42a60e
                Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
                Summary     : The GNU Bourne Again shell (bash).
                Description :
                The GNU project Bourne Again shell (bash) is a shell or command
                language interpreter that is compatible with the Bourne shell
                (sh). Bash incorporates useful features from the Korn shell (ksh) and
                the C shell (csh) and most sh scripts can be run by bash without
                modification. Bash is the default shell for Red Hat Linux.
                [root@l4e-laptop /]#

                اذا أردت عرض كامل الملفات التي تأتي مع هذه الحزمة استخدم الخيار l أي list فمثلاً الأمر rpm -ql bash سيعرض لك كل الملفات والمجلدات التي تأتي مع هذه الحزمة .
                كود:
                [root@l4e-laptop /]# rpm -ql bash
                /bin/bash
                /bin/sh
                /etc/skel/.bash_logout
                /etc/skel/.bash_profile
                /etc/skel/.bashrc
                /usr/bin/bashbug-32
                /usr/share/doc/bash-3.0
                /usr/share/doc/bash-3.0/CHANGES
                /usr/share/doc/bash-3.0/COMPAT
                /usr/share/doc/bash-3.0/FAQ
                /usr/share/doc/bash-3.0/INTRO
                .........................

                يمكنك الدمج بين الخيارات السابقة مثل rpm -qil bash لعرض كافة ملفات الحزمة ومعلومات أكثر تفصيلاً .

                للإستعلام عن ملف معين ومعرفة الحزمة المسؤولة عنه أضف الخيار f أي file فمثلاً الأمر التالي rpm -qf /etc/passwd يعطي الناتج setup-2.5.37-1.3 ويمكنك معرفة تفاصيل أكثر عن الحزمة المسؤولة عن ملف معين عن طريق إظافة الخيار i في الأمر السابق مثل rpm -qfi /etc/passwd وبنفس الطريقة إن أردت عرض كافة الملفات ، ولكن استبدل حرف i بـ l .

                جميع الأوامر السابقة في حال كانت الحزمة مثبته في جهازك ، ماذا لو قمت بتحميل حزمة ما وأردت الاستفسار عن محتوياتها ومعلومات عنها ؟ استخدم الخيار p أي package فمثلاً لعرض محتويات ومعلومات حزمة ما استخدم الأمر التالي :

                كود:
                rpm -qil -p xsri-2.1.0-5.i386.rpm

                الإستعلام عن متطلبات حزمة معينة :

                لمعرفة متطلبات حزمة معينة من برامج ومكتبات استخدم الأمر التالي :

                كود:
                rpm -q –requires samba

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

                كود:
                rpm -q –provides mozilla

                الأمر السابق يعرض لك ما تقدمه حزمة موزيلا من حزم ومكتبات .

                الإستعلام عن السكريبتات الموجودة في حزمة ما :

                هناك أربعة أنواع من السكريبتات تأتي مع الحزم هي كالتالي :

                1 – سكريبتات ما قبل التثبيت pre-install scripts .
                2 – سكريبتات بعد التثبيت post-install scripts .
                3 – سكريبتات ما قبل إزالة الحزمة pre-uninstall scripts .
                4 – سكريبتات بعد إزالة الحزمة post-uninstall scripts .

                لنأخذ المثال التالي :
                كود:
                [root@l4e-laptop /]# rpm -q --scripts samba
                postinstall scriptlet (using /bin/sh):
                /sbin/chkconfig --add smb
                preuninstall scriptlet (using /bin/sh):
                if [ $1 = 0 ] ; then
                    /sbin/chkconfig --del smb
                    rm -rf /var/log/samba/* /var/cache/samba/*
                    /sbin/service smb stop >/dev/null 2>&1
                fi
                exit 0
                postuninstall scriptlet (using /bin/sh):
                if [ "$1" -ge "1" ]; then
                        /etc/rc.d/init.d/smb condrestart >/dev/null 2>&1
                fi
                [root@l4e-laptop /]#

                تلاحظ أنه يقوم ببعض العمليات بعد التثبيت مثل اضافة smb الى قائمة الخدمات وهكذا .

                الإستعلام عن آخر الحزم المثبته :

                لعرض الحزم المثبته حسب الأحدث نستخدم التالي :

                كود:
                [root@l4e-laptop /]# rpm -qa –last

                ولكن الأمر السابق يعرض لك جميع الحزم وهذا الأمر قد ﻻتكون بحاجة اليه إلا إن أردت معرفة متى تم تثبيت هذه التوزيعة “ انظر الى تاريخ تثبيت آخر حزمة في القائمة “ ، أنت بحاجة الى معرفة آخر 5 حزم تم تثبيتها . إذاً استخدم التالي :

                كود:
                [root@l4e-laptop /]# rpm -qa –last | head -5

                التحقق من حزمة معينة وماهي التغييرات التي طرأت على ملفاتها :

                من الأمور المهمة جداً معرفة التغييرات التي تمت على حزمة أو برنامج معين ، وهناك أمران يستدعيان القيام بهذه العملية :
                1 – كان البرنامج يعمل في السابق ولكنه الآن توقف ، فما هي التغييرات التي طرأت عليه ؟
                2 – للتأكد من تأمين الجهاز والملفات مثل passwd وغيره .

                للتأكد من حزمة معينة نستخدم الأمر rpm -V bash فإن لم نحصل على مخرجات فهذا يدل على أن الحزمة كما هي ، عند حدوث تغييرات ستحصل على عدة حقول تبين لك الملف والتعييرات التي طرأت عليه مثل :

                كود:
                [root@l4e-laptop /]# rpm -V pam
                S.5....T. C /etc/pam.d/system-auth

                وإليك ماتعنيه هذه الرموز :
                S تغيير في الحجم .
                M تغيير في الصلاحيات .
                5 تغيير في قيمة md5sum وبالتالي تغيير في محتويات الملف .
                L تغيير في الرابط link .
                U تغيير المستخدم المالك لهذا الملف .
                G تغيير المجموعة المالكة لهذا الملف .
                T تغيير الوقت access time .
                C تغيير في SELinux .

                بعض أدوات rpm .

                التحقق من الملف قبل تثبيته أمر مهم جداً لأنه يضمن لك أن الملف موثوق كما صدر من الشركة . شركة مثل ريد هات تصدر الملفات لتوزيعتها مع توقيع رقمي للتأكد من مصداقية الحزمة قبل تركيبها ، وهذا ما سنتطرق له هنا .

                عند محاولة تثبيت حزمة ما غير موقعه فإنه ستظهر لك الرسالة التالية :
                كود:
                warning: packagename.rpm: V3 DSA signature: NOKEY, key ID db42a60e

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

                1 – من موقع ريد هات www.redhat.com/security/team/key.html .
                2 – من اسطوانة ريد هات RPM-GPG-KEY .
                3 – بعد تثبيت ريد هات ستجد المفتاح في هذا المسار /usr/share/rhn/RPM-GPG-KEY .

                الآن لإستيراد الملف نكتب الآتي :

                كود:
                rpm –import /media/cdrom/RPM-GPG-KEY

                الآن لمعرفة المزيد حول هذا المفتاح نكتب rpm -qa | grep gpg-pubkey فيظهر الناتج gpg-pubkey-db42a60e-37ea5438 .
                وللمزيد نكتب

                rpm -qi gpg-pubkey-db42a60e-37ea5438

                الآن عند تثبيت حزمة ما لن تظهر الرسالة التحذيرية السابقة .

                وإذا أردت التحقق من ملف معين بطريقة يدوية نفذ الآتي :

                كود:
                rpm –checksig packagename.rpm

                ستظهر لك نتيجة OK في حال التطابق .

                استخدام الواجهة الرسومية لتثبيت البرامج :

                يمكنك النقر على ملف rpm بالماوس ليقوم النظام بتثبيت الحزمة ، كما يمكنك استخدام الأمر system-config-packages لتظهر لك قائمة بالبرامج التي تأتي مع التوزيعة . المزعج في الأمر السابق هو أنه يطلب منك ادخال الاسطوانات تباعاً ، إن كنت تملك ملفات ISOs على الجهاز يمكنك استخدام الأمر التالي :

                كود:
                system-config-packages –isodir=/path-to-iso-dir/

                عدل المسار السابق بما يتناسب معك .

                =============================

                أتمنى أن يكون الدرس مفيداً لكم .

                وعذراً على القصور .

                أخوكم أبو فيصل ،،،
                RHCE


                Before you asking


                for q in $(ls /usr/bin/)
                do man $q
                done

                تعليق


                • #9
                  V.I.P

                  (وَاصْبِرْ فَإِنَّ اللَّهَ لَا يُضِيعُ أَجْرَ الْمُحْسِنِينَ)
                  هود 115

                  Linux is user-friendly, but it happens to be selective about its friends

                  "احذر أن تكون مثل البقية تأخذ وﻻتعطي ، فلن يكون هناك مصادر تعليمية على الشبكة، ﻻأكثر الله من أمثالهم"


                  مجتمع لينوكس العربي: وقف لله تعالى وصدقة جارية، فلا بارك الله في كل من يحاول الإساءة إليه في الظاهر أو في الخفاء...


                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة GreyHunter مشاهدة المشاركة
                    وأنا كذلك أخي سامر
                    أفضل من قيامي برد يشوه موضوعه هذا
                    إِنَّمَـا الأُمَـمُ الأَخْـلاقُ مَا بَقِيَـتْ ... فَـإِنْ هُمُ ذَهَبَـتْ أَخْـلاقُهُمْ ذَهَبُـوا

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

                    [ مواقع مفيدة: أروع موقع القرآن الكريم |مدونتي |Twitter |نظام طارق ]

                    تعليق

                    يعمل...
                    X
                    😀
                    🥰
                    🤢
                    😎
                    😡
                    👍
                    👎