You are not logged in.
hi i'm new in arch so hello everybody and i have a little problem with paconky.py i didn't modify the paconky.py and my conkyrc says " '/etc/pacman.conf',unrecognized option" and i'm a newbie in python so i don't know how to fix it
thanx
ps: i'm french so my english is possibly bad sorry
Offline
Hi,
I can't reproduce the error. Run the paconky command in a terminal and post the output. If you see this
${color1}${hr}
${color1}[${color2}core${color1}] ${color3}6 new packages
bash 4.2.020-1
then paconky.py is working correctly.
The error may be in your conky configuration file. Post that too.
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
hi,
in my terminal i see this
$ .conky/paconky.py /tmp/paconky
('/etc/pacman.conf', 'unrecognized option', 'ILoveCandy')
Traceback (most recent call last):
File ".conky/paconky.py", line 238, in <module>
main(sys.argv[1])
File ".conky/paconky.py", line 196, in main
action_sync.main(('-b', tmp_db_path, '-y'))
File "/usr/lib/python3.2/site-packages/pycman/action_sync.py", line 229, in main
ret = do_refresh(args)
File "/usr/lib/python3.2/site-packages/pycman/action_sync.py", line 42, in do_refresh
t = transaction.init_from_options(options)
File "/usr/lib/python3.2/site-packages/pycman/transaction.py", line 112, in init_from_options
progress_callback = cb_progress)
alpm.error: transaction could not be initialized, pm_errno 10 (unable to lock database)
Exception ValueError: 'I/O operation on closed file.' in <_io.TextIOWrapper name='/dev/null' mode='w' encoding='UTF-8'> ignored
and when i run just .conky/paconky it says : no temporary path given
do you have an idea ?
Offline
You seem to have a line /etc/pacman.conf that begins with 'ILoveCandy'. That isn't a valid option and pyalpm therefore doesn't recognize it.
Fix pacman.conf and everything else should work.
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
heuu Idon't know to say but i can't find it and if you don't put this line in the original script i probably don't have it
my paconky.py :
#!/usr/bin/env python3
# Author: Xyne
"""Display information about upgradable packages in Conky.
This script is meant to be customized. The default is just an example.
USAGE
paconky.py /temporary/database/path
EXAMPLES
A static path:
paconky.py ~/.cache/pacman
Using tmpfs:
paconky.py /dev/shm/pacman
If the XDG_CACHE_HOME variable is set with 1 path:
paconky.py "$XDG_CACHE_HOME"/pacman
... or with multiple paths:
paconky.py "$(echo $XDG_CACHE_HOME | cut -d':' -f1)"/pacman
DEPENDENCIES
* pyalpm
* python3-aur
EXAMPLE CONKY CONFIGURATION FILE
alignment top_left
gap_x 5
gap_y 0
maximum_width 200
minimum_size 200,1
own_window yes
own_window_transparent yes
own_window_type override
own_window_hints below
update_interval 3600
total_run_times 0
double_buffer yes
use_xft yes
xftfont lime:pixelsize=10
xftalpha 0.9
default_color ff0000
default_outline_color black
default_shade_color black
uppercase no
override_utf8_locale no
text_buffer_size 4096
color1 444444
color2 cccccc
color3 777777
TEXT
${execp /path/to/paconky.py /tmp/paconky}
"""
import AUR
import pyalpm
import os
import sys
from collections import OrderedDict
from pycman import config, action_sync
def display(upgradable_sync, upgradable_aur):
"""Display the output.
upgradable_sync: An OrderedDict of sync database names and sets of tuples.
Each tuple consists of the local package and sync package returned by pyalpm.
upgradable_aur: A list of tuples. Each tuple consists of the local package
returned by pyalpm and a dictionary object returned from the AUR.
"""
# Necessary because of the buggy way conky handles alignr.
width = 40
# To change the output, edit these formatting strings.
# You can change anything except the number of "%s" in each.
# If you need to insert a percent sign, use "%%".
header = '${color1}${hr}\n${color1}[${color2}%s${color1}]%s${color3}%s'
one = '1 new package'
many = '%d new packages'
line = '\n%s%s%s'
footer = '\n${color1}${hr}\n${voffset 10}'
# Nothing to upgrade.
if not (upgradable_sync or upgradable_aur):
hdr = 'local packages'
msg = 'up-to-date'
# -2 for brackets
spacer = ' ' * (width - len(hdr) - len(msg) - 2)
print(header % (hdr,spacer,msg) + footer);
else:
for k, v in upgradable_sync.items():
hdr = k
n = len(v)
if n > 1:
msg = many % n
else:
msg = one
# -2 for brackets.
spacer = ' ' * (width - len(hdr) - len(msg) - 2)
print(header % (hdr,spacer,msg), end='');
v = sorted(v, key=lambda x: x[0].name)
for local, sync in v:
name, version = local.name, sync.version
spacer = ' ' * (width - len(name) - len(version))
print(line % (name, spacer, version), end='')
print(footer)
if upgradable_aur:
hdr = 'AUR'
n = len(upgradable_aur)
if n > 1:
msg = many % n
else:
msg = one
# -2 for brackets.
spacer = ' ' * (width - len(hdr) - len(msg) - 2)
print(header % (hdr,spacer,msg), end='');
upgradable_aur.sort(key=lambda x: x[0].name)
for local, aur in upgradable_aur:
name, version = local.name, aur['Version']
spacer = ' ' * (width - len(name) - len(version))
print(line % (name, spacer, version), end='')
print(footer)
def main(tmp_db_path):
# Use a temporary database path to avoid issues caused by synchronizing the
# sync database without a full system upgrade.
# See the discussion here:
# https://bbs.archlinux.org/viewtopic.php?pid=951285#p951285
# Basically, if you sync the database and then install packages without first
# upgrading the system (-y), you can do some damage.
tmp_db_path = os.path.abspath(tmp_db_path)
conf = config.PacmanConfig(conf = '/etc/pacman.conf')
db_path = conf.options['DBPath']
if tmp_db_path == db_path:
print("temporary path cannot be %s" % db_path)
sys.exit(1)
local_db_path = os.path.join(db_path, 'local')
tmp_local_db_path = os.path.join(tmp_db_path, 'local')
# Set up the temporary database path
if not os.path.exists(tmp_db_path):
os.makedirs(tmp_db_path)
os.symlink(local_db_path, tmp_local_db_path)
elif not os.path.islink(tmp_local_db_path):
# Move instead of unlinking just in case.
os.rename(tmp_local_db_path, tmp_local_db_path + '.old')
os.symlink(local_db_path, tmp_local_db_path)
# Redirect the stdout messages download messages to stderr.
with open(os.devnull, 'w') as f:
sys.stdout = f
action_sync.main(('-b', tmp_db_path, '-y'))
sys.stdout = sys.__stdout__
installed = set(p for p in pyalpm.get_localdb().pkgcache)
upgradable = OrderedDict()
syncdbs = pyalpm.get_syncdbs()
for db in syncdbs:
# Without "list" the set cannot be altered with "remove" below.
for pkg in list(installed):
pkgname = pkg.name
syncpkg = db.get_pkg(pkgname)
if syncpkg:
if pyalpm.vercmp(syncpkg.version, pkg.version) > 0:
try:
upgradable[db.name].add((pkg, syncpkg))
except KeyError:
upgradable[db.name] = set(((pkg, syncpkg),))
installed.remove(pkg)
foreign = dict([(p.name,p) for p in installed])
try:
aur = AUR.AUR(threads=10)
aur_pkgs = aur.info(foreign.keys())
except AUR.AURError as e:
sys.stderr.write(str(e))
sys.exit(1)
upgradable_aur = list()
for aur_pkg in aur_pkgs:
installed_pkg = foreign[aur_pkg['Name']]
if pyalpm.vercmp(aur_pkg['Version'], installed_pkg.version) > 0:
upgradable_aur.append((installed_pkg, aur_pkg))
installed.remove(installed_pkg)
display(upgradable, upgradable_aur)
if __name__ == "__main__":
if sys.argv[1:]:
main(sys.argv[1])
else:
print("no temporary path given")
sys.exit(1)
an the line in my conkyrc
${execp ~/.conky/paconky.py /tmp/paconky}
maybe that can help you
edit : i have something new i removed /tmp/paconky an now i have this :
$ rm -rf /tmp/paconky
$ .conky/paconky.py /tmp/paconky
('/etc/pacman.conf', 'unrecognized option', 'ILoveCandy')
deleted 26 rows from info
${color1}${hr}
${color1}[${color2}archlinuxfr${color1}] ${color3}1 new package
volumeicon 0.4.5-1
${color1}${hr}
${voffset 10}
${color1}${hr}
${color1}[${color2}extra${color1}] ${color3}3 new packages
lame 3.99.2-1
libburn 1.1.8-1
shared-desktop-ontologies 0.8.1-1
${color1}${hr}
${voffset 10}
i still have Ilove candy but now i can see update and in my conky to . Do you know why ?
Last edited by jrenong (2011-11-26 07:40:19)
Offline
i still have Ilove candy but now i can see update and in my conky to . Do you know why ?
Yep. The problem was that the database lock was still in the directory. I just saw the ILoveCandy message and assumed that was the cause. If I had read to the end of the error message I would have seen that it was complaining about the lock. I was in a rush, sorry.
Paconky.py was probably killed while updating so it left the lock. If that happens again, you can always remove the lock file (db.lck) or the entire /tmp/paconky directory to fix it.
When I have some time, I'll update the script to either display a message about the lock or remove it directly.
Last edited by Xyne (2011-11-27 14:28:46)
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
ok thanx a lot xyne
I'll wait your update for the line but now it works
But I have a little problem
1) In the image in page one the version are aligne right but in mine it's not it's like center but not really
2) I want to know if you can put the size of each package an total size by type (extra, aur, etc) it's not really usefull but it could be nice if I can have it
thanx
Last edited by jrenong (2011-12-17 09:36:15)
Offline
Anyone know how to fix the hokey displayin paconky.py to something like ${alignr -10}? I've tried a few different ways with no joy. they display by pixel space.
Offline
I updated my pacman to version 4.0.1. It seems that the paconky is broken due to the new version of pyalpm that came with pacman.
It gave errors:
Traceback (most recent call last):
File "./paconky.py", line 240, in <module>
main(sys.argv[1])
File "./paconky.py", line 201, in main
installed = set(p for p in pyalpm.get_localdb().pkgcache)
AttributeError: 'module' object has no attribute 'get_localdb'
Offline
@jrenong
1) I would have to see the output to know what's going on.
2) The pyalpm backend has full access to everything in the pacman database, so that's possible. It shouldn't be too difficult either if you know a bit of Python. When I get some time I might try to make paconky more customizable via a simplified formatting option, but ultimately it's easier to just let people modify the script directly.
@zero_one
I don't understand the question.
@guotsuan
If it's still broken when the new pyalpm gets out of testing then I will fix it. I would rather keep it working with the current release. I use it myself so I will notice if it breaks.
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
Hi,
When I run paconky from the command line, it seems to return the appropriate results, however, from conky I get:
Traceback (most recent call last):
File "/home/jeff/.paconky/paconky.py", line 240, in <module>
main(sys.argv[1])
File "/home/jeff/.paconky/paconky.py", line 198, in main
action_sync.main(('-b', tmp_db_path, '-y'))
File "/usr/lib/python3.2/site-packages/pycman/action_sync.py", line 229, in main
ret = do_refresh(args)
File "/usr/lib/python3.2/site-packages/pycman/action_sync.py", line 42, in do_refresh
t = transaction.init_from_options(options)
File "/usr/lib/python3.2/site-packages/pycman/transaction.py", line 112, in init_from_options
progress_callback = cb_progress)
alpm.error: transaction could not be initialized, pm_errno 10 (unable to lock database)
Exception ValueError: 'I/O operation on closed file.' in <_io.TextIOWrapper name='/dev/null' mode='w' encoding='UTF-8'> ignored
Traceback (most recent call last):
File "/home/jeff/.paconky/paconky
I delete the db.lck file and I can run from the command line again...but not call it from conky.
my call from conky is
${execp /home/jeff/.paconky/paconky.py /home/jeff/.paconky/pacman}
running from the command line I get:
$./paconky.py /home/jeff/.paconky/pacman
deleted 39 rows from info
${color1}${hr}
${color1}[${color2}extra${color1}] ${color3}1 new package
conky 1.8.2git20111107-1
${color1}${hr}
${voffset 10}
Any ideas?
Offline
It would seem that the following works properly now.
${execpi 3600 paconky /home/jeff/.paconky/pacman}
Offline
Xyne, pacman 4 is now in core, please fix paconky to work with it
Offline
Here is the output of paconky.py with pacman 4
Traceback (most recent call last):
File "/usr/bin/paconky.py", line 240, in <module>
main(sys.argv[1])
File "/usr/bin/paconky.py", line 201, in main
installed = set(p for p in pyalpm.get_localdb().pkgcache)
AttributeError: 'module' object has no attribute 'get_localdb'
the new version of pyalpm is still in testing, Looks like we are waiting on pyalpm to update before anything can be done.
Last edited by zero_one (2012-01-17 15:25:17)
Offline
I've updated the script to work with pacman 4.0 and pyalpm 0.5.3. Let me know if there are any problems.
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
Where is the download site? I checked both AUR and your website, but I could only see the old version...
Offline
The script is linked in the first post of this thread.
My Arch Linux Stuff • Forum Etiquette • Community Ethos - Arch is not for everyone
Offline
The script is linked in the first post of this thread.
I am sorry but it is a bit confusing. The link paconky.py refers to to paconky.py udated on 2011-07-01 and not in 2012. Is this the script we need to use.
Offline
@ Xyne: Thank you!
Xyne wrote:The script is linked in the first post of this thread.
I am sorry but it is a bit confusing. The link paconky.py refers to to paconky.py udated on 2011-07-01 and not in 2012. Is this the script we need to use.
I also got confused about it, but it is right. It works fine for me.
Offline
Thanks, Xyne. I'll check it out now
Offline
The updated script seemed to work for a couple of days, and now I get this output:
Traceback (most recent call last):
File "/usr/bin/paconky", line 242, in <module>
main(sys.argv[1])
File "/usr/bin/paconky", line 176, in main
conf = config.PacmanConfig(conf = '/etc/pacman.conf')
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 157, in __init__
self.load_from_file(conf)
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 162, in load_from_file
for section, key, value in pacman_conf_enumerator(filename):
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 84, in pacman_conf_enumerator
filestack.append(open(path))
IOError: [Errno 13] Permission denied: '/etc/pacman.conf'
In conky it looks ok, but indicates..."up-to-date". It does seem to pickup the updates from the AUR however,
Offline
The updated script seemed to work for a couple of days, and now I get this output:
Traceback (most recent call last):
File "/usr/bin/paconky", line 242, in <module>
main(sys.argv[1])
File "/usr/bin/paconky", line 176, in main
conf = config.PacmanConfig(conf = '/etc/pacman.conf')
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 157, in __init__
self.load_from_file(conf)
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 162, in load_from_file
for section, key, value in pacman_conf_enumerator(filename):
File "/usr/lib/python3.2/site-packages/pycman/config.py", line 84, in pacman_conf_enumerator
filestack.append(open(path))
IOError: [Errno 13] Permission denied: '/etc/pacman.conf'In conky it looks ok, but indicates..."up-to-date". It does seem to pickup the updates from the AUR however,
IOError: [Errno 13] Permission denied: '/etc/pacman.conf'
You sure you have the correct permissions on pacman.conf?
Offline
IOError: [Errno 13] Permission denied: '/etc/pacman.conf'
You sure you have the correct permissions on pacman.conf?
Yup, that was it thanks. Apparently I muddled the permissions when merging the pacman.conf with the .pacnew file.
Offline
Well, I don't get an error any more, but the script doesn't seem to be seeing the updatable packages
$paconky /home/jeff/.paconky/pacman
deleted 40 rows from info
${color1}${hr}
${color1}[${color2}local packages${color1}] ${color3}up-to-date
${color1}${hr}$pacman -Syu
Password:
:: Synchronizing package databases...
core is up to date
extra 1181.1 KiB 1826K/s 00:01 [##########################################] 100%
community 1038.3 KiB 2.10M/s 00:00 [##########################################] 100%
catalyst is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for inter-conflicts...Targets (1): sdl_image-1.2.12-1
Total Download Size: 0.02 MiB
Total Installed Size: 0.07 MiB
Net Upgrade Size: 0.00 MiBProceed with installation? [Y/n]
Anyone else notice this?
Last edited by damacas (2012-01-26 23:00:19)
Offline
In an effort to troubleshoot this I removed the temporary pacman folder and re-ran:
$paconky /home/jeff/.paconky/pacman
WARNING: database file for 'core' does not exist
WARNING: database file for 'extra' does not exist
WARNING: database file for 'community' does not exist
WARNING: database file for 'catalyst' does not exist
${color1}${hr}
${color1}[${color2}local packages${color1}] ${color3}up-to-date
${color1}${hr}
any ideas from this? I really liked this script for the short time I've had it working.
Offline