知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
yum install yum-plugin-fastestmirror
CentOS 5:
yum install yum-fastestmirror -y
http://fedoraproject.org/wiki/EPEL
5.4
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
6.x
rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm
上面的地址已經停用,新地址在:http://mirrors.fedoraproject.org/publiclist
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
epel-release-6-7.noarch.rpm 升級為 epel-release-6-8.noarch.rpm
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm # rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # rpm -K rpmforge-release-0.5.2-2.el5.rf.*.rpm # rpm -i rpmforge-release-0.5.2-2.el5.rf.*.rpm
i686 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm x86_64 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -K http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
CentOS 6.5
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
http://centos.alt.ru
http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm
http://centos.alt.ru/repository/centos/6/i386/centalt-release-6-1.noarch.rpm http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm
含 php-fpm 等包
rpm -Uvh http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm
http://www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/atomic-release-1.0-14.el5.art.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
我使用Ubuntu + vsftpd為 Redhat 提供源
將光盤Mount到/mnt,或使用iso檔案Mount 到 /mnt
sudo mount /dev/cdrom /mnt/ or sudo mount -o loop rhel-server-5.6-i386-dvd.iso /mnt
將整個光盤複製到ftp的anonymous目錄或者http目錄
sudo rsync -auvP /mnt/* /srv/ftp/
一般完整DVD光盤複製,不需要做此步驟。如果你的RPM看來自非官方,需要運行createrepo
cd /srv/ftp/ sudo apt-get install createrepo sudo createrepo -g repodata/comps-rhel5-server-core.xml Server
FTP方式
cat > /etc/yum.repos.d/rhel-source-dvd.repo <<EOF [rhel-source-dvd] name=Red Hat Enterprise Linux $releasever - Source baseurl=ftp://172.16.1.2/Server enabled=1 gpgcheck=1 gpgkey=ftp://172.16.1.2/RPM-GPG-KEY-redhat-release EOF
HTTP方式
cat > /etc/yum.repos.d/rhel-source-dvd.repo <<EOF [rhel-source-dvd] name=Red Hat Enterprise Linux $releasever - Source baseurl=http://172.16.1.2/Server enabled=1 gpgcheck=1 gpgkey=http://172.16.1.2/RPM-GPG-KEY-redhat-release EOF
還可以使用本地檔案或者光盤Mount目錄
cat > /etc/yum.repos.d/rhel-source-dvd.repo <<EOF [rhel-source-dvd] name=Red Hat Enterprise Linux $releasever - Source baseurl=file:///mnt/Server enabled=1 gpgcheck=1 gpgkey=file:///mnt/RPM-GPG-KEY-redhat-release EOF
yum clean all yum list updates
列出所有yum源
# yum repolist all
查看啟用YUM源
# yum repolist enabled
查看禁用YUM源
# yum repolist disabled
禁用YUM源
# yum-config-manager --disable mysql-connectors-community
啟用YUM源
sudo yum-config-manager --enable mysql57-community-dmr
或者修改/etc/yum.repos.d/檔案也能實現相同的作用 enabled=0 為禁用 enabled=1啟用
有效的包名稱
name name.arch name-ver name-ver-rel name-ver-rel.arch name-epoch:ver-rel.arch epoch:name-ver-rel.arch
yum -y install package
指定yum源
yum -y install epel:nginx.x86_64
reinstall
yum -y reinstall package
yum localinstall 可以代替 rpm -ivh 並且會自己安裝依賴包
# yum localinstall asymptote-2.08-1.fc12.i686.rpm
yum list
列出已經安裝的包
yum list installed yum list installed | wc -l yum list installed ntp yum list installed mysql\*
yum list updates yum list extras
預設yum只顯示最新版本的包,使用 --showduplicates 可以顯示歷史包
root@netkiller /var/log % yum --showduplicates list nginx | expand Repository epel is listed more than once in the configuration Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Installed Packages nginx.x86_64 1:1.12.1-1.el7.ngx @nginx Available Packages nginx.x86_64 1:1.8.0-1.el7.ngx nginx nginx.x86_64 1:1.8.1-1.el7.ngx nginx nginx.x86_64 1:1.10.0-1.el7.ngx nginx nginx.x86_64 1:1.10.1-1.el7.ngx nginx nginx.x86_64 1:1.10.2-1.el7 epel nginx.x86_64 1:1.10.2-1.el7.ngx nginx nginx.x86_64 1:1.10.3-1.el7.ngx nginx nginx.x86_64 1:1.12.0-1.el7.ngx nginx nginx.x86_64 1:1.12.1-1.el7.ngx nginx
check update
[root@development ~]# yum check-update [root@development ~]# yum -y update
upgrade
# yum upgrade
[root@localhost ~]# yum grouplist Loaded plugins: fastestmirror Setting up Group Process Loading mirror speeds from cached hostfile * addons: mirrors.163.com * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com Installed Groups: Administration Tools Development Libraries Dialup Networking Support Editors Mail Server Network Servers Office/Productivity Server Configuration Tools System Tools Text-based Internet Web Server Yum Utilities Available Groups: Authoring and Publishing Base Beagle Cluster Storage Clustering DNS Name Server Development Tools Emacs Engineering and Scientific FTP Server FreeNX and NX GNOME Desktop Environment GNOME Software Development Games and Entertainment Graphical Internet Graphics Horde Java Java Development KDE (K Desktop Environment) KDE Software Development KVM Legacy Network Server Legacy Software Development Legacy Software Support Mono MySQL Database News Server OpenFabrics Enterprise Distribution PostgreSQL Database Printing Support Ruby Sound and Video Tomboy Virtualization Windows File Server X Software Development X Window System XFCE-4.4 Done
# yum groupinfo "Server Configuration Tools" Loaded plugins: fastestmirror Setting up Group Process Loading mirror speeds from cached hostfile * addons: centos.ustc.edu.cn * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Group: Server Configuration Tools Description: This group contains all of CentOS's custom server configuration tools. Default Packages: system-config-httpd system-config-nfs system-config-printer-gui system-config-samba system-config-securitylevel system-config-services Optional Packages: system-config-bind system-config-boot system-switch-mail-gnome
#yum groupinstall 'X Window System' -y 安裝GNOME桌面環境 #yum groupinstall 'GNOME Desktop Environment' -y 安裝KDE桌面環境 #yum groupinstall 'KDE (K Desktop Environment)' -y
卸載GNOME桌面環境 #yum groupremove "GNOME Desktop Environment" 卸載KDE桌面環境 #yum groupremove "KDE (K Desktop Environment)"
yum groupremove "GNOME Desktop Environment" "Games and Entertainment" "Graphical Internet" "Graphics" "Office/Productivity" "Printing Support" "Sound and Video" "Web Server" "X Window System"
1.安裝一個包 # rpm -ivh 2.升級一個包 # rpm -Uvh 3.刪除一個包 # rpm -e
不檢查依賴性關係
rpm -ivh --nodeps
強制安裝
rpm -ivh --force --nodeps
查詢一個包是否被安裝
[root@database ~]# rpm -q mysql mysql-5.0.77-3.el5 mysql-5.0.77-3.el5
安裝的包的信息
[root@database ~]# rpm -qi nginx Name : nginx Relocations: (not relocatable) Version : 0.6.39 Vendor: Fedora Project Release : 2.el5 Build Date: Sat 05 Dec 2009 05:31:02 AM HKT Install Date: Mon 28 Dec 2009 02:36:36 PM HKT Build Host: x86-6.fedora.phx.redhat.com Group : System Environment/Daemons Source RPM: nginx-0.6.39-2.el5.src.rpm Size : 772477 License: BSD Signature : DSA/SHA1, Mon 07 Dec 2009 07:06:40 AM HKT, Key ID 119cc036217521f6 Packager : Fedora Project URL : http://nginx.net/ Summary : Robust, small and high performance http and reverse proxy server Description : Nginx [engine x] is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server written by Igor Sysoev. One third party module, nginx-upstream-fair, has been added.
列出該包中有哪些檔案
[root@database ~]# rpm -ql cacti.noarch |more /etc/cacti /etc/cacti/db.php /etc/cron.d/cacti /etc/httpd/conf.d/cacti.conf /etc/logrotate.d/cacti /usr/share/cacti /usr/share/cacti/about.php /usr/share/cacti/auth_changepassword.php /usr/share/cacti/auth_login.php /usr/share/cacti/cdef.php /usr/share/cacti/cmd.php /usr/share/cacti/color.php /usr/share/cacti/data_input.php /usr/share/cacti/data_queries.php /usr/share/cacti/data_sources.php /usr/share/cacti/data_templates.php /usr/share/cacti/gprint_presets.php /usr/share/cacti/graph.php /usr/share/cacti/graph_image.php /usr/share/cacti/graph_settings.php /usr/share/cacti/graph_templates.php /usr/share/cacti/graph_templates_inputs.php /usr/share/cacti/graph_templates_items.php
列出一個檔案屬於哪一個RPM包
[root@database ~]# rpm -qf /usr/bin/svn subversion-1.4.2-4.el5_3.1
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \ gcc gcc-c++ rpm -qa --qf '%{NAME} %{VENDOR}\n'
列出所有被安裝的RPM包
[root@database ~]# rpm -qa |more pciutils-devel-2.2.3-7.el5 rmt-0.4b41-4.el5 bsh-manual-1.3.0-9jpp.1 libgcc-4.1.2-46.el5 libICE-1.0.1-2.1 popt-1.10.2.3-18.el5 libXau-1.0.1-3.1 nspr-4.7.4-1.el5_3.1 libjpeg-6b-37 libogg-1.1.3-3.el5 libXdmcp-1.0.1-2.1 iproute-2.6.18-10.el5 libraw1394-1.3.0-1.el5 libbonobo-2.16.0-1.fc6 libavc1394-0.5.3-1.fc6 ttmkfdir-3.0.9-23.el5 cdrecord-2.01-10.7.el5 grep-2.5.1-55.el5 dmidecode-2.9-1.el5 nspr-4.7.4-1.el5_3.1 ncurses-5.5-24.20060715 libgcrypt-1.4.4-5.el5 keyutils-libs-1.2-1.el5
安裝rpmbuild,我們將使用它來製作rpm包
yum search rpm-build yum install -y rpm-build
Debian/Ubuntu: sudo apt-get install rpm
rpm 工作空間,預設是/usr/src/redhat/
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo "%_topdir /home/neo/rpmbuild" >> ~/.rpmmacros echo "%packager Test User <test@example.com>" >> ~/.rpmmacros cat ~/.rpmmacros touch ~/rpmbuild/SPECS/package-1.0.spec
準備好你的檔案包
tar zcvf %{name}-%{version}.tar.gz your_dir
編輯spec檔案
vim ~/rpmbuild/SPECS/package-1.0.spec Summary: My Test Package Name: test Version: 1.0 Release: 1.0 License: BSD # group you want your package in, mostly for GUI package browsers # some example groups used by vendors: # http://www.rpmfind.net/linux/RPM/Groups.html Group: Networking/Daemons # your name for example Packager: Neo Chen <openunix@163.com> # #Source: http://full.url.to.the/package/%{name}-%{version}.tar.gz Source: %{name}-%{version}.tar.gz # list all your patches here: #Patch: # list all packages required to build this package #BuildRequires: #Provides: # list all packages that conflict with this one: #BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version} #### # full length description %description description ##### # this prepares a fresh build directory in ~/build/BUILD, useful macros here # are: # %setup - cleans any previous builds and untargzips the source # %patch - applies patches # any other commands here are executed as standard sh commands %prep %setup #%patch ##### # this tells rpmbuild how to build your package, rpmbuild runs it as a sh # script %build #make ##### # all the steps necessary to install your package into $RPM_BUILD_ROOT # first step is to clear $RPM_BUILD_ROOT %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT cp -r ../* %{_tmppath} #install all files under RPM_BUILD_ROOT #make install DESTDIR=$RPM_BUILD_ROOT # now you can remove uneeded stuff #rm -f $RPM_BUILD_ROOT{_prefix} ##### # NOTE: this section is optional # commands run just before the package is installed %pre #/usr/sbin/useradd -c "test user" -r -s /bin/false -u 666 -d / neo 2> /dev/null ##### # NOTE: this section is optional # commands run before uninstalling the software %preun #/sbin/service test stop > /dev/null 2>&1 #/sbin/chkconfig --del test ##### # NOTE: this section is optional # commands run after installing the package %post #/sbin/chkconfig -add test #touch /var/log/test ##### # NOTE: this section is optional # commands run after unistalling the package %postun #/sbin/service test stop #/usr/sbin/userdel test ##### # list all the files that are part of the package. If a file is not in the # list rpmbuild won't put it in the package # see below on how to automate the process of creating this list. # some useful macros here: # %doc /path/to/filename - installs filename into /path/to/filename and marks # it as being documentation # %config /etc/config_file - similar for configuration files # %attr(mode, user, group) file - lets you specify file attributes applied # during installation, use - if you want to use defaults %files #/usr/bin/test #/usr/sbin/test # this will package the dir and all directories inside it #/example/of/a/dir /srv/neo # this will package only the 'dir' directory #%dir /example/of/a/dir ##### # document changes between package releases %changelog
開始製作rpm檔案
rpmbuild -ba ~/rpmbuild/SPECS/package-1.0.spec
查看你的rpm檔案包含檔案列表
rpm -qpl /usr/src/redhat/RPMS/x86_64/test-1.0-1.0.x86_64.rpm /srv /srv/bin /srv/bin/console /srv/bin/nodekeeper /srv/etc /srv/etc/commands.cfg /srv/etc/nodekeeper.cfg /srv/etc/protocol.cfg /srv/logs /srv/logs/nodekeeper.log /srv/run /srv/run/nodekeeper.pid
安裝RPM
# rpm -Uvh --nodeps /tmp/test-1.0-1.0.x86_64.rpm Preparing... ########################################### [100%] 1:test ########################################### [100%]
也可以使用 yum 安裝
yum localinstall /tmp/test-1.0-1.0.x86_64.rpm
查看安裝信息
# rpm -qi test Name : test Relocations: (not relocatable) Version : 1.0 Vendor: (none) Release : 1.0 Build Date: Wed 21 Sep 2011 05:50:54 PM CST Install Date: Wed 21 Sep 2011 05:46:50 PM CST Build Host: dev3.example.com Group : Networking/Daemons Source RPM: test-1.0-1.0.src.rpm Size : 20373 License: BSD Signature : (none) Packager : Neo Chen <openunix@163.com> Summary : My Test Package Description : description
是使用yum info 查看信息
# yum info test Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.163.com * extras: mirrors.163.com * updates: mirrors.163.com Installed Packages Name : test Arch : x86_64 Version : 1.0 Release : 1.0 Size : 20 k Repo : installed Summary : My Test Package License : BSD Description: : description
http://fedoraproject.org/wiki/Packaging/RPMMacros#RPM_directory_macros
%{_sysconfdir} /etc %{_prefix} /usr %{_exec_prefix} %{_prefix} %{_bindir} %{_exec_prefix}/bin %{_lib} lib (lib64 on 64bit systems) %{_libdir} %{_exec_prefix}/%{_lib} %{_libexecdir} %{_exec_prefix}/libexec %{_sbindir} %{_exec_prefix}/sbin %{_sharedstatedir} /var/lib %{_datadir} %{_prefix}/share %{_includedir} %{_prefix}/include %{_oldincludedir} /usr/include %{_infodir} /usr/share/info %{_mandir} /usr/share/man %{_localstatedir} /var %{_initddir} %{_sysconfdir}/rc.d/init.d Note: On releases older than Fedora 10 (and EPEL), %{_initddir} does not exist. Instead, you should use the deprecated%{_initrddir} macro. RPM directory macros %{_topdir} %{getenv:HOME}/rpmbuild %{_builddir} %{_topdir}/BUILD %{_rpmdir} %{_topdir}/RPMS %{_sourcedir} %{_topdir}/SOURCES %{_specdir} %{_topdir}/SPECS %{_srcrpmdir} %{_topdir}/SRPMS %{_buildrootdir} %{_topdir}/BUILDROOT Note: On releases older than Fedora 10 (and EPEL), %{_buildrootdir} does not exist. Build flags macros %{_global_cflags} -O2 -g -pipe %{_optflags} %{__global_cflags} -m32 -march=i386 -mtune=pentium4 # if redhat-rpm-config is installed Other macros %{_var} /var %{_tmppath} %{_var}/tmp %{_usr} /usr %{_usrsrc} %{_usr}/src %{_docdir} %{_datadir}/doc
spec 檔案中定義宏預設值
%define <variable> <value>
另一種是在外部傳遞變數值
rpmbuild -ba SPECS/bacula.spec --define "build_su110 1" --define "build_mysql4 1"
注意:當兩種同時使用時,外部--define無法替代%define 的定義。
創建證書
$ % gpg --gen-key
查看GPG證書
$ gpg --list-keys /home/neo/.gnupg/pubring.gpg ---------------------------- pub 1024R/63268A35 2013-09-11 uid Neo Chen (netkiller) <netkiller@msn.com> sub 1024R/F4F946F9 2013-09-11
設置 _gpg_name 宏,與上面查看結果需一致
cat << EOF >> ~/.rpmmacros %_signature gpg %_gpg_name Neo Chen (netkiller) <netkiller@msn.com> %_gpgpath ~/.gnupg %_gpgbin /usr/bin/gpg EOF
建立RPM
rpmbuild --define "_topdir /path/to/macrodir" -bb --sign spec
如果你的證書有Passphrase,會提示你輸入了密碼。
Enter pass phrase: Pass phrase is good.
root@VM_7_221_centos ~/mysql-outfile-plugin % cat Outfile.spec Name: mysql-outfile-plugin Version: 1.0 Release: 1%{?dist} Summary: MySQL outfile plugin Group: MySQL Database server License: CC 3.0 URL: http://www.netkiller.cn Source0: https://github.com/netkiller/mysql-outfile-plugin/archive/v1.0.tar.gz BuildRequires: cmake3 mysql-community-devel Requires: gcc %description %prep %setup -q %build cmake3 . make %{?_smp_mflags} %install make install DESTDIR=%{buildroot} %files /usr/lib64/mysql/plugin/liboutfile.so %doc %changelog