Pacman verimini arttırmak

Arch Linux Türkiye Belgeleri sitesinden
Atla: kullan, ara


Internet.png Bu yazı ArchWiki üzerinde bulunan Improve_Pacman_Performance yazısının çevirisi temel alınarak hazırlanmıştır. Son güncelleme tarihi 24.12.2008
İngilizce olan ArchWiki sayfasında çeviri tarihinden sonra yapılan değişiklikler için bu bağlantıyı takip edin.

Sayfa özgün sayfaya göre güncelliğini yitirmişse, bu sayfayı düzenleyerek güncelleştirmeye yardım edin!

Tüm çeviri yazıları Özel:SayfayaBağlantılar/Şablon:çeviri_durumu sayfasında görüntüleyebilirsiniz.
Internet.png


Tango-dialog-warning.png Bu yazı güncelliğini yitirmiştir.
Lütfen yazıdaki eski bölümleri çıkartarak, güncel bilgiler ile yenileyerek bu yazıyı yeniden yardımcı olabilecek seviyeye getirmeye katkıda bulunun.
Tango-dialog-warning.png

Konu başlıkları

Veritabanı Erişimini Hızlandırmak

Pacman her bir paket için paket bilgilerini küçük, ayrı dosyalar içinde saklar. Veritabanı erişimini hızlandırmak veritabanıyla ilgili görevler için gerekli süreyi kısaltır. Örneğin; paket aramak veya paket bağımlılıklarını çözmek gibi.

En güvenli ve kolay metot yolu "root" olarak şu komutu çalıştırmaktır:


pacman-optimize && sync

Böylece bütün küçük dosyalar sabit diskin fiziksel bir kısmında yanyana getirilecektir böylece sabit diskin kafası bütün paketlere erişmek için çok fazla hareket etmek zorunda kalmayacaktır. Bu yöntem güvenlidir fakat kesin değildir. Dosya sisteminize, disk kullanımınıza ve sabit diskinizdeki boş alana bağlıdır.

İleri Ayarlar

ody forumda Pacman veritabanını bir "loopback dosya sistemi" ile değiştirip küçük dosyaların sabit diskte bir arada kalmasını sağlayan bir betik yayımladı.Bir çok kullanıcı bu şekilde oldukça hızlanma olduğunu bildirdi. Fakat aynı zamanda bir çok da hata bildirildi. Bu yüzden eğer tecrübeli bir kullanıcı değilseniz bu yöntemi kullanmayın.

ody'nin betiğini kullanmak için loopback dosya sistemi desteğiyle derlenmiş bir kernele sahip olmalısınız. Öntanımlı kerneller zaten bu desteğe sahip. O yüzden eğer ki kendi kernelinizi derliyorsanız buna dikkat etmelisiniz.

Paket İndirme Hızını Arttırmak

Öncelikle eğer indirme hızınız düşük ise ftp.archlinux.org dışında bir sunucu seçtiğinizden emin olun. Çünkü 2007 Mart itibariyle o sunucuya limit konulmuştur.

Pacman'in paket indirme hızı Pacman'in kendi gömülü paket indirme sisteminin dışında farklı bir program kullanılarak kullanılarak arttırılabilir.

Herşeyden önce en en son Pacman sürümünü kullandığınızdan emin olun.

pacman -Syu

wget Kullanmak

Bu yöntem aynı zamanda Pacman'in yerleşik özelliklerinden daha güçlü proxy ayarlarına ihtiyaç uyuyorsanız oldukça kullanışlıdır.

wget'i kullanmak için önce pacman -S wget ile wget'i sisteminize kurun ve /etc/pacman.conf dosyasını düzenleyerek [options] kısmına aşağıdaki satırı ekleyin:

XferCommand = /usr/bin/wget -c --passive-ftp -c %u


wget parametrelerini /etc/pacman.conf dosyasına koymak yerine doğrudan wget konfigürasyon dosyasını (tüm sistem dosyası /etc/wgetrc, her kullanıcı için olan dosya $HOME/.wgetrc) düzenleyerek de ekleyebilirsiniz.


