Difference between revisions of "User:Dracorp/sandbox/Offline upgrade"

From ArchWiki
Jump to: navigation, search
(AUR)
(AUR)
Line 72: Line 72:
 
=== AUR ===
 
=== AUR ===
  
Pobieramy pakiety zbudowane lokalnie, czyli pobrane z [[AUR]]:
+
Pobieramy skrypt z [[https://raw.github.com/dracorp/offline-upgrade/master/offline-upgrade.sh offline-upgrade.sh]] i wykonujemy polecenia na '''host_offline''':
  
{{bc|<nowiki>
+
{{bc|
#!/bin/bash -
+
$ offline-upgrade.sh -l > lista_lokalnych_pakietow}}
get_local_package(){
+
    local_package=()
+
    if [ -x /usr/bin/package-query ]; then
+
        # szybsza metoda
+
        local_package=($(/usr/bin/package-query -Q | grep '^local' | awk '{print $1}' | awk -F'/' '{print $2}' | tr '\n' ' '))
+
    else
+
        # wolniejsza metoda
+
        DBPath=$(grep DBPath /etc/pacman.conf | sed 's/^[^=]\+=\s\+//')
+
        [ ! -d "$DBPath" -o -z "$DBPath" ] && DBPath="/var/lib/pacman/"
+
  
        # szukamy tylko w lokalnej bazie
+
Następnie na '''host_online''' uruchamiamy ten sam skrypt:
        DBPath+='/local'
+
{{bc|
 
+
$ offline-upgrade.sh -i lista_lokalnych_pakietow
        # Lokalny pakowacz
+
        source /etc/makepkg.conf
+
        [ -z "$PACKAGER" ] && PACKAGER='Unknown Packager'
+
        cd $DBPath
+
        for package in *; do
+
            if grep -q "$PACKAGER" $package/desc; then
+
                local_package+=($(echo $package | sed 's/-[^-]\+-[0-9]\+$//'))
+
            fi
+
        done
+
    fi
+
    local IFS=$'\n'
+
    echo "${local_package[*]}"
+
}
+
get_local_package
+
</nowiki>
+
 
}}
 
}}
Zalecane jest wcześniejsze zainstalowanie pakietu {{AUR|package-query}} aby skrypt szybciej działał.
 
  
'''TODO''': Brak skryptu do przebudowy pakietów z AUR.
+
W katalogu ''export_dir'' zostaną wyeksportowane zbudowane pakiety, które potem można zainstalować na '''host_offline'''.
  
 
== Zobacz także ==
 
== Zobacz także ==

Revision as of 14:59, 18 March 2013

Aktualizacja systemu bez dostępu do internetu

Poniższy artykuł opisze proces zaktualizowania systemu na komputerze bez dostępu do internetu. Zostanie opisany proces aktualizacji pakietów dostępnych ze standardowych repozytoriów jak i z AUR.

Dla uproszczenia dalszego procesu zakładamy, że mamy dwie maszyny:

  • host_offline - maszyna bez dostępu do internetu
  • host_online - maszyna z dostępem do internetu

Na przemian

Na początku należy zaktualizować listę dostępnych pakietów, normalnie realizowane przez polecenie pacman -Sy. Pobieramy bazy pakietów z host_online z katalogu /var/lib/pacman/sync lub bezpośrednio z serwerów:

Dla i686:

Dla x86_64:

Note: Zasadniczo wystarczą same pliki *.db

Oczywiście należy powyższą listę dostosować do repozytoriów które są wyszczególnione w /etc/pacman.conf. Pliki *.db kopiujemy do /var/lib/pacman/sync/ na host_offline i nadpisujemy stare. Następnie musimy pobrać adresy URL pakietów do aktualizacji (host_offline):

pacman -Sup --noconfirm > lista_pakietów

Mając powyższą listę, pobieramy pakiety na host_line:

wget -i lista_pakietów

A same pakiety kopiujemy do katalogu /var/cache/pacman/pkg/ na host_offline i wykonujemy polecenie pacman -Su. Ewentualnie można od razu zainstalować pakiety np. z pendrive'a pacman -U ./*.xz.

Jednokrotny proces

W tym sposobie "aktualizacja" oprogramowania odbędzie się od razu na maszynie host_online, bez naprzemiennego zmieniania maszyn.

Na początku należy przygotować "środowisko" do pracy. Kopiujemy z host_offline:

  • plik /etc/pacman.conf
  • katalog /var/lib/pacman

do np. katalogu ~/Arch/host_offline na komputerze host_online.

Na czas aktualizacji warto utworzyć alias i użyć jednej zmienne:

alias pacman-off='sudo pacman -b $CHROOT/var/lib/pacman \
--config $CHROOT/etc/pacman.conf \
--cachedir $CHROOT/var/cache/pacman/pkg \
--logfile $CHROOT/var/log/pacman/pacman.log'
CHROOT=/home/piecia/Arch/host_offline
Note: Brak lepszego pomysłu, a pacman musi być użyty z uprawnieniami roota. Zawsze można użyć yaourtAUR.
Note: Powyższe ustawienia można zweryfikować poprzez dodanie opcji -v do polecenia pacman-off
Note: Można jeszcze zmodyfikować ścieżkę do katalogu gpg: --gpgdir $CHROOT/etc/pacman.d/gnupg.

Przystępujemy do aktualizacji systemu:

$ pacman-off -Sy
$ pacman-off -Suw

Następnie kopiujemy zawartość katalogu ~/Arch/host_offline/var/{cache/pkg,lib/pacman/sync} na komputer host_offline i wykonujemy polecenie pacman -Su na host_offline.

AUR

Pobieramy skrypt z [offline-upgrade.sh] i wykonujemy polecenia na host_offline:

$ offline-upgrade.sh -l > lista_lokalnych_pakietow

Następnie na host_online uruchamiamy ten sam skrypt:

$ offline-upgrade.sh -i lista_lokalnych_pakietow

W katalogu export_dir zostaną wyeksportowane zbudowane pakiety, które potem można zainstalować na host_offline.

Zobacz także