Python ve pip kurulumunu otomatik yapacak bir betik'e ihtiyacım var

Başlatan nahita, 07 Ocak 2021 - 00:35:53

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

nahita

çMerhabalar basit bir kabul programı yazmaya çalışıyorum. İşin doğrusu her zaman bu tür bir geliştirmeye ihtiya. duymadığım için bir dökümantasyon takip etmedim. Hazır kod örnekleri bakındım. Amacım pythonda yazılmış programı sistem bilgisi olmayanların işini kolaylaştırmak adına  otomatik olarak pyhhon3 ve pip paketi kurulu olup olmadığını kontrol edip kurulu değilse kuracak bir betiğe ihtiyacım var. Nasıl bir yol izleyebilirim?

Bir şey daha sormak istiyorum. Stackoverflowda aşağıdakine benzer bir yapı gördüm denedim ama çalıştıramadım. Anlamlandırmak adına sormak istiyorum 2>/dev/null  veya /dev/null 2>&1 ne anlama geliyor?

$ command -v foo >/dev/null 2>&1 || { echo >&2 "I require foo but it's not installed.  Aborting."; exit 1; }.

mimiksiz

Debian / ubuntu ve arch tabanlı dağıtımlar için örnek karaladım. Kaynak koddan derleme betiğide yapılabilir veya dnf, yum gibi başka paket yöneticilerinde de çalışması için ekleme yapılabilir. Dağıtımlar arasında şöyle bir fark var. Arch linuxda python-pip ile python3 pip3 versiyonu kurulurken ubuntuda python3-pip ile kuruluyor. komut 2>/dev/null[ #komutun olursa hata çıktılarını gizler komut 1>/dev/null #komutun standart çıktılarını, echo ile kullanıcıya yapılan bilgilendirmeleri vs. gizler
Diğerini bende tam bilmiyorum.
https://stackoverflow.com/questions/10508843/what-is-dev-null-21

#!/bin/sh
gerekenler="python3 pip3"
for gereken in $gerekenler
do
command -v $gereken >/dev/null  2>&1 || { echo >&2 "$gereken kurulu değil."; kur=$kur\ $gereken; }
done
[ -z "$kur" ] && { echo "$gerekenler sisteminizde kurulu. Çıkılıyor..."; exit 0; }
packageManagers="apt-get pacman" #ekleme yapılabilir
for packageManager in $packageManagers
do
command -v $packageManager >/dev/null 2>&1 && { echo -n >&2; tespitEdilen=$packageManager; }
done
[ -z "$tespitEdilen" ] && { echo "Paket yöneticisi tespit edilemedi. İşlem yapmadan çıkılıyor..."; exit 1; }
case $tespitEdilen in
"apt-get") sudo apt-get update
for k in $kur
do
[ "$k" = "pip3" ] && k=python3-pip
sudo apt-get -y install $k
done
;;
"pacman") sudo pacman -Sy
for k in $kur
do
case $k in
"python3") k=python
;;
"pip3") k=python-pip
;;
esac
sudo pacman -S $k --noconfirm --needed
done
;;
esac
for kontrol in $gerekenler
do
command -v $kontrol >/dev/null  2>&1 || { echo >&2 "$Kurulum tamamlanamadı."; exit 1; }
done
echo "Kurulum tamamlandı."

Çalıştırmak için

chmod +x betik_adı.sh
./betik_adı.sh