علی شکیبا

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

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

برای نصب Oracle Java در لینوکس به صورت دستی، ابتدا فایل‌های مربوطه را از آینه http://mirror.sito.ir/ (مخزن آینه‌ای برای اکثر نرم‌افزارهای پرکاربرد که دانلود آن‌ها برای آدرس‌های آی‌پی ایرانی مقدور نیست - البته این مخزن برای Java به روز نیست! :( ) دریافت می‌کنیم.

در گام بعدی، لازم است تا فایل مربوطه را که نامی به صورت jdk-7u51-linux-x64.tar.gz دارد تا از حالت فشرده خارج کنیم. بهتر است که فایل‌های خارج شده از حالت فشرده را در محلی مثل /usr/local یا /opt قرار دهیم.

tar xzf jdk-7u51-linux-x64.tar.gz
sudo mkdir /opt/java
mv jdk1.7.0_51 /opt/java/

سپس نوبت به اضافه کردن دستورات مربوطه می‌رسد (البته می‌توان مسیر /opt/java/jdk1.7.0_51/bin را نیز در متغیر محیطی PATH قرار داد، که این کار را هم انجام می‌دهم. اما ممکن است قبلا شما از OpenJDK یا نسخه متفاوتی از Java استفاده می‌کردید)

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.7.0_51/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.7.0_51/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/jdk1.7.0_51/bin/javaws" 1

همچنین مسیر پوشه bin جاوا را نیز به متغیر PATH اضافه می‌کنیم. بدین منظور فایل /etc/envorinment را ویرایش کرده و مقادیر زیر را در آن قرار می‌دهیم

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/texlive/2012/bin/x86_64-linux:/opt/java/jdk1.7.0_51/bin"
JAVA_HOME="/opt/java/jdk1.7.0_51"

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

cd /opt/java/jdk1.7.0_51/bin
chmod a+x *

جاوای ما آماده استفاده است! :)

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

امروز قصد داشتم تا Code::Blocks رو با استفاده از فایل‌های توزیع شده در سایت خودش نصب کنم. خوب، مطابق معمول و به سادگی، فایل‌ها رو در یک فولدر قرار داده و بعد دستور زیر رو اجرا کردم

sudo dpkg -i *.deb

و بعد هم مطابق معمول، دستور زیر را برای حل و فصل پیش‌نیازها صادر کردم.

sudo apt-get install -f

اما یه مقدار حجم بسته‌های مورد نیاز زیاد بود، پس تصمیم گرفتم که فرایند نصب رو برعکس کنم! این کار با دستور زیر ممکن است

sudo apt-get remove `find -iname '*.deb' -exec dpkg --info '{}' \; | awk '/Package:/ {print $2}'`

که از اینجا برداشته شده است.

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

یکی از بهترین و مجهزترین کتابخانه‌های پردازش تصویر که متن باز هم باشد، Open CV است. این کتابخانه که به زبان ++C/C نوشته شده است، دارای یک رابط برای زبان Python نیز هست که کار با آن را بسیار ساده‌تر می‌کند و البته سرعت پردازشی بالایی را نیز به نسبت بسیاری از کتابخانه‌هایی که به صورت خالص در Python نوشته شده اند، فراهم می‌کند!

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

اما قبل از نصب، من از موتور تک‌لایو 2012 که به شیوه این پست آن را نصب کرده ام و از توزیع Anaconda Python استفاده می‌کنم که به صورت دستی و نه با استفاده از مخازن Ubuntu نصب شده اند. شاید یکی از مهمترین دلایل سخت بودن این فرایند برای من، همین دو موضوع بود! بگذریم ...

ابتدا لازم است تا به سایت رسمی OpenCV به آدرس http://opencv.org/downloads.html رفته و از آنجا نسخه مورد نظر خود را دریافت کنیم. در زمانی که این متن را می‌نویسم، نسخه 3 در مرحله Release Candidate 1 قرار داشت. من از نسخه 2.4.11 استفاده کردم!

