2014年11月2日日曜日

ubuntuのaptについて

ubuntuのパッケージ管理機能だけど最近微妙に変わっている
それはapt-getより便利なaptっていうのが増えたこと
といってもGUIしか使わんという人にはどうでもいい話だが

そもそもubuntuでアプリをインストールするとき
1.ソースビルド
2.dpkg
3.dselect
4.apt-get
5.aptitude
6.apt
7.ソフトウェアセンター
8.synaptic
9.gdebi
の9通りがあるわけだが、この内dselectを使っている人は私は見たことがないので実質的に8個
で、残りをインストール元のデータの種類によって分けると、

1,インストール元がパッケージ
  apt-get,aptitude,apt,synaptic,ソフトウェアセンター
2.インストール元が*.deb
 dpkg,gdebi
3.インストール元がソース・ファイル
  ソースビルド

この内3のソースビルドはtarとかのフォーマットで時々ネットに落ちてるソースをコンパイルしてアプリにする時に対して使う。
が、これの話をすると面倒なのでしない。

次に2の"*.debのファイルを直接インストール"だけどこれは時々親切なサイト
(google earthとか、プリンターのドライバーとか)でやっている。
たとえば hoge.deb をインストールするなら
 hoge.debのダブルクリックでgdebi(かソフトウェアセンター)を起動する

 shell から
 dpkg -i hoge.deb
みたいな感じでできる

 最後にやっとパッケージ管理の話だ
これどうなんでしょ 最近の人は全部ソフトウェアセンターしか使わんという人も多いけど私とかは未だにsynapticとか使ってたりするんですけど、そういう人は少ないんですかね。 なんか細かく指定できるし。私はsynapticとか結構好きなんですが。

一方shellからするときは、
apt,apt-get,aptitudeの3種となる。
ここでよくあったのがapt-getとaptitudeはどっちがいいのか? って論争だけどこれからはaptがそれに入るのだろうか?

ここで混乱しがちなので使い方まとめ

システム更新
sudo apt-get update
sudo apt-get upgrade (もしくは dist-upgrade)

sudo apt update
sudo apt upgrade(もしくは full-upgrade)

sudo aptitude update
sudo aptitude safe-upgrade (もしくは full-upgrade)

sudo aptitude update
sudo aptitude upgrade (もしくは dist-upgrade)

この内インストールをともなわない更新はsudo apt-get upgradeのみ
でaptの利点は覚えやすいので使いやすいこと


パッケージ検索
aptitude search hoge
apt search  hoge
apt-cache search hoge

パッケージ確認
aptitude show hoge
apt  show hoge
apt-cache show  hoge


パッケージinstall
sudo apt-get install hoge
sudo aptitude install hoge
sudo apt install hoge

パッケージuninstall
sudo apt-get remove hoge
sudo aptitude remove hoge
sudo apt remove hoge

パッケージの設定も込みでunitstall
sudo apt-get purge hoge
sudo aptitude purge hoge

システムに不要なパッケージ一括削除
sudo apt-get autoremove

設定ファイルだけあるパッケージ確認
dpkg -l | grep ^rc

インストール済みパッケージ一覧
dpkg -l

パッケージのインストール状態確認
dpkg -l hoge

インストール済みパッケージの中のファイル一覧
dpkg -L  hoge 

あるファイルがどこのパッケージに由来するか?
apt-file search ファイル名

ppaをリポジトリに追加
sudo add-apt-repository  ppa:?????

リリース情報
 cat /usr/share/distro-info/ubuntu.csv

 カレントリリース情報
cat /etc/os-release 
cat /etc/lsb-release


OSのアップグレード
sudo do-release-upgrade


  公開鍵を利用できないため、以下の署名は検証できませんでした NO_PUBKEY 74A941BA219EC810 の解決
gpg --keyserver keyserver.ubuntu.com --recv 74A941BA219EC810; gpg --export --armor 74A941BA219EC810 | sudo apt-key add -


まあこんなところが必要な情報でしようか
今まで使用頻度的には
apt-get>>(超えられない壁)>>aptitude,dpkg
だったが
aptが気に入ったので
apt>apt-get>>(超えられない壁)>>aptitude,dpkg
となりそう。

つまり
更新
sudo apt update
sudo apt upgrade

インストール
sudo apt install hoge

アンインストール
 sudo apt remove hoge

検索
 apt search  hoge

