دانگرید کردن پکیج در آرچ لینوکس ( Downgrading Packages in Archlinux)
چند مدت پیش وقتی یک پکیجی رو نصب کردم و انتظار کارکرد بهتر محیط گرافیکی رو داشتم، دیدم که اون پکیج باعث آسیب رسوندن شده و محیط گرافیکی دیگه استارت نمیشه. لابد برای شما هم پیش اومده(یا بعدها ممکنه پیش بیاد!) این مشکل برخی اوقات و باید کلی سرچ کنین تا بتونین نسخهی کامپایل شده یا سورسشو پیدا کنین و بعد دانلود و نصبش کنین. با این مقدمه میریم سراغ دانگرید کردن یک پکیج در Archlinux
بعد از جستجوهای زیاد در گوگل و ویکی سایت آرچ به یک نرم افزار رسیدم که در AUR وجود داشت. پس اینطوری نصبش کردم:
yaourt downgrade
اینجا پکیج مورد نظر شماره دومی هست. پس ۲ رو میزنم و فرآیند نصبش رو دنبال میکنم تا دانلود و کامپایل و نصب بشه.
برنامهی دانگریدی که نصب کردیم یک بش اسکریپت ساده هست و بعد از نصبش داخل ترمینال میشه با تایپ downgrade بهش دسترسی داشت. این برنامه از مخازن تقریبا کاملی تشکیل شده و هرچیزی رو که سرچ کنین تا نزدیک ۱۰ تا ورژن قدیمی ترش رو داره.(البته اگر عمر نرم افزارش برسه!) مخازنی که downgrade ازش استفاده میکنه اسمش هست: A.R.M که مخفف Arch Rollback Machine هست و شامل چند سرور میشه.
حالا بیاید با طرز کار باهاش که خیلی سادست آشنا بشیم. برای همین داخل کنسول مینویسم:
downgrade glibc
لیستی رو که اینجا نشون میده اینه:
The following packages are available in your cache:
1ocal glibc-2.13-1-i686.pkg.tar.xz [installed]
2local glibc-2.12.2-2-i686.pkg.tar.xz
3local glibc-2.12.1-4-i686.pkg.tar.xz
برنامهی downgrade اول داخل پکیج هایی که در مسیر /var/cache/pacman/pkg/ هست رو نشونتون میده که اگر از قبل داشته باشینش نخواید که دوباره دانلودش کنین. اگر از لوکال بخواین نصب کنین در مرحلهی بعدی عددی که کنار پکیج مورد نظرتون هست رو مینویسید و اینتر میکنید.
اگر داخل سیستمتون نبود، دکمهی s که به معنی سرچ هست رو میزنید تا لیست پکیج هایی که داخل سرور arm هست رو براتون بیاره. بعدش پکیج هارو براتون با شماره گذاری کنارشون بهتون نشون میده و شما عدد پکیجی که میخواین رو مینویسید و اینتر میزنید. بعدش فرآیند دانلود و نصبش رو نرم افزار براتون انجام میده.
اگر خواستید خودتون با pacman اینکارو انجام بدید کافیه این سرور هارو به فایل /etc/pacman.conf/ اضافه کنید. و بعدش لیست رو آپدیت کنید.
#Server=http://mirrors.gigenet.com/archlinux/core/os/i686
Server=http://arm.konnichi.com/2009/11/01/core/os/i686
بعد از اضافه کردنشون اگر نیاز داشتید که کل سیستم دانگرید بشه(بعد از به روز کردن لیست مخازن) مینویسیم:
pacman -Suu
بعد از اینکار بهتره اون پکیج رو مارک کنین تا دیگه نصب نشه و مشکلی پیش نیازه. پس میایم فایل /etc/pacman.cof/ رو باز میکنیم در قسمت
IgnorePkg =
IgnoreGroup =
فایل باز شده اگر بخوایم یک پکیج رو مارک کنین، در جلوی قسمت IgnorePkg اسم کامل پکیج و ورژنش رو مینویسیم. و اگر یک گروه بود مثل Xorg میایم اسمش رو جلوی IgnoreGroup مینویسیم. تا در آپدیت های بعدی مشکل ساز نشه.
برای اطلاعات بیشتر از نحوهی استفادهی پکیج downgrad در ترمینال بنویسید:
downgrade -help
که میتونید دستی دستور نصب که پیشفرض pacman -U هست رو تغییر بدید یا معماری و محل ذخیره فایل های دانلود شده رو بهش بدید.
منبع:
https://wiki.archlinux.org/index.php/Downgrading_Packages
صفحات راهنمای برنامه نویسی در گنو/لینوکس
شاید برای خیلی ها این سوال پیش اومده باشه که چطور میشه در لینوکس به توضیحات توابع و کتابخونه های برنامه نویسی( c/c++) یا سیستمی دیگه دسترسی داشته باشیم. و همینطور در اینترنت چه سایتهایی برای اینکار وجود داره؟
صفحات توضیحی man
برای دسترسی پیدا کردن به توضیحات library ها میتونید اسم اون کتابخونهی برنامه نویسی رو به این صورت در ترمینال به کار ببرید تا توضیحاتش رو ببینید که از چه تابع هایی تشکیل شده و کارشون چیه
man 3 stdio
به این ترتیب میتونید اسم اون lib مورد نظرتون رو جلوی man بنویسید تا اطلاعات کاملی از اون رو ببینید. البته میتونید دربارهی func های مختلف هم اطلاعات به دست بیارید اینطوری:
man 3 printf
شکل کلی تابع و اینکه چه آرگومان هایی رو میگیره رو در اختیارتون میگذاره که هروقت نیاز داشتید که بدونید مثلا %c چی هست خیلی راحت میتونید بدون نیاز به گشتنه در کتاب یا اینترنت این رو بفهمید.
صفحات man page در لینوکس تقریبا برای همهی دستورات استاندارد خط فرمان و کتابخونه های استاندارد و سیستمی وجود دارن. و این صفحات خودشون به چند نوع مختلف تقسیم میشن:
(1) دستورات کاربر (User Commands)
(2)فراخوانهای سیستمی (System calls)
(3) توابع کتابخانهای استاندارد ( Standard library functions)
(8) دستورات سیستم/کاربر ادمین (System/administrative commands)
عدد هایی که قبل از هر قسمت میبینید مربوط هست به بخش های صفحات راهنمایی که روی سیستم لینوکس وجود دارن و برای استفاده ازشون از کلمه man استفاده میکنیم. گاهی اوقات یک صفحه راهنما در چندین بخش (بخش هایی که بالا گفته شد.) وجود داره. مثل:
man sleep
man 3 sleep
اون عدد ۳ ایی که در کنار تابع printf میبینید برای همین خاطر هست که از قسمت توابع کتابخانهای توضیحات بیاره به عبارتی میگه: توضیحات تابع printf رو از توابع کتابخانهای نشون بده.
* نکته: در صورتی که هیچ عددی رو نزنید به صورت پیش فرض در تمام man هایی که از این اسم وجود داره میگرده و اولین صفحه ای رو که پیدا کنه ( طبعا اگر در ۱ و ۲ و ۳ باشه اولی رو میاره ۱ اش باشه.) رو نمایش میده. و اگر فقط در سطح ۳ باشه فقط سطح ۳ رو نشون میده.
جستجو در توضیحات محلی لینوکس
شاید یک چیزی بخواید که اسم دقیق اون رو اصلا ندونید. کافیه بنویسید:
man -k keyword
به جای keyword (کلمه کلیدی) مورد نظرتون رو بنویسد. مثل:
man -k pipe
هر صفحه راهنما یک خطی درش هست که به طور خلاصه دربارهی تابع یا دستور توضیح داده. گاهی وقتا که فقط توضیحات کوتاه رو میخواید میتونید اینطوری عمل کنین(بجای scanf میتونید اسم تابع یا دستور مورد نظر خودتون رو بگذارید.):
whatis scanf
البته این دستورات رو میتونید به صورت گروهی هم به کار ببرید مثل:
whatis scanf printf ls grep
برای گشتن در اسم و توضیحات man pages ها میتونید از دستور apropos به این شکل استفاده کنید:
apropos ‹Shared Memory›
که در بین ‹ ‹ کلمه یا جمله مورد نظر رو مینویسید. برای راحتی کار و رسیدن به خروجی هم میشه گاهی از grep در کنارش استفاده کرد:
apropos ext4 | grep creat
صفحات توضیحی info
برخی اوقات ممکنه نیاز به توضیحات توابع کتابخونهای GNU C Library که به صورت اختصار libc میگن، پیدا کنید. برای توضیحات کلی مثلا Pipes and FIFOs یعنی چی پیدا کنید :
info libc
برای اطلاعات بیشتر هم میتونید این تابع رو در فایل coreutils پیدا کنید با توضیحات جزئی بیشتر:
info coreutils ‹printf invocation›
تقریبا تمام صفحات کامپایلر(gcc) ، دیباگر(gdb)، لینکر(ld) و ویرایشگر emacs دارای این صفحه info هستن که با اینکار میتونید به توضیحاتشون دسترسی پیدا کنید.
شاید گاهی هم داخل لینوکس بخواید بدونید چطوری باید یک برنامهی خط فرمان با استانداردهای GNU بنویسید که همهی استانداردهای سایر برنامه های خط فرمان در لینوکس رو داشته باشه. و این توابع چی هستن و چطوری میشه ازشون استفاده کرد:
info "(standards)user interfaces"
چاپ کردن man ها
اگر دوست داشتین man ها رو چاپ کنین یا روی سیستم های دیگه اونها بخونید یا به دوستانتون بدین اینطوری عمل کنین:
man -t man-page > man-page.pdf
این دستور خروجی man اون چیزی که میخواید رو به PDF تبدیل میکنه و در home شما قرار میده.
منابع آنلاین دیگر
خب مقاله طولانی شده و حتما حوصله خوندن زیاد رو ندارین. برای همین به اختصار چند سایت مرجع رو تیتروار معرفی میکنم که ممکنه به دردتون بخوره:
در این سایت های میتونید مقاله ها و مطالب مفیدی رو پیدا کنین. اگر نیاز به ابزار خاصی داشتین که سایت اختصاصی داره wiki همون سایت بهترین منبع هست. مثلا نیاز به توضیح درباره بیشتر درباره کرنل یا ابزارهای دیگهی گنو داشتین، در سایت خودشون مقالات و موضوعات مرتبط زیادی میتونین پیدا کنین. mailing list هارو هم فراموش نکنین.
نکته ۱ :شاید در کنار این اعداد گاهی حرف P رو هم ببینید. که مخفف POSIX هست که مفهومش استاندارد بین المللی posix هست که برای نوشتن برنامه های این استاندارد استفاده میشه.
نکته ۲: در اغلب distro ها این man ها و صفحات توضیحی به صورت پیشفرض نصب هستن. اگر نبود این پکیج هارو نصب کنید: man-db , man-pages . البته ممکنه در distro شما اسم پکیج ها مقداری فرق کنه که با یک جستجو با پکیج منیجرتون میتونید پیداش کنید.
نکته ۳: اغلب این توضیحات صفحات man و info در شاخه /usr/share/man/mann/ و /usr/share/doc/ قرار داره.
نکته ۳: man های بسیار زیادی در لینوکس برای قسمت های مختلف وجود داره که گاهی پیشفرض نصب نیستن و باید نصب بشن. مثلا شما به اطلاعات man های کرنل برای برنامه نویسی یا مطالعه نیاز دارید. کافیه این پکیج رو نصب کنید: kernel26-manpages
نکته ۴: تمام این توضیحاتی که اینجا داده شد و پکیج ها به صورت پیشفرض در Gentoo و Archlinux نصب هست و تست شدن.
منابع:
Advanced Linux Programming – Chapter 01(advanced-unix-programming-with-linux)
Linux Man pages
http://polishlinux.org/console/the-art-of-using-manuals
نصب پاسکال در لینوکس
همیشه در فروم های ایرانی و کانال های ایرانی افرادی بودن که بپرسن، چطور از توربو پاسکال در لینوکس استفاده کنم؟
Fpc یک کامپایلر زبان پاسکال هست که برای بیشتر سیستم عامل ها و تقریبا همه ی سی پی یو ها نوشته شده.
و برخی مشکلات کامپایلر اصلی خود پاسکال مثل Unit Crt که برای کارکردن با مانیتور هست رو نداره. چون کامپایلر اصلی پاسکال برای کامپیوتر های امروزی نوشته نشده باید دستی یک فایل رو به پوشه ی پاسکال منتقل کنین.
به این صفحه برید و پکیج مورد نظر سیستم عامل خودتون رو با توجه به نوع سی پی یو انتخاب کنین.
اگر هم کسی نیاز به سورس فری پاسکال داره یا دلش میخواد دستی اون رو کمپایل کنه. میتونه سورس رو از همین صفحه بگیره و با توجه به توزیحات کامل سایت اون رو خیلی ساده کامپایل کنه. فقط کافیه این اسکریپت رو اجرا کنین:
sh install.sh
برای نصب این کمپایلر در توزیع آرچلینوکس:
pacman -S fpc
برای نصب در اوبونتو به صفحه برید و پکیج مورد نظرتون رو دریافت و نصب کنید:
http://packages.ubuntu.com/lucid/fpc
سایت اصلی پکیج های rpm,deb رو ساپورت میکنه و میتونید از سایت اصلی اونها رو دانلود کنید.
بعد از نصب کافیه برنامه خودتون رو کامل در یک فایل متنی با پسوند ,pas بنویسید. و بعد از اون دستور:
fpc test.pas
رو بدید. تا به شما یک بسته ی باینری از برنامه ی خودتون بده. برای اجرای بسته ی باینری هم کافیه اینطوری عمل کنید:
./test
fpc مخفف Free Pascal Compiler هست.
برای Debug کردن برنامه های خودتون هم یا میتونین از پیغامی که fpc موقع کامپایل میده خیلی ساده و روان استفاده کنید. مثلا میگه خط ۱۰.۲ مشکل داره و شما درستش میکنین.
البته از برنامه ی Lazarus که یک IDE برای دلفی و پاسکال هست و از همین کامپایلر fpc استفاده میکنه هم میتونید بهره ببرید.
گنو/لینوکس و خلاقیت
یک زمانی بین مردم خلاقیت بین عده ی خاصی وجود داشت. چون کسی نمیدونست که چه کارهایی باعث شکوفایی خلاقیت میشه. اما در عصر ارتباطات و فناوری چرا خلاقیت از بین رفته؟! دلیلش سوء استفاده یا استفاده ی نابجا از دستگاههایی هست که برای راحتی انسان ها خلق شده ولی طوری ازش استفاده میشه که بیشتر باعث تخریب خلاقیت، حافظه و دید باز انسان ها میشه.
به طور مثال قدیم که ماشین حساب نبود ذهن ها بهتر کار میکرد ولی در زمان کنونی حتی ضرب و تقسیم های خیلی ساده رو هم با ماشین حساب یا کامپیوتر انجام میدن. که مزایا و معایب خودش رو داره. این کارها باعث میشه ذهن و مغز انسان به طور ناخواسته و باورنکردنی ای به سمت تنبلی و کارکرد پایین سوق پیدا کنه. به طوری که دانشمندا گفتن بیشتر انسان ها از ۲۰ درصد مغزشون بیشتر استفاده نمیکنن. حالا مقداری کمتر یا بیشتر
در این بین کامپیوتر ها و سیستم عامل ها میتونن نقش به سزایی رو ایفا کنن. چراکه تقریبا بیشتر مردم دنیا با کامپیوتر سروکار دارن.
سیستم عامل ها حتما میدونین که کارشون استفاده بهینه از سخت افزار و یک سری کارهای دیگست که به راحتی بتونین برنامه هاتون رو اجرا کنین. در جهان کنونی چندتا سیستم عامل کارامد و همگانی که بیشتر مردم ازشون استفاده میکنند وجود داره.
اول از همه ویندوز هست که سادگی و راحتی خاص خودش رو داره و به کاربر اجازه ی استفاده راحت از سخت افزار و نرم افزارها رو به طور راحتی میده.
بعد سیستم عامل اپل مکینتاش وجود داره که به سادگی ویندوز تمام امکانات رو به کاربر خودش میده و میذاره که کاربر به ساده ترین شکل کارهاشو انجام بده.
بعد از همه ی اینها گنو/لینوکس وجود داره. توزیع های زیادی برای کارهای متفاوت ازش ساخته شده. تمام کارهایی که یک سیستم عامل باید انجام بده رو به طور کامل انجام میده. ولی بعضی چیزای اضافه و گاهی اوقات سختی های خاص خودش رو هم داره.
دو سیستم عامل اول یعنی ویندوز و مک به شخص امر و نهی میکنن و خلاقیت و اون دید بازی که باید کاربر خودش داشته باشه رو ازش میگیره و به جاش راحتی و سادگی رو میده.
گنو/لینوکس با وجود سختی های گذری ای که داره. به انسان دید باز و خلاقیت خیلی خوبی رو میده. یعنی شما رو به فکر کردن وا میداره همونطوری که برنامه نویسی اینکارو میکنه. یعنی علاوه بر اینکه سیستم عامل هست به شما مثل کتابهای افلاطون قدرت تفکر اعطا میکنه که در جای خودش بسیار عالی و قابل تقدیره. به طور مثال اگر مشکلی برای کسی پیش با توجه به کارهای انجام داده میتونه تصمیم بگیره چه کارهایی رو بکنه به نتیجه مطلوب میرسه و این در ذهن انسان ماندگار میشه. علاوه بر این قدرت عشق و دوستی که باعث خلاقیت میشه رو شکوفا میکنه. یعنی به جز اینکه به شما دید وسیعی میده، به شما خلاقیت و محبت و دوستی هم میده.
ناگفته نماند کلا کامپیوتر انسان رو خلاق میکنه. ویندوز و مک اینکار رو تا حدودی انجام میدن. اما به اندازه ای نیست که بشه اسم خلاقیت بهش داد.
پس میشه نتیجه گرفت تنها کار سیستم عامل استفاده بهینه از منابع یا مدیریت منابع و اجرای برنامه ها نیست. بلکه میشه گفت شکوفایی خلاقیت و عشق هم هست. پس اگر در درس سیستم عامل ازتون پرسیدن وظیفه سیستم عامل چیه؟! بگین خلاقیت و عشق!
ما می تونیم از چیزهایی که از قبل تعریف شده استفاده های زیادی بکنیم. که یکیش اینه که بدونیم سیستم عامل از روی انسان ساخته شده، و ما هم باید مثل سیستم عامل باید مدیریت بهینه ی منابع خودمون رو به دست بگیریم!
شروع
بعد از مدتها تصمیم گرفتم یک وبلاگ که بیشتر به مسائل کامپیوتری/لینوکس اختصاص داشته باشه درست کنم. و چیزهایی که یاد گرفتم رو با بقیه تقسیم کنم ( البته حرف های حسابی رو همه زدن و من از دیدگاه خودم یا با سرهم کردن چندتا چیز مطلب میدم!) چون من هیچ وقت روی یک موضوع بند نمیشم شاهد مطالب متفرقه هم خواهید بود.