Van nekem egy repo-m a házi szerveren, és ott tartok néhány csomagot. Azért, mert könnyebb több gépen telepíteni, és adott esetben frissíteni a csomagkezelővel, mint minden gépet körbejárni dpkg -i parancsokkal.
Van 3 program, amit viszont jó néha frissíteni is:
Zoom
Discord
4kvideodownloader
Na most volt egy kis időm, és eljátszottam a gondolattal, hogy mi lenne, ha nem a kölök szólna, hogy megint "lejárt" a Discord?
Tehát többé-kevésbé automatizálni szeretném pl. a Discord frissítését.
Normááális felhasználó letölti a honlapjukról a .deb csomagot, és gdebi-vel, vagy dpkg-val telepíti. De én abnormális vagyok :))
Kinéztem a letöltési linkjét:
https://discord.com/api/download?platform=linux&format=deb
És nagy örömömre a wget is letölti
wget -O discord.deb https://discord.com/api/download?platform=linux&format=deb
szépen lecsurgatja az aktuális csomagot, és elhelyezi discord.deb néven.
Juhhé.
Zoom esetén hasonlóan bonyolult a megoldás:
wget -O zoom_amd64.deb https://zoom.us/client/latest/zoom_amd64.deb
Itt még látszik is, hogy "latest" :)))
Juhhéj!
4kdownloader legózást igényelt, mert egy kicsit cifrább.
https://www.4kdownload.com/downloads
helyen van egy rakás letöltő link, innen kell kiszedni az aktuálist.
A curl leszedi a lapot, ha akarom:
curl https://www.4kdownload.com/downloads
...és ott olvashatom a rengeteg link között, hogy van Ubuntu offline telepítő is ha akarom, naná, hogy az kéne.
Elkezdhetem ezt szűrögetni..
curl https://www.4kdownload.com/downloads | grep /app/4kvideo | grep amd64.deb
és már csak három van. Nekem az első is elég, sőt, pont az kell.
curl https://www.4kdownload.com/downloads | grep /app/4kvideo | grep -m 1 amd64.deb
Alakul. Jó lenne, ha a sallangok nélkül, csak a link lenne.
(Sajnos a fórummotor viccelődik a kacsacsőrökkel, körbe kellett lőjem őket szóközökkel, hogy megjelenjenek.)
curl https://www.4kdownload.com/downloads | grep /app/4kvideo | grep -m 1 amd64.deb | grep -Eoi -m 1 ' <a [^>]+>'
Így már csak a link van, ami az úgy kezdődik, hogy "< a >", de elég lenne a href-től- sőt, igazából az idézőjelek közti rész...
Végül ez lett:
curl https://www.4kdownload.com/downloads | grep /app/4kvideo | grep amd64.deb | grep -Eoi -m 1 '<a [^>]+>' |grep -Eo 'href="[^\"]+"'|sed -r 's/^href="//' | sed 's/.$//'
Na, ez így már klassz.
Betettem ezeket egy szkriptbe, és amelyik letöltés sikeres, annak az eredménye megy a repóba:
#!/bin/sh
dl4k=$(curl https://www.4kdownload.com/downloads | grep /app/4kvideo | grep amd64.deb | grep -Eoi -m 1 '<a [^>]+>' |grep -Eo 'href="[^\"]+"'|sed -r 's/^href="//' | sed 's/.$//')
echo $dl4k
wget -O 4kvideodownloader.deb $dl4k
if [ $? -eq 0 ]; then
sleep 3
mv 4kvideodownloader.deb /srv/www/wwwroot/repo/4kvideodownloader.deb
fi
wget -O zoom_amd64.deb https://zoom.us/client/latest/zoom_amd64.deb
if [ $? -eq 0 ]; then
sleep 3
mv zoom_amd64.deb /srv/www/wwwroot/repo/zoom_amd64.deb
fi
wget -O discord.deb https://discord.com/api/download?platform=linux&format=deb
if [ $? -eq 0 ]; then
sleep 3
mv discord.deb /srv/www/wwwroot/repo/discord.deb
fi
Persze a repó frissítése ezzel nincs kész, mert a Release és Packages fájloknak passzolniuk kell.
Ez már megvolt korábban, a csomagokat átnyálazó szkriptet kiegészítettem az előző förmedvénnyel, és így már teljesen működőképes (-nek látszik)
#!/bin/sh
echo Backing up current repository content
rsync -av --delete /srv/www/wwwroot/repo /home/gazda/repo
#az aktuális állapotot elmentem, ha esetleg valami balul ütne ki...
echo Download some packages
/opt/repoimport.sh
#letöltetem a vélhetőleg frissült csomagokat
echo Rebuilding APT repository:
cd /srv/www/wwwroot/repo
apt-ftparchive packages . > Packages
bzip2 -kf Packages
apt-ftparchive release . > Release
gpg --yes -abs -u KovacsL -o Release.gpg Release
És itt a vége.
Ezt most még beteszem, hogy minden nap automatikusan lefusson reggel 5-kor, így a házi repozitorim max. 1 nap késéssel követi, ha frissül valamelyik kérdéses csomag.
Így most hátradűlök, és várom, hogy kapok-e automatikus update-et valamelyikből a közeli jövőben?