Linux Basics Chapter2 ソフトウェア管理 - careerbeat/dit-ehime GitHub Wiki
- キーワード
- コマンドとかコードではない
- けど、覚えないといけない単語
メモ
・キーワードではないけど
・覚えておいたほうが良い
コマンド・ソース
ターミナルで使うコマンドやキーワード
ソフトウェア管理
パッケージとは
- パッケージ
- ファイルデータベース
- ディペンデンシー(依存関係)
- チェックサム
- アップグレード・アンインストール
- バイナリーパッケージ
RPM
RPMのディストリビューションとコンベンション
- GPL
- Mandriva, Yellow Dog (Red Hat)
- SUSE
- RPMパッケージのネーミングコンベンション
packagename-a.b.c-x.arch.rpm
・ディストリビューション次第でRPMが使えない場合がある
TODO残りの説明をここに
rpm コマンドセット
rpm [オペレーション][オプション] [パッケージファイル|パッケージ名]
オプション(一部紹介)
-i
-U
-F か --freshen
-q
-V か --verify
-e
-b
--rebuild
--rebuilddbs
--root dir
--force
-h か --hash
-v
--nodeps
--test
--prefix パス
-a か --all
-f ファイル か --file ファイル
-p パッケージファイル
-i
-R か --requires
-l か --list
パッケージ名例
samba-3.6.5-86.fc17.1.x86_64.rpm
インストール例
# rpm -Uvh samba-3.6.5-86.fc17.1.x86_64.rpm
インストールの確認
rpm -qi
例
$ rpm -qi samba
RPMからデータ抽出
cpio
rpm2cpio
オプション
-i
--make-directories
例
$ rpm2cpio samba-3.6.5-86.fc17.1.src.rpm > samba-3.6.5-86.fc17.1.src.cpio
$ cpio -i --make-directories < samba-3.6.5-86.fc17.1.src.cpio
または、
$ rpm2cpio samba-3.6.5-86.fc17.1.src.rpm | cpio -i --make-directories
YUM
- APT
yum [オプション] [コマンド] [パッケージ...]
コマンド
install
update
check-updte
upgrade
remove か erase
list
provides か whatprovides
search
info
clean
shell
resolvedep
localinstall
localupdate
deplist
その他便利機能
yumdownloader
yum install kyum
TOOD EXerciseをここに記載
RPMとYUMの設定
・RPMもYumも通常は設定不要
・最適化したい時は良い
・通常とは違うソフト用のYumレポジトリーの時など
RPM
設定ファイル箇所
/usr/lib/rpm/rpmrc
※CPU最適化 ※ソースパッケージのコンパイル用
編集したい場合は
/etc/rpmrc
※グローバル
~/.rpmrc
※ユーザー毎
ソースをCPUに最適化する場合、optflagsを使用
optflags
例
optflags: athlon -O2 -g -march=i686
YUM
YUMの設定ファイル箇所
/etc/yum.conf
/etc/yum.repos.d/
※前者は触らないほうが良い
- Liva
- KDE Red Hat
- Fresh RPMs
RPMと他のパッケージ比較
・柔軟性が高い
Debianと比較
・Debianのパッケージマネージャーに似てる
・Debianに比べ、一番の違いは遍在性
・RPMをベースとしたパッケージは多いため、コンフリクトする場合が多い→面倒
tarballsと比較
・tarballsよりも機能豊富
・RPMはlinuxによく使われる、tarballsはunix
・他のプラットフォームのためのプログラムの場合はパッケージマネージャーも要検討
Debianパッケージ
dpkg
dselect
apt-get
Debianの配信とネーミングルール
・DebianのパッケージはDebianOSの配信がもと
・その後、Ubuntu, Linux, Mint, Xandrosでも使用
・そのため、DebianのためのパッケージはDebianベースのシステも使用可能
・GUIが多いので、初心者向け
・バグフリーを目指しているため、GUIへは力を入れてない
・オープンソース
・ネーミングはRPMに似ている
dpkgコマンドセット
dpkg [オプション][アクション] [パッケージファイル|パッケージ名]
主なアクション
-i か --install
--configure
-r か --remove
-P か --purge
--get-selections
-p か --print-avail
-I か --info
-l パターン か --list パターン
-L か --listfiles
-S パターン か --search パターン
-C か --audit
オプション
--root=ディレクトリーパス
-B か --auto-deconfigure
--force-things
--ignore-depends=パッケージ
--no-act
--recursive
-G
-E か --skip-same-version
例
# dpkg -i samba_2:3.6.3-2ubuntu2.3_amd64.deb
# dpkg -r samba
$ dpkg -p samba
apt-cache
apt-cache
パッケージ情報
showpkg
例
apt-cache showpkg samba
パッケージ詳細
apt-cache stats
ディペンデンシー齟齬
apt-cache unmet
ディペンデンシー表示
depends
例
apt-cache depends samba
全パッケージ
pkgnames
例
apt-cache pkgnames sa
apt-get
apt-get [オプション][コマンド] [パッケージ名]
パッケージの取得元
/etc/apt/sources.list
/etc/apt/sources.list からの情報をもとにウップグレードとインストールを行う
最近のパッケージをダウンロード
# apt-get update
# apt-get dist-upgrade
コマンド
update
upgrade
dselect-upgrade
dist-upgrade
install
remove
source
check clean
autoclean
オプション
-d か --download- only
-f か --fix-broken
-m か --ignore-missing か --fix-missing
-q か --quiet
-s か --simulate か --just-print か --dry-run か --recon か --no-act
-y か --yes か --assume-yes
-b か --compile か --build
--no-upgrade
dselect, aptitude, Synaptic△
パッケージ管理ツール(パッケージマネージャ)
dselect
/etc/apt/sources.listを参照し
・インストールするパッケージの選択
・インストール済みのパッケージ参照
・パッケージのアンインストール
・パッケージのアップグレード
dselect
aptitude
パッケージリストのアップデート
aptitude update
ソフトウェアのインストール
install
例
aptitude install zsh
アンインストール
aptitude install zsh-
または
aptitude remove zsh
アップグレード
full-upgrade
safe-upgrade
検索
search
ダウンロード済みだが未配信を消去
autoclean
全てを削除
clean
ヘルプ
aptitude help
Synaptic
dselect と aptitude に似たGUI X-ベースのプログラム
パッケージの初期化△
dpkg-reconfigure
例
# dpkg-reconfigure samba
Debianと他のパッケージを比較
Debianは複数ファイルがグループされたもの
・ソースtarballs
・パッチファイル
・.dscファイル
これを全部含んだものがDebianのバイナリーパッケージ
Debianは1パッチファイル
RPMは複数のパッチファイル
DebianのほうがRPMより探しづらい(プログラムによっては)
・Debianはこちらで管理http://www.debian.org/ distrib/packages
Debianパッケージツールの設定△
設定ファイル
/etc/dpkg/dpkg.cfg
もしくは
/.dpkg.cfg
no-act
パッケージ変換△
パッケージファイルが望んでいるものと違っていた場合
Debian配信のものに対してtarballかRPMファイルのパッケージしかない対処 ・該当するフォーマットをひたすら探す ・フォーマット違いに対応するツールをインストール ・RPMかDebianからtarballをもとにパッケージを自作 ・alienを使ってパッケージフォーマットの変換
alien [オプション] ファイル[...]
例
apt-get install alien
オプション
--to-deb
--to-rpm
--to-slp
--to-tgz
※Debian, RPM, Stampede と tarball への変換
例
# alien --to-rpm someprogram-1.2.3-4_i386.deb
# alien --install binary-tarball.tar.gz
パッケージディペンデンシー(依存関係)コンフリクト(競合)
ディペンデンシーの原因
・ライブラリーやサポートプログラムがない
・ライブラリーやサポートプログラムが対応されていない
・ファイルと機能が重複している
・ネーミングが競合している
ディペンデンシーの解決案
強制的にインストール
--nodeps
例
# rpm -i apackage.rpm --nodeps
# rpm -i apackage.rpm --force
dpkgの場合
--ignore-depends=package
-force-depends
--force-conflicts
アップグレートか置き換え
上部に記載されているコマンドで実行
パッケージのリビルド
rpmbuild
例
# rpmbuild --rebuild packagename-version.src.rpm
別バージョンを探す
シェアドライブラリー管理
ライブラリーの原則
ライブラリーとは頻繁に使われるプログラムを分部分で統合したもの
cの場合
libc
widget sets
GTK+
Qt
問題点
・プログラムファイルの膨張
・RAMの圧迫
・コンパイルが何回も必要となる
ライブラリーファイルの箇所
システム全体にパス設定
/etc/ld.so.conf
ファイルに含む
include /etc/ld.so.conf.d/*.conf
※ *はワイルド、全ファイルという意味
/etc/env.d
env-update
パスを一時的に変更
LD_LIBRARY_PATH
例
$ export LD_LIBRARY_PATH=/usr/local/testlib:/opt/newlib
問題訂正
$ gimp
ライブラリの管理コマンド
シェアドライブラリ依存関係の表示
$ ldd /bin/ls
ライブラリキャッシュ
ライブラリーのロード管理設定箇所
/etc/ld.so.cache
ツール
ldconfig
オプション
ldconfig
-N
-n
-X
-f ファイル
-C ファイル
-r ディレクトリー
-p
プロセス管理
カーネル
uname
オプション
-n か --nodename
-s か --kernel-name
-v か --kernel-version
-r か --kernel-release
-m か --machine
-p か --processor
-i か --hardware-platform
-o か --operating-system
-a か --all
プロセスのリスト
psオプション
ps [オプション]
オプションのタイプ Unix98 Options: - BSD Options: GNU Long Options--
オプションをグループ
ps -a -f
↓
ps -af
環境変数
PS_PERSONALITY
設定値
posix
old
linux
bsd
sun
digital
その他
--help
-A
-e
x
-u ユーザー か U ユーザー か --User ユーザー
-f, -l, j, l, u, と v
-H, -f, と --forest
-w と w
ps出力の例
$ ps -u ユーザー名 --forest
ps u U ユーザー名
PS出力カラム名
- USER
- PID
- %CPU
- %MEM
- VSZ
- RSS
- TTY
- STAT
- START
- TIME
- COMMAND
top:psの代理
top
オプション
-d 遅延秒数
-p プロセスID
-n 表示数
-b
h か ?
k
q
r
s
P
M
jobs:セッションに関連しているプロセス
jobs
フォアグラウンド・プロセスとバックグラウンド・プロセス
- フォアグラウンド・プロセス
- バックグラウンド・プロセス
Ctrl+Z
Ctrl+Z ls
fg
fg 2
bg
nedit
プロセスの優先順を管理
nice [引数] [コマンド [コマンド-引数]]
例
$ nice -12 number-crunch data.txt
$ nice -n 12 number-crunch data.txt
$ nice --adjustment=12 number-crunch data.txt
renice 優先順 [[-p] プロセスID] [[-g] グループID] [[-u] ユーザー]
プロセスの終了
kill -s シグナル プロセスID
終了可能のプロセスリスト
kill -l
全てに実行
killall [オプション] [--] プロセス名 [...]
例
$ killall -i vi