علی شکیبا

دفتر یادداشت دیجیتال برای هر چیز مفید!

۴۱ مطلب با موضوع «لینوکس» ثبت شده است

یکی از امکانات جالبی که در Windows داشتم، این بود که با انتخاب چند فایل ویدیویی، جمع زمان آن فایل‌ها را نمایش می‌داد، اما در لینوکس این‌گونه نبود! به همین خاطر دست به کار شدم و یک اسکریپت به صورت زیر نوشتم

find . -iname "*.mp4" -exec mplayer -vo null -ao null -frames 0 -identify -msglevel all=0 {} \; | grep ^ID_LENGTH | python -c "import sys; print sum(float(l.split('=')[1])/60.0 for l in sys.stdin), ' minutes.'"

البته اگر پایتون نداشته باشیم، این دستورات bash مجموع زمان فیلم‌ها را به واحد ثانیه نشان می‌دهد

find . -iname "*.mp4" -exec mplayer -vo null -ao null -frames 0 -identify -msglevel all=0 {} \; | grep ^ID_LENGTH | tr -d "ID_LENGTH=" | paste -s -d+ | bc
۰ نظر موافقین ۰ مخالفین ۰ ۱۲ فروردين ۹۴ ، ۲۳:۵۵
علی شکیبا

از آنجا که دانشگاه یزد در ایران، آینه TeX است، به همین دلیل دریافت و نصب بسته های آن از داخل دانشگاه با سرعتی بسیار بیشتر از سرعت اینترنت، در حدود 11 MB/s، امکان پذیر است! اما مشکل اینجا است که بعد از اینکه TeXLive را با این روش نصب کردید، apt-get از آن بی خبر است و برای نصب الباقی بسته ها به مشکل بر می خورید! برای این که بتوانیم به apt-get بگوییم که یک بسته را به صورت دستی نصب کرده ایم، روش زیر را از اینجا پیدا کردم! مراحلی که برای من کار کردند، به شرح زیر است:

1- TeXLive را با استفاده از رویه معمول از ایزوی دانلود شده نصب کردم.

2- سپس مسیرهای نصب را به فایل .bashrc اضافه می‌کنم.

3- حالا نوبت به آن رسیده است تا تعدادی بسته تقلبی بسازیم!!! برای این منظور از ابزار equivs استفاده کردم

sudo apt-get install equivs --no-install-recommends
mkdir /tmp/tl-equivs && cd /tmp/tl-equivs
equivs-control texlive-local

سپس فایل ساخته شده را ویرایش می‌کنیم. برای مثال من با استفاده از اینجا، فایل را به صورت زیر ویرایش کردم (فقط نام و ایمیل خود را به عنوان Package Maintainer اضافه کردم :) ) بدیهی است اگر نسبت به این مجموعه، بسته ای را کمتر یا اضافه تر نصب کرده‌اید، لازم است تا تغییرات لازم را بدهید.

