Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
Programming stuff. And stuff.
# Pull base image.
FROM ubuntu
# Setup user with the same UID/GID as on your host system to make X session work over socket
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
# Install Chrome
RUN \
apt-get install -y wget && \
wget -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
apt-get update && \
apt-get install -y google-chrome-stable
# Define working directory.
WORKDIR /home/developer
# Define default command.
CMD ["bash"]
Na vytvoření image pustíme: docker build chrome-browser. Až se všechno dotahá a nainstaluje, musíme zjistit, jaký socket používá pulseaudio, asi nejlépe přes lsof -p $(pidof pulseaudio) | grep 'unix.*/native'. Nevím, zda existuje lepší způsob. Výsledek bude vypadat následovně:
% lsof -p $(pidof pulseaudio) | grep /native
pulseaudi 28453 user 9u unix 0xffff8800b3edf740 0t0 716743 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 31u unix 0xffff88022fca2740 0t0 717186 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 33u unix 0xffff88017181dc00 0t0 716749 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
pulseaudi 28453 user 34u unix 0xffff8802335cc840 0t0 797769 /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native
Pojmenujeme si image jako "chrome-browser". Nejprve spustíme výpis kontejnerů přes docker images a tagneme ho jako "chrome-browser".
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
none none 3a7eba31e1d4 3 minutes ago 536.5 MB
# docker tag 3a7eba31e1d4 chrome-browser:latest
Chrome browser uvnitř dockeru spustíme následovním skriptem, který se postará o komunikaci X serveru a pulseaudio přes unix socket:
#!/bin/bash
docker run -ti --rm \
-u developer \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e PULSE_SERVER=unix:/home/developer/pulse \
-v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
-w /home/developer \
chrome-browser \
google-chrome
Poznámka: pokud změníte systém uvnitř docker image, musíte ho commitnout přes docker commit z host systému. Až bude všechno hotové, můžete si v docker kontejneru odstranit /etc/sudoers.d/developer, který umožňuje uvnitř kontejneru sudo na "lokálního roota" bez hesla.
Funguje celá funkcionalita Chrome browseru, U2F má mouchy - pod rootem funguje bez problémů, pod obyčejným uživatelským účtem má pár omezení. Chtělo to docela dlouhé debugování přes strace a další nástroje, ale funguje. Token musí být vložen do USB před spuštením kontejneru a musíte znát jeho hidraw device, např. /dev/hidraw4 (jinak docker vytvoří na host systému adresář stejného jména). Udev pravidla umí symlinky, ale symlink nestačí, chtělo by to hardlink. Takže skript bude vypadat (pozor na to, že --privileged dává přístup snad ke všem zařízením host systému, jenže bez něj k hidraw nepřistoupíte jako běžný user v dockeru):
#!/bin/bash
docker run -ti --rm \
-u developer \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e PULSE_SERVER=unix:/home/developer/pulse \
-v /home/user/.pulse/0123456789abcdef0123456789abcdef-runtime/native:/home/developer/pulse \
-w /home/developer \
-v /dev/bus/usb:/dev/bus/usb \
-v /sys/bus/usb/:/sys/bus/usb/ \
-v /sys/devices/:/sys/devices/ \
-v /dev/hidraw4:/dev/hidraw4 \
--privileged \
chrome-browser \
google-chrome
Mimochodem, alsa mi nefungovala křížem přes host/kontejner hranici s libovolnou kombinací device a cgroup flagů, v strace se vždy výsledek otevření zvukové karty byl buď odmítnut přístup (EPERM) nebo dočasně nepřístupné (EAGAIN). Myslím, že je to stejně s tím pulseaudiem lepší.
Tiskni
Sdílej:
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer
-v /dev/bus/usb:/dev/bus/usb \
-v /sys/bus/usb/:/sys/bus/usb/ \
-v /sys/devices:/sys/devices/ \
--privileged \