Difference between revisions of "Talk:Pacman/Tips and tricks"

From ArchWiki
Jump to: navigation, search
(Simple vs complex tip: re)
(re)
 
(72 intermediate revisions by 11 users not shown)
Line 1: Line 1:
== Merge ==
+
== pacman-optimize on SSD ==
  
This is an excellent candidate for merging with [[pacman]].  Just put this one at the bottom of the other, in a special "Tips" section.  It would be good to keep all articles on one subject together in one place for the sake of simplicity and organization; the KISS way. - [[User:KitchM|KitchM]] 11:39, 23 January 2010 (EST)
+
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''
  
== Simple vs complex tip ==
+
pacman-optimize only tries to reduce fragmentation of the files right? If that is the case perhaps we should include a note that this probably won't help much on an SSD. {{Unsigned|18:27, 29 March 2013‎|F4hy}}
  
"Listing changed configuration files", first tip: does it work?
+
== pacman-optimize ==
I find it confusing. The second one do the job. Is there a reason to keep the first?
+
 
:The script works for me, so I kept it and added the one-liner. -- [[User:Karol|Karol]] ([[User talk:Karol|talk]]) 01:04, 14 December 2012 (UTC)
+
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''
 +
 
 +
Looks like the [https://aur.archlinux.org/packages/systemd-timer-pacman-optimize-git/ systemd-timer-pacman-optimize-git] package is no longer maintained. [https://lists.archlinux.org/pipermail/pacman-dev/2014-August/019337.html]
 +
 
 +
Should the wiki no longer recommend this package? -- I'm guessing it shouldn't.
 +
 
 +
Also, is pacman-optimize less important than in the past? -- I am genuinely unsure about this.
 +
 
 +
--[[User:Matthew02|Matthew02]] ([[User talk:Matthew02|talk]]) 05:40, 2 March 2015 (UTC)
 +
 
 +
:The maintenance of {{AUR|systemd-timer-pacman-optimize-git}} has nothing to do with that of {{Pkg|pacman}} itself, it is packaged separately and even in the AUR. Anyway, I'd keep the section until ''pacman-optimize'' is removed from {{Pkg|pacman}}.
 +
:The reasons why it is not very important nowadays are improvements in pacman itself (mentioned in the ML post linked above), increased speeds of HDDs and the advent of SSDs.
 +
:-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 22:18, 2 March 2015 (UTC)
 +
 
 +
== Leading slash ==
 +
 
 +
[[Pacman/Tips_and_tricks#aria2]] doesn't work without leading slash, i.e. {{ic|-d /}} turning file names to {{ic|//var/cache/...}}. The article mentions this, but it doesn't mention why. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:28, 16 October 2015 (UTC)
 +
 
 +
:You would have to go [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=32104&oldid=30674 way] [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=next&oldid=115292 back] to track this. It seems to have worked without {{ic|-d /}} even in 2006: [https://wiki.archlinux.org/index.php?title=Faster_Pacman_Downloads&oldid=15627], [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&oldid=17759]. <s>I guess that simply nobody asked the right question...</s> -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:30, 16 October 2015 (UTC)
 +
:Oops, it does ''not'' work without {{ic|-d /}}. Then the problem must be on aria's side, which expects a file name for the {{ic|-o}} option, which is then catenated with {{ic|-d}} into the full path. Assuming that {{ic|-d}} defaults to the cwd, {{ic|/var/cache/}} would appear twice in the result. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:43, 16 October 2015 (UTC)
 +
 
 +
== Listing optional dependencies of all installed packages ==
 +
 
 +
To show a list of optional dependencies of all installed packages you can use this script (requires {{Pkg|expac}}). Usefull when you missed some scrolling by and the closed the terminal. Consider installing via {{ic|pacman --asdeps -S $p}} to mark them as dependecies and then orphans when the package they get installed for is removed.
 +
 
 +
{{hc|op-debs.sh|<nowiki>#!/bin/bash
 +
if [[ -t 1 ]]; then
 +
packagename=$(tput bold)
 +
installed=$(tput setf 2)
 +
normal=$(tput sgr0)
 +
fi;
 +
 
 +
(for p in $(expac %n);do # every installed package
 +
if [[ -n $(expac %o $p) ]]; then # that has optional dependencies
 +
echo $p
 +
fi;
 +
done;) | (while read p; do
 +
echo $packagename$p$normal: # echo package name
 +
expac -l "\n" "%O" $p | while read dep; do # every opt-dep
 +
echo -n "    $dep"
 +
if [[ -n $(pacman -Q $(echo $dep | cut -d ":" -f 1) 2> /dev/null) ]]; then # if installed
 +
echo -n " $installed[Installed]$normal"
 +
fi
 +
echo
 +
done;
 +
done;)</nowiki>}}
 +
 
 +
{{Note|To view optional dependencies for only one specific package use {{ic|pacman -Qi $p}}}}
 +
 
 +
-- 08:38, 20 January 2017‎ M3t0r
 +
 
 +
:Since the main interest is listing optional dependencies which are not installed, the above can be summarized to (also much faster):
 +
{{bc|<nowiki>#!/bin/bash
 +
join -v2 -o2.2,2.1 <(expac -Q '%n' | sort) <(expac -Qv '%n\t%o' -l '\t' | awk '$2 !~ /None/ {
 +
for(i = 2; i <= NF; ++i) printf("%s\t%s\n", $i, $1) | "sort -k1,1"
 +
}') | sort | column -t
 +
</nowiki>
 +
}}
 +
:--[[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:40, 20 January 2017 (UTC)
 +
 
 +
::Yes, it's faster, but less intuitive reading of the code and the output. It's also missing the description what they would enable.
 +
 
 +
::--[[User:M3t0r|M3t0r]] ([[User talk:M3t0r|talk]]) 22:04, 20 January 2017 (UTC)

Latest revision as of 22:04, 20 January 2017

pacman-optimize on SSD

[Moved from Talk:Improve pacman performance -- Alad (talk) 05:05, 16 October 2015 (UTC)]

pacman-optimize only tries to reduce fragmentation of the files right? If that is the case perhaps we should include a note that this probably won't help much on an SSD. —This unsigned comment is by F4hy (talk) 18:27, 29 March 2013‎. Please sign your posts with ~~~~!

pacman-optimize

[Moved from Talk:Improve pacman performance -- Alad (talk) 05:05, 16 October 2015 (UTC)]

Looks like the systemd-timer-pacman-optimize-git package is no longer maintained. [1]

Should the wiki no longer recommend this package? -- I'm guessing it shouldn't.

Also, is pacman-optimize less important than in the past? -- I am genuinely unsure about this.

--Matthew02 (talk) 05:40, 2 March 2015 (UTC)

The maintenance of systemd-timer-pacman-optimize-gitAUR has nothing to do with that of pacman itself, it is packaged separately and even in the AUR. Anyway, I'd keep the section until pacman-optimize is removed from pacman.
The reasons why it is not very important nowadays are improvements in pacman itself (mentioned in the ML post linked above), increased speeds of HDDs and the advent of SSDs.
-- Lahwaacz (talk) 22:18, 2 March 2015 (UTC)

Leading slash

Pacman/Tips_and_tricks#aria2 doesn't work without leading slash, i.e. -d / turning file names to //var/cache/.... The article mentions this, but it doesn't mention why. -- Alad (talk) 05:28, 16 October 2015 (UTC)

You would have to go way back to track this. It seems to have worked without -d / even in 2006: [2], [3]. I guess that simply nobody asked the right question... -- Lahwaacz (talk) 12:30, 16 October 2015 (UTC)
Oops, it does not work without -d /. Then the problem must be on aria's side, which expects a file name for the -o option, which is then catenated with -d into the full path. Assuming that -d defaults to the cwd, /var/cache/ would appear twice in the result. -- Lahwaacz (talk) 12:43, 16 October 2015 (UTC)

Listing optional dependencies of all installed packages

To show a list of optional dependencies of all installed packages you can use this script (requires expac). Usefull when you missed some scrolling by and the closed the terminal. Consider installing via pacman --asdeps -S $p to mark them as dependecies and then orphans when the package they get installed for is removed.

op-debs.sh
#!/bin/bash
if [[ -t 1 ]]; then
	packagename=$(tput bold)
	installed=$(tput setf 2)
	normal=$(tput sgr0)
fi;

(for p in $(expac %n);do # every installed package
	if [[ -n $(expac %o $p) ]]; then # that has optional dependencies
		echo $p
	fi;
done;) | (while read p; do
	echo $packagename$p$normal: # echo package name
	expac -l "\n" "%O" $p | while read dep; do # every opt-dep
		echo -n "    $dep"
		if [[ -n $(pacman -Q $(echo $dep | cut -d ":" -f 1) 2> /dev/null) ]]; then # if installed
			echo -n " $installed[Installed]$normal"
		fi
		echo
	done;
done;)
Note: To view optional dependencies for only one specific package use pacman -Qi $p

-- 08:38, 20 January 2017‎ M3t0r

Since the main interest is listing optional dependencies which are not installed, the above can be summarized to (also much faster):
#!/bin/bash
join -v2 -o2.2,2.1 <(expac -Q '%n' | sort) <(expac -Qv '%n\t%o' -l '\t' | awk '$2 !~ /None/ { 
	for(i = 2; i <= NF; ++i) printf("%s\t%s\n", $i, $1) | "sort -k1,1"
}') | sort | column -t

--Alad (talk) 12:40, 20 January 2017 (UTC)
Yes, it's faster, but less intuitive reading of the code and the output. It's also missing the description what they would enable.
--M3t0r (talk) 22:04, 20 January 2017 (UTC)