web-dev-qa-db-fra.com

Script permettant d'activer les téléchargements "source" de manière déterministe

J'ai écrit quelques scripts pour aider les utilisateurs à extraire leur paquet source du noyau actuel, à appliquer certains de mes correctifs et à le construire comme .deb package avec make-kpkg. L'une des rares étapes nécessitant une intervention manuelle consiste à activer les téléchargements "Source" via:

  • "Ubuntu Software Center"
    • Éditer...
      • Sources de logiciels ...
        • "Code source"

enter image description here

Existe-t-il un moyen de le faire automatiquement via la ligne de commande? À ma connaissance, je pourrais simplement annuler le commentaire des premières lignes "deb-src" dans /etc/apt/sources.list, ainsi:

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-src http://ca.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

Cependant, cela est quelque peu sujet aux erreurs, étant donné que les scripts sed que j'ai écrits ne fonctionnent pas nécessairement si les sources sont hors de l'ordre par défaut, ou pour diverses autres raisons. Plus important encore, j'aimerais que cela fonctionne sur Ubuntu 14.04, Ubuntu 16.04, etc. (c'est-à-dire: aussi générique que possible).

Existe-t-il des outils liés à la ligne de commande apt pour y parvenir via un script Shell?

Je vous remercie.

1
Cloud

Au final, je viens d'activer tous les référentiels src.

sed -i '/^#\sdeb-src /s/^#//' "/etc/apt/sources.list"

Cela ne nécessite pas la mise à niveau du système d'exploitation vers une version arbitraire.

2
Cloud

J'ai eu un problème similaire au vôtre et j'ai finalement commencé à faire le script suivant, pour écrire un sources.list Temporaire et le supprimer à nouveau:

# making a copy of the users original sources.list file
cp -v /etc/apt/sources.list /etc/apt/sources.list.orig &&

# writing a custom sources.list file
cat > /etc/apt/sources.list << "EOF"
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu/ xenial multiverse main universe restricted
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse main universe restricted
deb http://archive.ubuntu.com/ubuntu/ xenial universe
deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe
deb http://archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://dearchive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse main universe restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
EOF

# running an update
apt-get update &&
apt-get -y dist-upgrade &&

# DO YOUR STUFF

# putting back the original sources.list
mv -v /etc/apt/sources.list /etc/apt/sources.list.tmp &&
cp -v /etc/apt/sources.list.orig /etc/apt/sources.list &&

# removing backup files
rm -rfv /etc/apt/sources.list.tmp &&
rm -rfv /etc/apt/sources.list.orig
2
Videonauth

J'ai mis au point un one-liner Perl qui ne décommentera que le deb-src lignes précédées d'une ligne deb non commentée:

Perl -pi.orig -0e 's/^(deb .*\n)# (deb-src)/$1$2/mg' /etc/apt/sources.list

Il conservera également l'original sous la forme /etc/apt/sources.list.orig. (afin que vous puissiez le restaurer plus tard si vous le souhaitez)

Cela devrait fonctionner sur toutes les versions, en supposant qu'elles continuent leur habitude de mettre en commentaire deb-src lignes juste après leurs lignes deb correspondantes.

0
TJ Ellis