12. Juli 2024

Apt og Ubuntus metapackages

Nogle gange skal man grave lidt dybt for at finde guld. Selv som Ubuntu-bruger gennem mange år finder jeg nye ting.

I dag opdagede jeg, at tilstedeværelsen af Ubuntus metapackages - altså en pakke, der installerer andre pakker - er sat i system.

Det er ufatteligt sjældent, at guiderne rundt omkring på nettet nævner eksistensen af metapackages specifikt, så jeg ville lige skrive om det, hvis du ikke har set det nævnt før.

Vil du f.eks installere den nuværende udgave af XFCE skrivebordsmiljøet behøver du ikke angive samtlige “underpakker” selv. Metapakken vil installere alle de krævede tillægspakker, du behøver, for at have et kørende system.

Har du allerede nogle af pakkerne, skipper apt den del af overførslen:

sudo apt install xfce4

vil installere XFCE + afledte pakker.

Vil du gerne lige se, hvad en metapakke indeholder, kan du tjekke indholdet af pakker med:

apt show xfce4

Kigger du derefter under “Depends” i det output apt spytter ud på skærmen, ser du, hvad metapakken vil installere:

libxfce4ui-utils (>= 4.16), thunar (>= 4.16), xfce4-appfinder (>= 4.16.0), xfce4-panel (>= 4.16.0), xfce4-pulseaudio-plugin, xfce4-session (>= 4.16.0), xfce4-settings (>= 4.16.0), xfconf (>= 4.16.0), xfdesktop4 (>= 4.16.0), xfwm4 (>= 4.16.0)

Metapakken vil her sammen med XFCE installere filhåndteringsprogrammet Thunar. Det er forskelligt, hvordan metapakkerne er bygget op. Indholdet afhænger helt af, hvad personen, der vedligeholder metapakken har valgt, der skal inkluderes.

I Ubuntu-wiki’en nedenunder kan du se, hvilke metapackages, der eksisterer, og hvordan du selv laver dine egne.

Links

Ubuntus wikiside om metapackages

11. Juli 2024

Installation via scripts i terminalen

På Linux er det ret normalt at installere programmer via terminalen.
F.eks kan man hente Zed-editoren til Linux og MacOS sådan:

curl https://zed.dev/install.sh | sh

Curl-kommandoen henter et installationsscript og sender outputtet til shellfortolkeren. Det er der som regel ingen problemer i. For 99,99% er ordentlige mennesker, som laver programmer og scripts, der gør livet nemmere for alle.

Men så er der lige indimellem, hvor man finder en sti til en scriptstump på et forum. Der skal man lige være lidt mere på vagt. Vedkommende kunne - i princippet - køre nogle trælse ting på din maskine (begrænset til din $HOME-folder, medmindre du har givet sudo-adgang undervejs).

For alle tilfældes skyld vil jeg istedet anbefale dig at pipe outputtet til less først, og så skimme scriptet igennem, inden du kører installationen. Det tager måske et par sekunder/minutter ekstra, men du kan sove bedre om natten ;)

Sådan her:

curl https://zed.dev/install.sh | less

(afslut med q)

Zed-editoren er i øvrigt ude nu til Linux, MacOS og Windows.

10. Juli 2024

Affinity Photo, Designer og Publisher på Linux

Serif, som står bag de fede programmer Affinity Photo, Designer og Publisher kører her sommeren 2024 en temmelig vild kampagne med nedsatte priser, oven i hatten får man 6 mdr. til at evaluere softwaren, når man starter en prøveversion. En af de fede detaljer ved Affinity er - udover at være en temmelig potent alternativ til Adobe - er at softwarepakken ikke kræver abonnement, som det er tilfældet med Adobes programmer. Lidt vildt, at det er en feature, men sådan er det i en verden, der er lullet godt og grundigt ind i en serviceøkonomi, der ser abonnementer som den hellige gral. Jeg forstår godt, hvorfor virksomhederne elsker abonnementer og cloud-løsninger, og det er bestemt derfor, jeg har et ambivalent forhold til det.

Din adgang til software og dine data skal ikke afhænge af din betalingsevne. Derfor er frit og åben software en nødvendig modvægt.

Jeg er vild med Affinity funktionsmæssigt, men også fordi de tilbyder et produkt, hvor prisen til at overskue. I et anfald af kækhed skrev jeg så til Serifs support, om der var planer om en Linux-version. Jeg fik et forventet nej-svar, desværre og den venlige support pegede mig hen med denne ophedede diskussion på Serifs forum:

https://forum.affini … s#comment-2094%C2%A0

