すべてのパッケージをリストする システムにインストールする方法を知っています。
しかし、すべてのリポジトリとPPAのリストを、新しいマシンで実行してキーを含むリポジトリセットアップを複製できるスクリプトに入れるにはどうすればよいですか?
/etc/apt/sources.list
と/etc/apt/sources.list.d
を調べることができますが、実行するスクリプトをgenerateする方法を探しています新しいシステム上のすべてのapt-add-repository
コマンド(すべてのキーの取得を整理します)。
何か案は?
ポインタをありがとう。少し整理して、PPAをリストするスクリプトを入手しましたが、他のリポジトリはありません。
#! /bin/sh
# listppa Script to get all the PPA installed on a system ready to share for reininstall
for APT in `find /etc/apt/ -name \*.list`; do
grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
USER=`echo $ENTRY | cut -d/ -f4`
PPA=`echo $ENTRY | cut -d/ -f5`
echo Sudo apt-add-repository ppa:$USER/$PPA
done
done
listppa > installppa.sh
で呼び出すと、新しいマシンにコピーしてすべてのPPAを再インストールできるスクリプトが得られます。
次のステップ:他のリポジトリに対してもそれを行います:
#! /bin/sh
# Script to get all the PPA installed on a system
for APT in `find /etc/apt/ -name \*.list`; do
grep -Po "(?<=^deb\s).*?(?=#|$)" $APT | while read ENTRY ; do
Host=`echo $ENTRY | cut -d/ -f3`
USER=`echo $ENTRY | cut -d/ -f4`
PPA=`echo $ENTRY | cut -d/ -f5`
#echo Sudo apt-add-repository ppa:$USER/$PPA
if [ "ppa.launchpad.net" = "$Host" ]; then
echo Sudo apt-add-repository ppa:$USER/$PPA
else
echo Sudo apt-add-repository \'${ENTRY}\'
fi
done
done
これでうまくいくはずです。正しい正規表現を見つけるために スーパーユーザーの質問 が必要でした。
以下を使用してすべてを表示できます。
grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
すべての有効なバイナリソフトウェアソースを指定されたファイルと一緒に取得する最も簡単だが最も効果的な方法がまだ投稿されていないことに驚いています。
grep -r --include '*.list' '^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/
処理されたすべてのファイルから、これはdeb
で始まるすべての行を印刷します。これは、ソースコードリポジトリを有効にするために、コメント行とdeb-src
行を除外します。
apt
によって解析されるすべての*.list
ファイルのみを検索しますが、 *.list.save
ファイルはバックアップに使用されず、不正な名前のファイルは使用されません。
短くしたいが、場合によってはすべての場合の99.9%だけで、大量のファイル(/etc/apt/sources.list*
および `/ etc/apt/sourcesだけでなく、すべての/etc/apt/sources.list
ファイルとディレクトリを含む)を検索する可能性があります。 list.d/*)、これも使用できます:
grep -r --include '*.list' '^deb ' /etc/apt/sources.list*
あるべきではないファイルがない限り、出力は同じになります。
私のマシンの出力例は次のとおりです。
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
/etc/apt/sources.list:deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
/etc/apt/sources.list:deb http://archive.canonical.com/ubuntu wily partner
/etc/apt/sources.list.d/maarten-fonville-ubuntu-ppa-wily.list:deb http://ppa.launchpad.net/maarten-fonville/ppa/ubuntu wily main
/etc/apt/sources.list.d/webupd8team-ubuntu-tor-browser-wily.list:deb http://ppa.launchpad.net/webupd8team/tor-browser/ubuntu wily main
/etc/apt/sources.list.d/fossfreedom-ubuntu-indicator-sysmonitor-wily.list:deb http://ppa.launchpad.net/fossfreedom/indicator-sysmonitor/ubuntu wily main
/etc/apt/sources.list.d/getdeb.list:deb http://archive.getdeb.net/ubuntu wily-getdeb apps
よりきれいな出力が必要な場合は、sed
にパイプしてみましょう。
grep -r --include '*.list' '^deb ' /etc/apt/ | sed -re 's/^\/etc\/apt\/sources\.list((\.d\/)?|(:)?)//' -e 's/(.*\.list):/\[\1\] /' -e 's/deb http:\/\/ppa.launchpad.net\/(.*?)\/ubuntu .*/ppa:\1/'
そして、これが表示されます。
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-updates multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-backports main restricted universe multiverse
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security main restricted
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security universe
deb http://ftp-stud.hs-esslingen.de/ubuntu/ wily-security multiverse
deb http://archive.canonical.com/ubuntu wily partner
[maarten-fonville-ubuntu-ppa-wily.list] ppa:maarten-fonville/ppa
[webupd8team-ubuntu-tor-browser-wily.list] ppa:webupd8team/tor-browser
[fossfreedom-ubuntu-indicator-sysmonitor-wily.list] ppa:fossfreedom/indicator-sysmonitor
[getdeb.list] deb http://archive.getdeb.net/ubuntu wily-getdeb apps
このコマンドを使用して、構成されているすべてのソフトウェアソース(リポジトリ)を一覧表示します。現在無効になっているものを含む:
cat /etc/apt/sources.list; for X in /etc/apt/sources.list.d/*; do echo; echo; echo "** $X:"; echo; cat $X; done
これは主にトラブルシューティングに使用します。これは確かにスクリプトに組み込むことができますが、/etc/apt/sources.list.d/*
を/etc/apt/sources.list.d/*.list
に絞り込んで、現在有効なソフトウェアソースのみを取得することができます。
https://repogen.simplylinux.ch/ は、UbuntuのバージョンのすべてのPPAのリストを提供します。以下は、ソースファイルなしでサムスンプリンターppaなしで生成されたリストです。
#------------------------------------------------------------------------------#
# OFFICIAL UBUNTU REPOS #
#------------------------------------------------------------------------------#
###### Ubuntu Main Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety main restricted universe multiverse
###### Ubuntu Update Repos
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-security main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-updates main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-proposed main restricted universe multiverse
deb http://us.archive.ubuntu.com/ubuntu/ yakkety-backports main restricted universe multiverse
###### Ubuntu Partner Repo
deb http://archive.canonical.com/ubuntu yakkety partner
#------------------------------------------------------------------------------#
# UNOFFICIAL UBUNTU REPOS #
#------------------------------------------------------------------------------#
###### 3rd Party Binary Repos
#### Flacon PPA - http://kde-apps.org/content/show.php?content=113388
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F2A61FE5
deb http://ppa.launchpad.net/flacon/ppa/ubuntu yakkety main
#### Gimp PPA - https://launchpad.net/~otto-kesselgulasch/+archive/gimp
## Run this command: Sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 614C4B38
deb http://ppa.launchpad.net/otto-kesselgulasch/gimp/ubuntu yakkety main
#### Google Chrome Browser - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | Sudo apt-key add -
deb [Arch=AMD64] http://dl.google.com/linux/chrome/deb/ stable main
#### Google Earth - http://www.google.com/linuxrepositories/
## Run this command: wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | Sudo apt-key add -
deb [Arch=AMD64] http://dl.google.com/linux/earth/deb/ stable main
#### Highly Explosive PPA - https://launchpad.net/~dhor/+archive/myway
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93330B78
deb http://ppa.launchpad.net/dhor/myway/ubuntu yakkety main
#### JDownloader PPA - https://launchpad.net/~jd-team
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A68F637
deb http://ppa.launchpad.net/jd-team/jdownloader/ubuntu yakkety main
#### Lazarus - http://www.lazarus.freepascal.org/
## Run this command: gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 6A11800F && gpg --export --armor 0F7992B0 | Sudo apt-key add -
deb http://www.hu.freepascal.org/lazarus/ lazarus-stable universe
#### LibreOffice PPA - http://www.documentfoundation.org/download/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1378B444
deb http://ppa.launchpad.net/libreoffice/ppa/ubuntu yakkety main
#### MEGA Sync Client - https://mega.co.nz/
deb http://mega.nz/linux/MEGAsync/xUbuntu_16.10/ ./
#### MKVToolnix - http://www.bunkus.org/videotools/mkvtoolnix/
## Run this command: wget -q http://www.bunkus.org/gpg-pub-moritzbunkus.txt -O- | Sudo apt-key add -
deb http://www.bunkus.org/ubuntu/yakkety/ ./
#### Mozilla Daily Build Team PPA - http://Edge.launchpad.net/~ubuntu-mozilla-daily/+archive/ppa
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 247510BE
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu yakkety main
#### muCommander - http://www.mucommander.com/
## Run this command: Sudo wget -O - http://apt.mucommander.com/apt.key | Sudo apt-key add -
deb http://apt.mucommander.com stable main non-free contrib
#### Opera - http://www.opera.com/
## Run this command: Sudo wget -O - http://deb.opera.com/archive.key | Sudo apt-key add -
deb http://deb.opera.com/opera/ stable non-free
#### Oracle Java (JDK) Installer PPA - http://www.webupd8.org/2012/01/install-Oracle-Java-jdk-7-in-ubuntu-via.html
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
deb http://ppa.launchpad.net/webupd8team/Java/ubuntu yakkety main
#### PlayDeb - http://www.playdeb.net/
## Run this command: wget -O- http://archive.getdeb.net/getdeb-archive.key | Sudo apt-key add -
deb http://archive.getdeb.net/ubuntu yakkety-getdeb games
#### SABnzbd PPA - http://sabnzbd.org/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4BB9F05F
deb http://ppa.launchpad.net/jcfp/ppa/ubuntu yakkety main
#### SimpleScreenRecorder PPA - http://www.maartenbaert.be/simplescreenrecorder/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 283EC8CD
deb http://ppa.launchpad.net/maarten-baert/simplescreenrecorder/ubuntu yakkety main
#### Steam for Linux - http://store.steampowered.com/about/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F24AEA9FB05498B7
deb [Arch=i386] http://repo.steampowered.com/Steam/ precise Steam
#### Syncthing - https://syncthing.net/
## Run this command: curl -s https://syncthing.net/release-key.txt | Sudo apt-key add -
deb http://apt.syncthing.net/ syncthing release
#### Tor: anonymity online - https://www.torproject.org
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 886DDD89
deb http://deb.torproject.org/torproject.org yakkety main
#### Unsettings PPA - http://www.florian-diesch.de/software/unsettings/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0FEB6DD9
deb http://ppa.launchpad.net/diesch/testing/ubuntu yakkety main
#### VirtualBox - http://www.virtualbox.org
## Run this command: wget -q http://download.virtualbox.org/virtualbox/debian/Oracle_vbox_2016.asc -O- | Sudo apt-key add -
deb http://download.virtualbox.org/virtualbox/debian yakkety contrib
#### Webmin - http://www.webmin.com
## Run this command: wget http://www.webmin.com/jcameron-key.asc -O- | Sudo apt-key add -
deb http://download.webmin.com/download/repository sarge contrib
#### WebUpd8 PPA - http://www.webupd8.org/
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4C9D234C
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu yakkety main
#### Xorg Edgers PPA - https://launchpad.net/~xorg-edgers
## Run this command: Sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8844C542
deb http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu yakkety main
here is a generated list without source files and no samsung printer ppa
#### Yuuguu - http://yuuguu.com
deb http://update.yuuguu.com/repositories/apt hardy multiverse
それで、掘り下げて、AptPkg::Class
があります。
したがって、Perl
を使用すると、このような簡単なことができます。
Perl -MAptPkg::Cache -MData::Dumper -E'say Dumper [AptPkg::Cache->new->files()]' | less
これにより、すべてのAptPkg::Class::PkgFile
パッケージのリストが取得されます。おそらくapt-add-repository
コマンドを生成できます。
「list-apt-repositories
」と「/etc/sources.list"
」内のすべてのリポジトリをリストするスクリプト「/etc/sources.list.d/*.list
」です。--ppa-only
を追加して、PPAのみを表示できます。 ppa:USER/REPO
形式に変換されました。
関連する部分は、list_sources
およびlist_ppa
関数の5行です。残りは、便利なシェルスクリプトでラップするための定型です。
list-apt-repositories
:#!/bin/sh
usage () {
cat >&2 <<USAGE
$0 [--ppa-only]
Options:
--ppa-only only list PPAs
USAGE
exit $1
}
list_sources () {
grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
cut -f2- -d: |\
cut -f2 -d' ' |\
sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g'
}
list_ppa () {
list_sources | grep '^ppa:'
}
generate=list_sources
while test -n "$1"
do
case "$1" in
-h|--help) usage 1;;
--ppa-only) generate=list_ppa;;
*)
printf -- "Unknown argument '$1'\n" >&2
usage 2
;;
esac
shift
done
$generate
また、インストールスクリプトを作成するには、別のスクリプト「make-apt-repository-install-script
」にパイプします。生成されたスクリプトは、非インタラクティブな使用のために-y
/--yes
引数をサポートしています(add-apt-repository(1)
を参照)。
make-apt-repository-install-script
:#!/bin/sh
if test -n "$1"
then
cat >&2 <<USAGE
Usage: $0 < PATH_TO_LIST_OF_REPOS
list-apt-repositories [--ppa-only] | $0
No options recognized.
Reads list of repositories from stdin and generates a script to install them
using \`add-apt-repository(1)\`. The script is printed to stdout.
The generated script supports an optional
\`-y\` or \`--yes\` argument which causes the \`add-apt-repository\` commands
to be run with the \`--yes\` flag.
USAGE
exit 1
fi
cat <<INSTALL_SCRIPT
#!/bin/sh
y=
case "\$1" in
-y|--yes) y=\$1;;
'') y=;;
*)
printf '%s\n' "Unknown option '\$1'" "Usage: \$0 [{-y|--yes}]" >&2
exit 1
;;
esac
INSTALL_SCRIPT
xargs -d'\n' printf "add-apt-repository \$y '%s'\n"
繰り返しますが、重要な部分は最後の行のxargs
コマンドで、残りは定型文です。
Ppa.launchpad.net行をppa:$ USER/$ PPAとして追加します。 * .listファイルからの完全な行で他のリポジトリを追加します。二重線はありません。
#!/ bin/bash #My〜/ bin/mk_repositories_restore_script mkdir -p〜/ bin x =〜/ bin/restore_repositories echo \#\!/ bin/bash> $ x chmod u + x $ x ( for APT for $(find/etc/apt/-name\*。list) do sed -n -e '/ ^ deb /{ /ppa\.launchpad/s/\(。* \/\/[^\/]*.\)\([^\t] * \)\(。* $ \)/ Sudo apt-add-repository ppa:\ 2/p; /ppa\.launchpad/!s/\(deb [\ t] * \)\(。* $ \)/ Sudo apt-add-repository\2/p; } '$ APT done )|並べ替え|ユニック| tee -a〜/ bin/restore_repositories
sed -r -e '/^deb /!d' -e 's/^([^#]*).*/\1/' -e 's/deb http:\/\/ppa.launchpad.net\/(.+)\/ubuntu .*/ppa:\1/' -e "s/.*/Sudo add-apt-repository '&'/" /etc/apt/sources.list /etc/apt/sources.list.d/*
ただし、可能なソースリポジトリ(deb-src)を有効にするコマンドは生成されません。
ありがとうボブドッズ!
誰かが興味を持っているなら、私はあなたのコードを少し更新しました(気にしないでください)。
このスクリプトは、ユーザーが追加したPPA(/etc/apt/sources.list.d)のみを入力します。
#!/bin/bash
# My ~/bin/mk_repositories_restore_script
mkdir -p ~/bin
x=~/bin/restore_repositories
echo \#\!/bin/bash > $x
chmod u+x $x
(
for APT in $( find /etc/apt/ -name \*.list )
do sed -n -e '/^deb /{
/ppa\.launchpad/s/\(.*\/\/[^\/]*.\)\([^ \t]*\)\(.*\/ubuntu.*$\)/ppa:\2/p;
}' $APT
done
) | sort | uniq | tee -a ~/bin/restore_repositories