quinta-feira, 26 de março de 2015

Debian GNU/Linux: Instalação de pacotes de versões diferentes

Introdução

O objetivo consiste em ter um debian jessie e utilizar a versão 2.5* do avidemux, que já só está disponível nos repositórios wheezy.

Versões

Debian GNU/Linux utiliza um sistema de versões muito versátil existindo basicamente três tipos de repositórios: stable (atualmente wheezy), testing (jessie) e unstable (sid).

O que os diferencia são as atualizações de pacotes que podem sofrer.

Um sistema que utilize a base stable normalmente possui apenas atualizações de segurança ou de bugs, não são implementadas novas versões que tragam novas funcionalidades.

Já o unstable tem entrada e saída de pacotes de acordo com as necessidades de ter as versões mais recentes de diversos softwares e bibliotecas. Resta acrescentar que esta facilidade na atualização de programas/bibliotecas pode fazer que com um simples upgrade um determinado programa deixe de funcionar com as novas versões de bibliotecas... No entanto, existe sempre muita documentação sobre as atualizações e convém estar atento [1].

O testing junta o melhor dos dois, pois permite ter versões relativamente recentes dos principais programas e bibliotecas e mantém um ritmo salutar de novas versões que, por regra, não trazem incompatibilidades com o software existente.

Se a escolha da versão certa a seguir (stable, testing ou unstable) traz dúvidas, há ainda a considerar a opção de poder utilizar pacotes com versões diferentes das que estão no repositório principal.
Isto é, utilizar uma base stable e instalar um software cuja versão existe apenas a partir do testing. Neste caso é pretendido exatamente o oposto disto.

APT Pinning

Consiste na indicação da prioridade a dar a cada repositório, mas pode ser definida por pacote.
No caso em questão, as versões recentes do avidemux trouxeram algumas novidades que impediam, por exemplo, a visualização lado a lado do input e output do vídeo com os efeitos.

Assim, neste caso é uma base testing (jessie) que terá instalado o avidemux a partir da base stable (wheezy). Como este programa não faz parte dos repositórios debian oficiais, normalmente é instalado a partir dos repositórios deb-multimedia.org.

Assim, é necessário adicionar ambos os repositórios em /etc/apt/sources.list.d/multimedia.list:
deb http://www.deb-multimedia.org wheezy main non-free
deb http://www.deb-multimedia.org jessie main non-free

Como os pacotes no jessie são mais recentes que os do wheezy, tudo o que seja atualizações e instalações seram feitas smepre a partir do jessie.

Assim, para forçar uma determinada versão que possui as funcionalidades pretendidas, é necessário especificar as seguintes preferências em /etc/apt/preferences:
Package: avidemux
Pin: version 1:2.5*
Pin-Priority: 1001

Package: avidemux-common
Pin: version 1:2.5*
Pin-Priority: 1001

Package: avidemux-plugins
Pin: version 1:2.5*
Pin-Priority: 1001

Isto faz com que estes três pacotes (avidemux, avidemux-common e avidemux-plugins) fiquem na versão 1:2.5*, que existe nos repositórios wheezy, e não sejam atualizados para as versões que estão disponíveis no jessie.

A partir daqui basta atualizar com apt-get update
Depois qualquer apt-get install ou apt-get upgrade ou mesmo apt-get dist-upgrade irá seguir as preferências em relação aos pacotes definidos.

Referências

[1] - https://wiki.debian.org/DebianUnstable#Where_can_I_get_help_with_Sid.3F
[2] - https://wiki.debian.org/AptPreferences

segunda-feira, 16 de março de 2015

Android: Alterar ficheiros e pastas em /system

Após muita pesquisa aqui ficam algumas dicas para, de uma forma simples e sem instalar muitas aplicações, ter acesso ao sistema de ficheiros /system do Android que normalmente está acessível apenas em modo de leitura.

Hardware/Software utilizado

Xiaomi Redmi 2
Android 4.4.4 KTU84P
MIUI 5.2.6 Beta
Terminal Emulator for Android by Jack Palevich [3]

Instruções

1. Através da aplicação Security do Android é possível aceder às Permissions e aí ao Root access, sendo necessário ativar o Terminal Emulator para que tenha acesso root.

2. Abrir o Terminal Emulator e na consola deve aperecer algo terminado com $, para ativar o modo de root, basta executar su e deve aparecer o símbolo # na linha de comando.

3.1. Verificar as partições montadas:
mount

3.2. Verificar as características da partição /system
mount | grep /system

Normalmente aparece algo do género:
/dev/block/bootdevice/by-name/system /system ext4 ro,seclabel,relatime,discard,data=ordered 0 0

4. Remontar a partição /system como rw
mount -o rw,remount /system

5.  COM O DEVIDO CUIDADO é possível alterar a informação existente.

 ATENÇÃO 
 Pode estar a alterar informação
 que torne o dispositivo inoperável! 
 Proceda com cuidado. 


6. Para voltar a ter a partição apenas como leitura é possível reiniciar o dispositivo ou então com o comando:
mount -o ro,remount /system

Outros Cenários

Caso estes procedimentos funcionem com outros dispositivos e/ou versões do Android, pode adicionar essa informação nos comentários.

Referências

[1] - http://www.pocketmagic.net/write-on-the-android-read-only-file-system/ - Comandos para remontar partições no Android
[2] - http://forum.xda-developers.com/showthread.php?t=921928 - Copiar ficheiros para /system
[3] - https://play.google.com/store/apps/details?id=jackpal.androidterm - Terminal Emulator for Android