
ソフトウェア センターには、インストールされているパッケージのリストがかなり短く表示されます。これをテキスト ファイルで取得するにはどうすればよいでしょうか?
私は試した:
> dpkg --get-selections|wc -l
3265
> aptitude search '~i!~M'|wc -l
1181
> dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2|wc -l
3076
> dpkg --get-selections | grep -v deinstall|wc -l
3076
> apt-mark showmanual|wc -l
1181
インストールしたパッケージは数千ではなく数十であることはわかっています。レビューするには、依存関係なしで選択したパッケージを正確にリストに含める必要があります。
アップデート
@kos に感謝します。最終的に次のコマンドでリストを取得できました:
> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103
答え1
これは質問に正確に答えるものではありません。むしろ、apt-get install
これまでに実行されたすべてのコマンドをリストするコマンドと、Ubiquity によって実行されたものを除く、これまでに実行されたすべてのコマンドのリストを取得するためにリストをさらに解析する方法に関するアドバイスを提供しますapt-get install
。このタスクに対する完璧なソリューションは存在しないようです。
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
zcat /var/log/apt/history.log.*.gz
apt
:内のすべての圧縮ログを解凍し/var/log/apt
、連結して に出力しますstdout
。cat - /var/log/apt/history.log
: を追加し/var/log/apt/history.log
て印刷しますstdout
。grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
Commandline: apt-get
: 先頭と末尾にスペースを含むで始まる行のみを選択しinstall
、選択した各行の残りの部分をstdout
;に出力します。
これにより、これまでに実行されたすべてのコマンドのリストが出力されます(唯一の望ましくない出力は、パッケージに言及している-non-コマンドapt-get install
ですが、そのパッケージは (まだ?) 存在していません (少なくともデフォルトのリポジトリに))。apt-get
install
install
注記:私のインストール (Ubuntu 15.04 64 ビット) では、リストされている最初の 4 つのコマンドは、インストール中に Ubiquity によって実行されるコマンドです。これらを除外するには、出力を次のようにパイプしますsed
。
sed '1,4d'
最終的に近似Ubuntu 15.04 64 ビットのコマンドは次のようになります。
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'
答え2
apt-mark ショーマニュアル
依存関係なしで手動でインストールされたすべてのパッケージのリストが表示されます。注目すべき重要な点は、Ubuntu のセットアップ中にインストールされたパッケージも表示されることです。
出力をファイルに書き込むには:
apt-mark showmanual > somefile
実際には、このコマンドを使用するなど、他にも多くの方法があります
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
ただし、上記がどのように機能するかは全くわかりません ;)
インストールされたパッケージを日付別に表示するには:
日付使用によってインストールされたパッケージ、使用cat /var/log/dpkg.log | grep "\ install\ > somefile"
を使用してインストールされたパッケージ- これがおそらくあなたが探しているものです。dpkg
ls -l /var/log/dpkg* > somefile
dpkg を使用してインストールされたパッケージを表示するには:
このファイルには上記の情報が含まれています:/var/log/dpkg.log
答え3
これは実際には見た目よりも複雑で、Ask Ubuntu には同様の質問がかなりたくさんあります。
/var/log/apt/history.log
そのログの古い gzip 形式バージョンを調べてみると、コマンドによってインストールされたものはすべて、apt-get install
そのコマンドによってインストールされたものとしてリストされていることがわかりました。
それで:
grep "apt-get install" /var/log/apt/history.log
現在の apt 履歴ログがカバーする期間のすべてが表示されます。gunzip
すべての情報をまとめるには、古いログを grep する必要があります。grep コマンドをすべてテキスト ファイルにリダイレクトすると、わかりやすいリストが得られます。
これは、インストール時に Software Center が使用される場合にのみ役立つ可能性がありますapt-get install
。Software Center が のフロントエンドであることは知っていますapt
が、そのコマンドを明示的に使用するかどうかはわかりません。
答え4
このコマンドは、手動でインストールされたパッケージのリストと、「自動的にインストールされた」逆依存関係が削除されたパッケージのリストを表示します (たとえば、ubuntu-server メタパッケージを削除すると、その依存関係は自動としてマークされなくなり、このリストに表示されるようになります)。
apt list --installed | grep -v automatic
つまり、上記のリストは、逆依存関係がない、または手動でインストールされたとマークされているすべてのパッケージを返します。