سپس نوبت به نصب پیش‌نیازها می‌رسد. برای نصب موفق این بسته، این بسته‌ها را نصب کردم:

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev qt5-default libqt5x11* libx11-xcb1* pkg-config libxcb1-dev libxcb1 xcb

البته به احتمال خیلی زیاد، تعدادی از این بسته‌ها لازم نیستند، اما این تمام بسته‌هایی است که نصب شدند (در مراحل مختلف که خطایابی نصب انجام می‌شد) تا مثال‌ها به درستی نصب شدند.

پس از آن، فایل دانلود شده در مرحله اول را از حالت فشرده باز کرده 

unzip opencv-2.4.11.zip

و سپس پوشه‌ای برای نگهداری اطلاعات build به نام build می‌سازیم (نام پوشه اصلا مهم نیست!)

cd opencv-2.4.11
mkdir build

پس از آن به پوشه مربوطه رفته

cd build

و دستور زیر را اجرا می‌کنیم. دقت کنید که مسیر‌های مربوط به پایتون را در این دستور مطابق شرایط نصب خود تغییر دهید

cmake -D CMAKE_BUILD_TYPE=RELEASE -D PYTHON_LIBRARY=/opt/anaconda/lib/python2.7/ -D PYTHON_INCLUDE_DIR=/opt/anaconda/include/python2.7/ -D PYTHON_PACKAGES_PATH=/opt/anaconda/lib/python2.7/site-packages/ -D BUILD_EXAMPLES=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..

پس از اینکه خروجی را کنترل کرده و مطمئن شدیم همه چیز درست است (یعنی رابط پایتون نصب می‌شود :) )، آنگاه نوبت به فرایند build و سپس نصب می‌رسد

make -j 4
sudo make install

پس از آن، در فایل (ممکن است فایل وجود نداشت باشد، اگر نبود، یکی بسازید)

/etc/ld.so.conf.d/opencv.conf

آدرس

/usr/local/lib

را درج کرده و فایل را ذخیره می‌کنیم. سپس، برای پیکربندی کتابخانه‌ها دستور

sudo ldconfig

را اجرا کرده و در فایل bashrc. موارد زیر را قرار می‌دهیم

export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

با بازکردن یک کنسول جدید، یا خارج و وارد شدن مجدد به محیط کاربری، می‌توانیم از صحت نصب با مراجعه به پوشه samples در پوشه opencv-2.4.11 و اجرای موفق مثال‌ها، مطمئن شویم که نصب به درستی صورت پذیرفته است!

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

برای تایپ از TeX Studio استفاده می‌کنم، اما تایپ متن فارسی با آن زجرآور است! به همین دلیل، ترجیح می‌دهم تا متن فارسی را در gedit تایپ کنم و خروجی آن را هم در evince ببینم. اما اجرای دستی xelatex زجرآور است، گرچه خیلی کمتر از زجر تایپ فارسی در TeX Studio است! اولین تلاش برای خودکار کردن به صورت زیر بود که هر دقیقه یکبار xelatex را اجرا می‌کرد!

while $( sleep 60s )
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
   bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
done

این موضوع خوب بود تا اینکه زمان پایان اجرای xelatex کمی بیش از یک دقیقه شد! این بار دست به دامن اینترنت شدم! بسته inotify-tools دقیقا این کار را انجام می‌دهد!

while inotifywait -e close_write report.tex
do
xelatex -synctex=-1 -interaction=nonstopmode report.tex
   bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
done

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

while true
do
change = $( inotifywait -e close_write,moved_to,create . )
change = ${change#./ *}
if [ "$change" = "report.tex" ]
then
xelatex -synctex=-1 -interaction=nonstopmode report.tex
    bibtex report
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
   xelatex -synctex=-1 -interaction=nonstopmode report.tex
fi
done
۰ نظر موافقین ۰ مخالفین ۰ ۰۱ ارديبهشت ۹۴ ، ۱۱:۱۴
علی شکیبا

یکی از امکانات جالبی که در 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

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

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