Section: misc
Priority: optional
Standards-Version: 3.9.4
Package: texlive-local
Version: 2014-1
Maintainer: A. Shakiba <ali@shakiba.id.ir>
Provides: chktex, biblatex, biblatex-dw, cm-super, cm-super-minimal, context,
dvidvi, dvipng, feynmf, fragmaster, jadetex, lacheck, latex-beamer,
latex-cjk-all, latex-cjk-chinese, latex-cjk-chinese-arphic-bkai00mp,
latex-cjk-chinese-arphic-bsmi00lp, latex-cjk-chinese-arphic-gbsn00lp,
latex-cjk-chinese-arphic-gkai00mp, latex-cjk-common, latex-cjk-japanese,
latex-cjk-japanese-wadalab, latex-cjk-korean, latex-cjk-thai, latexdiff,
latexmk, latex-sanskrit, latex-xcolor, lcdf-typetools, lmodern, luatex,
musixtex, passivetex, pgf, preview-latex-style, prosper, ps2eps, psutils,
purifyeps, t1utils, tex4ht, tex4ht-common, tex-gyre, texlive, texlive-base,
texlive-bibtex-extra, texlive-binaries, texlive-common, texlive-extra-utils,
texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended,
texlive-fonts-recommended-doc, texlive-font-utils, texlive-formats-extra,
texlive-games, texlive-generic-extra, texlive-generic-recommended,
texlive-humanities, texlive-humanities-doc, texlive-lang-african,
texlive-lang-all, texlive-lang-arabic, texlive-lang-cjk, texlive-lang-cyrillic,
texlive-lang-czechslovak, texlive-lang-english, texlive-lang-european,
texlive-lang-japanese, texlive-lang-chinese, texlive-lang-korean,
texlive-lang-french, texlive-lang-german, texlive-lang-greek,
texlive-lang-indic, texlive-lang-italian, texlive-lang-other,
texlive-lang-polish, texlive-lang-portuguese, texlive-lang-spanish,
texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra,
texlive-latex-extra-doc, texlive-latex-recommended,
texlive-latex-recommended-doc, texlive-luatex, texlive-math-extra,
texlive-metapost, texlive-metapost-doc, texlive-music,
texlive-omega, texlive-pictures, texlive-pictures-doc, texlive-plain-extra,
texlive-pstricks, texlive-pstricks-doc, texlive-publishers,
texlive-publishers-doc, texlive-science, texlive-science-doc, texlive-xetex,
thailatex, tipa, tipa-doc, xindy, xindy-rules, xmltex
Architecture: all
Description: My local installation of TeX Live 2014.
A full "vanilla" TeX Live 2014
http://tug.org/texlive/debian#vanilla

حال وقت آن است تا فایل .deb را بسازیم که با دستور زیر انجام می‌شود

equivs-build texlive-local

و بعد آن را مثل آب خوردن نصب کنیم.

sudo dpkg -i texlive-local_2014-1_all.deb

تمام است. 

پی‌نوشت: نوشته شده مبتنی بر این آدرس

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ اسفند ۹۳ ، ۱۵:۴۹
علی شکیبا

قابلیت اسکرول کردن یکی از ویژگی‌های پراستفاده تاچ‌پد برای من هست. امروز متوجه شدم که متاسفانه این قابلیت روی لپ‌تاپ من فعال نیست! (دلیل این تاخیر در فهمیدن ماجرا این هست که تا الان از لینوکس لپ‌تاپم فقط با ماوس استفاده کرده‌ام!) بگذریم... برای فعال کردن این قابلیت کافی است تا فایل مربوط به تنظیمات را تغییر داده (در صورتی که وجود ندارد، فایل را ایجاد کنید) و سپس سیستم خود را مجددا راه‌اندازی نمایید.

$ sudo nano /etc/modprobe.d/psmouse.conf

و این خط را به آن اضافه کنید

options psmouse proto=imps
۰ نظر موافقین ۰ مخالفین ۰ ۱۷ اسفند ۹۳ ، ۱۵:۲۹
علی شکیبا

شب گذشته بر اثر اشتباه، حافظه فلش خودم رو به سیستم کناری (سیستم دوستم که از نظر تعداد و تنوع ویروس‌ها در جهان باید تک باشد!) زدم! از آنجا که از لینوکس استفاده می‌کنم خیلی مشکل خاصی نیست! با یک نگاه به محتویات فلش متوجه ویروس عزیز New Folder شدم که در تمام دایرکتوری ها و زیر دایرکتوری ها خودش رو تکثیر کرده با نام های مختلف! بنابراین یکی از اون فایل ها را به شاخه اصلی فلش منتقل کردم و بعد هم برای موارد مشابه، فایل را به main.txt تغییر نام دادم. حالا وقت اون رسیده تا حساب این ویروس رو برسیم!