Diskussionen er den samme, som har kørt i årtier på forskellige andre fora. Læser man mellem linierne på Serifs nej-svar, så er Linux på desktopsiden ikke en rentabel forretning. Det vil jeg give dem ret i, men desktop-delen af Linux bliver heller ikke rentabel for virksomheder, før de tør satse på, at der findes et marked. Og der er for få virksomheder, der tør satse på nicherne.

Nuvel, de er oppe imod gratis - og mange menneskers behov kan måske dækkes af f.eks GIMP, Scribus, Krita og Inkscape (jeg kalder dem samlet GSKI herefter). Men jeg tror på, at folk gerne vil betale for software med et fornuftigt prisskilt. Vi kan hurtigt blive enige om, at det bedste og mest ideelle er, at have adgang til kildekoden via en ikke-restriktiv licens, men Linux mangler et tilbud til dem, der ønsker “en samlet pakke” med professionel support bag. Så må man acceptere at proprietær software eksisterer.

Personligt har jeg ikke noget imod, at Linux-distributioner tilbyder proprietær software i deres indbyggede softwarecenters, så længe der også findes åbne alternativer. Det handler om frit valg, og så mener jeg at folk bliver mest tilfredse med Linux-platformen som helhed, hvis de kan sammensætte deres softwareudvalg, som de ønsker, uden at de nødvendigvis behøver havne i en ideologisk kamp om, hvordan verden ideelt set burde se ud. Den kamp kan i sig selv være ensrettet og begrænsende, særligt hvis vi begynder at pådutte dem idealer, som de ikke forstår eller ønsker at være en del af. De fleste forstår først værdien af åben kode og åbne standarder, når de møder et problem i deres hverdag (manglende understøttelse af filformater, ringe samspil mellem programmer mv.).

If you build it, they will come

Problemet med Linux-desktop’ens lave adoptionsrate er ret meget samme diskussion som hønen og ægget. Softwarefirmaerne bag proprietær software vil ikke understøtte Linux som platform, hvis der ingen brugere er. Og brugerne kommer ikke, hvis ikke der er et bredt/bredere softwareudvalg. Så det bør vi prøve at skabe. Valve gjorde det med SteamDeck’en - og de gjorde det med Steam før det. Der var ikke mange, der troede på digital distribution af spil, indtil Steam for alvor fik vind i sejlene.

Det er et glimrende eksempel på, at man nogle gange skal man gøre ting af idealistiske grunde, hvis man vil ændre fremtiden - du kan ikke altid forvente et positivt afkast med det samme, og du kan bestemt heller ikke regne med, at andre forstår dine idéer i starten. Selv de erfarne “løver” i “Løvens Hule” på DR1 tager fejl indimellem. Der er intet facit.

Diversitet i softwareudvalget

Det er fint at pege folk i retning af GSKI. Jeg har stor respekt for det arbejde, projekterne laver, uden dem ville jeg ikke ane, at der var åbne alternativer til f.eks Adobe. Men vi må som FOSS-fællesskab også imødekomme, at nogle har andre behov, som GSKI ikke dækker af forskellige årsager. Der skal derfor være alternativer - og det er der også, men de er ikke altid på omgangshøjde funktionalitetsmæssigt og derfor nævnes de sjældent fremfor GSKI.

Jeg har ikke prøvet at smide Affinity igennem WINE/Proton/Crossover. Jeg tror ærlig talt heller ikke, at folk gider fedte med det. Det skal køre første gang, uden sære bugs og besværligheder, ellers hopper folk tilbage på Windows/MacOS.

En tanke, der vedvarende rumsterer i mit baghoved er, at forke f.eks Krita og se om det kan lade sig gøre, over år, at bygge noget, der minder om Affinity PhotoDesigner/Publisher og Adobe Photoshop/InDesign/Illustrator.

Serifs Affinity bruger “Persona”-idéen til at skifte mellem forskellige “modes”, og det synes jeg er godt tænkt, fordi det fjerner de visuelle elementer og menuer, der ikke er brug for, når du f.eks arbejder med eksport af dit projekt. De vender tilbage, når du så igen vælger “Pixel”-persona indstillingen.

Krita i sig selv er robust, har den mest moderne, velpolerede GUI og bygger på mange års erfaring. Måske kan man bruge det som base, og implementere nogle af de manglende features ovenpå? Jeg er ikke sikker på, at Krita-projektet ønsker at være en alt-omsluttende grafisk pakke, så det nemmeste vil være at forke projektet. så vi slipper for at skulle genopfinde de mest grundlæggende funktioner. Jeg har kigget igennem Kritas kode, og selv med 20+ år på bagen, så er projektet forbavsende velstruktureret. Koden er GPLv3-licenseret, og benytter QT-frameworket, så licensen på afledt kode skal være kompatibel.

Sur mand?

Dette er skrevet efter, jeg skrev de ovenstående afsnit: Jeg har læst mit eget blogindlæg her og moret mig lidt over strukturen og tonen. Starter med en nyhed om Affinity, og ender i en “rant”.

