
1、当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可。
2、当需要在目标机中安装多个软件或者增加多个文件时,可以将整体打成RPM包,方便使用。
二、RPM打包命令
$cd ~ #进入home目录 $ sudo yum -y install rpmdevtools #安装rpm打包所需的工具 $rpmdev-setuptree #生成rpm打包目录 $cd rpmbuild/SPECS #进入SPECS目录 $rpmdev-newspec test.spec #生成spec文件模板 $mv your_path/source.tar.gz ../SOURCES #将要打包的源码以tar.gz的格式移动到SOURCES目录
此时会在home目录下生成一个rpmbuild目录,此目录下有五个子目录 BUILD 编译时所用的暂存目录 RPMS 放打包好的二进制rpm包 SOURCES 放置源代码和补丁文件 SPECS 放置spec文件 SRPMS 放置RPM源码包
三、spec文件简要说明
RPM打包的关键之处就在于spec文件的编写
1、spec基本信息
Name: 软件名称 Version: 软件版本 Release: 发布次数 如: 1%{?dist} Summary: 软件说明 Group: 软件分组 License: 授权模式,例如 GPL,即自由软件 URL: 源码包的URL地址,可随意填写 Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用 BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为: %{_tmppath}/%{name}-%{version}-%{release}-root , 后面可使用$RPM_BUILD_ROOT 方式引用 BuildArch: 平台 %{_arch} BuildRequires: 编译过程依赖的工具 Requires: 打包生成的rpm包安装时所依赖的软件包 %description 说明文档 %prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数 %build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等 %install 安装到BUILDROOT虚拟目录 %clean 清理文件 %files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config %changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容" 最终的生成的rpm名称: {Name}-{Version}-{Relesae}-{BuildArch}.rpm
2、spec内部变量
在spec文件运行时,定义的宏会主动读取/usr/lib/rpm/macros中的变量
RPM_BUILD_DIR ~/rpmbuild/BUILD
RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT
3、spec文件示例(以git为例)
Name: git Version: 2.10 Release: 1%{?dist} Summary: this is the test code License: GPL URL: http://www.hao123.com Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-root BuildRequires: automake Requires: rpm %description %prep %setup -q %build autoconf ./configure --prefix=/opt/git/ make %{?_smp_mflags} %install make DESTDIR=$RPM_BUILD_ROOT install %clean [ "$RPM_BUILD_ROOT" != "/" ] &&rm -rf "$RPM_BUILD_ROOT" make clean %files %defattr (-,root,root) /opt/git/ %changelog
4、生成RPM包
$rpmbuild -ba test.spec #生成RPM包
生成的RPM包在rpmbuild/RPMS目录下。
python的程序的缺点是: 需要提供源码,如果不想让源码被第三方获得,可以将其打包成二进制文件的形式。
pyinstaller就可以完成这个要求。
vim test.py
直接用python程序调用,结果如下:
大写的-F表示生成单一文件。
运行结果:
生成的可执行文件在dist目录中 。
https://www.pyinstaller.org/downloads.html
https://blog.csdn.net/aaronjzhang/article/details/8778338
https://www.cnblogs.com/LarryGen/p/5427102.html
https://www.cnblogs.com/alan-babyblog/p/5147770.html
https://www.cnblogs.com/zflibra/p/4180796.html
CentOS基础命令大全
1.关机 (系统的关机、重启以及登出 ) 的命令
shutdown -h now 关闭系统(1)
init 0 关闭系统(2)
telinit 0 关闭系统(3)
shutdown -h hours:minutes &按预定时间关闭系统
shutdown -c 取消按预定时间关闭系统
shutdown -r now 重启(1)
reboot 重启(2)
logout 注销
2.查看系统信息的命令
arch 显示机器的处理器架构(1)
uname -m 显示机器的处理器架构(2)
uname -r 显示正在使用的内核版本
dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda 罗列一个磁盘的架构特性
hdparm -tT /dev/sda 在磁盘上执行测试性读取 *** 作
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc//dev 显示网络适配器及统计
cat /proc/mounts 显示已加载的文件系统
lspci -tv 罗列 PCI 设备
lsu *** -tv 显示 USB 设备
date 显示系统日期
cal 2007 显示2007年的日历表
date 041217002007.00 设置日期和时间 - 月日时分年.秒
clock -w 将时间修改保存到 BIOS
3.文件和目录 *** 作命令
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch file1 创建一个文件
4.文件搜索命令
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis file 显示一个二进制文件、源码或man的位置
which file 显示一个二进制文件或可执行文件的完整路径
5.查看文件内容
cat file1 从第一个字节开始正向查看文件的内容
tac file1 从最后一行开始反向查看一个文件的内容
more file1 查看一个长文件的内容
less file1 类似于 'more' 命令,但是它允许在文件中和正向 *** 作一样的反向 *** 作
head -2 file1 查看一个文件的前两行
tail -2 file1 查看一个文件的最后两行 5.挂载命令
mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 (注:确定目录 '/ mnt/hda2' 已经存在)
umount /dev/hda2 卸载一个叫做hda2的盘 (先从挂载点 '/ mnt/hda2' 退出)
fuser -km /mnt/hda2 当设备繁忙时强制卸载
umount -n /mnt/hda2 运行卸载 *** 作而不写入 /etc/mtab 文件(当文件为只读或当磁盘写满时非常有用)
mount /dev/fd0 /mnt/floppy 挂载一个软盘
mount /dev/cdrom /mnt/cdrom 挂载一个光盘
mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom
mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件
mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统
mount /dev/sda1 /mnt/u *** disk 挂载一个u *** 捷盘或闪存设备
mount -t *** bfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享
6.磁盘空间 *** 作的命令
df -h 显示已经挂载的分区列表
ls -lSr |more 以尺寸大小排列文件和目录
du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'
du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小
7.用户和群组相关命令
groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 同时删除除主目录)
passwd user1 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失效期限
ls -lh 显示权限
chmod 777 directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
chmod 700 directory1 删除群组(g)与其他人(o)对目录的读写执行权限
chown user1 file1 改变一个文件的所有人属性,为use1。
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性都为use1所有
chgrp group1 file1 改变文件的群组为group1
chown user1:group1 file1 改变一个文件的所有人和群组属性,所属组为group1,用户为use1。
find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限
chmod u-s /bin/file1 禁用一个二进制文件的 SUID位
chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的
chmod g-s /home/public 禁用一个目录的 SGID 位
chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件
chmod o-t /home/public 禁用一个目录的 STIKY 位
8.打包和解压缩文件的命令
bunzip2 file1.bz2 解压一个叫做 'file1.bz2'的文件
bzip2 file1 压缩一个叫做 'file1' 的文件
gunzip file1.gz 解压一个叫做 'file1.gz'的文件
gzip file1 压缩一个叫做 'file1'的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 打包 'file1', 'file2' 以及目录 'dir1'
rar x file1.rar 解rar包
unrar x file1.rar 解rar包
tar -cvf archive.tar file1 创建一个非压缩的tar包
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 'dir1'的包
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar 释放一个包
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下 (-c是指定目录)
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包
9.关于RPM 包的命令
rpm -ivh package.rpm 安装一个rpm包
rpm -ivh --nodeeps package.rpm 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm 更新一个rpm包但不改变其配置文件
rpm -F package.rpm 更新一个确定已经安装的rpm包
rpm -e package_name.rpm 删除一个rpm包
rpm -qa 显示系统中所有已经安装的rpm包
rpm -qa | grep d 显示所有名称中包含 "d" 字样的rpm包
rpm -qi package_name 获取一个已安装包的特殊信息
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表
rpm -q package_name --whatrequires 显示与一个rpm包存在依赖关系的列表
rpm -q package_name --whatprovides 显示一个rpm包所占的体积
rpm -q package_name --scripts 显示在安装/删除期间所执行的脚本l
rpm -q package_name --changelog 显示一个rpm包的修改历史
rpm -qf /etc/d/conf/d.conf 确认所给的文件由哪个rpm包所提供
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表
rpm --import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书
rpm --checksig package.rpm 确认一个rpm包的完整性
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间
rpm -Va 检查系统中所有已安装的rpm包- 小心使用
rpm -Vp package.rpm 确认一个rpm包还未安装
rpm2cpio package.rpm | cpio --extract --make-directories *bin* 从一个rpm包运行可执行文件
rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm 从一个rpm源码安装一个构建好的包
rpmbuild --rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包
10.YUM 软件包升级器
yum install package_name 下载并安装一个rpm包
yum localinstall package_name.rpm 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系
yum update package_name.rpm 更新当前系统中所有安装的rpm包
yum update package_name 更新一个rpm包
yum remove package_name 删除一个rpm包
yum list 列出当前系统中安装的所有包
yum search package_name 在rpm仓库中搜寻软件包
yum clean packages 清理rpm缓存删除下载的包
yum clean headers 删除所有头文件
yum clean all 删除所有缓存的包和头文件
CentOS7 常用命令 *** 不过其实大多和DOS是一样的,只是命令的表达上可能有点儿不一样,毕竟这些都不是一家出来的嘛~
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)