لینوکس و من

یک اسکریپت خوب برای راحت تر کردن pacman

نویسنده : امین | تاریخ: 1393/01/10

همون طور که میدونید pacman مدیر بسته ها در آرچ هست. دستورات زیادی داره که کار کردن با اونها ممکنه در ابتدا سخت باشه. وجود یک اسکریپت که کار رو ساده تر کنه لازم دیدم، اما هر چه گشتم چیزیو که میخواستم پیدا نکردم. بنابراین دست به کار شدم و خودم یک اسکریپت نوشتم. از نتیجه کار راضی ام. شما هم  میتونید این اسکریپت رو داشته باشید. به ادامه مطلب برید و اسکریپت رو در یک فایل ذخیره کنید. مجوز اجرایی رو بهش بدید و اون رو در usr/local/bin/ کپی کنید.

روش کار چنین هست که با دستور pm و متعلقاتش میتونید بکیج ها رو مدیریت کنید. مثلا:

pm -i mplayer یا pm install mplayer بسته ی mplayer رو از مخازن نصب میکنه
pm -d mplayer یا pm delete mplayer بسته ی mplayer رو با تمام بسته هایی که به اون dependent هستند پاک میکنه.

هر کسی هم که این اسکریپت رو میبینه و فکر میکنه میتونه بهتر و ساده تر بشه، میتونه تغییرش بده یا پیشنهاد بده.

این هم اسکریپت:

#! /bin/sh
#
# pm is a simple script to make pacman easier. 
# pacman is the package manager of Arch based linux distroes. 
# I'm not a developer, and I wrote this script just for my needs.
# 30 Murch 2014
# Amin Abdollahzade: medicamin@gmail.com http://linuxvaman.mihanblog.com
# Feel free to make this script better :)
#

if [ $# -lt 1 ]
then
    echo
    echo "pm is a simple script to make pacman easier"
    echo "Usage: pm option package"
    echo
    echo -e " \033[1m \x1b[31m Options:\033[0m "
    echo " -h,  help : Show this help"
    echo " -i,  install : Install a package from repo"
    echo " -ip, install-pkg : Install the given package"
    echo " -r,  remove : Remove a single package"
    echo " -d   delete : Delete a package with all dependencies"
    echo " -s,  search : Search the given name"
    echo " -u,  update : Updates the system"
    echo " -uy, update-yes : Updates the system with YES to all questions"
    echo " -um, update-mirror : Updates the mirrors using reflector"
    echo "  You must install reflector before"
    echo " -z,  size : Sort all packages by installed size"
    echo " -f   info : Display information about a package"
    echo
    echo -e " \033[1m \x1b[31m Examples:\033[0m"
    echo " pm -uy :updates all packages without confirmation"
    echo " pm install vlc :install vlc"
    echo
    echo
            
exit
fi

function show_help {

    echo
    echo "pm is a simple script to make pacman easier"
    echo "Usage: pm option package"
    echo
    echo -e " \033[1m \x1b[31m Options:\033[0m "
    echo " -h,  help : Show this help"
    echo " -i,  install : Install a package from repo"
    echo " -ip, install-pkg : Install the given package"
    echo " -r,  remove : Remove a single package"
    echo " -d   delete : Delete a package with all dependencies"
    echo " -s,  search : Search the given name"
    echo " -u,  update : Updates the system"
    echo " -uy, update-yes : Updates the system with YES to all questions"
    echo " -um, update-mirror : Updates the mirrors using reflector"
    echo "  You must install reflector before"
    echo " -z,  size : Sort all packages by installed size"
    echo " -f   info : Display information about a package"
    echo
    echo -e " \033[1m \x1b[31m Examples:\033[0m"
    echo " pm -uy :updates all packages without confirmation"
    echo " pm install vlc :install vlc"
    echo
    echo
}

function reflector {

sudo reflector --verbose -l 10 -p http --sort rate --save /etc/pacman.d/mirrorlist

}

case $1 in
    -h|--help)
show_help
exit 0
;;
    -um|update-mirror)
reflector
exit 0
;;
    
    -s|search)
sudo pacman -Ss $2
exit 0
;;
    -i|install)
sudo pacman -S $2
exit 0
;;
    -ip|install-pkg)
sudo pacman -U $2
exit 0
;;    
    -u|update)
sudo pacman -Syu
exit 0
;;    
    
    -uy|update-yes)
sudo pacman -Syu --noconfirm
exit 0
;;    
    -d|delete)
sudo pacman -Rns $2
exit 0
;;
    -r|remove)
sudo pacman -R $2
exit 0
;;
    -f|info)
sudo pacman -Si $2
exit 0
;;
    -z|size)
echo "wait a moment..."
sudo pacman -Qi | egrep "^(Name|Installed Size)" | sed -e 'N;s/\n/ /' | awk '{ print $7, $3}' | sort -n > ~/pkgsize
echo "packages list sorted by size: $HOME/pkgsize"
exit 0
;;
esac

لینک‌های مرتبط

1393/08/9 10:24
مشکل alias ها چی بوده که این اسکریپت رو نوشتید؟!
پاسخ امین : اون موقع alias ها رو نمیشناختم. و اینم یجور کنجکاویه دیگه
همچنین شما میتونین با تایپ دستور خالی pm خلاصه ای از دستوراتش رو ببینید. فکر نکنم alias چنین باشه.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
نظرات پس از تایید نشان داده خواهند شد.

برای کپی پیست کردن در متن نظرات کلید shift را نگه دارید و بعد right click کنید.