#!/bin/bash
counter=0
find . -type f -iname "*.exe" -print0 | while IFS= read -r -d $'\0' i; do
if [ $(md5sum "$i" | cut -f 1 -d ' ') == $(md5sum "./main.txt" | cut -f 1 -d ' ') ]
then
rm "$i"
counter=$((counter+1))
echo "$counter\t"
fi
done

البته فراموش نکنید فایل های autorun.ini رو هم پاک کنید!

۰ نظر موافقین ۱ مخالفین ۰ ۰۸ دی ۹۳ ، ۰۹:۰۱
علی شکیبا

برای نصب خیلی ساده می توانید از دستورات استاندارد Python برای نصب استفاده کنید! اما اگر ابزاری مانند apt-get در دبیان می خواهید، conda در خدمت شما است. البته برای نصب برخی از بسته ها مجبور(!) می شوید از pip یا easy_install استفاده کنید، اما هر چه باشد، نصب از روی کد منبع کابوس است و کابوس! علی الخصوص هنگامی که سرتان هم درد می کند! بگذریم ...

برای نصب کتابخانه textblob برای anaconda، می توانید از یکی از دو راه زیر استفاده کنید. اولی برای افرادی است که از MacOS استفاده می کنند (ما که کاری به MacOS نداریم!) و دومی برای بنده و امثال بنده است که عمده وقتشان را با ترمینال لینوکس پر می کنند و شاید هم ویندوز (رو سیاهم خجالتی )!

خوب، اول اولی را می گویم که ساده است!

$ conda config --add channels https://conda.binstar.org/sloria
$ conda install textblob
$ python -m textblob.download_corpora

حال نوبت به دومی می رسد که بازهم ساده است! فقط یک نکته! اگر مثل بنده از چندین توزیع مختلف پایتون مثل anaconda و python.org یا نسخه های مختلف استفاده می کنید، لازم است تا به جای استفاده از دستور pip، مسیر کامل توزیع مورد نظر را بدهید و یا با استفاده از دستور update-alternatives توزیع مورد نظر را در اولویت قرار دهید (بیان بهتر است ویرایشگر متن خود را به auto-completion مجهز کند!). بقیه ساده است:

$ pip install -U textblob
$ python -m textblob.download_corpora

پس از نصب، لازم است پیکره مورد استفاده این بسته را نیز دریافت کنید و خط دوم به همین دلیل است. اگر سرعت اینترنت یا حجم محدودی دارید، می توانید به جای خط دوم از این دستور استفاده کنید:

$ python -m textblob.download_corpora lite

تمام است! از پایتون خود لذت ببرید!

۰ نظر موافقین ۰ مخالفین ۰ ۲۱ آذر ۹۳ ، ۰۰:۲۹
علی شکیبا

برای نصب قلم یا همان فونت‌های فارسی در لینوکسُ کافی است تا ابتدا یک پوشه در مسیر زیر بسازیم

$ sudo mkdir -p /usr/local/share/fonts/truetype/persianFonts

و سپس به محلی که قلم‌ها را در آن نگهداری می‌کنیم رفته و دستور زیر را اجرا کنیم

$ sudo find . -iname "*.ttf" -exec sudo cp {} /usr/local/share/fonts/truetype/persianFonts \;

بعد از آن دستور

$ fc-cache

کار را تمام می‌کند. :-)

۱ نظر موافقین ۰ مخالفین ۰ ۰۲ شهریور ۹۳ ، ۲۲:۴۵
علی شکیبا

من برای کنترل نسخه مقالات، برنامه‌ها و نظایر اون که بخش عمده‌ای به صورت متن ساده هستند، از git استفاده می‌کنم و طبعا برای پشتیبانی اون هم از یکی از سرویس‌های رایگان ابری استفاده می‌کنم (نسخه آکادمیک github). تا این جای کار که خوبه!

داشتن یه نسخه پشتیبان روی یک سیستم دیگه که کنترلش دست خود آدم باشه، یه کار خوب به نظر می رسد، به همین دلیل، روی یکی از سرورهای آزمایشگاه که برای سرویس دهی مخازن debian و python ازش استفاده می کنیم، github رو نصب کردم.