aria2 Kullanmak

aria2 web sitesine göre aria2; "Devam etme özelliği ve parçalı indirme özelliği olan bir indirme aracıdır. HTTP/HTTPS FTP/BitTorrent/Metalink destekler". Bu demek oluyor ki bir Arch yansısına aynı anda bir çok HTTP/FTP bağlantısı yapabilirsiniz. Böylece indirme hızı artacaktır.

Sisteme pacman -S aria2 ile kurun ve /etc/pacman.conf dosyasını [option] kısmına şu satırı ekleyerek düzenleyin:

XferCommand = /usr/bin/aria2c -s 2 -m 2 -d / -o %o %u

Seçenekleri bir gözden geçirelim:

  • /usr/bin/aria2c - aria2 uygulamasının yeri
  • -s 2 - Eşzamanlı 2 bağlantı kullan (isterseniz daha fazla ayarlayabilirsiniz ama gözle görülür bir değişiklik olmayacaktır)
  • -m 2 - Her yansı için 2 indirme isteği gönder
  • -o %o - Pacman'in belirlediği dosyaya çıktı ver
  • %u - Pacman'in belirlediği dosyayı indir


Powerpill

Powerpill paketleri indirmek için aria2 kullanan bir pacman sarma paketidir. Diğer aria2 çözümlerinden farklı olarak powerpill tüm dosyalar için eşzamanlı indirme kullanır fakat sadece büyük dosyalar için parçalı indirme yapar. Böylece gereksiz yere küçük dosyaları bölmekle uğraşarak bant genişliğinizi boşa harcamaz. Powerpill hakkında daha fazla bilgiyi ve son versiyonunu Community Contributions forumundaki bu başlıkta bulabilirsiniz. AUR'da bu paketi bulabilirsiniz.


Pacget Aria2 Yansı Betiği

Bu betik geniş bant kullanıcılarının indirme hızlarını oldukça arttıracaktır. Betik önce Pacman'den indirme linkini alır, sonra /etc/pacman.d/mirrorlist dosyasına bakarak hepsini aria2 yansılarıymış gibi ekler. Böylece aria2 10-20 sunucuya hepsinden aynı anda indirecek şekilde bağlanır (normalde bu sayı 4'tür). Bu şekilde geniş bant kullanıcılarının hızında çok büyük bir artık görülür. Bu yöntem çoğu insan için indirme hızlarını en üst düzeye getirir.

Şunu unutmayın XferCommand'da /usr/bin/pacget in başına 'exec' koymak zorundasınız. Bu pacget ya da aria2'yi sonlandırdığınızda Pacman'in de sonlanması için gereklidir. Bu şekilde Pacman dosya indirmesi söylenmediği zaman indirmeyi sürdürmeyecektir.

UYARI: Eğer aç gözlü davranırsanız bir çok sorun yaşarsınız. Sadece ana sunucuyla düzenli güncellenen güvenilir ve işe yarar sunucuları (5 tane bile fazladır) seçin. Bozuk dosya gibi sorunlarla karşılaşmak istemiyorsanız güncel olmayan sunucuları seçmeyin.


UYARI: Özel depolarda test edilmesi gerekiyor.

# !/bin/bash

# ------------ Begin Configuration ------------ #

# The log file
LOG=/var/log/pacget.log
# Number of connections per server (don't go beyond 2, please)
CONNECTIONS=2
# Max number of servers to download from (follows ordering in include file)
SERVERS=4
# Maximum download speed (0 = unrestricted)
MAX_SPEED=0
# Minimum download speed (0 = don't care)
MIN_SPEED=0
# Maximum tries per download
MAX_TRIES=2
# Server timeout period
TIMEOUT=15
# Passive FTP or not: 'yes' or 'no'
FTP_PASV="no"
# 'none' or 'prealloc'
FILE_ALLOC="none"
# Use color in messages
USE_COLOR="yes"

# ------------- End Configuration ------------- #

