Não sei ao certo como /etc/environment é aplicado pelo PAM, mas parece que ele é originado. Então, quando ele encontra uma linha como:
JAVA_HOME =/usr/lib/jvm/jdk1.7.0/bin
o shell interpretará JAVA_HOME como um comando devido ao espaço antes de = , que é um erro grave, pois JAVA_HOME não foi encontrado no PATH nem foi definido como um alias ou função. Um erro em source faz com que o shell saia (já que os scripts de manutenção são executados dessa forma), e é por isso que esse erro parou as instalações. (Equivalentemente, um espaço após = faz com que o shell veja /usr/lib/jvm/jdk1.7.0/bin como um comando, o que não é tão ruim, mas ainda é um problema.) Portanto, a linha correta é:
JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin