انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: احسان فعالپور در 22 آبان 1394، 03:48 بظ
-
سلام.من چند روز پیش یه کد پایتون دیدم که لیست مورد نیاز برای آپدیت رو میداد به aria و اون سیستم رو آپدیت میکرد.
خودم هم یه مقدار باهاش ور رفتم و نهایتا به اینا رسیدم.امیدوارم دوستان هم خوششون بیاد:
خب اول اینا رو توی فایل .bash_aliases اضافه کنید:
alias prepareupgradeList='sudo apt-get -y --print-uris -qq upgrade | apt2metalink > ~/.upgradelist.meta4'
alias preparedist-upgradeList='sudo apt-get -y --print-uris -qq upgrade | apt2metalink > ~/.dist-upgradelist.meta4'
alias cleanmyHome='rm ~/.*.meta4 &>/dev/null'
alias upgradeCommand='if [ $(grep -ic size $HOME/.upgradelist.meta4) -gt 0 ];then sizeNotify $HOME/.upgradelist.meta4 ; sudo aria2c -s16 -x16 -k1M -m0 --retry-wait=2 -j1 -d /var/cache/apt/archives/ -M ~/.upgradelist.meta4 --file-allocation=none; fi'
alias dist-upgradeCommand='if [ $(grep -ic size $HOME/.dist-upgradelist.meta4) -gt 0 ];then sizeNotify $HOME/.dist-upgradelist.meta4 ; sudo aria2c -s16 -x16 -k1M -m0 --retry-wait=2 -j1 -d /var/cache/apt/archives/ -M ~/.dist-upgradelist.meta4 --file-allocation=none; fi'
alias upgrade='prepareupgradeList && upgradeCommand && sudo apt-get -y --force-yes upgrade ; cleanmyHome'
alias dist-upgrade='preparedist-upgradeList && dist-upgradeCommand && sudo apt-get -y --force-yes dist-upgrade ; cleanmyHome'
بعد این کد پایتون رو هم بذارید توی PATH تون:
ehsan@ehsan-SVF152190X:~/.bin$ cat apt2metalink
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import re
if __name__ == "__main__":
entries = []
while True:
line = sys.stdin.readline()
try:
if not line: break
uri, name, size, chksum = line.split()
uri = re.sub(r"^'|'$", "", uri)
hashfunc, hashvalue = chksum.split(':')
hashfunc = hashfunc.lower()
if hashfunc == 'sha256':
hashfunc = 'sha-256'
entries.append((uri, name, size, hashfunc, hashvalue))
except ValueError:
sys.stdout.write('\033[1mThere is no new update for your system\n\033[0m')
sys.exit(1)
print """<?xml version="1.0" encoding="UTF-8"?>
<metalink xmlns="urn:ietf:params:xml:ns:metalink">"""
for e in entries:
print """<file name="{name}">
<size>{size}</size>
<hash type="{hashfunc}">{hashvalue}</hash>
<url priority="1">{uri}</url>
</file>""".format(uri=e[0],name=e[1], size=e[2], hashfunc=e[3], hashvalue=e[4])
print """</metalink>"""
این کد هم واسه اینه که بهتون بگه چقدر حجم قراره دانلود بشه:
ehsan@ehsan-SVF152190X:~/.bin$ cat sizeNotify
#!/bin/bash
cat "$1" | grep size | sed -e 's/[^0-9]//g' -e 's/$/\/(1000000)/' | paste -sd+ | bc -l | sed -e 's/0*$//g' -e 's/^\./0./' | awk '{print "Need to get "$1" MiB from servers"}'
و الان اگه همه چیز رو جای خودش تعریف کرده باشید باید با دستور upgrade و dist-upgrade خیلی راحت سیستم و توزیعتون رو آپگرید کنید.
-
https://github.com/ilikenwf/apt-fast
-
واللا تا جایی که من میدونم اینی که شما معرفی کردی واسه کساییه که اینترنت پرسرعت داشته باشن.
حالا سوای این که آیا ربطی به استفاده از aria2c که من معرفی کردم داره یا نه،من خودم قبلا که از همین apt-fast استفاده میکردم مثله الان که از این روش جدید استفاده میکنم سریع نبود.
-
واللا تا جایی که من میدونم اینی که شما معرفی کردی واسه کساییه که اینترنت پرسرعت داشته باشن.
حالا سوای این که آیا ربطی به استفاده از aria2c که من معرفی کردم داره یا نه،من خودم قبلا که از همین apt-fast استفاده میکردم مثله الان که از این روش جدید استفاده میکنم سریع نبود.
احتمالا چون تو این روشی که شما اینجا ذکر کردی از آپشن های اضافی آریا هم استفاده کردی باعث شده نتیجه بهتر باشه.