Como posso executar um comando para uma lista de pacotes?

5

Eu tentei instalar o Gnome 3 no Debian Testing depois esta explicação . No entanto, isso não funcionou e me deixou sem nenhuma interface gráfica com o usuário.

No momento, tento consertar isso e percebi que há uma longa lista de pacotes marcados como instalados manualmente. Eu armazenei uma lista (separada por quebra de linha) dos pacotes que - na minha opinião - deveriam ser marcados como auto instalados (quase todos eles).

Agora quero executar apt-mark auto para esta lista.

Como faço isso?

P.S: Eu também apreciaria se alguém me dissesse que isso não é uma boa idéia (se não for).

    
por Marcel 12.07.2011 / 18:27

3 respostas

7

Você pode usar xargs:

 cat /path/to/file | xargs apt-mark auto

Isso deve funcionar se houver um nome de pacote por linha no arquivo de texto /path/to/file .

Outra opção seria usar um loop for:

 for pkg in 'cat /path/to/file'; do apt-mark auto $pkg; done

A segunda maneira pode ser útil se você tiver um problema semelhante, no qual o comando não pode ser chamado com uma lista de parâmetros, mas você terá que chamá-lo uma vez para cada parâmetro que tiver. Mas no seu caso não é tão elegante, claro ...:)

Por acaso, suponho que você esteja usando o bash.

Nota: no meu sistema apt-mark --help diz:

Usage: apt-mark [options] {markauto|unmarkauto} packages...

E também:

apt-mark is deprecated, use apt-get markauto/unmarkauto.
    
por 12.07.2011 / 19:14
3

Parece que você quer despejar sua lista de arquivos em apt-mark auto , um de cada vez. Este pseudo-código deve começar:

while read pkgname; do apt-mark auto $pkgname; done <list_of_packages
    
por 12.07.2011 / 18:59
1

Execute o seguinte script com python scriptname.py list-of-packages.txt como raiz :

import subprocess
import sys

filename = sys.argv[1]
with open(filename) as f:
    packages = f.read()
    packages = packages.split()
    packages = " ".join(packages)
    cmd = "apt-mark auto " + packages
    subprocess.call(cmd, shell=True)

Espero que isso não seja um problema, já que o ter o GNOME implica que você já tem o Python instalado .

    
por 12.07.2011 / 18:44