[pacman-dev] [PATCH] pacman: don't nuke local repos with -Sc

Morgan Adamiec morganamilo at archlinux.org
Thu Jun 24 12:58:43 UTC 2021



On 24/06/2021 13:57, Allan McRae wrote:
> On 24/6/21 10:48 pm, Morgan Adamiec wrote:
>>
>>
>> On 24/06/2021 13:31, Andrew Gregory wrote:
>>> On 06/24/21 at 12:58pm, Morgan Adamiec wrote:
>>>>
>>>>
>>>> On 24/06/2021 12:51, Allan McRae wrote:
>>>>> On 24/6/21 9:33 pm, Morgan Adamiec wrote:
>>>>>>
>>>>>>
>>>>>> On 24/06/2021 09:25, Allan McRae wrote:
>>>>>>> On 24/6/21 6:19 pm, Morgan Adamiec wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 24/06/2021 06:38, Allan McRae wrote:
>>>>>>>>> On 15/6/21 5:11 am, morganamilo wrote:
>>>>>>>>>> When using a local repo as a cachedir  pacman -Scc or pacman -Sc
>>>>>>>>>> without KeepCurrent will delete the repo database and packages
>>>>>>>>>> resulting in a lost database and non functional pacman.
>>>>>>>>>>
>>>>>>>>>> So special case file:/// repos in cache to not get nuked and foce
>>>>>>>>>> KeepCurrent on.
>>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>> This behaviour change is undocumented.
>>>>>>>>>
>>>>>>>>> I don't think we should do this for -Scc.  That is explicitly asking all
>>>>>>>>> package files in cache directories to be removed, so that is what you get.
>>>>>>>>>
>>>>>>>>> I also am leaning towards this behaviour for -Sc being unexpected (even
>>>>>>>>> if documented).  Pacman's job is really not to manage complex cache
>>>>>>>>> set-ups and I'm not convinced this should be supported.
>>>>>>>>>
>>>>>>>>> Allan
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> I want this to go ahead, especially with -Scc. Otherwise -Scc can end up
>>>>>>>> losing you your .db file, breaking pacman, the local repo's .db and all
>>>>>>>> the build packages.
>>>>>>>>
>>>>>>>> This use case is not complex in my opinion. It's just adding one line to
>>>>>>>> your pacman.conf to stop every single package being duplicated.
>>>>>>>>
>>>>>>>> If you're still against this do you have any alternative solutions in
>>>>>>>> mind to handle this?
>>>>>>>>
>>>>>>>
>>>>>>> Not using -Scc.   Why would you use that and expect it not to delete
>>>>>>> packages?
>>>>>>>
>>>>>>> A
>>>>>>>
>>>>>>
>>>>>> Because I want everything deleted in the main /var/cache/pacman/pkg dir.
>>>>>>
>>>>>
>>>>> Pacman asks what to do for each cache directory and you could say yes to
>>>>> removing files from /var/cache/pacman/pkg/ and no for other cache
>>>>> directories.   So that already achieves what you are doing without
>>>>> adding a special case to the codebase.
>>>>>
>>>>> Pacman's job is not to be a specialised cache cleaning utility.  Hence
>>>>> why the suggestion of adding the ability to select how many versions of
>>>>> each package is kept was implemented in paccache.
>>>>>
>>>>> Allan
>>>>>
>>>>
>>>> Yes, that does work but then you have to be careful about what to wipe
>>>> and can't automate it. I would agree if it wasn't for the case
>>>> accidentally deleting that dir loses you your repo.
>>>>
>>>> I believe as a workaround aurutils bind mounts the repo into cache as
>>>> readonly.
>>>>
>>>> Would you be more accepting of it straight up just skipping any
>>>> cachedirs that happen to be a local repo and not inspect it at all?
>>>
>>> -1.  -Sc/-Scc are destructive operations.  There are a variety of
>>> weird cache setups where they could be more destructive than intended.
>>> People with weird cache setups really probably just shouldn't use
>>> them.
>>>
>>
>> Do you have any alternate solution in mind?
>>
> 
> There are a range of possibilities. e.g. a script containing:
> 
> pacman --cachedir=/var/cache/pacman/pkg/ -Scc
> 
> 
> 
> 
> 

--cachedir appends not overrides


More information about the pacman-dev mailing list