msg() {
echo ""
if [ "${USE_COLOR}" = "yes" ]; then
echo -ne "   \033[1;34m->\033[1;0m \033[1;1m${1}\033[1;0m" >&2
else
echo -n "   -> ${1}" >&2
fi
}

error() {
if [ "$USE_COLOR" = "yes" ]; then
echo -e "\033[1;31m==> ERROR:\033[1;0m \033[1;1m$1\033[1;0m" >&2
else
echo "==> ERROR: $1" >&2
fi
}

ARIA2_BIN=$(which aria2c 2> /dev/null)

# ----- do some checks first -----
if [ ! -x "$ARIA2_BIN" ]; then
error "aria2c was not found or isn't executable."
exit 1
fi

if [ $# -ne 2 ]; then
error "Incorrect number of arguments"
exit 1
fi

filename=$(basename ${1})
server=${1%/${filename}}

# Determine which repo is being used
repo=$( awk -F'/' '$(NF-2)~/^(community|core|extra|testing)$/{print $(NF-2)}' <<<$server )
[ -z $repo ] && repo="custom"

# Override number of connections for db files
[[ ${filename} = *.db.tar.gz ]] && CONNECTIONS=1

# For db files, or when using a custom repo (which most likely doesn't have any mirror),
# use only the URL passed by pacman; Otherwise, extract the list of servers (from the include file of the repo) to download from
url=${1}
if ! [[ ${filename} = *.db.tar.gz || ${repo} = "custom" ]]; then
mirrorlist=$( awk -F' *= *' '$0~"^\\["r"\\]",/Include *= */{l=$2} END{print l}' r=${repo} /etc/pacman.conf )
[ -n mirrorlist ] &&
url=$( sed -r '/^Server *= */!d; s/Server *= *//; s/\$repo'"/${repo}/; s:$:/${filename}:" ${mirrorlist}|head -n ${SERVERS} )
# awk way of doing the same thing,
# url=$( awk -F' *= *' 'i<=n&&$1=="Server"{gsub(/\$repo/, r, $2);print $2"/"f;i++}' n=${SERVERS} r=${repo} f=${filename} ${mirrorlist} )
fi

# Passive FTP or not?
[ "${FTP_PASV}" = "yes" ] && OPT_FTP_PASV="--ftp-pasv" || OPT_FTP_PASV=""

msg "Downloading ${filename}"

cd /var/cache/pacman/pkg/

${ARIA2_BIN} --log=${LOG} --timeout=${TIMEOUT} --max-tries=${MAX_TRIES} --allow-overwrite=true \
--split=${CONNECTIONS} ${OPT_FTP_PASV} --file-allocation=${FILE_ALLOC} \
--lowest-speed-limit=${MIN_SPEED} --max-download-limit=${MAX_SPEED} \
${url} --out=${filename}.pacget && [ ! -f ${filename}.pacget.aria2 ] && mv ${filename}.pacget ${2} && chmod 644 ${2}

exit $?

Bu betiği /usr/bin/pacget olarak kaydedin.

chmod 755 /usr/bin/pacget

Bu komut betiği çalıştırılabilir yapar.

/etc/pacman.conf içinde [options] bölümüne aşağıdaki satır eklenmelidir.

XferCommand = exec /usr/bin/pacget %u %o


NOT: İlk sunucu olarak ftp.archlinux.org kullanıyorsanız, kullandığınız sunucular henüz senkronlanmamışsa bazı sorunlarla karşılaşabilirsiniz. Bu betiği etkili bir şekilde kullanabilmek için düzenli senkronlanan bir sunucu seçin ve sunucu listesinde en üste onu koyun. Bu işlem, sunucular henüz seknronlanmadığında sadece frp.archlinux.org'dan indirmenizi önler.


Diğer Uygulamaları Kullanmak

Pacman ile kullanabileceğiniz başka indirme uygulamaları da vardır. Bunlardan bazıları ve uygun olan XferCommand ayarları şunlardır:


  • snarf: XferCommand = /usr/bin/snarf -N %u
  • lftp: XferCommand = /usr/bin/lftp -c pget %u
  • axel: XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u
Kişisel araçlar
GOOGLE
Diğer dillerde