Men jeg er ikke sur - bare ærgerlig over at se, at Linux igen bliver forbigået. Nu har vi ventet på en samlet, professionel grafisk pakke på Linux i årevis. Jeg satte lidt min lid til Serif, som udfordren til mægtige Adobe. Fremtidens udfald kan man ikke gisne om, og Serif er som bekendt blevet opkøbt af Canva. Men det lader ikke til, i hvert fald for nu, at vi får de forhold, vi ønsker. Skal vi ændre fremtiden, så må vi derfor selv trække i arbejdstøjet…

Så det prøver vi: Skriv til mig, hvis du har idéer til, hvordan vi kommer videre: simon (at) simonjustesen (dot) dk. Hvis noget materialiserer sig til et konkret FOSS-projekt, så laver jeg naturligvis en dedikeret projektside, når vi har en prototype. Det er let nok at få idéer - det er noget andet at udføre dem. Jeg brugte en del af aftenen på at se RoboNuggies gennemgang af døde BSD-operativsystemer, og det er et godt eksempel på, at idéer opstår ofte i en slags øjeblikseufori, det kræver dedikation at fastholde interessen på et projekt i årevis. Men, hvis man ikke afprøver nogle ting, så finder man heller ikke ud af, om idéen (og euforien) holder ved.

8. Juli 2024

Grep - bliv en søgehaj på få minutter

Hvis du lever i et terminalvindue, så er det godt at kende grep-kommandoen. Grep kan søge i filer og indhold, der outputtes på skærmen.

Bruger du grep uden parametre, så sker der intet, for den forventer at modtage input et sted fra. Men grep kan bruges til at søge i filer. Skriver du f.eks

grep "hest" mintekst.txt

så vil den søge i… ja, nemlig mintekst.txt efter ordet hest. Føjer du en ekstra parameter på, f.eks en ny tekstfil, vil den søge i begge angivede filer. Du kan også anvende wildcards såsom *.txt, så vil kommandoen søge i samlige txt-filer i den aktive mappe.

grep "hest" *.txt

grep er imidlertid ikke særlig hjælpsom, hvis du søger i en større tekst, for så meddeler den dig egentlig bare, at teksten findes. Men du kan tilføje en parameter, der hedder -n, så vil grep også outputte linjenummeret som den fundne tekst står på.

grep -n "hest" *.txt

Føjer du -r på, så søger grep igennem alle filer, også rekursivt i undermapper, og så bliver det noget nemmere at lede efter f.eks bestemte linjer kode i store projekter (der findes andre hurtigere værktøjer såsom ripgrep).

grep -rn "hest"

Du kan også få grep til fremhæve bestemte linier fra andre kommandoer, hvis du “sender” indholdet til grep.

ps aux | grep -i "firefox"

vil vise dig om Firefox er en aktiv, kørende process, -i betyder at grep søger gennem alt indhold uanset om der er forskel på store eller små bogstaver.

Mere hjælp

Har du brug for mere hjælp, kan du altid skrive

man grep

i terminalen

DRM på Linux og Android (1. del)

Okay, dette er ikke en “sådan gør du”-tutorial, for DRM er ikke et område, jeg har rodet ret meget ved, og der er ikke noget entydigt svar på, hvordan du får DRM-understøttelse til at virke for netop din type hardware. Så du skal betragte dette opslag som et “nørden udforsker” i bedste Indiana Jones-stil.

Jeg ser film på mit TV, via Googles proprietære Chromecast, så jeg har ikke rigtig bakset med DRM… før nu. Men det slår mig, at mange Linux og Android-distributioner har forskellige tilgange til afvikling af DRM-beskyttet materiale. Nogle har fuldstændig support, andre basal eller slet ingen (og som det skal vise sig, så spiller hardwaren en stor rolle).

Android-kernen er principelt set en heftigt modificeret Linux-kernel - som Google vistnok har lovet at bringe tættere på mainline Linux-kernel’en med tiden. I dette opslags perspektiv giver det dog bedst mening at omtale de to forskelligt, da de har hver deres økosystem.

2025 - the year of the Linux desktop?

I og med, at jeg forventer, at en del mennesker vil afprøve Linux, når Microsoft stopper Windows 10s support i 2025, så må jeg hellere prøve at dykke ned i, hvordan man får DRM-understøttelse til at spille på Linux, Android og andre platforme, så vi måske kan redde folk fra at smide deres gamle fungerende computer på lossepladsen.

Microsoft dikterer naturligvis ikke noget direkte, men når de kunstigt øger hardwarekravene ift. den nyere Windows 11 og med tiden stopper sikkerhedsopdateringerne til Windows 10, så skaber de et kunstigt behov, som tvinger folk til at opgradere. Her er det jo så, jeg vil gentage, at jeg synes folk skal lege med Linux og overveje, om deres behov kan dækkes af dette frie og åbne vidunder.