# apt-get install git-core

و بعد از اون با نام کاربری خودم به سرور مزبور لاگین کردم و یک پوشه برای نگهداری همه مخازن مورد نیازم به اسم git درست کردم (وقتی مدیریت سرور دست خود آدم باشه، معلومه که برای خودش quota در نظر نمی گیره ;-) )

$ mkdir git

حالا نوبت به ساختن یک مخزن برای نگهداری مثلا مقالاتم می رسه!

$ cd ~/git
$ git init --bare MyPapers.git

و حالا کافیه که روی سیستم خودم (یا هر جای دیگه) به محل ذخیره مقالاتم بروم (که البته قبلا یک مخزن git در اون ایجاد شده). اولین گام اینه که آدرس مخزن رو روی سرور به سیستم بدم

$ git remote add lqip shakiba@lqip-s3:/home/shakiba/git/MyPapers.git


۰ نظر موافقین ۰ مخالفین ۰ ۱۷ ارديبهشت ۹۳ ، ۱۶:۴۳
علی شکیبا

با سلام. وقتی لینوکس قبلی رو بر اثر یه اشتباه پاک کردم، نزدیک بود کل دیسک سختم رو نابود کنم! چون یه لحظه فکر کردم توی ماشین مجازی هستم که نبودم!، نسخه ۷ لینوکس دبیان رو نصب کردم. نمی دونم چرا، ولی نسخه ۷ کارت گرافیک من رو مثل ۶ نشناخت! به همین دلیل دست به کار شدم تا کارت گرافیک رو نصب کنم! تنها چیزی که خاطرم مونده بود، مدل کارت گرافیکم بود که ATI RADEON بود! هیچ چیز دیگه‌ای خاطرم نموده بود! به همین خاطر از دستور زیر برای پیدا کردن اطلاعات بیشتر در مورد کارت گرافیکم استفاده کردم

$ lspci -nn | grep VGA

که از خروجی متوجه شدم Radeon 5000 هست! خوب تا اینجا کار خوب پیش اومد! بعد از اون، لازم بود تا بسته مربوط به کارت گرافیکم رو، بسته تجاری رو به متن باز ترجیح دادم(!) :-O، نصب کنم! به همین خاطر مخزن مربوطه رو به apt اضافه کردم!

$ sudo nana /etc/apt/sources.list.d/ati.list

و بعد خط زیر رو به اون اضافه کردم!

deb http://http.debian.net/debian/ wheezy main contrib non-free

و سپس

$ sudo apt-get update

و در نهایت بسته مورد نظر رو با استفاده از دستور زیر نصب کردم! (بسته اول فایل‌های سرامد هسته مربوطه است که برای نصب صحیح درایور کارت گرافیک لازم است).

$ sudo apt-get install linux-headers-$(uname -r) fglrx-driver

در نهایت هم فایل پیکربندی Xorg Server رو به این صورت ساختم! دلیل اینکه این فایل رو دستی ساختم، آینه که Xorg این درایور رو به صورت خودکار شناسایی نمی کنه!

$ sudo mkdir /etc/X11/xorg.conf.d
$ echo -e 'Section “Device”\n\tIdentifier “RADEON”\n\tDriver “fglrx”\n\EndSection' > /etc/X11/xorg.conf.d/20-fglrx.conf

از طرف دیگه، چون معمولاً برای ارائه سمینار از لپ تاپم استفاده می کنم، این خط رو فایل xorg.conf اضافه کردم!

Section “Screen”
SubSection “Display”
Virtual 1024 768
EndSubSection
EndSection

و سیستم رو راه اندازی مجدد کردم! کار تمام شد! وقتشه که بخوابم!

البته به جای مراحل ساختن دستی تنظیمات، می تونستم همونطور که هنگام نصب توصیه شده بود، دستور مربوطه رو اجرا کنم! ولی به هر حال، من تنظیمات مربوط به مانیتور دوم رو باید دستی انجام می دادم!

