Cuidando do arquivo "world" no Gentoo
Dica publicada em Linux / Configuração
Cuidando do arquivo "world" no Gentoo
O @world do Portage inclui os programas selecionados (que foram declarados pelo usuário). A lista desses programas fica em: /var/lib/portage/world
Os programas instalados no sistema são uma mescla do que há no arquivo "world", com o que está definido no "make.conf" e no perfil (eselect profile) escolhido. Quando o usuário executa:
# emerge -auDN @world
Os pacotes do arquivo "world" serão atualizados.
O comando "emaint" pode ser usado para ver se existe algum problema no arquivo "world":
emaint --check world
Se algum nome estiver errado, a resposta pode ser:
'sys-boot/rub' is not installed
Obs.: deveria ser "sys-boot/grub".
Para evitar problemas na resolução de dependências ao atualizar o sistema, é uma boa prática reduzir ao mínimo o número de dependências declaradas no "world".
Existe um "script" na wiki do Gentoo que ajuda a fazer isso. Que é de fato a fonte para esta dica:
Aqui está o mesmo "script", mas com pequenas modificações que o tornam mais fiel ao POSIX:
Salve o "script" em um arquivo chamado "checkworldfile". Torne-o executável com:
chmod +x checkworldfile
Execute-o com:
./checkworldfile 2> /dev/null
Exemplo de saída:
Para isso execute:
# emerge --ask --deselect categoria/programa1 categoria/programa2 categoria/programaN
Obs.: é necessário avaliar o que realmente vai sair do "world". Não aceite cegamente o resultado do "script". O que você julgar que precisa estar declarado, não remova.
Se remover um programa do "world" por engano, você pode inserir o programa novamente com:
# emerge --noreplace programa
Fonte: User:Feng/World file (Portage) - Gentoo Wiki
Os programas instalados no sistema são uma mescla do que há no arquivo "world", com o que está definido no "make.conf" e no perfil (eselect profile) escolhido. Quando o usuário executa:
# emerge -auDN @world
Os pacotes do arquivo "world" serão atualizados.
O comando "emaint" pode ser usado para ver se existe algum problema no arquivo "world":
emaint --check world
Se algum nome estiver errado, a resposta pode ser:
'sys-boot/rub' is not installed
Obs.: deveria ser "sys-boot/grub".
Para evitar problemas na resolução de dependências ao atualizar o sistema, é uma boa prática reduzir ao mínimo o número de dependências declaradas no "world".
Existe um "script" na wiki do Gentoo que ajuda a fazer isso. Que é de fato a fonte para esta dica:
Aqui está o mesmo "script", mas com pequenas modificações que o tornam mais fiel ao POSIX:
#!/bin/bash
while read -r i ; do \
if [ -n "$(qdepends -Q "$i")" ]; then \
echo '' ; echo 'checking '"$i" ;
if [ -n "$(emerge -p --quiet --depclean "$i")" ]; then \
echo "$i"' needs to stay in @world'
else
echo "$i"' can be deselected'
echo "$i" >> /tmp/deselect
fi
fi
done < /var/lib/portage/world
while read -r i ; do \
if [ -n "$(qdepends -Q "$i")" ]; then \
echo '' ; echo 'checking '"$i" ;
if [ -n "$(emerge -p --quiet --depclean "$i")" ]; then \
echo "$i"' needs to stay in @world'
else
echo "$i"' can be deselected'
echo "$i" >> /tmp/deselect
fi
fi
done < /var/lib/portage/world
Salve o "script" em um arquivo chamado "checkworldfile". Torne-o executável com:
chmod +x checkworldfile
Execute-o com:
./checkworldfile 2> /dev/null
Exemplo de saída:
checking app-arch/p7zip app-arch/p7zip needs to stay in @world checking app-editors/vim app-editors/vim can be deselected checking app-portage/gentoolkit app-portage/gentoolkit needs to stay in @world checking dev-lang/rust-bin dev-lang/rust-bin can be deselected checking gnome-extra/nm-applet gnome-extra/nm-applet needs to stay in @world checking net-wireless/wpa_supplicant net-wireless/wpa_supplicant can be deselected checking sys-boot/grub sys-boot/grub can be deselected checking sys-kernel/gentoo-kernel-bin sys-kernel/gentoo-kernel-bin needs to stay in @world checking x11-base/xorg-server x11-base/xorg-server can be deselected checking x11-libs/libxkbcommon x11-libs/libxkbcommon can be deselected checking x11-wm/openbox x11-wm/openbox can be deselectedOs programas que aparecerem com "can be deselected" podem sair do arquivo "world", pelo menos teoricamente.
Para isso execute:
# emerge --ask --deselect categoria/programa1 categoria/programa2 categoria/programaN
Obs.: é necessário avaliar o que realmente vai sair do "world". Não aceite cegamente o resultado do "script". O que você julgar que precisa estar declarado, não remova.
Se remover um programa do "world" por engano, você pode inserir o programa novamente com:
# emerge --noreplace programa
Fonte: User:Feng/World file (Portage) - Gentoo Wiki
Boa dica.
___________________________________________________________