centos使いが最近ubuntuさわる機会が増えたため苦しまぎれの備忘録。
####ubuntuとcentosのパッケージ関連操作比較一覧
(yumやrpmは空で出てくるがaptやdpkgは即刻忘れて毎度調べなおすのがだるいので自分用に)
作業項目 | ubuntu | centos |
---|---|---|
OS確認 | cat /etc/lsb-release |
cat /etc/redhat-release |
パッケージインストール | apt-get install pkgname |
yum install pkgname |
導入済みパッケージのリストを取得 | dpkg -l |
rpm -qa か、yum list installed
|
パッケージの削除 | apt-get purge pkgname |
rpm -e pkgname かyum 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.list にpkgname-version を書く |
パッケージ更新ロック解除 | apt-mark unhold pkgname |
/etc/yum/pluginconf.d/versionlock.list から消す |
インストールしたパッケージに含まれるファイルの一覧 | dpkg -L pkgname |
rpm -ql pkgname |
インストールされてるパッケージの更新 |
apt-get upgrade かapt-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 clean とapt-get autoremove
|
yum clean all |
http-proxyを仕込む | 環境変数https_proxy指定か/etc/apt/apt.confにAcquire::https::proxy "url";指定 |
/etc/yum.confにproxy=urlを指定 |
update対象のパッケージの一覧を表示 | apt list --upgradable |
yum check-update |
downloadだけする | apt-get download [package name] |
yum update --downloadonly --downloaddir=/home/user/yumdir |
downloadしたローカルパッケージをinstall | dpkg -i [.deb file path] |
yum localupdate /home/user/yumdir/* |
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みたいなの。
https://wiki.ubuntu.com/Releases
baseのDebianのバージョンは/etc/debian_version
みるとわかるようです。
https://askubuntu.com/questions/445487/what-debian-version-are-the-different-ubuntu-versions-based-on
追ってgpg鍵の管理やオレオレリポジトリなどについて特定して書きたい気がする。
→Ubuntuのgpg鍵サーバはpoolアドレス(pool.sks-keyservers.net)つかうのがタイムアウトしづらいのでオススメ。
https://stackoverflow.com/questions/30739178/how-to-add-apt-key-with-recv-keys-instead-of-recv
https://docs.ansible.com/ansible/latest/modules/apt_key_module.html
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'"
関連しそうなとれるfact例↓
$ ansible -m setup -i hosts_test 10.0.0.222
~略~
"ansible_distribution": "Ubuntu",
"ansible_distribution_file_parsed": true,
"ansible_distribution_file_path": "/etc/os-release",
"ansible_distribution_file_variety": "Debian",
"ansible_distribution_major_version": "18",
"ansible_distribution_release": "bionic",
"ansible_distribution_version": "18.04",
"ansible_lsb": {
"codename": "bionic",
"description": "Ubuntu 18.04.2 LTS",
"id": "Ubuntu",
"major_release": "18",
"release": "18.04"
},
"ansible_os_family": "Debian",
"ansible_pkg_mgr": "apt",
####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 |
ファイヤーウォール | AppArmorが有効、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.cfg
にnetwork: {config: disabled}
と書くと cloud-init
による設定を無効化可能になる
あとmysqlのパッケージ名とかデーモン名とか設定ファイルの位置とか結構全然違ったのでansible的な分岐がアレでした。jinja2便利。
{% if ansible_os_family == "Debian" %}
log-error=/var/log/mysql/error.log
{% else %}
log-error=/var/log/mysqld.log
{% endif %}
あとdebconfモジュールを使うと便利な感じでした。
参考
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