Det er dog ikke uden forhindringer, og her kommer en af dem:

DRM og streaming

Streamingtjenester såsom Netflix og Amazon Prime bruger Google Widevine DRM til at beskytte sit indhold mod kopiering. Det stiller nogle krav til ens udstyr. Widevine har forskellige lag af beskyttelse. L1, L2 og L3. L1 er den mest restriktive, den der gør, at du kan se FullHD og 4K-indhold, som kræver “TrustZone”-support i processoreren på dit udstyr. Det har det meste moderne hardware, det er på softwaresiden, det halter.

Android Authority skriver:

To meet security Level 1, all content processing, cryptography, and control must be performed within the Trusted Execution Environment (TEE) of the device’s processor. This is to prevent external tampering and copying of the media file. All ARM Cortex-A processors implement TrustZone technology, creating a hardware separation that allows a trusted OS (such as Android) to create a TEE for DRM, and other secure applications.

https://www.androida … ne-explained-821935/

Kan du slet ikke se DRM-beskyttet materiale i HD og UltraHD på din Linux- eller Android-box, så er det fordi din distribution mangler Widevine L1-certificering.

Kan du kun se indhold i SD-kvalitet, så kører din distribution Widevine niveau L3, og du må så se medieindhold, der ligner LEGO-klodsgrafikken fra Minecraft. Det fungerer måske på mobiltelefoner, men er ikke så holdbart til mediestreaming på dit TV.

Hvordan ser det ud på Linux?

Google Chrome, ingen problemer.
Understøttelsen burde være bagt ind i browseren.
Virker det alligevel ikke, så prøv at se om libwidevine mangler.

Folkene bag Brave-browseren anbefaler, man finder Widevine-filerne i en understøttet distro, som f.eks RaspberryPi OS
https://support.brav … RM-protected-content

Ifølge Mozilla, så understøtter Firefox Widevine på 64-bits Linux-udgaver
https://support.mozi … et-indhold-i-firefox,
hvis du har problemer med afspilningen, så se efter om der er sat flueben i “Afspil DRM-beskyttet indhold” inde i indstillingerne. Virker det stadig ikke, kan det ske, at du skal hente “libwidevine” fra din distros pakkerepository. Det kan hedde noget forskelligt, så helgardér ved at søge på “widevine”.

Projektet “Ungoogled Chromium” kaster håndklædet i ringen ift. DRM og anbefaler, at man henter Google Chrome:
https://ungoogled-so … ed-chromium-wiki/faq

Raspberry Pi OS og Chromium ser ud til at være understøttet (tester i 2. del.) - så burde det også virke med Chromium på andre platforme med lidt tweaks af kildekoden. Chromiums kildekode er dog en ordentlig motherf… på adskillige gigabyte, så jeg hopper elegant over den del, selvom det kribler i fingrene for at prøve.
https://forums.raspb … ewtopic.php?t=347736

Det er dog lidt bekymrende at se, at man skal “himstregimse” en fungerende distribution sammen, og jeg tænker at mange ville være irriterede over at skulle igennem disse trin.

Hvad med Android?

På Android er det lidt mere mudret. Googles Android og ARM-processorerne sidder hårdt på markedet for diverse dedikeret streaminghardware, så har din hardware en 64-bit ARM CPU (armv8/aarch64), så er du dækket ind. Alle moderne Qualcomm og MediaTek-CPU’er benytter ARM-kerner, og de burde derfor også virke.

Til syvende og sidst handler det derfor om, hvorvidt Widevine er aktiveret i Android-distributionen, du bruger. Og som om TrustZone-platformen ikke er sofistikeret nok i forvejen, så spiller status på dit udstyrs bootloader også en rolle.

På Reddit ser det ud som om, at Google-certificerede Android-udgaver virker “ud af boksen”, mens der er problemer med forskellige Android-distro forks a’ la LineageOS: Reddit-tråd: Does Netflix HD work in LineageOS. En bruger “driverdis” nævner:

L1 only works on stock roms that went through Google’s Widevine L1 certification process. On some phones (looking at you OnePlus) this drops to L3 when the boot loader is unlocked.

Det ser dermed ud til, at man må “sluge nogle kameler”, når man kører en åben ikke-kommerciel udgave af et operativsystem. Men hvor vidt rækker problemet egentlig? Det vil jeg prøve at kigge lidt på i næste del, for jeg har tilfældigvis en lille Raspberry Pi, der laver ingenting, og jeg ved, at den er et yndet omkostningseffektivt mediecenter for mange.

Jeg graver videre :-)