要らないパッケージ削除
  sudo apt-get autoremove

みたいな感じで使うことになりそう。と言うかもうなってる

aptのダウンロード元URLを動的に(実行時に)一番速いところに切り替える話がここにあった。
http://askubuntu.com/questions/37753/how-can-i-get-apt-to-use-a-mirror-close-to-me-or-choose-a-faster-mirror
普通この手のことをやるときは「ソフトウェアソース」ー>「ダウンロード先」ー>「その他」ー>「最適なサーバを探す」
でやるっていう基本的な技があるが、これがヤなのは年に数回サーバーが落ちてることがあることだ。その度やり直すのが面倒といえば面倒な所。
このやり方を使えばそれを動的に切り替えてくれる。 
実際に
http://mirrors.ubuntu.com/mirrors.txt にブラウザでアクセスすると分かるが近所のサーバ一覧を返してくる。

まあここに書いてあるように
/etc/apt/sources.listにあるサーバー名を
mirror://mirrors.ubuntu.com/mirrors.txt で書き換えた。
 例えば
deb http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ precise restricted main multiverse universe
deb http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ precise-updates restricted main multiverse universe
deb http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ precise-backports restricted main multiverse universe
deb http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ precise-security restricted main multiverse universe
deb http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ precise-proposed restricted main multiverse universe

deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-proposed main restricted universe multiverse

で変えた。(preciseの時)
なおdeb-srcも同じ。

これで実行時に最適サーバにアクセスするようになる。


ただこれの不具合として
apt-file update が
W: Don't know how to handle mirror
W: Don't know how to handle mirror
W: Don't know how to handle mirror
W: Don't know how to handle mirror
W: Don't know how to handle mirror
みたいなエラーを出すのがある。
これを解決するには
/etc/apt/sources.list.http 
のファイルをsources.listをコピーしてつくり、中身を元のHTTPのURLに戻した後で
 apt-file updateの代わりに
 apt-file --sources-list /etc/apt/sources.list.http update
をつかえばうまく行く。
https://bugs.launchpad.net/ubuntu/+source/apt-file/+bug/1395988

有名なPPA
http://www.ubuntuupdates.org/ppas
このリストのつかいかたは
たとえばMidoriがつかいたいなら
http://www.ubuntuupdates.org/ppa/midori
にかいていあるように

sudo add-apt-repository ppa:midori/ppa 
sudo apt-get update
sudo apt-get install midori
を行う。
 
GOOGLEのLINUXレポジトリ情報
GOOGLEのアプリなのだがこれはインストールするとレボジトリも自動で追加される。
現在の情報はこれ
https://www.google.com/linuxrepositories/ 
今落とせるのは
    Google Chrome
    Google Earth
    Google Music Manager
    Google Voice and Video Chat
    mod_pagespeed for Apache
    Google Web Designer
だけ。
 昔あったPicasaとかGoogle Desktopとかはなくなっている。
 Google Web DesignerとGoogle Music Managerが新顔
また
 Google earthのレポジトリ情報は古い。(最新でない)
キーはこれ
https://dl.google.com/linux/linux_signing_key.pub
apt-lineはインストールすると自動でつくが一応書いておく。
deb http://dl.google.com/linux/chrome/deb/ stable main
deb http://dl.google.com/linux/earth/deb/ stable main
deb http://dl.google.com/linux/musicmanager/deb/ stable main
deb http://dl.google.com/linux/talkplugin/deb/ stable main
deb http://dl.google.com/linux/mod-pagespeed/deb/ stable main
deb http://dl.google.com/linux/webdesigner/deb/ stable main


後ついでにDVDを再生するやり方
sudo apt-get install libdvdread4
sudo /usr/share/doc/libdvdread4/install-css.sh
http://www18.atpages.jp/~mansionlaw/index.php?dvd%E3%82%92%E5%86%8D%E7%94%9F%E3%81%97%E3%81%9F%E3%81%84
もしくは最新を使いたいなら
deb http://download.videolan.org/pub/debian/stable/ /
deb-src http://download.videolan.org/pub/debian/stable/ /
をソースリストに追加後
wget -O - http://download.videolan.org/pub/debian/videolan-apt.asc | sudo apt-key add -
のあと
sudo ap-get install libdvdcss2




ソースリスト作成ソフト
http://repogen.simplylinux.ch/index.php



その他
http://debian.fam.cx/index.php?AptGet