۱ نظر موافقین ۰ مخالفین ۰ ۱۱ دی ۹۲ ، ۰۰:۴۹
علی شکیبا

یه مشکلی که بعد از ارتقا به gnome 3 برام پیش آمده این است که bluetooth به صورت خودکار روشن می شود و البته در رابط گرافیکی اون روشی برای غیر فعال کردنش وجود نداره، مگر هر بار به صورت دستی اون رو خاموش کنم! خوب! با یه مقدار جستجو به این راهکار رسیدم! ابتدا از فایل تنظیمات نسخه پشتیبان تهیه می کنم!

sudo cp /etc/bluetooth/main.conf /etc/bluetooth/main.conf.original

بعد از اون، مقدار true در خط زیر رو به false تغییر می دهیم! مشکل حل می شود!

InitiallyPowered = true
۰ نظر موافقین ۰ مخالفین ۰ ۱۱ دی ۹۲ ، ۰۰:۳۴
علی شکیبا

برای کارگاه لینوکس، تصمیم داشتم تا به تعداد نفرات شرکت کننده DVD رایت کنم و در اختیار شرکت کنندگان قرار بدم. از طرف دیگه، چون از محتوای هر جلسه فیلم تهیه می شود، و اغلب نسخه خام فیلم نیز حجیم است، ناچار به استفاده از حافظه های فلش می شدیم! به همین دلیل تصمیم گرفتم که لپ تاپ خودم رو به صورت یک سرور وب در بیارم تا از این طریق شرکت کنندگان به سیستم من وصل بشوند و بتوانند فایل های مورد نیاز رو دریافت کنند. اینجوری، هم دست من توی تغییر فایل ها تا آخرین لحظات شروع کارگاه باز خواهد بود و هم در حین برگزاری کارگاه، افراد به راحتی فایل های مورد نیاز رو از سیستم من بر می دارند.

به هر روی پیش بینی می کنم که احتمالا سرعت سیستم من در حین این فرایند به صورت محسوسی کاهش پیدا کند. بنابراین شاید لازم باشه که یه سیستم رو مخصوص این کار رزرو کنیم. نتیجه رو فردا می بینم.

در هر صورت، ابتدا apache2 رو روی لینوکس نصب می کنم.

# apt-get install apache2

بعد از اینکه apache2 نصب شد، یه دایرکتوری مخصوص این فایل هابه صورت زیر ایجاد می کنم

# mkdir -p /var/www/ali

چون این دایرکتوری رو با کاربر root ایجاد کردم، بنابراین سایرین به اون دسترسی ندارند. از این رو، لازم میشه تا صاحب اون رو به کاربر مورد نظرم، در اینجا ali، تعییر بدهم.

# chown  -R ali:ali /var/www/ali

حالا کافیه که فایل مربوط به یک virtual host رو بسازیم. البته از این جا به بعد توی کارگاه کاربردی نداشت، چون فرصت نصب کردن و تنظیم DNS سرور رو روی سیستم نداشتم، ولی برای کامل بودن مطلب میارم!

از دستور زیر برای ایجاد فایل مربوطه استفاده می کنیم

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ali

و تغییرات را به فرم زیر ایجاد می کنیم

<VirtualHost *:80>
        ServerAdmin ali@localhost
        ServerName ali
        ServerAlias www.ali.home
        DocumentRoot /var/www/ali/public_html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
...............

حالا کافیه که این هاست رو فعال کنیم!

# a2ensite ali

و در نهایت apache2 رو راه اندازی مجدد می کنیم.

# service apache2 reload

برای اینکه فایل هام رو داخل پوشه خانگی قرار بدهم، از این دستور استفاده می کنم که یک symlink رو برای من می سازد.

$ ln -s ~ali/Workshop /var/www/ali/public_html/workshop

۰ نظر موافقین ۰ مخالفین ۰ ۰۷ دی ۹۲ ، ۲۱:۲۲
علی شکیبا