Yum
apt-get
rpm
dpkg

ubuntuパッケージ管理centosとの対比備忘録

More than 1 year has passed since last update.

centos使いが最近ubuntuさわる機会が増えたため苦しまぎれの備忘録。


ubuntuとcentosのパッケージ関連操作比較一覧

(yumやrpmは空で出てくるがaptやdpkgは即刻忘れて毎度調べなおすのがだるいので自分用に)

作業項目
ubuntu
centos

パッケージインストール
apt-get install pkgname
yum install pkgname

導入済みパッケージのリストを取得
dpkg -l
rpm -qa

パッケージの削除
apt-get purge pkgname

rpm -e pkgnameyum remove pkgname

入れられるパッケージ検索
apt-cache madison [query]

yum search [query]yum --showduplicate list [pkgname]

パッケージの更新ロックする
apt-mark hold pkgname

yum-plugin-versionlockを入れて/etc/yum/pluginconf.d/versionlock.listpkgname-versionを書く

パッケージ更新ロック解除
apt-mark unhold pkgname

/etc/yum/pluginconf.d/versionlock.listから消す

インストールしたパッケージに含まれるファイルの一覧
dpkg -L pkgname
rpm -ql pkgname

インストールされてるパッケージの更新

apt-get upgradeapt-get install pkgname

yum update [pkgname]

バージョン指定インストール
apt-get install pkgname=version~code-name
yum install pkgname-version

パッケージの情報表示
dpkg -s pkgname
rpm -qi pkgname

依存パッケージ情報表示
apt-cache depends
rpm -qR pkgname

ファイル(絶対PATH)からパッケージを特定
apt-file search relaytive-path-filename
rpm -qf relaytive-path-filename

PATHなしファイルからパッケージ特定
dpkg -S filename
yum whatprovides filename

リポジトリのリスト表示
grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/*
yum repolist

パッケージグループインストール
apt-get install meta-packagename
yum groupinstall group-id_or_group-name

パッケージグループ表示
apt-cache search meta package

yum grouplist,yum -v groups list

パッケージグループに含まれるパッケージ表示

yum groups info group-(name_or_id)

キャッシュを削除

apt-get cleanapt-get autoremove

yum clean all

http-proxyを仕込む
環境変数https_proxy指定か/etc/apt/apt.confにAcquire::https::proxy "url";指定
/etc/yum.confにproxy=urlを指定

https://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c

http://d.hatena.ne.jp/yutamoty/20091021/1256107870

https://qiita.com/showsuzu/items/9ee031208d38ff8ac889

ややこしい違いが多いような気がするけど気のせいでしょうか。

・リポジトリ管理について

yumの場合/etc/yum.repos.d/~.repoという名前でリポジトリファイルが置かれる

aptだと/etc/apt/sources.list.d/~.listにリポジトリファイルが置かれる

centosの場合メジャーバージョンとマイナーバージョンは数字だが

ubuntuの場合アルファベットのコードネームみたいなもんがあるubuntu-xenialみたいなの。

http://ubuntuapps.info/blog-entry-421.html

追ってgpg鍵の管理やオレオレリポジトリなどについて特定して書きたい気がする。

ansibleだとchefと違ってパッケージ名抽象化してくれないらしいので以下の感じにwhenにfact変数指定で分岐させる。

- name: yum install glibc 

yum:
name: glibc
state: latest
tags: install_glibc
when: "ansible_os_family == 'RedHat'"

- name: apt install libc6
apt:
name: libc6
state: latest
update_cache: yes
tags: install_libc6
when: "ansible_os_family == 'Debian'"


ubuntuとcentosのネットワークがらみの設定ファイルの場所比較

ついでに追記。確認操作コマンドなどは大差なさそう。

項目
Ubuntu
CentOS

IF設定ファイルの場所

/etc/network/interfaces.d/*.cfg(※1)
/etc/sysconfig/network-scripts/ifcfg-<if-device-name>

ルーティング設定
/etc/network/if-up.d/static-routesに書くか/etc/network/interfacesに設定
/etc/sysconfig/network-scripts/route-に書く

iptables設定される場所
どうやら任意?
/etc/sysconfig/iptables-config

ファイヤーウォール
firewalldがデフォルトではなくufwなどを任意で自力で有効化する
selinuxとfirewalld(iptablesラッパー)がデフォルトで入ってる

hosts
dhcpだと自分自身は127.0.0.1に設定するらしい
場所は同じで/etc/hosts

このほかresolv.confの場所などは同じだった。(NetworkManagerが不穏な動きで更新きかない的な事情は似たかんじ)

(※1)/etc/cloud/cloud.cfg.d/99-disable-network-config.cfgnetwork: {config: disabled}と書くと cloud-initによる設定を無効化可能になる

参考

https://www.server-world.info/query?os=Ubuntu_16.04&p=initial_conf&f=3

https://qiita.com/kooohei/items/b0931ae210911cc52adc

https://server-setting.info/debian/network-config-debian.html