#!/usr/bin/rexxcurl /******************************************************************************/ /* Debian Archive Directory Refresher */ /******************************************************************************/ /* something like "apt-get update" and "apt-get upgrade" but based of an */ /* archived "archives"-directory instead of a real linux system */ /******************************************************************************/ cid="" HOME="/home/"||userid() LISTS=HOME||"/lists"||date('B') CACHE="/media/"||userid()||"/DATA/xenial" ARCHIVES=HOME||"/archives" /******************************************************************************/ /* verification or creation of the repository checksums */ /******************************************************************************/ if length(stream(CACHE||"/cache.dat",'C',"QUERY EXISTS"))>0 then do /* pending: Verification of repository checksums with archives content */ parse value "0 0" with cnt1.0 cnt2.0 address system "cat "||CACHE||"/cache.dat | wc -l" with output stem cnt1. address system "find "||CACHE||"/archives/ -type f | wc -l" with , output stem cnt2. end if length(stream(CACHE||"/cache.dat",'C',"QUERY EXISTS"))=0 | cnt1.1<>cnt2.1 , then do /* calculate checksums of archives, when cache.dat does not exists or does */ /* not match */ parse value "0 0" with status j do i=1 to sourceline() while status<2 if status=1 & left(sourceline(i),2)="*"||"/" then do bashcode.0=j if j>0 then address system "cat > /tmp/shamd5" with, input stem bashcode. status=2 end if status=1 then do j=j+1 bashcode.j=sourceline(i) end if word(sourceline(i),2)="shamd5" then status=1 end address system "bash /tmp/shamd5 "||CACHE||"/archives/ > /tmp/cache.dat" CACHE="/tmp" end /******************************************************************************/ /* get official repository lists and verify pgp signature */ /******************************************************************************/ if length(stream(LISTS||".tbz",'C',"QUERY EXISTS"))=0 then do /* get up-to-date lists */ address system "mkdir -p "||LISTS cid=CurlInit() if length(cid)=0 then MSG_EXIT(12,"Error CurlInit()") parse value "0" with status do i=1 to sourceline() while status<2 if status=1 & left(sourceline(i),2)="*"||"/" then status=2 if status=1 then do parse value sourceline(i) with url file . url=strip(translate(url,' ',"'")) tmp=charout('stdout','Download '||file||' ... ') file=LISTS||"/"||file if right(url,3)='.xz' then file=file||'.xz' tmp=CurlSetopt(cid,'OUTFILE',file) if CurlSetopt(cid,'URL',url)>0 then , MSG_EXIT(12,"Error CurlSetopt(URL)") if CurlPerform(cid)>0 then MSG_EXIT(12,"Error CurlPerform()") RESPONSE_CODE=CurlGetInfo(cid,"RESPONSE_CODE") select when RESPONSE_CODE='200' then do MSG='OK' if length(strip(stream(file,'C',"QUERY EXISTS")))>0 & , right(file,3)='.xz' then do address system "unxz "||file if RC>0 then MSG_EXIT(RC,"unxz "||file) end say MSG end when RESPONSE_CODE='404' then do say 'MISSING' address system "rm "||file end otherwise MSG_EXIT(RESPONSE_CODE,"curl "||url) end end if status=0 & word(sourceline(i),2)="urisupd" then status=1 end address system "gzip "||LISTS||"/"||"*.{yml,tar}" address system 'gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys', '"437D05B5" "C0B21F32"' if RC>0 then MSG_EXIT(12,"Error during Import of public keys.") pgpsigfiles.0=0 address system 'grep -l "\-\-BEGIN PGP SIGNED MESSAGE\-\-" '||LISTS||'/*', with output stem pgpsignedfiles. if pgpsignedfiles.0>0 then do address system "gpg --verify-files" with input stem pgpsignedfiles. if RC>0 then MSG_EXIT(12,"PGP Signatures wrong.") end tmp=charout('stdout',"Archive of lists ... ") address system "cd "||LISTS||"; tar -cjf "||LISTS||".tbz *" if RC=0 then say 'OK' else MSG_EXIT(8,"tar "||LISTS||"/*") end /******************************************************************************/ /* create download list */ /******************************************************************************/ if length(stream("/tmp/urispkgs.asc",'C',"QUERY EXISTS"))=0 then do parse value "0 0 0 0" with NEEDED. SOURCE_NEEDED. CACHED. REQUESTED. do while lines(CACHE||"/cache.dat")>0 /* read cache.dat */ parse value linein(CACHE||"/cache.dat") with "SHA256:"shax" MD5:"." "file n=lastpos('/',file) suffix=fn2suffix(file) select when right(file,4)=".deb" then do parse value translate(substr(file,n+1),' ','_') with , name vers suffix ".deb". NEEDED.name=1 CACHED.name.suffix.shax=1 end otherwise parse value translate(substr(file,n+1),' ','_') with name . SOURCE_NEEDED.name=1 CACHED.name.suffix.shax=1 end end /* filter Packages and Sources lists */ address system "egrep '^Package:|^Architecture:|^Version:|^Depends:|"||, "^Filename:|^Size:|^MD5sum:|^SHA256:' "||LISTS||"/*_Packages >", "/tmp/REPO.asc" address system "egrep '^Package:|^Version:|^Build-Depends:|^Directory:|"||, "^Files:|^Checksums-Sha256:| .*\.dsc$| \.orig\.tar\..*$|", ".*\.debian\.tar\..*$|^$' "||LISTS||"/*_Sources > /tmp/SOURCES_REPO.asc" parse value '0 0 0' with DOWNLOAD RL RLSTART REPO. SRCNAME SRCVERSION SRCPATH /* 1. process Sources */ do while lines("/tmp/SOURCES_REPO.asc")>0 LINE=linein("/tmp/SOURCES_REPO.asc") parse var LINE prefix':'parm': 'wert PARM=translate(PARM); wert=strip(wert) if left(parm,1)<>" " then SUBLINE="" select when length(parm||wert)=0 then do /* empty line as separator between entries */ parse value '' with SRCNAME SRCVERSION SRCPATH end when left(parm,1)=" " then do /* continue lines / entry with multiple values */ if SUBLINE="MD5" then do parse var LINE chksum sz fn SRCMD5.SUFFIX=fn2suffix(fn) end if SUBLINE="SHA256" then do RL=RL+1 parse var LINE chksum sz fn suffix=fn2suffix(fn) parm='TAIL' N=lastpos(SRCVERSION,fn) REPO.RL.parm=substr(fn,N+1) parm='FILENAME' REPO.RL.parm=SRCPATH||"/"||fn parm='PACKAGE' REPO.RL.parm=SRCNAME /* hotfix - misuse ARCHTECTURE to handle different types of */ /* source packages files */ parm='ARCHITECTURE' REPO.RL.parm=suffix parm='MD5SUM' REPO.RL.parm=SRCMD5.suffix parm='SHA256' REPO.RL.parm=chksum parm='SIZE' REPO.RL.parm=sz call DOWNLOAD_CHECK end end when parm='PACKAGE' then SRCNAME=WERT when parm='VERSION' then SRCVERSION=WERT when parm='BUILD-DEPENDS' & SOURCE_NEEDED.SRCNAME then do /* reference to binary packages - needed to build source */ deps=translate(wert,' ',',|') do while words(deps)>0 parse var deps t1 deps if left(t1,1)='(' then parse var deps .')' deps else NEEDED.t1=1 deps=strip(deps) end end when parm='DIRECTORY' then SRCPATH=WERT when parm='FILES' then SUBLINE='MD5' when parm='CHECKSUMS-SHA256' then SUBLINE='SHA256' otherwise nop end end /* 2. process binary Packages */ parse value "0 0" with READY RLSTART do while \READY READY=1 if RL=RLSTART then do while lines("/tmp/REPO.asc")>0 parse value linein("/tmp/REPO.asc") with prefix':'parm': 'wert PARM=translate(PARM); wert=strip(wert) if parm='PACKAGE' then RL=RL+1 /* first parameter of package */ REPO.RL.parm=WERT if parm='SHA256' then do /* last parameter of package */ parm='URL' N=lastpos('/',prefix) repname=substr(prefix,n+1) N=pos('_dists_',repname) REPO.RL.parm=translate(left(repname,N),'/','_') parm='DEPENDS' deps=translate(REPO.RL.parm,' ',',|') REPO.RL.parm="" do while words(deps)>0 parse var deps t1 deps if left(t1,1)='(' then parse var deps .')' deps else do parm1='PACKAGE'; parm2=REPO.RL.parm1 if NEEDED.parm2 then NEEDED.t1=1 REPO.RL.parm=REPO.RL.parm||" "||t1 end deps=strip(deps) end call DOWNLOAD_CHECK RL.0=RL end end else do RL=RLSTART+1 to RL.0 parm1='PACKAGE'; parm2=REPO.RL.parm1; parm3='DEPENDS' if NEEDED.parm2 then do k=1 to words(REPO.RL.parm3) parm4=word(REPO.RL.parm3,k) NEEDED.parm4=1 end call DOWNLOAD_CHECK end end DOWNLOAD.0=DOWNLOAD address system "cat > /tmp/urispkgs.asc" with input stem DOWNLOAD. end /******************************************************************************/ /* download missing packages */ /******************************************************************************/ if length(stream(ARCHIVES||".tbz",'C',"QUERY EXISTS"))=0 then do address system "mkdir -p "||ARCHIVES /* get up-to-date archives */ cid=CurlInit() if length(cid)=0 then MSG_EXIT(12,"Error CurlInit()") do while lines('/tmp/urispkgs.asc')>0 /* tmp=CurlSetopt(cid,'PROGRESSFUNCTION','PROGRESS') */ parse value linein('/tmp/urispkgs.asc') with url file size" MD5sum:", md5sum" SHA256:"sha256 . url=strip(translate(url,' ',"'")) tmp=charout('stdout','Download '||file||' ... ') /* Regarding to apt-get you can use %3a to mark the epoche or nothing, */ /* but in Packages-files : is used. */ file=changestr(':',file,'%3a') file=ARCHIVES||"/"||file tmp=CurlSetopt(cid,'OUTFILE',file) if CurlSetopt(cid,'URL',url)>0 then MSG_EXIT(12,"Error CurlSetopt(URL)") if CurlPerform(cid)>0 then MSG_EXIT(12,"Error CurlPerform()") RESPONSE_CODE=CurlGetInfo(cid,"RESPONSE_CODE") select when RESPONSE_CODE='200' then do say 'OK' if md5sum<>MD5(file) then MSG_EXIT(12,file||" wrong MD5.") if sha256<>SHA256(file) then MSG_EXIT(12,file||" wrong SHA256.") end when RESPONSE_CODE='404' then do say 'MISSING' address system "rm "||file end otherwise MSG_EXIT(RESPONSE_CODE,"curl "||url) end end tmp=charout('stdout',"Archive of packages ... ") address system "cd "||ARCHIVES||"; tar -cjf "||ARCHIVES||".tbz *" if RC=0 then say 'OK' else MSG_EXIT(12,"tar "||ARCHIVES||"/*") end TMP=MSG_EXIT(0,"End") exit 0 MD5: procedure address system "md5sum -b "||arg(1) with output stem line. return word(line.1,1) SHA256: procedure address system "sha256sum -b "||arg(1) with output stem line. return word(line.1,1) DOWNLOAD_CHECK: PKG=REPO.RL.PACKAGE ARCH=REPO.RL.ARCHITECTURE SHA=REPO.RL.SHA256 if ((NEEDED.PKG | SOURCE_NEEDED.PKG) & \CACHED.PKG.ARCH.SHA) & , \REQUESTED.PKG.ARCH.SHA then do /* sample of --print-uris output apt-get: */ /*'http://archive.ubuntu.com/ubuntu/pool/main/s/snapd/ubuntu-core-launcher_*/ /*2.22.3_amd64.deb' ubuntu-core-launcher_2.22.3_amd64.deb 1578 MD5Sum:4dcad*/ /*0610d9506a3b5086f2752a2135e */ DOWNLOAD=DOWNLOAD+1 if wordpos(ARCH,'all amd64 i386')>0 then do DOWNLOAD.DOWNLOAD="'http://"||REPO.RL.URL||REPO.RL.FILENAME||"' "||PKG||, "_"||REPO.RL.VERSION||"_"||ARCH||".deb "||REPO.RL.SIZE||" MD5sum:"||, REPO.RL.MD5SUM||" SHA256:"||SHA end else do /* Source Package ? */ DOWNLOAD.DOWNLOAD="'http://"||REPO.RL.URL||REPO.RL.FILENAME||"' "||PKG||, "_"||REPO.RL.VERSION||REPO.RL.TAIL||" "||REPO.RL.SIZE||" MD5sum:"||, REPO.RL.MD5SUM||" SHA256:"||SHA end REQUESTED.PKG.ARCH.SHA=1 READY=0 end return 0 fn2suffix: procedure fn=arg(1) parse value reverse(fn) with .'.rat.'token'.'. token=reverse(token) select when right(fn,4)='.dsc' then RETCODE='dsc' when wordpos(token,'debian orig')>0 then RETCODE=token otherwise RETCODE='unknown' end return RETCODE PROGRESS: procedure expose LASTTOTAL LASTNOW DLFILE LASTFILE DLTOTAL=arg(1) DLNOW=arg(2) if (LASTFILE<>DLFILE | LASTTOTAL<>DLTOTAL | LASTNOW<>DLNOW ) then , say DLNOW"/"DLTOTAL" of "||DLFILE return 0 MSG_EXIT: procedure expose cid XRC=arg(1) ErrText=arg(2) if length(cid)>0 then TMP=CurlCleanup(cid) if length(ERRTEXT)>0 then TMP=lineout('stderr',"RC="||arg(1)||" - "||ErrText) exit XRC /* shamd5 #!/bin/bash while IFS= read -rd $'\0' file do MD5=`md5sum -b "${file}" | cut -d" " -f1` SHA=`sha256sum -b "${file}" | cut -d" " -f1` echo "SHA256:${SHA} MD5:${MD5} ${file}" done < <( find "${1}" -type f -print0 ) */ /* urisupd 'http://archive.ubuntu.com/ubuntu/dists/xenial/InRelease' archive.ubuntu.com_ubuntu_dists_xenial_InRelease 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/main/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial_main_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/multiverse/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial_multiverse_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/restricted/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial_restricted_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial/universe/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial_universe_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/InRelease' archive.ubuntu.com_ubuntu_dists_xenial-updates_InRelease 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_main_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/multiverse/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_multiverse_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/restricted/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_restricted_source_Sources 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/binary-all/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_binary-all_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/binary-amd64/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_binary-amd64_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/binary-i386/Packages.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_binary-i386_Packages 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/i18n/Translation-de_DE.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_i18n_Translation-de%5fDE 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/i18n/Translation-de.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_i18n_Translation-de 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/i18n/Translation-en.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_i18n_Translation-en 0 'http://archive.ubuntu.com/ubuntu/dists/xenial-updates/universe/source/Sources.xz' archive.ubuntu.com_ubuntu_dists_xenial-updates_universe_source_Sources 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/InRelease' security.ubuntu.com_ubuntu_dists_xenial-security_InRelease 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_binary-all_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_binary-amd64_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/binary-i386/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_binary-i386_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/i18n/Translation-de_DE.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_i18n_Translation-de%5fDE 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/i18n/Translation-de.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_i18n_Translation-de 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_i18n_Translation-en 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/main/source/Sources.xz' security.ubuntu.com_ubuntu_dists_xenial-security_main_source_Sources 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_binary-all_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_binary-amd64_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/binary-i386/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_binary-i386_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/i18n/Translation-de_DE.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_i18n_Translation-de%5fDE 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/i18n/Translation-de.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_i18n_Translation-de 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_i18n_Translation-en 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/multiverse/source/Sources.xz' security.ubuntu.com_ubuntu_dists_xenial-security_multiverse_source_Sources 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_binary-all_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_binary-amd64_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/binary-i386/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_binary-i386_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/i18n/Translation-de_DE.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_i18n_Translation-de%5fDE 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/i18n/Translation-de.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_i18n_Translation-de 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_i18n_Translation-en 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/restricted/source/Sources.xz' security.ubuntu.com_ubuntu_dists_xenial-security_restricted_source_Sources 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/binary-all/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_binary-all_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/binary-amd64/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_binary-amd64_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/binary-i386/Packages.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_binary-i386_Packages 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/i18n/Translation-de_DE.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_i18n_Translation-de%5fDE 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/i18n/Translation-de.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_i18n_Translation-de 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/i18n/Translation-en.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_i18n_Translation-en 0 'http://security.ubuntu.com/ubuntu/dists/xenial-security/universe/source/Sources.xz' security.ubuntu.com_ubuntu_dists_xenial-security_universe_source_Sources 0 */